// Copyright 2023 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package contentwarehouse provides access to the Document AI Warehouse API.
//
// For product documentation, see: https://cloud.google.com/document-warehouse
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/contentwarehouse/v1"
//	...
//	ctx := context.Background()
//	contentwarehouseService, err := contentwarehouse.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for authentication.
//
// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
//
//	contentwarehouseService, err := contentwarehouse.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	contentwarehouseService, err := contentwarehouse.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See https://godoc.org/google.golang.org/api/option/ for details on options.
package contentwarehouse // import "google.golang.org/api/contentwarehouse/v1"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint

const apiId = "contentwarehouse:v1"
const apiName = "contentwarehouse"
const apiVersion = "v1"
const basePath = "https://contentwarehouse.googleapis.com/"
const mtlsBasePath = "https://contentwarehouse.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// See, edit, configure, and delete your Google Cloud data and see the
	// email address for your Google Account.
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s, err := New(client)
	if err != nil {
		return nil, err
	}
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	s := &Service{client: client, BasePath: basePath}
	s.Projects = NewProjectsService(s)
	return s, nil
}

type Service struct {
	client    *http.Client
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Projects *ProjectsService
}

func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Locations = NewProjectsLocationsService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Locations *ProjectsLocationsService
}

func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
	rs := &ProjectsLocationsService{s: s}
	rs.DocumentSchemas = NewProjectsLocationsDocumentSchemasService(s)
	rs.Documents = NewProjectsLocationsDocumentsService(s)
	rs.Operations = NewProjectsLocationsOperationsService(s)
	rs.RuleSets = NewProjectsLocationsRuleSetsService(s)
	rs.SynonymSets = NewProjectsLocationsSynonymSetsService(s)
	return rs
}

type ProjectsLocationsService struct {
	s *Service

	DocumentSchemas *ProjectsLocationsDocumentSchemasService

	Documents *ProjectsLocationsDocumentsService

	Operations *ProjectsLocationsOperationsService

	RuleSets *ProjectsLocationsRuleSetsService

	SynonymSets *ProjectsLocationsSynonymSetsService
}

func NewProjectsLocationsDocumentSchemasService(s *Service) *ProjectsLocationsDocumentSchemasService {
	rs := &ProjectsLocationsDocumentSchemasService{s: s}
	return rs
}

type ProjectsLocationsDocumentSchemasService struct {
	s *Service
}

func NewProjectsLocationsDocumentsService(s *Service) *ProjectsLocationsDocumentsService {
	rs := &ProjectsLocationsDocumentsService{s: s}
	rs.DocumentLinks = NewProjectsLocationsDocumentsDocumentLinksService(s)
	rs.ReferenceId = NewProjectsLocationsDocumentsReferenceIdService(s)
	return rs
}

type ProjectsLocationsDocumentsService struct {
	s *Service

	DocumentLinks *ProjectsLocationsDocumentsDocumentLinksService

	ReferenceId *ProjectsLocationsDocumentsReferenceIdService
}

func NewProjectsLocationsDocumentsDocumentLinksService(s *Service) *ProjectsLocationsDocumentsDocumentLinksService {
	rs := &ProjectsLocationsDocumentsDocumentLinksService{s: s}
	return rs
}

type ProjectsLocationsDocumentsDocumentLinksService struct {
	s *Service
}

func NewProjectsLocationsDocumentsReferenceIdService(s *Service) *ProjectsLocationsDocumentsReferenceIdService {
	rs := &ProjectsLocationsDocumentsReferenceIdService{s: s}
	return rs
}

type ProjectsLocationsDocumentsReferenceIdService struct {
	s *Service
}

func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
	rs := &ProjectsLocationsOperationsService{s: s}
	return rs
}

type ProjectsLocationsOperationsService struct {
	s *Service
}

func NewProjectsLocationsRuleSetsService(s *Service) *ProjectsLocationsRuleSetsService {
	rs := &ProjectsLocationsRuleSetsService{s: s}
	return rs
}

type ProjectsLocationsRuleSetsService struct {
	s *Service
}

func NewProjectsLocationsSynonymSetsService(s *Service) *ProjectsLocationsSynonymSetsService {
	rs := &ProjectsLocationsSynonymSetsService{s: s}
	return rs
}

type ProjectsLocationsSynonymSetsService struct {
	s *Service
}

type AbuseiamAbuseType struct {
	// Possible values:
	//   "NONE" - no abuse
	//   "OTHER_ABUSE" - generic abuse that isn't enumerated here
	//   "CHILD_PORN" - illegal child porn images
	//   "PORNOGRAPHY"
	//   "SPAM"
	//   "PHISHING"
	//   "HATE"
	//   "TOS_OTHER" - To be only used for Multi-Image Review.
	//   "MALWARE" - MALWARE includes viruses, worms, trojans, adware and
	// even potentially unwanted software which may not necessarily be
	// harmful.
	//   "MALICIOUS_JAVASCRIPT"
	//   "NOT_FAMILY_SAFE" - DEPRECATED - For safe searches, etc.
	//   "IMPERSONATION"
	//   "PEDOPHILIA" - Not illegal, but image or text content
	//   "PERSONAL_INFO" - promoting or related to young pornography
	// Personally identifiable information
	//   "COPYRIGHT"
	//   "HIGH_RISK" - High risk reviews for any client.
	//   "VIOLENCE"
	//   "UNSAFE_RACY" - Content that is unsafe because it is sexually
	//   "UNSAFE_OTHER" - suggestive/racy Content that is unsafe for other
	// reasons than
	//   "FAKE_USER" - being sexually suggestive/racy. Category for users
	// who are not real
	//   "NAME_VIOLATION" - User's name that violates policy.
	//   "PLUSONE_VIOLATION" - Violates PLUSONE policy.
	//   "DEFAMATION" - Defamation claims
	//   "TRADEMARK" - Trademark violations where Google could be
	//   "COURT_ORDER" - liable Third-party court orders
	//   "GOVERNMENT_ORDER" - Government request, regardless of reason
	//   "LOCAL_LAWS" - Other misc country-specific laws
	//   "PRIVACY" - Local privacy laws
	//   "ES_BLACKLIST" - Internal type to check es content against
	//   "ES_COMMENTS_BLACKLIST" - the ocelot blacklist. Internal type.
	//   "HARASSMENT" - Consistent harassing behaviour directed
	//   "COMPROMISED" - towards a person. Hijacked or Compromised profile.
	//   "LOW_QUALITY" - Low quality/Annoying content.
	//   "API_VIOLATION" - Violates APIARY policy.
	//   "REGULATED" - Contains regulated products and services, such as
	// pharmaceuticals, alcohol, tobacco, etc. For details,
	// https://sites.google.com/a/google.com/crt-policy-site/regulated
	//   "CAROUSEL_FRAME_BLACKLIST" - Internal type.
	//   "QUOTA_EXCEEDED" - Quota exceeded for the action.
	//   "FOUNTAIN_BLACKLIST" - Internal type.
	//   "COPPA_REGULATED" - Contains content regulated by COPPA.
	//   "DOXXING" - Revealing personal/protected information.
	//   "SOFT_HATE" - Pattern of behavior verdicts. Used to aggregate
	// verdicts that aren't typically bad enough for one of the above
	// verdicts, but something we want to keep track of in cases of rotten
	// behavior. Hate without incitement
	//   "SOFT_HARASSMENT" - Harassment that does meet the harm bar.
	//   "OBNOXIOUS" - Obnoxious, Lousy behavior, not against TOS.
	//   "UNWANTED" - Content targeted at a person who considered
	//   "NOT_UNICORN_SAFE" - Not safe for kids.
	//   "FAKE_ENGAGEMENT" - Engagements that are not organic.
	//   "COUNTERFEIT" - Promotion of counterfeit product claims.
	//   "CTM" - Circumvention of Technological measures
	Id string `json:"id,omitempty"`

	// Subtype: Optional client specific subtype of abuse that is too
	// specific to belong in the above enumeration. For example, some client
	// may want to differentiate nudity from graphic sex, but both are
	// PORNOGRAPHY.
	Subtype string `json:"subtype,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamAbuseType) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamAbuseType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamAgeRestriction struct {
	// AgeYears: This restriction applies if the user is between
	// [min_age_years, age_years) years old.
	AgeYears int64 `json:"ageYears,omitempty"`

	MinAgeYears int64 `json:"minAgeYears,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgeYears") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgeYears") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamAgeRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamAgeRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamAndRestriction struct {
	// Child: This restriction applies if all of the children apply.
	Child []*AbuseiamUserRestriction `json:"child,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Child") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Child") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamAndRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamAndRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamClient: A client is be a Google product, or subproduct that
// provides content for AbuseIAm to classify.
type AbuseiamClient struct {
	// Possible values:
	//   "ABUSE_TEAM"
	//   "SQE" - Search Quality Eval
	//   "SEARCH" - Web Search.
	//   "POSTINI"
	//   "BLOGGER"
	//   "ORKUT"
	//   "ZIPIT"
	//   "GROUPS"
	//   "RIPTIDE"
	//   "GADGETS" - OpenSocial
	//   "SITES"
	//   "READER"
	//   "DOCS" - Obsolete. Use WRITELY.
	//   "U2U" - Obsolete. Merged into Google Groups.
	//   "YOUTUBE"
	//   "POPTART" - Obsolete.
	//   "COSMO"
	//   "PROFILES"
	//   "KNOL" - Obsolete.
	//   "SKETCHUP"
	//   "CALENDAR"
	//   "HOTSHOTS"
	//   "TRIKI" - Obsolete.
	//   "MAPS"
	//   "COMMUNITY_TRANSLATION"
	//   "WRITELY" - Being superseded by KIX soon.
	//   "SPREADSHEET_FORM" - Freebird forms only.
	//   "SPREADSHEET" - Trix, and Bluebird forms.
	//   "EXPLORER" - Blobs stored by explorer.
	//   "FINANCE" - Obsolete.
	//   "GMR"
	//   "LAIBA" - Obsolete. Product has been shut down.
	//   "CONFUCIUS" - Obsolete. Product has been shut down.
	//   "PRESENTATION"
	//   "CHROME_EXTENSION" - Obsolete. It will be replaced by
	// CHROME_WEBSTORE
	//   "WENDA" - Obsolete. It has been merged into Confucius.
	//   "TACOTOWN" - Obsolete. Has been replaced with ES.
	//   "KRAKEN" - Obsolete.
	//   "URL_SHORTENER"
	//   "WAREHOUSE"
	//   "ANDROID_VM"
	//   "CODESITE"
	//   "FRIEND_CONNECT"
	//   "GEOWIKI"
	//   "GOOGLE_LABS"
	//   "HELP_CENTER" - Obsolete.
	//   "SEARCHWIKI" - Obsolete.
	//   "SIDEWIKI" - Obsolete.
	//   "TOPIC_SEARCH" - Obsolete.
	//   "VIDEO"
	//   "GOOGLEBASE"
	//   "FEEDBURNER"
	//   "PUBLISHER_QUALITY"
	//   "NOTEBOOK" - Obsolete.
	//   "SMARTLISTS"
	//   "ENTERPRISE_MARKETPLACE"
	//   "BOOKS"
	//   "IGOOGLE"
	//   "USENET"
	//   "TRANSLATE"
	//   "PERFECT_STREAM" - Obsolete.
	//   "PHOTOS"
	//   "AFMA" - Obsolete.
	//   "LIKES"
	//   "QUESTIONS"
	//   "SKYJAM"
	//   "MIC" - Obsolete.
	//   "ANDROID_MARKET"
	//   "CHROME_WEBSTORE"
	//   "FINSKY"
	//   "BARNOWL"
	//   "STREET_VIEW"
	//   "ADCONNECT" - Obsolete.
	//   "ES" - Emerald Sea.
	//   "HELLO" - Obsolete. Project has been terminated.
	//   "TRADER"
	//   "SCHEMER"
	//   "ANDROID" - Android and its clients/subservice.
	//   "MINE" - Obsolete.
	//   "GAIA"
	//   "GOGGLES" - Obsolete.
	//   "SIGNUP"
	//   "BABEL"
	//   "CHECKOUT"
	//   "TASTEMAKER"
	//   "STRATUS" - Stratus uses the corpus name as subservice.
	//   "DRAGONFLY" - Obsolete.
	//   "APIARY" - API integration with DevConsole.
	//   "CAROUSEL" - ES FrameService traffic (initialy intended for Diary).
	//   "FOUNTAIN" - ES content from fountain widget.
	//   "GEOPIX" - Photo content in geo (e.g. Google+ Local).
	//   "VILLAGE" - UGC for knowledge graph
	//   "KIX" - Replaces WRITELY.
	//   "AMARNA" - Image search indexing pipeline team.
	//   "GINKGO" - Social shopping.
	//   "TEE" - Obsolete. Helpouts has been shut down.
	//   "SHOPPING" - Product reviews.
	//   "SLAM" - SLAM server
	//   "APPENGINE" - App Engine
	//   "GUNS" - Google Unified Notifications Service
	//   "CULTURAL" - Cultural Institute products.
	//   "COMPUTEENGINE" - Compute Engine.
	//   "BIGSTORE" - Big Store.
	//   "COPACABANA" - Service that keeps a COPPA content list.
	//   "ANALYTICS" - Google Analytics and its subservices.
	//   "GRANDCENTRAL" - Google Voice.
	//   "GMAIL" - Gmail.
	//   "GLASS" - Project Glass.
	//   "CRISIS_RESPONSE" - OBSOLETE - Google.org Crisis Response UGC.
	//   "GJOBS" - Garage, or G+ Jobs.
	//   "HAZMAT" - Hazmat, or Child Safety Server.
	//   "SAFE_BROWSING" - Safe browsing team (Mawler, Ictis,
	// anti-phishing).
	//   "CLOUD" - Common client for Cloud services.
	//   "PANTHEON" - Cloud main front end console.
	//   "CLUSTER" - Common client for Cluff pipelines.
	//   "KEEP" - Google Keep client.
	//   "APP_HISTORY" - App History.
	//   "COMMERCIAL_ENTITY" - For expanding commercial entity graph:
	// go/daisy-design
	//   "ARES_DATA_PROVIDER" - Access data provided by Ares.
	// go/project-ares for more details.
	//   "ARES_DATA_WRITER"
	//   "BIZBUILDER" - Local businesses.
	//   "RITZ" - Google Sheets (this and SPREADSHEET_FORM replace
	// SPREADSHEET)
	//   "POLLS" - Google Polls client.
	//   "APPINVITE" - Social Platform AppInvite (go/appinvite).
	Id string `json:"id,omitempty"`

	// Subservice: The name of the subservice within a client. This
	// subservice can be used to affect the flow of decision script, or
	// selection of backend classifiers. For example, StreetView may want to
	// specify a panel is insufficiently blurred (maybe there is a lisense
	// plate or public sex, etc), which requires manual review then the
	// subservice might be "blurring".
	Subservice string `json:"subservice,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamClient) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamClient
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamClusterEvaluationContext: Extra information regarding
// evaluations received through cluster review.
type AbuseiamClusterEvaluationContext struct {
	// ClusterFamily: The family of the cluster where the case received the
	// evaluation.
	ClusterFamily string `json:"clusterFamily,omitempty"`

	// ClusterRowkey: The AbuseIAm rowkey of the cluster where the case
	// received an evaluation.
	ClusterRowkey string `json:"clusterRowkey,omitempty"`

	// GaiaIdToEscalate: The gaia id of a mail box that ops can send
	// inquiries to for appeals. Used only by user clusters to fill a
	// required gatekeeper param. See
	// gaia_disableserver.DisableSpec.escalate_to field.
	GaiaIdToEscalate int64 `json:"gaiaIdToEscalate,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ClusterFamily") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterFamily") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamClusterEvaluationContext) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamClusterEvaluationContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamConstantRestriction struct {
	// Type: A constant of type TRUE always applies, and of type FALSE never
	// applies.
	//
	// Possible values:
	//   "ALWAYS_TRUE"
	//   "ALWAYS_FALSE"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamConstantRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamConstantRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamContentRestriction: Pair of Verdicts used for ProjectR
// age/geo gating. See http://go/projectr for more information.
type AbuseiamContentRestriction struct {
	// AdminVerdict: Takedowns specified by admins via AbuseIAm
	AdminVerdict []*AbuseiamVerdict `json:"adminVerdict,omitempty"`

	// UserVerdict: User-specified takedowns
	UserVerdict []*AbuseiamVerdict `json:"userVerdict,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdminVerdict") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdminVerdict") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamContentRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamContentRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamEvaluation: Backends return Evaluations to AbuseIAm. One of
// the things Evaluations are used for is to explain Verdicts.
type AbuseiamEvaluation struct {
	AbuseType *AbuseiamAbuseType `json:"abuseType,omitempty"`

	// Backend: Who creates this Evaluation. This field is required.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "ADMIN" - Eval directly from the AbuseIAm server.
	//   "GRADS"
	//   "OCELOT"
	//   "SPAMIAM"
	//   "MANUAL_REVIEW"
	//   "MAWLER"
	//   "SNEAKY_JS" - Deprecated and code removed.
	//   "DOWNLOADER"
	//   "PORN_CLASSIFIER" - Text-based porn classifier.
	//   "GIBBERISH_DETECTOR" - Language model-based gibberish detector.
	//   "ANTIVIRUS"
	//   "GAUSS" - Gauss positive score.
	//   "REALUSERS"
	//   "USERRANK" - Gmail userrank goodness score.
	//   "GRADS_AGGRESSIVE"
	//   "BULK_ACTION" - Intended for manually executed bulk actions.
	//   "BADWORD" - Deprecated. Please use PATTERNLIST instead.
	//   "GAIA" - Gaia account maninuplation (disable, enable).
	//   "LINKS_COUNT"
	//   "RE_RULE" - The most common type of rule.
	//   "SLAM"
	//   "AUTHORRANK" - Authorrank.percentile -> score.
	//   "USERRANK_BADNESS" - Gmail userrank badness score.
	//   "GAUSS_EXPLICIT"
	//   "GAUSS_IMPLICIT"
	//   "RETRIEVE_MESSAGE" - For message retrieving only.
	//   "SPAM_REPORT"
	//   "SQUEAL"
	//   "BLOGGER_LOGS"
	//   "TRUSTRANK_PHISHING"
	//   "CATFOOD"
	//   "IMAGE_PORN_CLASSIFIER"
	//   "OCELOT_IMPORT"
	//   "FIFE_IMAGE_FETCHER"
	//   "FAST_RISING_FEATURES"
	//   "BOTGUARD" - Special rule in decision scripts.
	//   "NAME_CHECKER"
	//   "CHEETAH" - Deprecated. Do not use. Use CHEETAH_IMPORT
	//   "GALLIFREY"
	//   "OCELOT_DELETE"
	//   "RULE" - For miscellaneous rules in decision scripts
	//   "FOCUS" - that are not separate backends.
	//   "VIDEO_THUMBNAILER"
	//   "PATTERNLIST" - Check texts against a list of regex patterns.
	//   "METADATA" - Reads data from metadata store (aka BadWolf).
	//   "METADATA_IMPORT" - Metadata import adapter.
	//   "NAME_DETECTOR" - Name detector adapter.
	//   "SHINGLE_COMPUTER" - Computes shingles for text messages.
	//   "WIGGUM" - Does search-by-image using Wiggum Server.
	//   "BINARY_EXPLORATION" - Slow backend. See http://go/bineval.
	//   "REVNET" - Review graph analysis, stored in metadata.
	//   "FURS"
	//   "YOUTUBE_CLASSIFIER" - Classifies messages using the youtube
	// models.
	//   "IDV" - Reads UserProfile from the IDV server.
	//   "CLUSTERCAT"
	//   "CHEETAH_IMPORT" - Adapter that writes to Cheetah.
	//   "CHEETAH_READ" - Adapter that reads from Cheetah.
	//   "BOTGUARD_DECODE" - Adapter that decodes BotGuard response.
	//   "QUOTASERVER" - Quota server adapter.
	//   "YOUTUBE" - Video classification from youtube.
	//   "BLOGGER"
	//   "SOCIAL_GRAPH" - Evaluation from SocialGraph adapter.
	//   "WEB_SIGNALS"
	//   "TRAWLER"
	//   "NOTIFICATIONS" - Adapter that sends notifications to users.
	//   "CASES" - Adapter that interacts with Cases.
	//   "BADURLS"
	//   "LINK_IMPORT" - Adatper that imports link signals.
	//   "SHINGLE_DEDUPER" - Badwolf based shingle deduper.
	//   "DEV_CONSOLE" - Dev Console info for cloud projects.
	//   "METADATA_QUERY" - Rich query facility for BadWolf.
	//   "PLUS_PAGE" - Adapter for querying pluspage info.
	//   "YOUTUBE_VIDEO_INFO" - Queries video info from YT.
	//   "GOOGLE_ADMIN" - Google Admin for manual operations.
	//   "RESPAY" - Clould billing information and termination.
	//   "COOKBOOK" - Matched to some Cookbook recipes.
	//   "EASY_LEARN" - Machine learning models evaluations.
	//   "QUALITY_SAMPLER" - Decides if a message is sampled for quality.
	//   "BLOBSTORE" - Blobstore adapter.
	//   "OWNER" - For evaluation initiated by content owner.
	//   "POLICY" - For evaluation generated according to policy.
	//   "EXTERNAL" - For evaluations generated by services outside
	//   "ABUSEIAM_FEEDBACK" - AbuseIAm. Adapter that sends feedbacks
	// between clients.
	//   "BIGSTORE" - Adapters that access Bigstore files.
	//   "PHOTO_SERVICE" - Adapter that queries Photo Service.
	//   "GRADS_RELATED" - Fetch grads related accounts.
	//   "REAPER" - Site reputation service by safe browsing team
	//   "GATEKEEPER" - Gaia disableserver.
	//   "VIPER" - Adapters that run a Viper graph.
	//   "MSISDN" - Phone metadata adapter.
	//   "VIDEO_REVIEW" - The YouTube Video review service.
	//   "CSAI_MATCH" - Video matching for CSAI.
	//   "REDQUEEN" - RedQueen reputation adapter.
	//   "STREAMER_INDEXER" - Streamer Indexer Service to get locations
	//   "DREMEL" - of a video for various formats. Dremel service.
	//   "VISUAL_SEARCH_SERVICE_PORN" - Visual search service for porn
	// scores.
	//   "VISUAL_SEARCH_SERVICE_OCR" - Visual search service for OCR.
	//   "IMPLICIT_SOCIAL_GRAPH" - implicit social graph for affinity scores
	//   "EASY_LEARN_BLEND" - Blend Service for Easy Learn (ML models)
	//   "USER_AURA" - User aura service.
	//   "GOOPS" - Goops adapter used for publishing messages.
	//   "ANDROID_CHECKIN" - Android checkin data including device info
	//   "ARES_DATA_PROVIDER" - Adapter that fetches data from Ares.
	//   "DROIDGUARD_VERDICT" - Retrieves droidguard verdict for the device.
	//   "ARES_DATA_WRITER" - Adapter that writes data into Ares.
	//   "ADAPTIVE_QUOTA" - Adapter to talk to Adaptive Quota system.
	//   "AIAPLX" - For evaluations derived from aia-plx queries.
	//   "INFAME" - For evaluations derived from infame.
	//   "ARES" - For evaluations generated by Ares.
	//   "VISUAL_SEARCH_SERVICE_ICA" - Visual search service for ICA.
	//   "VISUAL_SEARCH_SERVICE_BUTTON_DETECTION"
	//   "VISUAL_SEARCH_SERVICE_LOGO_DETECTION" - Visual search service for
	Backend string `json:"backend,omitempty"`

	// ClusterEvaluationContext: Extra information regarding the cluster
	// review context where the case received the evaluation.
	ClusterEvaluationContext *AbuseiamClusterEvaluationContext `json:"clusterEvaluationContext,omitempty"`

	// Comment: Backends can choose to put some debug info in addition to
	// abuse_type, score, and status.
	Comment string `json:"comment,omitempty"`

	// Feature: A set of repeated features to allow adapters to return semi
	// structured data. Please, prefer using feature instead of the old
	// misc_data field since it supports richer and more structured data to
	// be passed back.
	Feature []*AbuseiamFeature `json:"feature,omitempty"`

	// ManualReviewInfo: Information about the manual review, for manual
	// review evaluations. Do NOT expect this field to be set if `backend !=
	// MANUAL_REVIEW`.
	ManualReviewInfo *AbuseiamManualReviewEvaluationInfo `json:"manualReviewInfo,omitempty"`

	// MiscData: This field is used to store miscellaneous information that
	// Backend might provide. If you find youself here considering to use
	// this field, please prefer using the repeated feature field below
	// instead. It supports a richer structure for passing complex data back
	// from the backend.
	MiscData []*AbuseiamNameValuePair `json:"miscData,omitempty"`

	// ProcessTimeMillisecs: Time in milliseconds when the Backend processed
	// this Evaluation.
	ProcessTimeMillisecs int64 `json:"processTimeMillisecs,omitempty,string"`

	// ProcessedMicros: When the evaluation was processed by the decision
	// script.
	ProcessedMicros int64 `json:"processedMicros,omitempty,string"`

	// Region: The list of regions where the evaluation applies.
	Region []*AbuseiamRegion `json:"region,omitempty"`

	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "OK"
	//   "ERROR" - The Backend failed to process the target.
	Status string `json:"status,omitempty"`

	Target *AbuseiamTarget `json:"target,omitempty"`

	// TimestampMicros: When the Evaluation was generated.
	TimestampMicros int64 `json:"timestampMicros,omitempty,string"`

	// UserRestriction: A boolean expression tree used to define the
	// restrictions where the verdict applies. Please use
	// java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to
	// evaluate this proto.
	UserRestriction *AbuseiamUserRestriction `json:"userRestriction,omitempty"`

	// Version: Version of Backend. For rules, this string is the only way
	// to differentiate between them.
	Version string `json:"version,omitempty"`

	// VideoReviewData: Information about the video review, for video review
	// evaluations. Do NOT expect this field to be set if `backend !=
	// VIDEO_REVIEW`.
	VideoReviewData *AbuseiamVideoReviewData `json:"videoReviewData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbuseType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbuseType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamEvaluation) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamEvaluation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AbuseiamEvaluation) UnmarshalJSON(data []byte) error {
	type NoMethod AbuseiamEvaluation
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type AbuseiamFeature struct {
	// BooleanValue: Exactly one of the following should be filled in.
	BooleanValue bool `json:"booleanValue,omitempty"`

	DoubleValue float64 `json:"doubleValue,omitempty"`

	// FeatureCount: Useful for applications that need to know how many
	// times a specific feature occurs
	FeatureCount int64 `json:"featureCount,omitempty,string"`

	// Int64Value: Useful for timestamps, or for numerical features where it
	// is helpful for decision scripts to have exact values.
	Int64Value int64 `json:"int64Value,omitempty,string"`

	// IntegerValue: integer value field is deprecated and shall only be
	// used for passing the following features hardcoded in
	// spamiam::SpamIAmMessage: spamiam::OrkutSenderId
	// spamiam::OrkutPostnumReports spamiam::BloggerNumComments
	// spamiam::BloggerNumCommentsByOthers Another hard-coded spamiam
	// feature is spamiam::BlogName, which can be specified via string
	// value.
	IntegerValue int64 `json:"integerValue,omitempty"`

	Name string `json:"name,omitempty"`

	StringValue []string `json:"stringValue,omitempty"`

	// TimestampSequence: This field should only be used to store a sequence
	// of timestamps associated with the feature.
	TimestampSequence googleapi.Int64s `json:"timestampSequence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BooleanValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BooleanValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamFeature) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AbuseiamFeature) UnmarshalJSON(data []byte) error {
	type NoMethod AbuseiamFeature
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	return nil
}

// AbuseiamGeoRestriction: A node representing a table of regions and
// restrictions that apply to those regions. This table understands
// region inclusion and knows to apply the most specific rule, for
// example, a rule for France would override a rule for the EU for a
// user in France.
type AbuseiamGeoRestriction struct {
	Locale []*AbuseiamGeoRestrictionLocale `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamGeoRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamGeoRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamGeoRestrictionLocale struct {
	// Location: The location where the restriction applies. Defaults to the
	// "The world". See go/iii.
	Location string `json:"location,omitempty"`

	// Restriction: The UserRestriction that applies to this location. If
	// not specified evaluates to true.
	Restriction *AbuseiamUserRestriction `json:"restriction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Location") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Location") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamGeoRestrictionLocale) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamGeoRestrictionLocale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamHash: Information about various hashes that can be computed
// on a message ex: simhash, attachment hash, etc
type AbuseiamHash struct {
	// Hash: 64 bit hash in the hex form.
	Hash string `json:"hash,omitempty"`

	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hash") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hash") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamHash) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamHash
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamManualReviewEvaluationInfo: Relevant information for manual
// review evaluations.
type AbuseiamManualReviewEvaluationInfo struct {
	// Reviewer: Reviewer performing the manual review.
	Reviewer *AbuseiamManualReviewerInfo `json:"reviewer,omitempty"`

	// Tool: Tool used to perform the manual review.
	Tool *AbuseiamManualReviewTool `json:"tool,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Reviewer") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Reviewer") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamManualReviewEvaluationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamManualReviewEvaluationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamManualReviewTool struct {
	ExperimentId string `json:"experimentId,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "NUFF" - content-review.corp.google.com
	//   "GOOGLE_ADMIN" - google-admin.corp.google.com
	//   "YOUTUBE" - admin.youtube.com
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExperimentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExperimentId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamManualReviewTool) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamManualReviewTool
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamManualReviewerInfo struct {
	// Possible values:
	//   "UNKNOWN"
	//   "LEGAL" - Member of mdb/legal-removals-contentreview-abuseiam.
	//   "POLICY" - Member of mdb/user-policy.
	//   "ANALYST" - Member of mdb/abuse-analysts.
	//   "LEGAL_PANEL" - A group of two or more members of
	// mdb/legal-removals-contentreview-abuseiam who review content
	// collectively. This credential will be set manually in decision
	// scripts when reviews come from the appropriate queue and will not be
	// automatically set by the manual review server.
	Credential []string `json:"credential,omitempty"`

	Username string `json:"username,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Credential") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Credential") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamManualReviewerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamManualReviewerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamNameValuePair struct {
	Name string `json:"name,omitempty"`

	NonUtf8Value string `json:"nonUtf8Value,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamNameValuePair) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamNameValuePair
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamNotRestriction struct {
	// Child: This restriction applies if the child does not apply. Only one
	// is allowed. "repeated" is used to avoid breaking Sawzall (See
	// b/6758277).
	Child []*AbuseiamUserRestriction `json:"child,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Child") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Child") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamNotRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamNotRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamOrRestriction struct {
	// Child: This restriction applies if any of the children apply.
	Child []*AbuseiamUserRestriction `json:"child,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Child") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Child") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamOrRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamOrRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamRegion struct {
	// Region: This is a CLDR Region Code:
	// http://wiki/Main/IIIHowTo#using_region It is used to denote the
	// region affected by a verdict.
	Region string `json:"region,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Region") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Region") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamRegion) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamRegion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamSpecialRestriction: A SpecialRestriction is a standardized
// UserRestriction which lives in a table maintained via CDD.
type AbuseiamSpecialRestriction struct {
	// Possible values:
	//   "ALCOHOL"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamSpecialRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamSpecialRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AbuseiamTarget struct {
	Id string `json:"id,omitempty"`

	// Possible values:
	//   "MESSAGE_ID" - verdict is issued on the whole message
	//   "CHUNK_ID" - verdict is issued on the specified chunk
	//   "IMAGE_URL" - target id is an image url inside chunk content
	//   "URL" - target id is a non-image url inside chunk content
	//   "USER_ID" - abuse happens at gaia user level
	//   "IP" - target id is an IP address
	//   "SITE" - target id is a sitechunk
	//   "SITEDOMAIN" - target id is a domain
	//   "ENTITY_ID" - The 4 entries below are *only* for the +1 pipeline.
	// Please do not use elsewhere. entity id is a generic Zipit ID
	//   "PERFECT_STREAM_ID" - Obsolete.
	//   "ACTIVITY_ID" - activity id in ASBE for ES
	//   "COMMENT_ID" - comment id for ASBE comments in ES
	//   "AD_ID" - ad id for ES
	//   "TEXT" - text target. Used in Ocelot name reputation.
	//   "TEXT_FRAGMENT" - text fragment. Ocelot for name reputation.
	//   "CLUSTER_MEMBER_ID" - Targets for Cluster reviews. See
	// http://go/cluff-design-doc. Message ID for the targetted cluster
	// member
	//   "EMBED_ID" - embed_id for ASBE embeds in ES
	//   "ANDROID_ID" - android_id of the device
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamTarget) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamUserNotification: A structure used to configure a
// notification to a user.
type AbuseiamUserNotification struct {
	// Possible values:
	//   "UNKNOWN"
	//   "BUILT_IN" - Use product built-in notification, such as pop-ups.
	//   "EMAIL" - Email user, e.g., through ANS(http://sites/cat/ans).
	//   "GAIA" - Show notifications at Gaia level, such as during login.
	Channel string `json:"channel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Channel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Channel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamUserNotification) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamUserNotification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamUserRestriction: Describes restrictions on where the verdict
// applies. Please use {@code TakedownManager} to evaluate this proto.
type AbuseiamUserRestriction struct {
	AgeRestriction *AbuseiamAgeRestriction `json:"ageRestriction,omitempty"`

	// AndRestriction: Operators
	AndRestriction *AbuseiamAndRestriction `json:"andRestriction,omitempty"`

	// ConstantRestriction: Constant
	ConstantRestriction *AbuseiamConstantRestriction `json:"constantRestriction,omitempty"`

	// GeoRestriction: Leaf Nodes
	GeoRestriction *AbuseiamGeoRestriction `json:"geoRestriction,omitempty"`

	NotRestriction *AbuseiamNotRestriction `json:"notRestriction,omitempty"`

	OrRestriction *AbuseiamOrRestriction `json:"orRestriction,omitempty"`

	SpecialRestriction *AbuseiamSpecialRestriction `json:"specialRestriction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgeRestriction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgeRestriction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamUserRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamUserRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamVerdict: Verdict against a target. AbuseIAm generates a
// verdict based on evaluations. AbuseIAm can send such verdicts to
// clients for enforcement.
type AbuseiamVerdict struct {
	// Client: Target client of the verdict. It can be used to differentiate
	// verdicts from multiple clients when such verdicts are processed in
	// one common place.
	Client *AbuseiamClient `json:"client,omitempty"`

	// Comment: Additional info regarding the verdict.
	Comment string `json:"comment,omitempty"`

	// Possible values:
	//   "ERROR"
	//   "NO_ACTION" - The content is okay and no action needs to be taken.
	//   "GOOD" - To mark content/user as good.
	//   "DELETE"
	//   "INTERSTITIAL" - Give a user an interstial message. E.g., via a
	// pop-up or an email.
	//   "HIDE"
	//   "BLACK_LIST" - The product should black list this content itself.
	//   "MARK_AS_SPAM"
	//   "REWRITE_LINKS" - There's something bad about the links, so we
	// recommend that the links be 'scrubbed' to go through the GWS
	// redirector to protect against malware and phishing:
	// http://wiki.corp.google.com/twiki/bin/view/Main/SafeRedirector
	//   "HIDE_AND_NOTIFY" - HIDE_AND_NOTIFY is used when the target needs
	// to be hidden, but the UI needs to show an appropriate error message.
	//   "FREEZE_SERVICE" - Freeze a user on service level. E.g., a frozen
	// user can not generate new content.
	//   "SUSPEND_SERVICE" - Suspend a user on service level.
	//   "SMS_DISABLE" - SMS-disable a user on Gaia level.
	//   "NOTIFY" - Notify a user (e.g., warn a user).
	Decision string `json:"decision,omitempty"`

	// DurationMins: Time duration (in minutes) of the verdict.
	DurationMins int64 `json:"durationMins,omitempty"`

	// Evaluation: Evaluations relevant to this verdict. Every Verdict
	// should contain at least one Evaluation.
	Evaluation []*AbuseiamEvaluation `json:"evaluation,omitempty"`

	// Hashes: Details of all the hashes that can be computed on a message,
	// such as simhash and attachment hash
	Hashes []*AbuseiamHash `json:"hashes,omitempty"`

	// IsLegalIssued: Is this verdict issued by legal?
	IsLegalIssued bool `json:"isLegalIssued,omitempty"`

	// MiscScores: This field is used to pass relevant / necessary scores to
	// our clients. For eg: ASBE propogates these scores to moonshine.
	MiscScores []*AbuseiamNameValuePair `json:"miscScores,omitempty"`

	// ReasonCode: A short description of the reason why the verdict
	// decision is made.
	ReasonCode string `json:"reasonCode,omitempty"`

	// Region: The regions in which this verdict should be enforced. Absence
	// of this field indicates that the verdict is applicable everywhere.
	Region []*AbuseiamRegion `json:"region,omitempty"`

	// Restriction: Restrictions on where this verdict applies. If any
	// restriction is met, the verdict is applied there. If no restrictions
	// are present, the verdict is considered global.
	Restriction []*AbuseiamVerdictRestriction `json:"restriction,omitempty"`

	// StrikeCategory: Category of the strike if this is a strike verdict.
	//
	// Possible values:
	//   "ES" - General Emerald Sea.
	//   "CP" - Child porn.
	//   "COPYRIGHT" - Copyright violations.
	//   "BLOGGER" - Blogger.
	//   "GRANDCENTRAL" - Google Voice.
	//   "DRIVE" - Drive.
	//   "CLOUD" - Cloud platform.
	//   "SITES" - Google Sites.
	StrikeCategory string `json:"strikeCategory,omitempty"`

	Target *AbuseiamTarget `json:"target,omitempty"`

	// TargetTimestampMicros: The timestamp of the target. E.g., the time
	// when the target was updated.
	TargetTimestampMicros int64 `json:"targetTimestampMicros,omitempty,string"`

	// TimestampMicros: When the verdict is generated
	TimestampMicros int64 `json:"timestampMicros,omitempty,string"`

	// UserNotification: Extra notification(s) to be delivered to target
	// user or message owner about the verdict.
	UserNotification []*AbuseiamUserNotification `json:"userNotification,omitempty"`

	// Version: version of decision script
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Client") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Client") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamVerdict) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamVerdict
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamVerdictRestriction: Describes restrictions on where the
// verdict applies.
type AbuseiamVerdictRestriction struct {
	// Context: For a restriction to apply, all contexts must be satisfied.
	// For example, if context[0] is COUNTRY/'GERMANY' and context[1] is
	// DESTINATION_STREAM/'gplus:SQUARE:knitting_discussion', then the
	// verdict applies only when the 'knitting discussion' square is viewed
	// from inside Germany. Please note that this is present for legacy
	// reasons and users of this field would be migrated to use the
	// user_restriction field defined below.
	Context []*AbuseiamVerdictRestrictionContext `json:"context,omitempty"`

	// UserRestriction: A boolean expression tree used to define the
	// restrictions where the verdict applies. Please use
	// java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to
	// evaluate this proto.
	UserRestriction *AbuseiamUserRestriction `json:"userRestriction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Context") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Context") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamVerdictRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamVerdictRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamVerdictRestrictionContext: Describes a dimension of a context
// where a verdict applies.
type AbuseiamVerdictRestrictionContext struct {
	// Id: String identifying the context.
	Id string `json:"id,omitempty"`

	// Possible values:
	//   "UNKNOWN" - Dummy default value. Avoid using it explicitly as a
	// Type.
	//   "DESTINATION_STREAM" - DESTINATION_STREAM is used when a verdict
	// only applies to content in a particular indexed stream/channel.
	// Examples include Squares, Blogs, and Youtube videos.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamVerdictRestrictionContext) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamVerdictRestrictionContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamVideoReviewData: Information about a video review.
type AbuseiamVideoReviewData struct {
	// ReferenceFragment: Serialized repeated
	// youtube_admin.adminmatch.csai.ReferenceFragment
	ReferenceFragment []string `json:"referenceFragment,omitempty"`

	// Reviewer: Information about the video reviewer.
	Reviewer *AbuseiamVideoReviewer `json:"reviewer,omitempty"`

	// VideoId: The Viper id of the video.
	VideoId string `json:"videoId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ReferenceFragment")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ReferenceFragment") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamVideoReviewData) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamVideoReviewData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AbuseiamVideoReviewer: Information about video reviewers.
type AbuseiamVideoReviewer struct {
	// Possible values:
	//   "UNKNOWN" - Default value, do not use explicitly.
	//   "CRT" - Content review team. This team does general reviews.
	//   "TIERED_CRT" - Special high quality CRT which do more high
	// confidence reviews.
	//   "POLICY" - Policy team.
	//   "ANALYSTS" - Analysts from the abuse team.
	//   "LEGAL" - The general legal team.
	//   "LEGAL_CSAI" - Queue for LEGAL_CSAI team for high priority items.
	//   "LEGAL_REMOVALS" - The legal team which handles content removals
	// (e.g. copyright).
	//   "HIJACKING_TEAM" - Team which deals with hijacking reviews.
	//   "CRT_CSAI" - CRT Team in Dublin, which handles CSAI-related
	// reviews.
	//   "LEGAL_CSAI_LOW_PRIORITY" - Queue for lower priority suspected CSAI
	// items (e.g. content from disabled users)
	Type string `json:"type,omitempty"`

	// Username: The username of the person doing the video review.
	Username string `json:"username,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AbuseiamVideoReviewer) MarshalJSON() ([]byte, error) {
	type NoMethod AbuseiamVideoReviewer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AdsShoppingReportingOffersSerializedSoriId: The serialized form of a
// SORI id. NOTE that this proto is stored in V4/O4 index and that new
// fields should not be added without getting an agreement from the
// serving team as well.
type AdsShoppingReportingOffersSerializedSoriId struct {
	HighId uint64 `json:"highId,omitempty,string"`

	LowId1 uint64 `json:"lowId1,omitempty,string"`

	LowId2 uint64 `json:"lowId2,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "HighId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HighId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AdsShoppingReportingOffersSerializedSoriId) MarshalJSON() ([]byte, error) {
	type NoMethod AdsShoppingReportingOffersSerializedSoriId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type Anchors struct {
	Anchor []*AnchorsAnchor `json:"anchor,omitempty"`

	// HomepageAnchorsDropped: The total # of local homepage anchors dropped
	// in AnchorAccumulator.
	HomepageAnchorsDropped int64 `json:"homepageAnchorsDropped,omitempty,string"`

	// IndexTier: The index tier from which the anchors were extracted. Note
	// that this is only valid in the anchor record written by
	// linkextractor. The value can be one of the enum values defined in
	// segindexer/types.h.
	IndexTier int64 `json:"indexTier,omitempty"`

	// LocalAnchorsDropped: The total # of local non-homepage anchors
	// dropped in AnchorAccumulator.
	LocalAnchorsDropped int64 `json:"localAnchorsDropped,omitempty,string"`

	// NonlocalAnchorsDropped: The total # of non-local anchors dropped in
	// AnchorAccumulator.
	NonlocalAnchorsDropped int64 `json:"nonlocalAnchorsDropped,omitempty,string"`

	// RedundantAnchorsDropped: The *_anchors_dropped fields below are not
	// populated by Alexandria, which uses cdoc.anchor_stats instead. The
	// total # of redundant anchors dropped in linkextractor.
	RedundantAnchorsDropped int64 `json:"redundantAnchorsDropped,omitempty,string"`

	Redundantanchorinfo []*AnchorsRedundantAnchorInfo `json:"redundantanchorinfo,omitempty"`

	// SupplementalAnchorsDropped: The total # of supplemental anchors
	// dropped in AnchorAccumulator. ## DEPRECATED.
	SupplementalAnchorsDropped int64 `json:"supplementalAnchorsDropped,omitempty,string"`

	// TargetDocid: may be implicit
	TargetDocid uint64 `json:"targetDocid,omitempty,string"`

	// TargetSite: HOST_LEVEL site chunking.
	TargetSite string `json:"targetSite,omitempty"`

	// TargetUrl: This is produced during link extraction but not written
	// out in the linklogs in order to save space.
	TargetUrl string `json:"targetUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchor") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *Anchors) MarshalJSON() ([]byte, error) {
	type NoMethod Anchors
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AnchorsAnchor struct {
	Bucket int64 `json:"bucket,omitempty"`

	// CatfishTags: CATfish tags attached to a link. These are similar to
	// link tags, except the values are created on the fly within Cookbook.
	// See: http://sites/cookbook/exporting/indexing
	CatfishTags []int64 `json:"catfishTags,omitempty"`

	// CompressedImageUrls: If the anchor contained images, these image urls
	// are stored here in compressed form.
	CompressedImageUrls []string `json:"compressedImageUrls,omitempty"`

	// CompressedOriginalTargetUrl: The anchor's original target url,
	// compressed. Available only in Alexandria docjoins when the anchor is
	// forwarded.
	CompressedOriginalTargetUrl string `json:"compressedOriginalTargetUrl,omitempty"`

	Context int64 `json:"context,omitempty"`

	// Context2: This is a hash of terms near the anchor. (This is a
	// second-generation hash replacing the value stored in the 'context'
	// field.)
	Context2 int64 `json:"context2,omitempty"`

	// CreationDate: used for history - the first and last time we have seen
	// this anchor. creation_date also used for Freshdocs Twitter indexing,
	// a retweet is an anchor of the original tweet. This field records the
	// time when a retweet is created.
	CreationDate int64 `json:"creationDate,omitempty"`

	Deleted bool `json:"deleted,omitempty"`

	DeletionDate int64 `json:"deletionDate,omitempty"`

	// Demotionreason: DEPRECATED
	Demotionreason int64 `json:"demotionreason,omitempty"`

	// EncodedNewsAnchorData: Encoded data containing information about
	// newsiness of anchor. Populated only if anchor is classified as coming
	// from a newsy, high quality site. Encoded data for anchor sources are
	// being stored in
	// googledata/quality/freshness/news_anchors/encoded_news_anchors_data.tx
	// t Scores are being computed with quality/freshness/news_anchors/
	// routines.
	EncodedNewsAnchorData int64 `json:"encodedNewsAnchorData,omitempty"`

	// Experimental: If true, the anchor is for experimental purposes and
	// should not be used in serving.
	Experimental bool `json:"experimental,omitempty"`

	// Expired: true iff exp domain
	Expired bool `json:"expired,omitempty"`

	// FirstseenDate: # days past Dec 31, 1994, 23:00:00 UTC (Unix time
	// @788914800) that this link was first seen. Should never occupy more
	// than 15 bits. NOTE: this is NOT the same as creation_date;
	// firstseen_date is filled during link extraction
	FirstseenDate int64 `json:"firstseenDate,omitempty"`

	// FirstseenNearCreation: true if we think 'firstseen_date' is an
	// accurate estimate of when the link was actually added to the source
	// page. false if it may have existed for some time before we saw it.
	FirstseenNearCreation bool `json:"firstseenNearCreation,omitempty"`

	Fontsize int64 `json:"fontsize,omitempty"`

	// ForwardingTypes: How the anchor is forwarded to the canonical,
	// available only for forwarded anchors (i.e., the field is set). The
	// forwarding types are defined in URLForwardingUtil
	// (segindexer/segment-indexer-util.h). Always use URLForwardingUtil to
	// access this field and use
	// URLForwardingUtil::GetAnchorForwardingReason to get the explanation
	// how the anchor is forwarded to the canonical. NOTE: Use with caution
	// as it is only set for docjoins generated using the urlmap from
	// repository/updater.
	ForwardingTypes int64 `json:"forwardingTypes,omitempty"`

	// Fragment: The URL fragment for this anchor (the foo in
	// http://www.google.com#foo)
	Fragment string `json:"fragment,omitempty"`

	// FullLeftContext: The full context. These are not written out in the
	// linklogs.
	FullLeftContext googleapi.Uint64s `json:"fullLeftContext,omitempty"`

	FullRightContext googleapi.Uint64s `json:"fullRightContext,omitempty"`

	// IsLocal: The bit ~roughly~ indicates whether an anchor's source and
	// target pages are on the same domain. Note: this plays no role in
	// determining whether an anchor is onsite, ondomain, or offdomain in
	// mustang (i.e., the bit above).
	IsLocal bool `json:"isLocal,omitempty"`

	// LastUpdateTimestamp: Used for history and freshness tracking - the
	// timestamp this anchor is updated in indexing.
	LastUpdateTimestamp int64 `json:"lastUpdateTimestamp,omitempty"`

	// LinkAdditionalInfo: Additional information related to the anchor,
	// such as additional anchor text or scores.
	LinkAdditionalInfo *Proto2BridgeMessageSet `json:"linkAdditionalInfo,omitempty"`

	// LinkTags: Contains info on link type, source page, etc.
	LinkTags []int64 `json:"linkTags,omitempty"`

	// Locality: For ranking purposes, the quality of an anchor is measured
	// by its "locality" and "bucket". See quality/anchors/definitions.h for
	// more information.
	Locality int64 `json:"locality,omitempty"`

	// Offset: This is the offset for the first term in the anchor - it can
	// be used as a unique ID for the anchor within the document and
	// compared against all per-tag data. This is measured in bytes from the
	// start of the document. We write this out to the linklogs to recover
	// the original order of links after source/target forwarding. This is
	// necessary for computing the global related data.
	Offset int64 `json:"offset,omitempty"`

	// OrigText: Original text, including capitalization and punctuation.
	// Runs of whitespace are collapsed into a single space.
	OrigText string `json:"origText,omitempty"`

	// OriginalTargetDocid: The docid of the anchor's original target. This
	// field is available if and only if the anchor is forwarded.
	OriginalTargetDocid uint64 `json:"originalTargetDocid,omitempty,string"`

	// PagerankWeight: Weight to be stored in linkmaps for pageranker
	PagerankWeight float64 `json:"pagerankWeight,omitempty"`

	// ParallelLinks: The number of additional links from the same source
	// page to the same target domain. Not populated if is_local is true.
	ParallelLinks int64 `json:"parallelLinks,omitempty"`

	// PossiblyOldFirstseenDate: DEPRECATED. It used to be set if
	// firstseen_date is not set. It's to indicate that the anchor is
	// possibly old, but we don't have enough information to tell until the
	// linkage map is updated. TODO(hxu) rename it to
	// possibly_old_firstseen_date_DEPRECATED after clean up other
	// dependencies.
	PossiblyOldFirstseenDate bool `json:"possiblyOldFirstseenDate,omitempty"`

	// SetiPagerankWeight: TEMPORARY
	SetiPagerankWeight float64 `json:"setiPagerankWeight,omitempty"`

	Source *AnchorsAnchorSource `json:"source,omitempty"`

	// SourceType:  is to record the quality of the anchor's source page and
	// is correlated with but not identical to the index tier of the source
	// page. In the docjoins built by the indexing pipeline (Alexandria), -
	// Anchors marked TYPE_HIGH_QUALITY are from base documents. - Anchors
	// marked TYPE_MEDIUM_QUALITY are from documents of medium quality
	// (roughly but not exactly supplemental tier documents). - Anchors
	// marked TYPE_LOW_QUALITY are from documents of low quality (roughly
	// but not exactly blackhole documents). Note that the source_type can
	// also be used as an importance indicator of an anchor (a lower
	// source_type value indicates a more important anchor), so it is
	// important to enforce that TYPE_HIGH_QUALITY < TYPE_MEDIUM_QUALITY <
	// TYPE_LOW_QUALITY To add a new source type in future, please maintain
	// the proper relationship among the types as well. TYPE_FRESHDOCS, only
	// available in freshdocs indexing, is a special case and is considered
	// the same type as TYPE_HIGH_QUALITY for the purpose of anchor
	// importance in duplicate anchor removal.
	SourceType int64 `json:"sourceType,omitempty"`

	// TargetUrlEncoding: A given target URL may be found in different
	// encodings in different documents. We store the URL encoding with each
	// source anchor so that we can count them later to find the encoding
	// most likely to be expected by the Web site. Around 0.7% of target
	// URLs are expected to require a non-default value here. The default
	// value 0 is referenced in C++ as webutil::kDefaultUrlEncoding. See
	// also webutil/urlencoding.
	TargetUrlEncoding int64 `json:"targetUrlEncoding,omitempty"`

	// Text: Space-delimited anchor words. Text that needs segmentation
	// (like CJK or Thai) is unsegmented, since we set
	// FLAGS_segment_during_lexing to false in mr-linkextractor.cc .
	Text string `json:"text,omitempty"`

	// Timestamp: This field is DEPRECATED and no longer filled. For source
	// page crawl timestamp, use Source.crawl_timestamp. Next tag id should
	// be 62.
	Timestamp int64 `json:"timestamp,omitempty,string"`

	// Type: DEPRECATED: Now in link_tags
	Type int64 `json:"type,omitempty"`

	// Weight: weights are 0-127
	Weight int64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bucket") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bucket") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AnchorsAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod AnchorsAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AnchorsAnchor) UnmarshalJSON(data []byte) error {
	type NoMethod AnchorsAnchor
	var s1 struct {
		PagerankWeight     gensupport.JSONFloat64 `json:"pagerankWeight"`
		SetiPagerankWeight gensupport.JSONFloat64 `json:"setiPagerankWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PagerankWeight = float64(s1.PagerankWeight)
	s.SetiPagerankWeight = float64(s1.SetiPagerankWeight)
	return nil
}

// AnchorsAnchorSource: attributes of the source document for the link
type AnchorsAnchorSource struct {
	// AdditionalInfo: Additional information related to the source, such as
	// news hub info.
	AdditionalInfo *Proto2BridgeMessageSet `json:"additionalInfo,omitempty"`

	// Cluster: anchor++ cluster id
	Cluster int64 `json:"cluster,omitempty"`

	// CompressedUrl: compressed source url
	CompressedUrl string `json:"compressedUrl,omitempty"`

	// CrawlTimestamp: Source page crawl timestamp.
	CrawlTimestamp int64 `json:"crawlTimestamp,omitempty,string"`

	// Docid: The docid field used to be "required", but it is now
	// "optional" because it is not present when anchors are stored in
	// webtable. When anchors are stored as part of docjoin files in the
	// segment indexer, however, docid should be considered required.
	Docid uint64 `json:"docid,omitempty,string"`

	// Doclength: necessary for anything?
	Doclength int64 `json:"doclength,omitempty"`

	// HomePageInfo: Information about if the source page is a home page. It
	// can be one of the enum values defined in PerDocData::HomePageInfo
	// (NOT_HOMEPAGE, NOT_TRUSTED, PARTIALLY_TRUSTED, and FULLY_TRUSTED).
	HomePageInfo int64 `json:"homePageInfo,omitempty"`

	// Indyrank: uint16 scale
	Indyrank int64 `json:"indyrank,omitempty"`

	// Ipaddr: DEPRECATED, use packed_ipaddress
	Ipaddr int64 `json:"ipaddr,omitempty"`

	// Language: default -> English
	Language int64 `json:"language,omitempty"`

	// Linkhash: 0 -> no hash
	Linkhash uint64 `json:"linkhash,omitempty,string"`

	// LocalCountryCodes: Countries to which the source page is local/most
	// relevant; stored as III identifiers for country/region codes (see
	// http://go/iii).
	LocalCountryCodes []int64 `json:"localCountryCodes,omitempty"`

	// Nsr: This NSR value has range [0,1000] and is the original value
	// [0.0,1.0] multiplied by 1000 rounded to an integer.
	Nsr int64 `json:"nsr,omitempty"`

	Outdegree int64 `json:"outdegree,omitempty"`

	// Outsites: approx num of pointed-to sites
	Outsites int64 `json:"outsites,omitempty"`

	// PackedIpaddress: string in IPAddress::ToPackedString() format.
	PackedIpaddress string `json:"packedIpaddress,omitempty"`

	// PageTags: Page tags are described by enum PageTag in PerDocData. Page
	// tags are used in anchors to identify properties of the linking page.
	// These are DEPRECATED: in the future, use link_tags instead.
	// DEPRECATED
	PageTags []int64 `json:"pageTags,omitempty"`

	// Pagerank: uint16 scale
	Pagerank int64 `json:"pagerank,omitempty"`

	// PagerankNs: unit16 scale
	PagerankNs int64 `json:"pagerankNs,omitempty"`

	// Seglanguage: DEPRECATED
	Seglanguage int64 `json:"seglanguage,omitempty"`

	Site string `json:"site,omitempty"`

	// Spamrank: uint16 scale
	Spamrank int64 `json:"spamrank,omitempty"`

	// Spamscore1: deprecated, to be removed after October 20. 0-127 scale
	Spamscore1 int64 `json:"spamscore1,omitempty"`

	// Spamscore2: 0-127 scale
	Spamscore2 int64 `json:"spamscore2,omitempty"`

	// WebtableKey: Webtable key of source
	WebtableKey string `json:"webtableKey,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdditionalInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AnchorsAnchorSource) MarshalJSON() ([]byte, error) {
	type NoMethod AnchorsAnchorSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AnchorsRedundantAnchorInfo: NOTE: in docjoins, the following anchor
// sampling information is only ## available in the first record of a
// document (under the same docid). The total number of redundant
// anchors dropped per (domain, text) in linkextractor. If we receive a
// large number of anchors from a particular domain, then we'll throw
// out all but a sampling of them from that domain. The data is sorted
// by the (domain,text) pairs. This field is not populated by
// Alexandria, which uses cdoc.anchor_stats instead.
type AnchorsRedundantAnchorInfo struct {
	AnchorsDropped int64 `json:"anchorsDropped,omitempty,string"`

	Domain string `json:"domain,omitempty"`

	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorsDropped") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorsDropped") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AnchorsRedundantAnchorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AnchorsRedundantAnchorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsDynamiteCustomerId: Represents a GSuite customer ID. Obfuscated
// with CustomerIdObfuscator.
type AppsDynamiteCustomerId struct {
	CustomerId string `json:"customerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CustomerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomerId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsDynamiteCustomerId) MarshalJSON() ([]byte, error) {
	type NoMethod AppsDynamiteCustomerId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsDynamiteSharedOrganizationInfo: Contains info about the entity
// that something is, or is owned by.
type AppsDynamiteSharedOrganizationInfo struct {
	ConsumerInfo *AppsDynamiteSharedOrganizationInfoConsumerInfo `json:"consumerInfo,omitempty"`

	CustomerInfo *AppsDynamiteSharedOrganizationInfoCustomerInfo `json:"customerInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConsumerInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConsumerInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsDynamiteSharedOrganizationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsDynamiteSharedOrganizationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsDynamiteSharedOrganizationInfoConsumerInfo: Intentionally empty.
// Used to disambiguate consumer and customer use cases in oneof below.
type AppsDynamiteSharedOrganizationInfoConsumerInfo struct {
}

type AppsDynamiteSharedOrganizationInfoCustomerInfo struct {
	CustomerId *AppsDynamiteCustomerId `json:"customerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CustomerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomerId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsDynamiteSharedOrganizationInfoCustomerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsDynamiteSharedOrganizationInfoCustomerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleActivityBackendDestinationStream: A DestinationStream is a
// /namespace/id[0]/id[1]/.../id[n] that represents a collection of
// Activities. Example destinations: -The Profile Stream on
// http://plus.google.com/+JohnDoe/posts -A Square Stream on
// http://plus.google.com/squares/123 -A "comment Stream" (Fountain) on
// http://www.youtube.com/watch?id=123 It's possible for a single
// Activity to show in each of these destinations - and it might
// behave/look slightly differently for each one. Destinations can have
// their own business logic associated with them at both write-time and
// read-time server-side (these are documented below). Each
// DestinationStream is indexed and can be retrieved using the
// GetDestinationStreamRequest. For the repeated ID space indexing
// happens at all levels, e.g. if you have: /square/123/abc
// /square/123/efd /square/456 You can fetch /square/123/abc directly or
// /square/123 (which includes all Activities in both /square/123/abc
// and /square/123/efd), or even /square which retrieves all Activities
// in the Square namespace (visible for that user). On the storage
// layer, we represent DestinationStream as Channel
// (http://cs/#google3/social/common/channel/channel.proto), since the
// storage does not have the concept of a Stream. Both terms are used
// interchangeably within the service layer, but client of Social
// Infrastructure should use the term DestinationStream. Next ID: 3
type AppsPeopleActivityBackendDestinationStream struct {
	// Id: The hierarchy of IDs. Each individual ID is "flat" and the
	// repeated list defines the hierarchy. Namespaces define the "validity"
	// of this hierachy (depth, naming convention, etc) and the server will
	// reject invalid IDs.
	Id []string `json:"id,omitempty"`

	// Possible values:
	//   "UNKNOWN_DESTINATION_NAMESPACE" - To prevent issues with
	// out-of-sync clients sending unexpected values.
	//   "SQUARES" - Use for G+ community. The ID is the square gaia id. If
	// this is a square substream, second ID is the substream stream ID.
	// Write-time logic: -Verify that the AUTHOR is a member of this Square.
	// Read-time logic: -Fetch the name of the Square and substream.
	//   "FOUNTAIN" - For Blogger Fountain, the ID is the canonical URL of
	// the site. For Distiller, the ID is "youtube"/channel_id/video_id. For
	// Distiller Discussion Page, the ID is "youtube"/channel_id/"channel".
	// For Distiller Private Msg, the ID is "youtube"/channel_id/"private".
	// For Backstage, the ID is "youtube"/channel_id/"backstage". For Live,
	// the ID is "youtube"/channel_id/"live"/"chat" and
	// "youtube"/channel_id/video_id/"live"/"chat".
	//   "PROFILE" - Used for Profile Stream fetches. The ID is the
	// (decimal) Gaia ID of the user whose profile is being fetched.
	//   "COLLEXIONS" - Used for Collexions feature (go/g+c) ID is the
	// Collexion ID to which the post is assigned. These IDs are allocated
	// from their own id space maintained via UniqueId. They are NOT gaia
	// ids, nor do they need to be used in conjunction with a gaia id when
	// identifying a collection. In general a post will be assigned to at
	// most 1 collexion, however there do exist corner cases where
	// multi-inclusion can occur.
	//   "TEST" - Used for test data for clients to prototype with. This
	// should only ever be used in the SBE_PLAYGROUND corpus
	// (go/sbe-playground), or in tests.
	//   "HIGHLIGHT" - Used for Search Highlight (go/seng-highlight). The ID
	// is the account id to which a highlight belongs.
	//   "SOCIETY" - Used for Society (go/society) ID is an s2 cell id
	// (go/s2), optionally with an additional ID of a "topic" string within
	// that cell.
	//   "MEMEGEN" - Used for Memegen integration with SBE
	// (go/memegen-sbe-onboarding) The ID is "meme" followed by the meme id
	// to which a comment belongs.
	//   "PHOTOS" - Used for Photos integration with SBE
	// (go/envelope-comments-design-doc)
	//   "SUPPLY_CHAIN_CENTRAL" - Used for Supply Chain Central commenting
	// capability (go/scc-comment). ID format: - For purchase order app:
	// resource/purchase_order//line_item/ - For data exchange app:
	// application/data_exchange/report/
	//   "PAISA" - Used for Paisa integration with SBE
	// (go/paisa-stanza-plan)
	//   "SOCIETY_CHAT" - Use for Society Chat (http://go/society-chat). The
	// ID format is /society/users/private/.
	//   "PLUS_ENTERPRISE_LOG" - Use for G+ Enterprise Log API Event API
	// (http://go/gplus_interaction_event_sync_queue) The ID format is
	// /enterprise//
	//   "SEARCH_UGC" - Used for UGC for knowledge (go/knowledge-ugc). The
	// ID format is /livestream/sports/
	//   "LOUPE" - Loupe go/sbe-loupe-requirements.
	//   "MINDSEARCH" - Mindsearch go/india-qa.
	//   "SOS_LIVE_COMMENTS" - Used for SOS Live comments
	// (go/live-comments-sos-alerts). The ID format is /livestream/sos/
	//   "SBE_LOADTEST" - Used for SBE loadtests.
	//   "SYSTEM1" - Used for System 1 (go/sys1-sbe)
	//   "G_PLUS" - Use if you want the Activity to show in the regular G+
	// product, i.e. the main Stream, user's profile streams, the G+ search
	// stream, etc. No ID should be used with this DestinationNamespace.
	//   "YOUTUBE" - Used to serve consumption stream on Youtube homepage.
	// The stream is essentially a user's consumption stream with restricts
	// set during write-time indexing such that only activities with Youtube
	// video are retrieved during read-time. Deprecated - Do not use.
	//   "EVENTS" - DEPRECATED - once used for the G+ Events feature, but
	// never launched.
	//   "DEPRECATED_COLLECTIONS" - It is deprecated and replaced by
	// COLLEXIONS.
	//   "REVIEWS" - Used for Review Stream fetches. The ID is the canonical
	// representation of the entity being reviewed (for place reviews, it is
	// cluster_id).
	//   "BACKSTAGE" - Deprecated - do not use. Backstage uses FOUNTAIN
	// DestinationNamespace.
	//   "SPACES" - Deprecated. Used for Spaces (go/spaces) ID is the space
	// ID in which the post is made. Posts will reside in exactly one space.
	Namespace string `json:"namespace,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleActivityBackendDestinationStream) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleActivityBackendDestinationStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleActivityStreamqualityDistillerEngagements: Stores the
// number of different kind of user engagement actions. Abuse Report is
// also consider an engagement. Currently we only have abuse report
// engagements but in future we might add other types of engagements as
// well.
type AppsPeopleActivityStreamqualityDistillerEngagements struct {
	// ReportCompromised: Corresponds on "This account might be compromised
	// or hacked" reporting action.
	ReportCompromised int64 `json:"reportCompromised,omitempty,string"`

	// ReportHarassment: Corresponds on "Harassment or bullying" reporting
	// action.
	ReportHarassment int64 `json:"reportHarassment,omitempty,string"`

	// ReportHate: Corresponds on "Hate speach or graphic violence"
	// reporting action.
	ReportHate int64 `json:"reportHate,omitempty,string"`

	// ReportPorn: Corresponds on "Pornography or sexually explicit
	// material" reporting action.
	ReportPorn int64 `json:"reportPorn,omitempty,string"`

	// ReportSpam: Corresponds on "Unwanted commercial content or spam"
	// reporting action.
	ReportSpam int64 `json:"reportSpam,omitempty,string"`

	// ServeCount: Number of times this activity was served out of
	// asbe/stanza.
	ServeCount int64 `json:"serveCount,omitempty,string"`

	// TimeSec: Timestamp in seconds for which time this record is valid.
	TimeSec int64 `json:"timeSec,omitempty,string"`

	// YtThumbsDown: Corresponds on Distiller comment thumbs down action.
	YtThumbsDown int64 `json:"ytThumbsDown,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ReportCompromised")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ReportCompromised") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleActivityStreamqualityDistillerEngagements) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleActivityStreamqualityDistillerEngagements
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiAbout struct {
	// Possible values:
	//   "TEXT_PLAIN"
	//   "TEXT_HTML"
	ContentType string `json:"contentType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// SafeHtmlValue: Sanitized HTML value that is only populated when the
	// SANITIZE_ABOUT_HTML extension is requested.
	SafeHtmlValue *WebutilHtmlTypesSafeHtmlProto `json:"safeHtmlValue,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAbout) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAbout
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData: Extension
// data for use in AboutMe.
type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData struct {
	NameDisplayOptions *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions `json:"nameDisplayOptions,omitempty"`

	PhotosCompareData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData `json:"photosCompareData,omitempty"`

	ProfileEditability *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability `json:"profileEditability,omitempty"`

	ProfileNameModificationHistory *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory `json:"profileNameModificationHistory,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NameDisplayOptions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NameDisplayOptions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptio
// ns: See NameDisplayOptions in
// //depot/google3/focus/backend/proto/backend.proto. See also
// go/nickname-mess.
type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions struct {
	// Possible values:
	//   "UNKNOWN_NICKNAME_OPTION"
	//   "QUOTED_NICKNAME" - Include the nickname, in quotes, in the display
	// name. In English, the nickname appears between the given and family
	// names. Example: Victor "Pug" Henry.
	//   "PAREN_NICKNAME" - Include the nickname, in parentheses, in the
	// display name. In English, the nickname appears after the given and
	// family names. Example: Victor Henry (Pug).
	NicknameOption string `json:"nicknameOption,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NicknameOption") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NicknameOption") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData struct {
	DiffData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData `json:"diffData,omitempty"`

	HighResUrl string `json:"highResUrl,omitempty"`

	// InconsistentPhoto: True if photo diff is greater than 0.01 on any
	// color band, or if the user has a low res photo but no high res photo.
	// This field is primarily for use in About Me and for other uses it's
	// recommended to use the DiffData values directly instead. The cutoff
	// is based on a heuristic determined in go/comparing-profile-photos
	InconsistentPhoto bool `json:"inconsistentPhoto,omitempty"`

	// LowResData: Only present if the photo diff is greater than 0.01 on
	// any color band.
	LowResData string `json:"lowResData,omitempty"`

	LowResUrl string `json:"lowResUrl,omitempty"`

	MonogramUrl string `json:"monogramUrl,omitempty"`

	// PrivateLowResAcl: True if the low-res photo has a private ACL set.
	PrivateLowResAcl bool `json:"privateLowResAcl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DiffData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DiffData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData struct {
	BlueDiff float64 `json:"blueDiff,omitempty"`

	GreenDiff float64 `json:"greenDiff,omitempty"`

	RedDiff float64 `json:"redDiff,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlueDiff") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlueDiff") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData
	var s1 struct {
		BlueDiff  gensupport.JSONFloat64 `json:"blueDiff"`
		GreenDiff gensupport.JSONFloat64 `json:"greenDiff"`
		RedDiff   gensupport.JSONFloat64 `json:"redDiff"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BlueDiff = float64(s1.BlueDiff)
	s.GreenDiff = float64(s1.GreenDiff)
	s.RedDiff = float64(s1.RedDiff)
	return nil
}

// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditabili
// ty: See UserEditedLockedMask in
// //depot/google3/focus/backend/proto/backend.proto.
type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability struct {
	// LockedField: Read-only set of zero or more field paths that are
	// locked for update on this person, such as "person.name",
	// "person.email", etc. The set of fields is only populated for the
	// requester's profile. Fields in the set cannot be edited, added, or
	// deleted from the profile. Attempting to update any of these fields
	// will result in an exception.
	LockedField []string `json:"lockedField,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LockedField") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LockedField") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModif
// icationHistory: See ABUSE_NAME_LAST_MODIFIED in
// //depot/google3/focus/backend/proto/backend.proto which maps to
// //depot/google3/focus/proto/profileattribute.proto
type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory struct {
	// ComputedNameChangesRemaining: The number of name changes remaining at
	// RPC request time. This can be more than name_changes_remaining, if
	// user hasn't changed name for some time and accrued quota since last
	// change.
	ComputedNameChangesRemaining int64 `json:"computedNameChangesRemaining,omitempty"`

	// ComputedNicknameChangesRemaining: The number of nickname changes
	// remaining at RPC request time. This can be more than
	// nickname_changes_remaining, if user hasn't changed nickname for some
	// time and accrued quota since last change.
	ComputedNicknameChangesRemaining int64 `json:"computedNicknameChangesRemaining,omitempty"`

	// NameChangesRemaining: The number of name changes remaining at the
	// time the name was last modified.
	NameChangesRemaining int64 `json:"nameChangesRemaining,omitempty"`

	// NameLastModified: The last time the profile name was modified in
	// milliseconds UTC.
	NameLastModified int64 `json:"nameLastModified,omitempty,string"`

	// NicknameChangesRemaining: The number of nickname changes remaining at
	// the time the nickname was last modified.
	NicknameChangesRemaining int64 `json:"nicknameChangesRemaining,omitempty"`

	// NicknameLastModified: The last time the profile nickname was modified
	// in milliseconds UTC.
	NicknameLastModified int64 `json:"nicknameLastModified,omitempty,string"`

	// Possible values:
	//   "UNKNOWN_QUOTA_ENFORCEMENT_STATUS"
	//   "ENFORCED" - Name change quota is enforced.
	//   "NOT_ENFORCED" - Name change quota exists but is not enforced. This
	// is used for users suspended due to abusive names, where users are
	// allowed to change their names back to non-abusive state without being
	// charged against the quota.
	//   "NOT_APPLICABLE" - Name change quota does not apply. This is used
	// for premium dasher users.
	QuotaEnforcementStatus string `json:"quotaEnforcementStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ComputedNameChangesRemaining") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ComputedNameChangesRemaining") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiAccountEmail struct {
	Email string `json:"email,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAccountEmail) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAccountEmail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo:
// Additional information about a container. TO BE DELETED: replaced by
// DeviceContactInfo.
type AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo struct {
	// RawDeviceContactInfo: When the container is a DEVICE_CONTACT, this
	// list provides account information from the raw contact which is the
	// source of this field.
	RawDeviceContactInfo []*AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo `json:"rawDeviceContactInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "RawDeviceContactInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawDeviceContactInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiAddress struct {
	Country string `json:"country,omitempty"`

	CountryCode string `json:"countryCode,omitempty"`

	// EncodedPlaceId: FeatureId associated with the address. The format is
	// the same as that used for ids in PLACE containers in SourceIdentity.
	EncodedPlaceId string `json:"encodedPlaceId,omitempty"`

	ExtendedAddress string `json:"extendedAddress,omitempty"`

	Formatted string `json:"formatted,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Locality string `json:"locality,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	PoBox string `json:"poBox,omitempty"`

	PointSpec *AppsPeopleOzExternalMergedpeopleapiPointSpec `json:"pointSpec,omitempty"`

	PostalCode string `json:"postalCode,omitempty"`

	Region string `json:"region,omitempty"`

	StreetAddress string `json:"streetAddress,omitempty"`

	// Type: The type of the address. The type can be free form or one of
	// these predefined values: * `home` * `work` * `other`
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Country") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Country") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAddress) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAddress
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAffinity: Similar to
// social.graph.storage.Affinity, but pared down to what the clients of
// the People API are interested in.
type AppsPeopleOzExternalMergedpeopleapiAffinity struct {
	// AffinityMetadata: Contains extra ranking information returned by DAS.
	AffinityMetadata *SocialGraphWireProtoPeopleapiAffinityMetadata `json:"affinityMetadata,omitempty"`

	// Possible values:
	//   "AFFINITY_TYPE_UNKNOWN"
	//   "EMAIL_AUTOCOMPLETE"
	//   "CONTACTS_PLUS_FREQUENTLY_CONTACTED"
	//   "CHAT_AUTOCOMPLETE"
	//   "GPLUS_AUTOCOMPLETE"
	//   "GLASS_AFFINITY"
	//   "PEOPLE_AUTOCOMPLETE_SOCIAL"
	//   "FIELD_AUTOCOMPLETE_SOCIAL"
	//   "CONTACTS_PLUS_EMAIL"
	//   "PHOTOS_PEOPLE_TO_SHARE_WITH_SUGGESTIONS" - Will eventually be
	// deprecated in favor of PHOTOS_SUGGESTED_TARGETS.
	//   "PHOTOS_FIELDS_TO_SHARE_WITH_SUGGESTIONS" - Will eventually be
	// deprecated in favor of PHOTOS_SUGGESTED_TARGETS.
	//   "INBOX_AFFINITY"
	//   "DYNAMITE_AFFINITY"
	//   "PHOTOS_SUGGESTIONS_AFFINITY" - Will eventually be deprecated in
	// favour of PHOTOS_SUGGESTED_TARGETS.
	//   "PHOTOS_SUGGESTED_TARGETS"
	//   "PHOTOS_ASSISTANT_SUGGESTIONS_AFFINITY"
	//   "DRIVE_AUTOCOMPLETE"
	//   "WALLET_PEOPLE_TO_PAY_SUGGESTIONS"
	//   "CONTACTS_PLUS_CONTACT_CENTRIC"
	//   "POMEROY_AFFINITY"
	//   "CALENDAR_AFFINITY"
	//   "SPACES_APP_PEOPLE_AFFINITY"
	//   "HOMEROOM_AFFINITY"
	//   "PEOPLE_PLAYGROUND_AFFINITY"
	//   "FAMILY_AFFINITY"
	//   "CONTACTS_ASSISTANT_SUGGESTED_CONTACTS"
	//   "TRIPS_AFFINITY"
	//   "GOOGLE_VOICE_AFFINITY"
	//   "PHOTOS_FACE_AFFINITY"
	//   "G3DOC_AUTOCOMPLETE"
	//   "LOUPE_SUGGESTIONS_AFFINITY"
	//   "MAPS_SHARING_AFFINITY"
	//   "CLOUD_SEARCH_AFFINITY"
	//   "YOUTUBE_UNPLUGGED"
	//   "JAM_AFFINITY"
	//   "ITEM_SUGGEST_AFFINITY"
	//   "ISSUE_TRACKER_AFFINITY"
	//   "APPS_ASSISTANT_AFFINITY"
	//   "APDL_CONTACT_CENTRIC_DEFAULT_AFFINITY"
	//   "APDL_PROFILE_CENTRIC_DEFAULT_AFFINITY"
	//   "SOCIAL_RECOVERY"
	//   "TEZ_AFFINITY"
	//   "NEWS_AFFINITY"
	//   "ALLO_AFFINITY"
	//   "GPLUS_PEOPLE_RECOMMENDATIONS"
	//   "GPLUS_PEOPLE_RECOMMENDATIONS_SAME_DOMAIN"
	//   "DRIVE_AFFINITY"
	//   "PODIUM_AFFINITY"
	//   "ZOOM_SIGHTS_EMAIL_AFFINITY"
	//   "AIRDROME_AFFINITY"
	//   "HANGOUTS_MEET_AFFINITY"
	//   "GALLERY_AFFINITY"
	//   "AGSA_AFFINITY"
	//   "PAY_AFFINITY"
	//   "SAVES_AFFINITY"
	//   "JASPER_AFFINITY"
	//   "GOOGLE_HOME_APP_AFFINITY"
	//   "TOPAZ_TEAMS_AFFINITY"
	//   "DYNAMITE_OUT_OF_DOMAIN_AFFINITY"
	//   "GOOGLE_VOICE_SIRI_EXTENSION_AFFINITY"
	//   "COURSE_KIT_AFFINITY"
	//   "FORMS_AFFINITY"
	//   "NOVITAS_AFFINITY"
	//   "GTI_PEER_INTERACTIONS_AFFINITY"
	//   "ANDROID_EMERGENCY_AFFINITY"
	//   "DATA_STUDIO_AFFINITY"
	//   "SPUR_AFFINITY"
	//   "PLAY_GAMES_SERVICES_AFFINITY"
	//   "GROUPS_ADD_MEMBER_AFFINITY"
	//   "DUO_AFFINITY"
	//   "MY_BUSINESS_AFFINITY"
	//   "GMAIL_COMPOSE"
	//   "NON_GPLUS_AFFINITY"
	//   "ABUSE_AFFINITY"
	//   "ABUSE_AFFINITY_LITE"
	//   "CALENDAR_PEEK_AFFINITY"
	//   "HUB_CALL_AFFINITY"
	//   "GSUITE_WORKFLOW_AFFINITY"
	//   "VR_POLY_PRO_AFFINITY"
	//   "TASKS_AFFINITY"
	//   "GOOGLE_ONE_AFFINITY"
	//   "TRAVEL_AFFINITY"
	//   "GEO_DISCOVERY_FOLLOW_AFFINITY"
	//   "GMAIL_WEB_AFFINITY"
	//   "ASSISTANT_SETTINGS_WEB_UI_AFFINITY"
	//   "ARTIFEX_AFFINITY"
	//   "CONTACT_STORE_DEFAULT_AFFINITY"
	//   "CONTACT_STORE_SELF_EXCLUSIVE"
	//   "PHOTOS_FACE_STALE_AFFINITY"
	//   "LANDSPEEDER_AFFINITY"
	//   "GOOGLE_FI_AFFINITY"
	//   "CONTACTS_PLUS_DOMAIN_ONLY"
	//   "PHOTOS_SUGGESTED_TARGETS_IN_APP_ONLY"
	//   "SOCIETY_AFFINITY"
	//   "NANDHI_TEST_SCHEDULER_AFFINITY"
	//   "HIJACKING_HIGH_RISK_AFFINITY"
	//   "TRUECOLOURS_AFFINITY"
	//   "ESPRESSO_AFFINITY"
	//   "TAG_AFFINITY"
	//   "CORPBOT_AFFINITY"
	//   "SHOPPING_LIST_AFFINITY"
	//   "INTEGRATION_PLATFORM_AFFINITY"
	//   "HOT_ORDERS_UI_AFFINITY"
	//   "TELLY_MOBILE_APP_AFFINITY"
	//   "NGA_SUGGESTION_RESOLUTION_AFFINITY"
	//   "DUC_COMPANION_AFFINITY"
	//   "TOG_AFFINITY"
	//   "ANDROID_SYSTEM_INTELLIGENCE_AFFINITY"
	//   "EARTH_AFFINITY"
	//   "SHORTCUT_AFFINITY"
	//   "CHROME_OS_SCALING_AFFINITY"
	//   "SHOWTIME_AFFINITY"
	//   "PLAY_GAMES_SERVICES_EXPERIMENTAL"
	//   "GUPPEEPS_AFFINITY"
	//   "NEST_AFFINITY"
	//   "BLOGGER_AFFINITY"
	//   "INDIVIDUAL_OUTGOING_INTERACTIONS_RECENCY_RANK"
	//   "ASSISTANT_TOOLCHAIN_AFFINITY"
	//   "CHAT_CONSERVER_FAVORITE_CONTACTS_AFFINITY"
	//   "CHAT_CONSERVER_INVITEE_AFFINITY"
	//   "GANTRY_AFFINITY"
	//   "KINTARO_AFFINITY"
	//   "KEEP_AFFINITY"
	//   "INCIDENTFLOW_AFFINITY"
	//   "DRIVE_MENTION_AFFINITY"
	//   "DRIVE_LOOKUP_AFFINITY"
	//   "PODCASTS_MANAGER_AFFINITY"
	//   "EMAIL_AUTOCOMPLETE_GG"
	//   "ONE_REVIEWER_TOOL_AFFINITY"
	//   "ASSISTANT_FAMILY_VERTICAL_AFFINITY"
	//   "STADIA_AFFINITY"
	//   "ATLAS_AFFINITY"
	//   "CONSTELLATION_AFFINITY"
	//   "CORONADO_AFFINITY"
	//   "WALLET_GOLDEN_GATE_AFFINITY"
	//   "PUMICE_AFFINITY"
	//   "DEMO_AFFINITY_DEFAULT_ALGO"
	//   "DEMO_AFFINITY_DEFAULT_ALGO_DOMAIN_ONLY"
	//   "DEMO_AFFINITY_EMAIL_ALGO"
	//   "DEMO_AFFINITY_EMAIL_ALGO_DOMAIN_ONLY"
	//   "BACKLIGHT_AFFINITY"
	//   "DYNAMITE_GROUPS_AFFINITY"
	//   "DYNAMITE_OUT_OF_DOMAIN_GROUPS_AFFINITY"
	//   "GLOSSARY_MANAGER_AFFINITY"
	//   "ONEDEV_WORKFLOW_AFFINITY"
	//   "GSUITE_HUB_CALL_AFFINITY"
	//   "AVALANCHE_AFFINITY"
	//   "SANDTROUT_DEVICE_CONTACTS_AFFINITY"
	//   "DYNAMITE_ROOM_AFFINITY"
	//   "DESKBOOKING_AFFINITY"
	//   "TEZ_EXTENDED_AFFINITY"
	//   "DRIVE_PROFILE_ONLY_AFFINITY"
	//   "OFFSEC_AFFINITY"
	//   "GOOGLE_HOME_FAMILY_AFFINITY"
	//   "ONEMARKET_CALENDAR_AFFINITY"
	//   "GPAY_MERCHANT_CONSOLE_AFFINITY"
	//   "WORDFLOW_AFFINITY"
	//   "YOUTUBE_CREATOR_STUDIO_AFFINITY"
	//   "BRICKS_AFFINITY"
	//   "BUG_OBSERVER_AFFINITY"
	//   "ALPHASCHEDULE_AFFINITY"
	//   "BURROW_AFFINITY"
	//   "TEAMSPACES_AFFINITY"
	//   "GMAIL_SMARTADDRESS_REPLACE_AFFINITY"
	//   "GMAIL_SMARTADDRESS_EXPAND_AFFINITY"
	//   "ASSISTANT_OPA_AFFINITY"
	//   "POLYGLOT_AFFINITY"
	//   "TRANSLATION_MEMORY_MANAGER_AFFINITY"
	//   "THREADIT_AFFINITY"
	//   "RESOURCE_SYMPHONY_AFFINITY"
	//   "HOUSEHOLD_CONTACTS_PICKER_AFFINITY"
	//   "L10N_INFRA_SHARED_AFFINITY"
	//   "WORK_TRACKER_AFFINITY"
	//   "ARIANE_AFFINITY"
	//   "DRIVE_ROOM_AFFINITY"
	//   "MOMA_SEARCH_AFFINITY"
	//   "COLAB_INTERNAL_AFFINITY"
	//   "COLAB_EXTERNAL_AFFINITY"
	//   "TALENT_GROW_AFFINITY"
	//   "SOCIAL_CONNECTION_CHECKER_AFFINITY"
	//   "GMS_PEOPLE_AFFINITY"
	//   "ROCKET_LABS_AFFINITY"
	//   "DYNAMITE_ROOM_AND_INDIVIDUAL_ONLY_AFFINITY"
	//   "TEZ_PHONE_SEARCH_AFFINITY"
	//   "MY_GOOGLE_FAMILIES_AFFINITY"
	//   "DYNAMITE_UNIFIED_AFFINITY"
	//   "SHORTCUT_SERVER_AFFINITY"
	//   "LEGAL_CONTRACTS_AFFINITY"
	//   "CALENDAR_WEB_AFFINITY"
	//   "DATA_CATALOG_AFFINITY"
	//   "BRIEF_API_AFFINITY"
	//   "HARDWARE_MFG_DATA_VENUS_AFFINITY"
	//   "BETTERBUG_AFFINITY"
	//   "DCMS_AFFINITY"
	//   "PLAY_BOOKS_PUBENG_AFFINITY"
	//   "YAQS_AFFINITY"
	//   "RESPONSIBLE_FEATURE_ACCESS_AFFINITY"
	//   "PROSPER_AFFINITY"
	//   "PEOPLE_TO_ADD_BIRTHDAY_FOR_AFFINITY"
	//   "FLOURISH_AFFINITY"
	//   "CAMPAIGN_MANAGEMENT_TOOL_AFFINITY"
	//   "RECORDER_AFFINITY"
	//   "CLASSROOM_SEARCH_AFFINITY"
	//   "HIRING_AFFINITY"
	//   "DATACENTER_SOFTWARE_AFFINITY"
	//   "PHOTOS_INVITE_AFFINITY"
	//   "PHOTOS_PARTNER_SHARING_AFFINITY"
	//   "MARKETING_WORKFLOWS_AFFINITY"
	//   "INTROSPECT_AFFINITY"
	//   "YOUTUBE_PARENT_TOOLS_AFFINITY"
	//   "RELIABILITY_INSIGHTS_PST_AFFINITY"
	//   "GMAIL_ANDROID_AFFINITY"
	//   "CUSTOMER_CARE_PORTAL_AFFINITY"
	//   "MOMAHOME_3C_AFFINITY"
	//   "DIGITAL_CAR_KEY_AFFINITY"
	//   "PLAY_BOOKS_DISTRIBUTION_AFFINITY"
	//   "GOOGLE_ASSIGNMENTS_AFFINITY"
	//   "TEST_FUSION_AFFINITY"
	//   "PRODUCTION2020_UIE_AFFINITY"
	//   "SPEAKEASY_AFFINITY"
	//   "DOCS_TASKS_AFFINITY"
	//   "DYNAMITE_SEARCH_AFFINITY"
	//   "GPAY_RELEASE_OPS_AFFINITY"
	//   "VOICE_PBX_AFFINITY"
	//   "VOICE_WEB_AFFINITY"
	//   "SKILLSSTACK_AFFINITY"
	//   "WHOSTORY_AFFINITY"
	//   "PHOTOS_PARTNER_SHARING_EMAIL_ONLY"
	//   "MEMORIZE_AFFINITY"
	//   "BETTANY_AFFINITY"
	//   "BASECAMP_AFFINITY"
	//   "DRIVE_SEARCH_FILTER_AFFINITY"
	//   "CULTURE_EVENTS_CALENDAR_AFFINITY"
	//   "DATABRIDGE_CONSOLE_AFFINITY"
	//   "COMMSTAR_AFFINITY"
	//   "CDDB_AFFINITY"
	//   "DATA_STUDIO_SPACES_AFFINITY"
	//   "SOJI_AFFINITY"
	//   "PLAY_MOVIES_ANDROID_AFFINITY"
	//   "DATA_STUDIO_DOMAIN_ONLY_AFFINITY"
	//   "MONOSPACE_AFFINITY"
	//   "MY_ACCOUNT_AFFINITY"
	//   "NUDGEIT_CAMPAIGN_MANAGER_AFFINITY"
	AffinityType string `json:"affinityType,omitempty"`

	// ContainerId: The ID of the container
	ContainerId string `json:"containerId,omitempty"`

	// ContainerType: The type of container to which this affinity applies
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// LoggingId: Used to log events for this affinity value, for disco
	// diagnostic-purposes. See go/disco-diagnostics.
	LoggingId string `json:"loggingId,omitempty"`

	// Value: Affinity value. Frequently represented as an inverse ranking,
	// sometimes with additional data encoded. If
	// data_formats.affinity_formats.score_format is set to RAW_SCORE then
	// the value will be the score returned by DAS.
	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AffinityMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AffinityMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAffinity) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAffinity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiAffinity) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAffinity
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// AppsPeopleOzExternalMergedpeopleapiAgeRangeType: Please read
// go/people-api-howto:age on how to get age data. Message for the
// `Person.age_range_repeated` field. Replaces the existing
// `Person.age_range` field.
type AppsPeopleOzExternalMergedpeopleapiAgeRangeType struct {
	// AgeInYears: Please read go/people-api-howto:age on how to get age
	// data. Age of the user. The field is set based on profile storage
	// fields such as account birthday. If the source fields are not
	// present, `age_in_years` will be left unset.
	AgeInYears int64 `json:"ageInYears,omitempty"`

	// AgeOfConsentStatus: Deprecated. Use
	// go/supervised-accounts#capabilities-for-child-accounts instead.
	// Denotes whether the user is under the region based Age of Consent.
	// The user's region is based on ClientUserInfo.GlobalTos.AgreedLocation
	// The age is inferred from Birthday field or CertifiedBornBefore field.
	// The region based AoC is specified at go/aoc.
	//
	// Possible values:
	//   "AOC_STATUS_UNKNOWN" - We do not have enough information to
	// determine the user's age. e.g. user has no declared age or region is
	// not known.
	//   "UNDER_AOC" - The user is under the Age of Consent of the region
	// the user is in.
	//   "AT_OR_ABOVE_AOC" - The user is at or older than the Age of Consent
	// of the region the user is in.
	AgeOfConsentStatus string `json:"ageOfConsentStatus,omitempty"`

	// AgeRange: Deprecated. Please read go/people-api-howto:age on how to
	// get age data. Age range is populated based on `account_birthday` and
	// `certified_born_before`, which may not be set for dasher users.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "LESS_THAN_EIGHTEEN"
	//   "TWENTY_ONE_OR_OLDER"
	//   "EIGHTEEN_TO_TWENTY"
	AgeRange string `json:"ageRange,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgeInYears") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgeInYears") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAgeRangeType) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAgeRangeType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo: Store all app
// unique info that are needed for app action fulfillment.
type AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo struct {
	// AppUniqueId: Store the app unique id endpoint. This will be passed
	// over to app to fulfill the action. For example, app_unique_id for
	// Whatsapp will be "11234567890@s.whatsapp.net"
	AppUniqueId string `json:"appUniqueId,omitempty"`

	// DisplayAppUniqueId: Store third party endpoint that is displayed to
	// users. For example, display_app_unique_id for Whatsapp will be
	// "Message +11234567890".
	DisplayAppUniqueId string `json:"displayAppUniqueId,omitempty"`

	// Label: Store third party endpoint label. For example, "HOME", "WORK"
	Label string `json:"label,omitempty"`

	// Mimetype: Store mimetype of this endpoint. We will use this as the
	// differentiator for Assistant to know whether to use the RawContact
	// for messaging, call or video call. For example, send message mimetype
	// for whatsapp: "vnd.android.cursor.item/vnd.com.whatsapp.profile"
	// voice call mimetype for whatsapp:
	// "vnd.android.cursor.item/vnd.com.whatsapp.voip.call"
	Mimetype string `json:"mimetype,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppUniqueId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppUniqueId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiBestDisplayName: The best
// suggested name to use for the Person from the available source
// fields, which may include FileAs, Name, Org, Email, IM, Phone, ...
// Rough source container priority order is Contact, then Profile, then
// Place.
type AppsPeopleOzExternalMergedpeopleapiBestDisplayName struct {
	// ContainerType: The container the suggested name was sourced from
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// DisplayName: The display name. This name is intended to be the best
	// name to display for this Person. It may be built from a variety of
	// fields, even if those fields are not explicitly requested in the
	// request mask. Generally, the display name is formatted in 'first
	// last' format. If the name appears to be a CJK name (as determined by
	// a heuristic), the 'last first' format will be used. There may be
	// other cases that the 'last first' format is used which are not
	// documented here. See the code at:
	// http://google3/java/com/google/focus/backend/client/DisplayNameFormatter.java?l=659&rcl=351360938
	DisplayName string `json:"displayName,omitempty"`

	// DisplayNameLastFirst: The display name, always in 'last first'
	// format. This field does not depend on the format of `display_name`
	// and will always be in 'last first' format.
	DisplayNameLastFirst string `json:"displayNameLastFirst,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContainerType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContainerType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiBestDisplayName) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiBestDisplayName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiBirthday: IMPORTANT NOTES: -
// Requesting person.birthday requires membership in the purpose limited
// data ACL group sgbe-ac-d-birthday-(read|mutate). Contact
// people-api-eng@ for assistance with initial setup. - The birthday
// field should not be used to calculate the requester's age! To
// determine the requester's age, use person.age_range_repeated. - For
// more details about age see go/peopleapi-howto/age Birthday value may
// not be present: - Consumer users generally required to have account
// birthday set (required at account creation), though some users
// created via legacy flows may not have birthday present. - Dasher
// users generally don't require birthday, but could optionally have it
// set by users. - Any other types of accounts (e.g. robot, service) do
// not have birthdays. - Account Birthday field may be present but
// without birthday value set for grace period birthday (provisional new
// birthday). For users that do have birthday data: - "Profile Birthday"
// (person.birthday.metadata.container is PROFILE) may not have a year
// set if user "hides" the year. - "Account Birthday" (see api-specific
// notes below) will only be returned for the requester's own profile. -
// People API (go/peopleapi): * Account birthday is only supported in
// GetPeople for PeopleAPI. * If account birthday is needed, use a
// request mask with: `include_field { paths: "person.birthday" }`
// `include_container: ACCOUNT` - People API++ (go/peopleapi++): *
// Account birthday is supported for most apis in PeopleAPI++. * If
// account birthday is needed, use a request mask with: `include_field {
// paths: "person.account_birthday" }` `include_container: PROFILE`
// (note: it will also need `include_container: DOMAIN_PROFILE` because
// they must be requested together:
// go/people-api-masks#profile-domain_profile) - See
// go/papi-vs-papi++#birthday for more details.
type AppsPeopleOzExternalMergedpeopleapiBirthday struct {
	// AgeDisableGracePeriod: Only supported for
	// PROFILE/DOMAIN_PROFILE/ACCOUNT container.
	AgeDisableGracePeriod *AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod `json:"ageDisableGracePeriod,omitempty"`

	// BirthdayDecoration: Whether the user has opted in to display their
	// birthday via photo decorations. Only supported for
	// PROFILE/DOMAIN_PROFILE container.
	BirthdayDecoration *SocialGraphApiProtoBirthdayDecoration `json:"birthdayDecoration,omitempty"`

	// BirthdayResolution: Only supported for PROFILE/DOMAIN_PROFILE/ACCOUNT
	// container.
	//
	// Possible values:
	//   "FULL" - Birthday includes year, month, and day.
	//   "MONTH_AND_APPROXIMATED_YEAR" - Birthday includes approximate year
	// and month.
	//   "APPROXIMATED_YEAR" - Birthday includes an approximate year.
	BirthdayResolution string `json:"birthdayResolution,omitempty"`

	// CalendarDay: Birthdays are more accurately represented as a calendar
	// day that does not depend on a timestamp representation at all. When
	// given a timestamp, there are lots of opportunities to make mistakes,
	// so a CalendarDay proto is replacing timestamps. Currently this is
	// always returned by PeopleApi on reads that include birthday fields.
	// New clients should write using calendar_day. Clients that were
	// already writing via date_ms are allowlisted such that writes use that
	// field. Old callers should migrate to writing BOTH date_ms and
	// calendar_day values. If those are consistent, they may be removed
	// from the 'legacy_timestamp_event_write_behavior_enabled' capability.
	CalendarDay *GoogleTypeDate `json:"calendarDay,omitempty"`

	// DateMs: Birthdays are currently represented as timestamp values,
	// although the interpretation of these timestamp values is a calendar
	// date. Clients are recommended to read the calendar_day field, which
	// is easier to work with than date_ms. New clients writing to PeopleApi
	// must set calendar_day instead of date_ms. There are a few important
	// details about how this value should be mapped to a calendar date that
	// should be consistent among all clients. 1. Epoch - The epoch or
	// calendar date equivalent to 0 ms is chosen to be 1970-01-01 UTC. 2.
	// Timezone - All of the conversions to calendars should occur in the
	// UTC timezone. We don't typically think of someones birthday changing
	// when they travel, so clients should not use local times. 3. Calendar
	// - The calendar used for the dates should be a Gregorian proleptic
	// calendar. Proleptic means that the rules of the Gregorian calendar
	// are retrofitted to before its adoption. It is easy to get this wrong,
	// particularly with the java GregorianCalendar class, which by default
	// is a mixed Gregorian/Julian calendar. Joda Time makes this easy, but
	// if it's not an option, look into
	// GregorianCalendar.setGregorianChange(). 4. Omitted years - Clients
	// have chosen to represent birthdays or events without years as
	// timestamps within the year zero. When the computed date has a year of
	// 0, it means the client did not specify a year. Note that a year 0
	// does not exist in a chronology like the familiar Anno Domini (A.D.
	// and B.C.); clients must agree on year numbering. 5. Year Numbering -
	// The chronology used to map dates to the calendar should use
	// Astronomical Year Numbering so that the year 0 is defined and dates
	// before it have a negative year. If libraries only provide Anno
	// Domini, then the year of 1 BC corresponds to year zero and an omitted
	// user provided year. Other BC values are presumed rare, but clients
	// should still not ignore the era and interpret the year as an A.D.
	// value, especially if writing values back to PeopleApi.
	DateMs int64 `json:"dateMs,omitempty,string"`

	// DateMsAsNumber: date_ms_as_number contains the same data as date_ms,
	// but has a different type in generated javascript bindings. Non
	// javascript clients can ignore it.
	DateMsAsNumber int64 `json:"dateMsAsNumber,omitempty,string"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Prompt: People Prompts settings for contact birthday data. Only
	// supported for CONTACT container.
	Prompt *SocialGraphApiProtoPrompt `json:"prompt,omitempty"`

	// Value: Actual value entered. Allows unstructured values.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AgeDisableGracePeriod") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgeDisableGracePeriod") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiBirthday) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiBirthday
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod:
// Whether this field is set or not determines whether an account is in
// the grace period. While in the grace period, the user is unable to
// change their birthday on their own, and will be age-disabled if they
// don't act in a limited amount of time. Applies only to ServiceData
// Birthday. Users enter the grace period if they choose a birthday
// below the Age of Consent (go/aoc). After the grace period ends, the
// account will be age disabled. See go/age-disable-grace-period-dd.
type AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod struct {
	// CalendarDay: Provisional birthday <AoC the user provided, which made
	// them enter the grace period. The main birthday fields were not
	// altered yet while in the grace period.
	CalendarDay *GoogleTypeDate `json:"calendarDay,omitempty"`

	// GracePeriodEnd: Timestamp which signifies the end of the grace period
	// for this account.
	GracePeriodEnd string `json:"gracePeriodEnd,omitempty"`

	// GracePeriodStart: Timestamp which signifies the start of the grace
	// period for this account.
	GracePeriodStart string `json:"gracePeriodStart,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "USER_SPECIFIED_BIRTHDAY" - When CalendarDay is populated by user
	// specified birthday.
	//   "UNDERAGE_SUSPECTED" - Account is marked as underage by other
	// means. The CalendarDay field is not populated.
	GracePeriodType string `json:"gracePeriodType,omitempty"`

	ManualGracePeriodInfo *AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo `json:"manualGracePeriodInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalendarDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalendarDay") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManual
// GracePeriodInfo: Information provided within MutateDataRequest when
// setting a user into AgeDisableGracePeriod manually. When the grace
// period expires, this info will be forwarded to Gaia when disabling
// the user. cs//symbol:InitiateAgeDisableGracePeriodArguments
type AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo struct {
	// EscalateTo: The Gaia ID of an email that ops can send inquiries to
	// for appeals.
	EscalateTo int64 `json:"escalateTo,omitempty,string"`

	// ExecutedBy: The Gaia ID of a Googler who initiated this disable.
	ExecutedBy int64 `json:"executedBy,omitempty,string"`

	// Reason: When setting a user into age grace period manually, the
	// requester can additionally supply a short human-readable reason of
	// why the account is put into manual grace period. The description will
	// be forwarded to Gaia when we disable the account when the grace
	// period expires.
	Reason string `json:"reason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EscalateTo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EscalateTo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiBraggingRights struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiBraggingRights) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiBraggingRights
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCalendar: A url to the person's
// calendar. As of 03/2018 is not supported for user Profile.
type AppsPeopleOzExternalMergedpeopleapiCalendar struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: The type of the calendar URL. The type can be free form or one
	// of these predefined values: * `home` * `freeBusy` * `work`
	Type string `json:"type,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCalendar) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCalendar
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData struct {
	// CallerIdSource: Indicates which data source was used to populate the
	// caller ID result
	CallerIdSource *AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource `json:"callerIdSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallerIdSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallerIdSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource struct {
	// Possible values:
	//   "UNKNOWN_SOURCE_TYPE"
	//   "PLACE"
	//   "SCOOBY_MANUAL"
	//   "SCOOBY_GOOGLE_VOICE"
	//   "SCOOBY_CSA"
	//   "SCOOBY_KNOWLEDGE_GRAPH"
	SourceType string `json:"sourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore: Information
// related to domain administrator (or authority) certification of a
// users age.
type AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore struct {
	// BornBefore: Indicates that the user was born at or before this time.
	BornBefore string `json:"bornBefore,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BornBefore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BornBefore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiChannelData struct {
	// ChannelId: Unique ID that corresponds to a Youtube channel.
	ChannelId string `json:"channelId,omitempty"`

	// CommentCount: Number of comments for a given Youtube channel.
	CommentCount int64 `json:"commentCount,omitempty,string"`

	// Description: Description of the channel.
	Description string `json:"description,omitempty"`

	PlaylistCount int64 `json:"playlistCount,omitempty,string"`

	// ProfilePictureUrl: A FIFE URL pointing to the channel's profile image
	// (go/avatar-fife-urls) with default fife url options. Also refer to
	// go/people-api-concepts:photos for People API's FIFE best practices.
	// The image could be up to a couple of days stale, though it is much
	// fresher in practice. If a fresh image is required, contact the
	// YouTubeAccountProfileService. The URL itself expires ~30 days after
	// generation.
	ProfilePictureUrl string `json:"profilePictureUrl,omitempty"`

	// ProfileUrl: URL of user's Youtube channel profile.
	ProfileUrl string `json:"profileUrl,omitempty"`

	// SubscriberCount: Number of subscribers for a given Youtube channel.
	SubscriberCount int64 `json:"subscriberCount,omitempty,string"`

	// Title: Title of the YouTube channel
	Title string `json:"title,omitempty"`

	// UsesYoutubeNames: Whether or not the channel's profile has a
	// title/avatar that is canonical in YouTube. Used to determine if the
	// product profile card should be part of the core persona or have their
	// own persona.
	UsesYoutubeNames bool `json:"usesYoutubeNames,omitempty"`

	// VideoCount: Number of videos uploaded in a given Youtube channel.
	VideoCount int64 `json:"videoCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ChannelId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiChannelData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiChannelData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCircleMembership: A circle
// membership that the person has. A circle membership is created by
// adding a person to a circle by person-id or by email.
type AppsPeopleOzExternalMergedpeopleapiCircleMembership struct {
	// CircleId: The circle that the person belongs to.
	CircleId string `json:"circleId,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CircleId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CircleId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCircleMembership) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCircleMembership
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiClientData: Arbitrary client data
// that is populated based on the client
type AppsPeopleOzExternalMergedpeopleapiClientData struct {
	Key string `json:"key,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Namespace string `json:"namespace,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiClientData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiClientData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCommunicationEmail: Email for
// Google product communication with the user. This is only allowed in
// ServiceData. It is purely synthesized and read-only, and contains at
// most one field. It proxies from RawCommunicationEmail and only
// includes the primary field if exists. Otherwise if
// RawCommunicationEmail does not have primary, this includes a field
// synthesized from valid Gaia primary account email. Otherwise if Gaia
// primary account email is invalid, this field is empty. See
// go/comm-email-use for more details.
type AppsPeopleOzExternalMergedpeopleapiCommunicationEmail struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCommunicationEmail) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCommunicationEmail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiConnectionReminder: Contact-level
// people-prompts settings and contact-level connection reminders. Part
// of go/people-prompts.
type AppsPeopleOzExternalMergedpeopleapiConnectionReminder struct {
	// ContactPromptSettings: Contains the Contact level settings that will
	// affect all reminders.
	ContactPromptSettings *SocialGraphApiProtoContactPromptSettings `json:"contactPromptSettings,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Prompt: Contact-level "reminder to connect" prompts for this contact.
	Prompt []*SocialGraphApiProtoPrompt `json:"prompt,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ContactPromptSettings") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactPromptSettings") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiConnectionReminder) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiConnectionReminder
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiContactCreateContextInfo: Contact
// creation timestamps and related metadata. See
// go/contact-edit-history. This message is a pure wrapper of the shared
// ContactCreactionContext message so that it can be a top-level person
// field. No other fields should be added to the message.
type AppsPeopleOzExternalMergedpeopleapiContactCreateContextInfo struct {
	ContactCreateContext *SocialGraphApiProtoContactCreateContext `json:"contactCreateContext,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ContactCreateContext") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactCreateContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiContactCreateContextInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiContactCreateContextInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiContactEditContextInfo: Contact
// edit timestamps and related metadata. See go/contact-edit-history.
// This message is a pure wrapper of the shared ContactCreactionContext
// message so that it can be a top-level person field. No other fields
// should be added to the message.
type AppsPeopleOzExternalMergedpeopleapiContactEditContextInfo struct {
	ContactEditContext *SocialGraphApiProtoContactEditContext `json:"contactEditContext,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactEditContext")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactEditContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiContactEditContextInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiContactEditContextInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiContactGroupMembership: A
// membership that the person has. The person can be a member of
// multiple circles and multiple contact-groups. A circle membership is
// created by adding a person to a circle by person-id or by email. A
// contact-group membership is created by adding a contact to a
// contact-group.
type AppsPeopleOzExternalMergedpeopleapiContactGroupMembership struct {
	// ContactGroupId: The contact-group that the person belong to. The id
	// can be either a hex-formatted id or a camel-cased SystemContactGroup
	// predefined group name. The id will be predefined group name iff the
	// system_contact_group_id has a value.
	ContactGroupId string `json:"contactGroupId,omitempty"`

	// DelegatedGroupInfo: Information related to delegated group that this
	// contact belongs to.
	DelegatedGroupInfo *AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo `json:"delegatedGroupInfo,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// SystemContactGroupId: This field will be populated when the
	// membership is in a system-reserved contact-group.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MY_CONTACTS"
	//   "STARRED"
	//   "FRIENDS"
	//   "FAMILY"
	//   "COWORKERS"
	SystemContactGroupId string `json:"systemContactGroupId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactGroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactGroupId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiContactGroupMembership) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiContactGroupMembership
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiContactStateInfo: Contact state
// and related metadata. See go/fbs-contacts-trash. This message is a
// pure wrapper of the shared ContactState message so that it can be a
// top-level person field. No other fields should be added to the
// message.
type AppsPeopleOzExternalMergedpeopleapiContactStateInfo struct {
	ContactState *SocialGraphApiProtoContactState `json:"contactState,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactState") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactState") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiContactStateInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiContactStateInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCoverPhoto: CoverPhoto is the long
// banner photo (also called full bleed photo) at the top of G+ profile
// page.
type AppsPeopleOzExternalMergedpeopleapiCoverPhoto struct {
	ImageHeight int64 `json:"imageHeight,omitempty"`

	ImageId string `json:"imageId,omitempty"`

	ImageUrl string `json:"imageUrl,omitempty"`

	ImageWidth int64 `json:"imageWidth,omitempty"`

	IsAnimated bool `json:"isAnimated,omitempty"`

	IsDefault bool `json:"isDefault,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageHeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageHeight") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCoverPhoto) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCoverPhoto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCustomSchemaField: Custom fields
// associated with a person, from the custom schema defined on the
// domain. See go/custompeopleapi and go/customfocus. NOTE: these are
// only updatable via Cloud Directory (go/cd).
type AppsPeopleOzExternalMergedpeopleapiCustomSchemaField struct {
	FieldDisplayName string `json:"fieldDisplayName,omitempty"`

	FieldId string `json:"fieldId,omitempty"`

	// Possible values:
	//   "CUSTOM_FIELD_TYPE_UNKNOWN"
	//   "STRING"
	//   "INT64"
	//   "BOOL"
	//   "DOUBLE"
	//   "EMAIL"
	//   "PHONE"
	//   "DATE"
	FieldType string `json:"fieldType,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	MultiValued bool `json:"multiValued,omitempty"`

	SchemaDisplayName string `json:"schemaDisplayName,omitempty"`

	SchemaId string `json:"schemaId,omitempty"`

	// Type: The type of the custom schema field. The type can be free form
	// or one of these predefined values: * `home` * `other` * `work`
	Type string `json:"type,omitempty"`

	// Value: String representation of the value, based on FieldType
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldDisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldDisplayName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCustomSchemaField) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCustomSchemaField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiCustomerInfo: Contains customer
// data for profile owner proxied from D3.
type AppsPeopleOzExternalMergedpeopleapiCustomerInfo struct {
	// CustomerId: DEPRECATED. Use obfuscated_customer_id instead. If result
	// has a GSuite Customer ID, this field will continue to be populated
	// with -1 to indicate the presence of a value for backwards
	// compatibility with clients in the wild. See b/144596193.
	CustomerId int64 `json:"customerId,omitempty,string"`

	// CustomerName: Customer organization name for dasher user.
	CustomerName string `json:"customerName,omitempty"`

	// ObfuscatedCustomerId: Obfuscated FlexOrgs customer ID for Dasher
	// user. See cs/symbol:CustomerIdObfuscator.
	ObfuscatedCustomerId string `json:"obfuscatedCustomerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CustomerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomerId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiCustomerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiCustomerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo: Container
// information for deduping. When two fields have the same value and
// only differ by field.metadata a service implementation can choose to
// avoid duplicating the fields and instead set
// field.metadata.other_deduped_containers This type can include
// information on the dedupe type (for example, strict value match vs.
// lenient value match)
type AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo struct {
	// ContainerType: See SourceIdentity.container_type
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// Id: See SourceIdentity.id
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContainerType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContainerType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo: Information
// related to delegated group that this contact belongs to.
type AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo struct {
	// DelegatedGroupId: Required. The additional id specifically for a
	// delegated group.
	DelegatedGroupId *SocialGraphApiProtoDelegatedGroupId `json:"delegatedGroupId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DelegatedGroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DelegatedGroupId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata: Extra
// metadata for an aggregated or raw device contact.
type AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata struct {
	// Attributes: Attributes for this device contact.
	//
	// Possible values:
	//   "ATTRIBUTE_UNKNOWN"
	//   "STARRED" - This contact is starred.
	Attributes []string `json:"attributes,omitempty"`

	// UsageInfo: Usage info for this device contact.
	UsageInfo []*SocialGraphApiProtoUsageInfo `json:"usageInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attributes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attributes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiDeviceContactId: Unique id for an
// aggregated device contact.
type AppsPeopleOzExternalMergedpeopleapiDeviceContactId struct {
	// ContactId: Aggregated device contact id on the source device.
	ContactId int64 `json:"contactId,omitempty,string"`

	// DeviceId: Source device id (go/client-instance-id) of this device
	// contact.
	DeviceId string `json:"deviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiDeviceContactId) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiDeviceContactId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo: Device contact
// information.
type AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo struct {
	// DeviceContactMetadata: Metadata for this device contact.
	DeviceContactMetadata *AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata `json:"deviceContactMetadata,omitempty"`

	// HasCrossDeviceData: Output only. True if any of the contact's phone,
	// email or address fields can be used on devices other than the one it
	// originated from. Note that there can be other fields, typically name,
	// and metadata such as some of the raw_contact_infos that can be used
	// on other devices. Assigned by the server.
	HasCrossDeviceData bool `json:"hasCrossDeviceData,omitempty"`

	// Id: Id of the device contact.
	Id *AppsPeopleOzExternalMergedpeopleapiDeviceContactId `json:"id,omitempty"`

	// LastClientUpdateTime: Last time a device contact was updated on
	// device.
	LastClientUpdateTime string `json:"lastClientUpdateTime,omitempty"`

	// LookupKey: An opaque value used by the device to look up this contact
	// if its row id changed as a result of a sync or aggregation. See:
	// https://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html#LOOKUP_KEY
	LookupKey string `json:"lookupKey,omitempty"`

	// RawContactInfo: Info about the raw device contacts that make up this
	// device contact.
	RawContactInfo []*AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo `json:"rawContactInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceContactMetadata") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceContactMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo struct {
	// ContainerId: The container ID of the entity this field creates a join
	// to. See `SourceIdentity.id`.
	ContainerId string `json:"containerId,omitempty"`

	// ContainerType: The type of container that this edge points to. See
	// `SourceIdentity.container_type`.
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// ExtendedData: Data that is added to the proto by peopleapi read
	// extensions.
	ExtendedData *AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData `json:"extendedData,omitempty"`

	// Materialized: True indicates this edge links this source to a
	// container represented by this person object. Note: Except for certain
	// legacy clients, EdgeKeyInfo is only created for for edges to an
	// entity in this person and this will always be true.
	Materialized bool `json:"materialized,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContainerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContainerId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData struct {
	// GdataCompatibilityExtensionId: The GDataCompatibilityExtension will
	// (temporarily) return mobile_owner_id for profile containers.
	GdataCompatibilityExtensionId string `json:"gdataCompatibilityExtensionId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GdataCompatibilityExtensionId") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "GdataCompatibilityExtensionId") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiEmail struct {
	Certificate []*AppsPeopleOzExternalMergedpeopleapiEmailCertificate `json:"certificate,omitempty"`

	// Possible values:
	//   "EMAIL_CLASSIFICATION_UNKNOWN"
	//   "SIGNUP_EMAIL" - This is the email user provided when signing up
	// with Google (ie. this email is stored in Gaia). There may be more
	// than 1 signup email. This is set for an Email of container type
	// PROFILE.
	Classification string `json:"classification,omitempty"`

	// ContactGroupPreference: To read or update, use the
	// CONTACT_GROUP_PREFERENCE mask field.
	ContactGroupPreference []*AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference `json:"contactGroupPreference,omitempty"`

	DisplayName string `json:"displayName,omitempty"`

	ExtendedData *AppsPeopleOzExternalMergedpeopleapiEmailExtendedData `json:"extendedData,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	SignupEmailMetadata *AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata `json:"signupEmailMetadata,omitempty"`

	// Type: The type of the email address. The type can be free form or one
	// of these predefined values: * `home` * `work` * `other`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Certificate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Certificate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmail) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmailCertificate: Represents a
// S/MIME certificate config for use with Gmail. See
// //caribou/smime/proto/certificate_status.proto. There can be zero or
// more certificates associated with an email address, be it profile
// email or contact email.
type AppsPeopleOzExternalMergedpeopleapiEmailCertificate struct {
	// ConfigurationName: The name of this certificate configuration.
	// Examples could be "High security level" or "For domain emails only".
	ConfigurationName string `json:"configurationName,omitempty"`

	// Metadata: It is conceivable that certificates could be ACLed. We also
	// need to indicate which certificate is the default. The
	// PersonFieldMetadata can accomplish both of these.
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Status *AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfigurationName")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfigurationName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmailCertificate) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmailCertificate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus:
// Minimal S/MIME certificate status i.e. two fields per email address.
type AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus struct {
	// NotAfterSec: The certificate expiration timestamp in seconds.
	NotAfterSec int64 `json:"notAfterSec,omitempty,string"`

	// StatusCode: Current status of the email's certificate chain.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "CERTIFICATE_VALID"
	//   "CERTIFICATE_MISSING"
	//   "CERTIFICATE_EXPIRED"
	//   "CERTIFICATE_REVOKED"
	StatusCode string `json:"statusCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NotAfterSec") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NotAfterSec") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference:
// Preferred email addresses for contact groups.
type AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference struct {
	ContactGroupId string `json:"contactGroupId,omitempty"`

	// IsSynthetic: If the Preference was implicitly set by PeopleApi. A
	// preference with this bit will not be saved. See
	// go/contact-group-email-preference-papi-problem for more info.
	IsSynthetic bool `json:"isSynthetic,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "GMAIL"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactGroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactGroupId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmailExtendedData: Extension data
// for a person email.
type AppsPeopleOzExternalMergedpeopleapiEmailExtendedData struct {
	// InternalExternal: For use with the CUSTOMER_INFO_ADDITIONAL_DATA
	// extension. This includes information on whether the given email is
	// internal to or external to the requesting user's domain.
	InternalExternal *PeoplestackFlexorgsProtoInternalExternal `json:"internalExternal,omitempty"`

	// IsPlaceholder: For ListPeoplebyKnownId to indicate an email is
	// sythesized from a lookup email.
	IsPlaceholder bool `json:"isPlaceholder,omitempty"`

	// SmtpServerSupportsTls: For use with the TLS extension. Whether the
	// SMTP server that handles delivery for this email address supports TLS
	// encryption.
	SmtpServerSupportsTls bool `json:"smtpServerSupportsTls,omitempty"`

	// UsesConfusingCharacters: For use with the Gmail Homograph Warning
	// extension. Whether the email contains mixed character sets that could
	// be used to decieve users. This field is populated by the
	// GMAIL_SECURITY_DATA extension.
	UsesConfusingCharacters bool `json:"usesConfusingCharacters,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InternalExternal") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InternalExternal") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmailExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmailExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata:
// Additional metadata for a signup email. This will only be set if the
// email's classification is SIGNUP_EMAIL.
type AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata struct {
	// Primary: This is considered to be the primary signup email. At most 1
	// signup email will have this set.
	Primary bool `json:"primary,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Primary") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Primary") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiEmergencyInfo: Emergency info for
// Person. See go/emergency-trusted-contacts-papi.
type AppsPeopleOzExternalMergedpeopleapiEmergencyInfo struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// PomeroyId: Opaque id from Pomeroy (go/pomeroy). Non-empty pomeroy_id
	// means that this contact has the potential to become trusted contact
	// or it's already trusted contact. Trust is eventually gaia<->gaia
	// link, but when the trust link is initiated gaia might not be known.
	// Until gaia is discovered, pomeroy_id is used to identify the contact
	// uniquely. If trust_level is missing or set to TRUST_LEVEL_UNSPECIFIED
	// pomeroy_id must be empty.
	PomeroyId string `json:"pomeroyId,omitempty"`

	// Possible values:
	//   "TRUST_LEVEL_UNSPECIFIED" - The person does not have a specified
	// trust level.
	//   "TRUST_LEVEL_EMERGENCY_CONTACT" - The person is an Emergency
	// Contact.
	TrustLevel string `json:"trustLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEmergencyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEmergencyInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiEvent struct {
	// CalendarDay: Event are more accurately represented as a calendar day
	// that does not depend on a timestamp representation at all. When given
	// a timestamp, there are lots of opportunities to make mistakes, so a
	// CalendarDay proto is replacing timestamps. PeopleApi will return
	// these values on reads, and unless the client is a legacy caller in
	// the legacy_timestamp_event_write_behavior_enabled capability
	// allowlist, this value is what is used for Person writes.
	CalendarDay *GoogleTypeDate `json:"calendarDay,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Prompt: People Prompts settings for contact event data.
	Prompt *SocialGraphApiProtoPrompt `json:"prompt,omitempty"`

	// TimestampMillis: Clients are recommended to read the calendar_day
	// field instead of timestamp_millis. When writing events, new clients
	// must set calendar_day instead of timestamp_millis. Events are
	// currently represented as timestamp values, although the
	// interpretation of these timestamp values is a calendar date. There
	// are a few important details about how this value should be mapped to
	// a calendar date that should be consistent among all clients. For
	// detailed information, see Birthday.date_ms.
	TimestampMillis int64 `json:"timestampMillis,omitempty,string"`

	// Type: The type of the event. The type can be free form or one of
	// these predefined values: * `anniversary` * `other`
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalendarDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalendarDay") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiEvent) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiExternalId: External identifier
// associated with the person.
type AppsPeopleOzExternalMergedpeopleapiExternalId struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: The type of the external ID. The type can be free form or one
	// of these predefined values: * `account` * `customer` * `loginId` *
	// `network` * `organization`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiExternalId) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiExternalId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldAcl: The field ACL. Currently
// only populated on profile fields for the profile owner. A Person
// field ACL; see http://go/peopleapi-acl
type AppsPeopleOzExternalMergedpeopleapiFieldAcl struct {
	// AclEntry: A custom type of field ACL entry. The set of all ACL
	// entries includes those listed in acl_entry as well as
	// predefined_acl_entry.
	AclEntry []*AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry `json:"aclEntry,omitempty"`

	// AuthorizedViewers: Set of users that will be authorized to view the
	// field by this field ACL. If the ACL is public, this will only contain
	// ALL_USERS. This field is synthesized, read-only, and currently only
	// used for profile photos. It's populated under
	// "person.photo.metadata.field_acl" for the current photo ACL and
	// "person.photo.metadata.acl_choices" for available photo ACL choices.
	// Note: The set of authorized viewers for a given FieldAcl may depend
	// on the user's account type and domain configuration. For example, a
	// PRIVATE_READ FieldAcl could have any of the following authorized
	// viewers: Consumer user: [IDENTITY_ACL_ESTABLISHED] Dasher user
	// without domain contact sharing: [IDENTITY_ACL_ESTABLISHED] Unicorn
	// user: [SAME_UNICORN_FAMILY] Hafez user: []
	//
	// Possible values:
	//   "AUTHORIZED_VIEWER_UNSPECIFIED"
	//   "IDENTITY_ACL_ESTABLISHED" - Users with an identity ACL established
	// with the field owner through user-to-user interactions.
	//   "SAME_ORGANIZATION" - Users in the same enterprise organization as
	// the field owner.
	//   "SAME_UNICORN_FAMILY" - Users in the same Unicorn family as the
	// field owner.
	//   "ALL_USERS" - All users, including anonymous viewers.
	AuthorizedViewers []string `json:"authorizedViewers,omitempty"`

	// PredefinedAclEntry: A common type of field ACL entry. A predefined
	// ACL entry is a shortcut for a commonly occurring case of role and
	// scope. For example, PUBLIC_READ is the same as an AclEntry with role
	// = READER and scope.all_users = true. The set of all ACL entries
	// includes those listed in acl_entry as well as predefined_acl_entry.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "OWNER" - Equivalent to role = OWNER and scope.person.person_id =
	// requester's person ID.
	//   "PUBLIC_READ" - Equivalent to role = READER and scope.all_users =
	// true.
	//   "DOMAIN_READ" - Equivalent to role = READER and scope.domain_users
	// = true.
	//   "YOUR_CIRCLES_READ" - Equivalent to role = READER and
	// scope.membership.circle.circle_set = YOUR_CIRCLES.
	//   "EXTENDED_CIRCLES_READ" - Equivalent to role = READER and
	// scope.membership.circle.circle_set = EXTENDED_CIRCLES.
	//   "PRIVATE_READ" - This is under implementation and not populated in
	// PeopleAPI yet. Equivalent to role = READER and scope.person.person_id
	// = requester's person ID. Presence of this entry means the field is
	// private and is not visible to others.
	PredefinedAclEntry []string `json:"predefinedAclEntry,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AclEntry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AclEntry") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAcl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAcl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry struct {
	// Possible values:
	//   "UNKNOWN"
	//   "READER"
	//   "WRITER"
	//   "OWNER" - owner can change ACL
	Role string `json:"role,omitempty"`

	Scope *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope `json:"scope,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Role") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Role") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope struct {
	// AllUsers: Indicates that the field is accessible to all users
	// including unauthenticated users. For some fields this means "to
	// everyone except blocked users".
	AllUsers bool `json:"allUsers,omitempty"`

	// DomainUsers: This is a "synthetic" field. In reality domains are
	// treated as gaia- groups. This field will be 'true' when the field is
	// ACLed to the gaia-group of the requester's domain.
	DomainUsers bool `json:"domainUsers,omitempty"`

	Membership *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl `json:"membership,omitempty"`

	// Person: Indicates that the field is accessible to a person.
	Person *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl `json:"person,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllUsers") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllUsers") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl:
//
//	Used when the field is accessible to a membership that the person
//
// has.
type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl struct {
	Circle *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl `json:"circle,omitempty"`

	ContactGroup *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl `json:"contactGroup,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Circle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Circle") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclC
// ircleAcl: Used when a field is accessible to a circle.
type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl struct {
	CircleId string `json:"circleId,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "YOUR_CIRCLES"
	//   "EXTENDED_CIRCLES"
	CircleSet string `json:"circleSet,omitempty"`

	// DisplayName: Equivalent to Circle.display_name for the circle_id.
	// Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This
	// field is read-only and ignored on update.
	DisplayName string `json:"displayName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CircleId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CircleId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclC
// ontactGroupAcl: Used when a field is accessible to a legacy contact
// group. Contact groups are discouraged and may be deprecated soon.
// ContactGroupAcls are read-only. If they are included as part of an
// ACL on an Update, an exception is thrown.
type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl struct {
	// ContactGroupId: A contact group ID. This is either a user-defined
	// contact group hex ID, or it is the string name of the enum constant
	// in Group.PredefinedId in FBS backend.proto for predefined groups.
	// Common values for the predefined name include, but are not limited
	// to: all, myContacts, starred, chatBuddies, friends, family,
	// coworkers, and blocked.
	ContactGroupId string `json:"contactGroupId,omitempty"`

	// DisplayName: The localized display name for the predefined group, if
	// known; or, the display name for the user-defined contact group.
	// Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested.
	DisplayName string `json:"displayName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactGroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactGroupId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl:
// Used when a field is accessible to a person. NOTE: ACLs to a circle
// or to a non-self person are no longer supported, so this can only be
// applied to the requester self.
type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl struct {
	// DisplayName: DEPRECATED. This is not different than reading from
	// person.name for a self-read; ACLs to a circle or to a non-self person
	// are no longer supported. Equivalent to Name.display_name for the
	// person_id profile. Included when the profile Name is ACLed to the
	// requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This
	// field is read-only and ignored on update.
	DisplayName string `json:"displayName,omitempty"`

	PersonId string `json:"personId,omitempty"`

	// PhotoUrl: DEPRECATED. This is not different than reading from
	// person.photo for a self-read; ACLs to a circle or to a non-self
	// person are no longer supported. Equivalent to Photo.url for the
	// person_id profile. Included when the profile Photo is ACLed to the
	// requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This
	// field is read-only and ignored on update.
	PhotoUrl string `json:"photoUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo: Emergency
// information for Person field, such as Phone or Email. See
// go/emergency-trusted-contacts-papi.
type AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo struct {
	// Possible values:
	//   "EMERGENCY_LEVEL_UNSPECIFIED" - The field (such as phone) is not
	// designated for emergency communication.
	//   "EMERGENCY_LEVEL_PRIMARY" - The field (such as phone) is designated
	// for emergency communication.
	EmergencyLevel string `json:"emergencyLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EmergencyLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EmergencyLevel") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiFileAs: The FileAs field in
// Contacts is used to override the DisplayName of a Contact for that
// User.
type AppsPeopleOzExternalMergedpeopleapiFileAs struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiFileAs) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiFileAs
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiGPayExtendedData: Extension data
// for use in GPay Product Profile. go/gpay-product-profile-1-pager
// Contact: profiles-eng-fe@google.com
type AppsPeopleOzExternalMergedpeopleapiGPayExtendedData struct {
	// Failure: Failure type if there is an error when fetching product
	// profile data.
	Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"`

	// InternationalNumber: A number in international format including the
	// country code that is made user readable by including formatting such
	// as spaces. Example: "+41 44 668 1800" DEPRECATED: A user's phone
	// number should be masked and not in an international format
	InternationalNumber string `json:"internationalNumber,omitempty"`

	// MaskedNumber: The masked string of a user's phone number The number
	// will be obfucsated with * except the last 4 digits. Refer to:
	// //java/com/google/nbu/paisa/common/PhoneNumberMasker.java
	MaskedNumber string `json:"maskedNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Failure") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Failure") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiGPayExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiGPayExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiGender: Gender in PeopleApi has
// some odd semantics about writing and reading that are not obvious
// from the proto definition. First, the `type` string, when read,
// always maps to the constrained domain of "male", "female", and
// "other", aside from a pathological case that PeopleApi would like to
// fix. There are two typical patterns: 1. `type` is either "male" or
// "female" and `custom_type` and `address_me_as` are exactly as
// specified by an update to PeopleApi, although they are most often
// absent for "male" and "female" writes. 2. `type` is "other" and
// `custom_type` is set to a freeform string from the request.
// `address_me_as` is equal to whatever was provided at write time. When
// writing, the free-form string for `custom_type` can come from either
// `custom_type` if the field is present on the request, or if
// `custom_type` is absent, the string value of `type` will be copied
// into it. Any value in `type` will be coerced to "other" and the
// free-form value will be copied into `custom_type`, even if `type` is
// exactly "other". Prefer to explicitly set `custom_type` and set type
// to "other" instead of setting type to a free-form value. There are
// weird edge cases when the value is "unknown". Consider the behavior
// for `type` == "unknown" unspecified. Clients reading the gender
// should use the value from `formatted_type` if `type` is "male" or
// "female". If `type` is "other", `formatted_type` will be "Other" (or
// some translation) and clients should read `custom_type` for more
// specificity.
type AppsPeopleOzExternalMergedpeopleapiGender struct {
	// AddressMeAs: Preferred pronoun choice. It's unclear whether this
	// value is constrained to a finite domain by UIs. `address_me_as` may
	// be populated regardless of whether `type` is "male", "female", or
	// "other", although most writers only set it if `type` is "other".
	AddressMeAs string `json:"addressMeAs,omitempty"`

	// CustomType: A free-form string indicating what the user entered as
	// their gender. `custom_type` may exist even if the type is "male" or
	// "female", although most writers do not set it unless `type` is
	// "other".
	CustomType string `json:"customType,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: The gender. "male", "female", or "other". If "other",
	// typically, additional fields will have additional information.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddressMeAs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddressMeAs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiGender) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiGender
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiGplusExtendedData struct {
	// Possible values:
	//   "UNKNOWN"
	//   "PUBLIC" - Can send and consume public content
	//   "DISCOVERY" - Restricted to only sending content internally, cannot
	// mutate external content in any manner
	//   "WALLED_GARDEN" - Restricted to sending content internally, no
	// public content naturally surfaces
	ContentRestriction string `json:"contentRestriction,omitempty"`

	// IsEnterpriseUser: Equivalent to having the DASHER_POLICY bit in the
	// REGISTERED state.
	IsEnterpriseUser bool `json:"isEnterpriseUser,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentRestriction")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentRestriction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiGplusExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiGplusExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData: Extension
// data for use in Hangouts.
type AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData struct {
	// Possible values:
	//   "UNKNOWN_PAST_HANGOUT_STATE"
	//   "HAD_PAST_HANGOUT"
	//   "NO_PAST_HANGOUT"
	HadPastHangoutState string `json:"hadPastHangoutState,omitempty"`

	// InvitationStatus: Populated for all contacts. Only set if
	// had_past_hangout_state == HAD_PAST_HANGOUT. INVITATION_NEEDED is not
	// a valid value because there already is a past hangout, which means
	// either the invitation is still pending or it’s been accepted.
	//
	// Possible values:
	//   "UNKNOWN_INVITATION_STATUS"
	//   "PENDING_INVITATION" - The invitation is still pending, or was
	// declined
	//   "ACCEPTED_INVITATION" - The other user accepted the invitation
	//   "INVITATION_NEEDED" - An invitation is needed to chat with this
	// user
	InvitationStatus string `json:"invitationStatus,omitempty"`

	// IsBot: True if this is a Hangouts bot.
	IsBot bool `json:"isBot,omitempty"`

	IsDismissed bool `json:"isDismissed,omitempty"`

	IsFavorite bool `json:"isFavorite,omitempty"`

	IsPinned bool `json:"isPinned,omitempty"`

	// Possible values:
	//   "UNKNOWN_USER_TYPE"
	//   "INVALID" - No entity found.
	//   "GAIA" - Regular GAIA users.
	//   "OFF_NETWORK_PHONE" - Phone numbers represented as GAIA ids.
	//   "MALFORMED_PHONE_NUMBER" - Malformed number. Those are numbers that
	// don't comfirm to an E.164 format that we get with phone
	// calls/voicemails (e.g. "HELLO").
	//   "UNKNOWN_PHONE_NUMBER" - Unknown number. This is a number that the
	// caller has chosen not to broadcast.
	//   "ANONYMOUS_PHONE_NUMBER" - Phone number that Google knows about,
	// but the caller chose not to reveal to the recipient.
	UserType string `json:"userType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HadPastHangoutState")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HadPastHangoutState") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiIdentityInfo struct {
	// OriginalLookupToken: Original lookup token from the request that
	// resulted in this person or one of its containers.
	OriginalLookupToken []string `json:"originalLookupToken,omitempty"`

	// PreviousPersonId: Any former IDs this person may have had, in the
	// case that their ID may have changed. Populated only for sync
	// requests. Examples of such changes include adding an edge to a
	// contact that links to a profile. The ID will change from being
	// contact-oriented to being profile-oriented. To be used to clear out
	// old versions of a person.
	PreviousPersonId []string `json:"previousPersonId,omitempty"`

	// SourceIds: A list of sources contributing to the merged person,
	// including profiles (with gaia-id), contacts and synthetic-contacts.
	SourceIds []*AppsPeopleOzExternalMergedpeopleapiSourceIdentity `json:"sourceIds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OriginalLookupToken")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OriginalLookupToken") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiIdentityInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiIdentityInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiIm struct {
	// FormattedProtocol: The `protocol` translated and formatted in the
	// request locale. See go/people-api-howto/localization for details on
	// how to usage.
	FormattedProtocol string `json:"formattedProtocol,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Protocol: The protocol of the IM. The protocol can be free form or
	// one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` *
	// `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
	Protocol string `json:"protocol,omitempty"`

	// Type: The type of the IM. The type can be free form or one of these
	// predefined values: * `home` * `work` * `other`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedProtocol")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedProtocol") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiIm) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiIm
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget: How and
// where to send notifications to this person in other apps, and why the
// requester can do so. See go/reachability for more info. "How" and
// "where" identify the recipient in a P2P Bridge (glossary/p2p bridge),
// and "why" may be helpful in a UI to disambiguate which of several
// ways may be used to contact the recipient. How: Via a Google profile
// or a reachable-only phone number that the requester has access to.
// Specified in the target "type" and "value". Where: Apps in which the
// profile/phone number owner may receive notifications. Specified in
// the repeated "app". Why: Which fields in, e.g., a contact associated
// with this person make the notification target info visible to the
// requester. Specified in the repeated originating_field param.
// Example: Alice has a contact Bob, with: Email 0 = bob@gmail.com Phone
// 0 = +12223334444 Phone 1 = +15556667777 Email 0 and Phone 0 let Alice
// see Bob's public profile (obfuscated gaia ID = 123). Public profiles
// are visible by email by default, and Bob has explicitly made it
// visible via Phone 0. Bob says people can send notifications to his
// public profile in YouTube. Phone 2 is associated with another Google
// profile that Bob owns, but he doesn't want others to see it. He is
// okay with people sending notifications to him in Who's Down if they
// have this phone number, however. There will be separate
// InAppNotificationTargets: one for Bob's public Google profile, and
// one for the second phone number, which is in his private profile.
// IANT #1 - targeting Bob's public profile (visible via Email 0 and
// Phone 0): app = [YOUTUBE] type = OBFUSCATED_GAIA_ID value = 123
// originating_field: [ { field_type = EMAIL, field_index = 0 } // For
// Email 0 { field_type = PHONE, field_index = 0 } // For Phone 0 ] IANT
// #2 - targeting Bob's private profile phone number Phone 1: app =
// [WHOS_DOWN] type = PHONE value = +15556667777 originating_field: [ {
// field_type = PHONE, field_index = 1 } // For Phone 1 ]
type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget struct {
	// Possible values:
	//   "UNKNOWN" - Should never be stored in practice
	//   "BABEL" - Aka Hangouts
	//   "YOUTUBE" - Aka Reactr
	//   "WHOS_DOWN" - Aka Who's Down
	//   "YOUTUBE_MANGO" - Aka YouTube for Emerging Markets
	//   "PHOTOS" - Aka Google Photos
	//   "GOOGLE_ASSISTANT"
	//   "KABOO" - Aka PAISA, aka Tez
	//   "COMMERCE_PLATFORM" - Aka Naksha
	//   "SPACES" - Aka Google Spaces
	//   "MAPS" - Aka Google Map
	//   "LOUPE_UNUSED" - This field is deprecated.
	//   "POMEROY" - Aka Trusted Contacts
	//   "LOUPE" - Aka Camera by Google Photos
	//   "PEOPLE_PLAYGROUND" - See go/people-playground-design.
	//   "NEWS_360" - Also mdb/social-magazines
	//   "DUO" - Aka Taychon
	App []string `json:"app,omitempty"`

	ClientData []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData `json:"clientData,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// OriginatingField: There may be more than one field from which this
	// IANT originates, as in the case of Bob's public profile.
	OriginatingField []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField `json:"originatingField,omitempty"`

	// Possible values:
	//   "UNKNOWN_KEY_TYPE"
	//   "PHONE"
	//   "OBFUSCATED_GAIA_ID"
	//   "EMAIL"
	Type string `json:"type,omitempty"`

	// Value: The value of the target, used for delivery. E.g., the
	// obfuscated gaia ID for a visible profile.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "App") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "App") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData:
// Client-specific data pertaining to app reachability. No PII data or
// user content should be stored in this blob.
type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData struct {
	// App: The app to which this client data applies.
	//
	// Possible values:
	//   "UNKNOWN" - Should never be stored in practice
	//   "BABEL" - Aka Hangouts
	//   "YOUTUBE" - Aka Reactr
	//   "WHOS_DOWN" - Aka Who's Down
	//   "YOUTUBE_MANGO" - Aka YouTube for Emerging Markets
	//   "PHOTOS" - Aka Google Photos
	//   "GOOGLE_ASSISTANT"
	//   "KABOO" - Aka PAISA, aka Tez
	//   "COMMERCE_PLATFORM" - Aka Naksha
	//   "SPACES" - Aka Google Spaces
	//   "MAPS" - Aka Google Map
	//   "LOUPE_UNUSED" - This field is deprecated.
	//   "POMEROY" - Aka Trusted Contacts
	//   "LOUPE" - Aka Camera by Google Photos
	//   "PEOPLE_PLAYGROUND" - See go/people-playground-design.
	//   "NEWS_360" - Also mdb/social-magazines
	//   "DUO" - Aka Taychon
	App string `json:"app,omitempty"`

	ByteValue string `json:"byteValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "App") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "App") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingF
// ield: Info for identifying the specific field in this person that
// lets the requester send them notifications. These are typically
// fields added to a contact (e.g., email). There will not always be in
// originating field, typically in the case that whatever permits the
// requester to see this target info is not something that can be used
// on its own for contacting this person.
type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField struct {
	// FieldIndex: The index of the relevant field in the merged person
	FieldIndex int64 `json:"fieldIndex,omitempty"`

	// Possible values:
	//   "UNKNOWN_FIELD_TYPE"
	//   "PHONE"
	//   "EMAIL"
	FieldType string `json:"fieldType,omitempty"`

	// Value: The value of the origin field
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldIndex") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInAppReachability: This is
// deprecated in PEOPLE_API/SHARPEN, and should only be used for
// PROFILES. Which apps the person has indicated they are reachable at
// for the requester. See go/d13y and
// com.google.focus.proto.InAppReachability.
type AppsPeopleOzExternalMergedpeopleapiInAppReachability struct {
	// Possible values:
	//   "UNKNOWN" - should never be stored in practice
	//   "BABEL" - aka Hangouts
	//   "YOUTUBE" - aka Reactr
	//   "WHOS_DOWN" - aka Who's Down?
	//   "YOUTUBE_MANGO" - aka YouTube for Emerging Markets
	//   "PHOTOS" - aka Google Photos
	//   "KABOO" - aka PAISA
	//   "COMMERCE_PLATFORM" - aka Naksha
	//   "SPACES"
	//   "GOOGLE_ASSISTANT"
	//   "PEOPLE_PLAYGROUND" - See go/people-playground-design.
	//   "MAPS" - Aka Google Map
	//   "LOUPE_UNUSED" - This field is deprecated.
	//   "POMEROY" - aka Trusted Contacts
	//   "LOUPE" - Aka Camera by Google Photos
	//   "NEWS_360" - Also mdb/social-magazines
	//   "DUO" - aka Taychon
	AppType string `json:"appType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	ReachabilityKey *AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey `json:"reachabilityKey,omitempty"`

	// Possible values:
	//   "UNKNOWN_REACHABLE_STATUS"
	//   "REACHABLE"
	//   "NOT_REACHABLE"
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInAppReachability) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppReachability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey:
// Information pertaining to how this reachable state was established.
type AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey struct {
	// Possible values:
	//   "UNKNOWN_KEY_TYPE"
	//   "PHONE"
	//   "OBFUSCATED_GAIA_ID"
	KeyType string `json:"keyType,omitempty"`

	// KeyValue: The value of the key by which the user said they may be
	// reachable. E.g., the phone number.
	KeyValue string `json:"keyValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KeyType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KeyType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiInteractionSettings: Defines
// interactions that are allowed or disallowed with this person.
type AppsPeopleOzExternalMergedpeopleapiInteractionSettings struct {
	Allowed bool `json:"allowed,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "INCOMING_CIRCLE_MEMBERSHIP"
	//   "INCOMING_SOCIAL_EDGE"
	//   "INVITE_TO_EMAIL"
	Interaction string `json:"interaction,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Allowed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Allowed") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInteractionSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInteractionSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiInterest struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiInterest) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiInterest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiLanguage: The value can either by
// a language code conforming to the IETF BCP 47 specification or a
// custom freeform value. By default the returned value is proxied from
// FBS Profile.Language. If `include_account_locale` is set on the
// `MergePersonSourceOptions` the language from go/uls is preferred and
// returned as primary along with a secondary language from FBS.
type AppsPeopleOzExternalMergedpeopleapiLanguage struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiLanguage) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLanguage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiLatLng struct {
	Lat float64 `json:"lat,omitempty"`

	Lng float64 `json:"lng,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Lat") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Lat") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiLatLng) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLatLng
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiLatLng) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLatLng
	var s1 struct {
		Lat gensupport.JSONFloat64 `json:"lat"`
		Lng gensupport.JSONFloat64 `json:"lng"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Lat = float64(s1.Lat)
	s.Lng = float64(s1.Lng)
	return nil
}

// AppsPeopleOzExternalMergedpeopleapiLegacyFields: Fields used in
// legacy applications. Useful for joining legacy and new data streams.
// Most applications should not care about these fields.
type AppsPeopleOzExternalMergedpeopleapiLegacyFields struct {
	// MobileOwnerId: Mobile obfuscated gaia id. This is the same gaia id in
	// metadata.owner_id, but obfuscated with the legacy mobile obfuscator.
	MobileOwnerId string `json:"mobileOwnerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MobileOwnerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MobileOwnerId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiLegacyFields) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLegacyFields
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField struct {
	LimitedProfileSettings *SocialGraphApiProtoLimitedProfileSettings `json:"limitedProfileSettings,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LimitedProfileSettings") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LimitedProfileSettings")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiLocation struct {
	BuildingId string `json:"buildingId,omitempty"`

	// BuildingName: The building_name field is only filled if the
	// DESK_LOCATION_ADDITIONAL_DATA extension is active.
	BuildingName string `json:"buildingName,omitempty"`

	Current bool `json:"current,omitempty"`

	// DeskCode: Most specific textual description of individual desk
	// location.
	DeskCode string `json:"deskCode,omitempty"`

	FloorName string `json:"floorName,omitempty"`

	FloorSection string `json:"floorSection,omitempty"`

	// LastUpdateTime: Indicates the time this location was added or last
	// edited.
	LastUpdateTime string `json:"lastUpdateTime,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Source: Value indicates the origin of this location information.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "EXPLICIT" - The location was directly set by the user or admin.
	//   "INFERRED" - The location was inferred from available signals (e.g.
	// past rooms usage).
	Source string `json:"source,omitempty"`

	// Type: Describes the type of location. For e.g. Grew_up, Desk.
	// Corresponds to FBS backend.proto Location.StandardTag
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BuildingId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BuildingId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiLocation) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiManagementUpchain struct {
	// IndirectManager: List of managers in the chain. If user has manager
	// email "abc@google.com" and manager's manager has email
	// "xyz@google.com" then the list will be: [0]: { email:
	// "abc@google.com" } [1]: { email: "xyz@google.com" }
	IndirectManager []*AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager `json:"indirectManager,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "OK"
	//   "PARTIAL" - An error occurred while retrieving next manager so
	// resulting management upchain is partial up to manager that was not
	// retrieved.
	//   "LOOP" - A loop was found in management upchain so resulting
	// upchain contains all managers retrieved in first iteration of the
	// loop.
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IndirectManager") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IndirectManager") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiManagementUpchain) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiManagementUpchain
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager struct {
	Email string `json:"email,omitempty"`

	PersonId string `json:"personId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiMapsExtendedData: Extension data
// for use in Maps Product Profile.
type AppsPeopleOzExternalMergedpeopleapiMapsExtendedData struct {
	// Failure: Failure type if there is an error when fetching product
	// profile data.
	Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"`

	// FolloweeCount: Number of people the user is following.
	FolloweeCount int64 `json:"followeeCount,omitempty,string"`

	// FollowerCount: Number of people who are following the user.
	FollowerCount int64 `json:"followerCount,omitempty"`

	// NumContributions: Sum of creators contributions i.e. reviews, rating,
	// questions, etc.
	NumContributions int64 `json:"numContributions,omitempty,string"`

	// ProfilePhotoUrl: The user's profile photo that might have a badge
	// rendered at the corner if the user is eligible for a badge.
	ProfilePhotoUrl string `json:"profilePhotoUrl,omitempty"`

	// Tagline: A user's bio, or tagline.
	Tagline string `json:"tagline,omitempty"`

	// TopicExpertise: A topic that creator has expertise in. This will be
	// in the format: emoji associated with the topic, display name of the
	// topic, topic score
	TopicExpertise []string `json:"topicExpertise,omitempty"`

	// UserCaption: A user's caption displayed under the user name on their
	// profile page i.e. 'Local Guide Level 8'
	UserCaption string `json:"userCaption,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Failure") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Failure") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMapsExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiMapsProfile: Maps Profile Data.
// See go/product-profiles-backend-api.
type AppsPeopleOzExternalMergedpeopleapiMapsProfile struct {
	FieldRestriction []*AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction `json:"fieldRestriction,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Tagline string `json:"tagline,omitempty"`

	// WebsiteLink: A link to the profile owner's website to be displayed in
	// profile.
	WebsiteLink *AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink `json:"websiteLink,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldRestriction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldRestriction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfile) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction struct {
	// ClientData: Opaque data associated with this restriction e.g. abuse
	// status.
	ClientData string `json:"clientData,omitempty"`

	// Possible values:
	//   "TYPE_UNSPECIFIED"
	//   "HIDE_TAGLINE"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink struct {
	// AnchorText: Anchor text to be displayed as clickable link. If not
	// present, the URL should be displayed directly.
	AnchorText string `json:"anchorText,omitempty"`

	// Url: The URL to be linked to.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiMatchInfo: Represents the matching
// information for a field when there is a query.
type AppsPeopleOzExternalMergedpeopleapiMatchInfo struct {
	// Match: The list of matches ordered by most relevant matching for
	// autocomplete coming first.
	Match []*AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch `json:"match,omitempty"`

	// Query: The query token we are matching against.
	Query string `json:"query,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Match") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Match") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMatchInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMatchInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch: All the
// substring that were matched for the given query against the current
// field. Represents a substring of another string.
type AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch struct {
	// EndIndex: Index right after the last character that matches the
	// query. length = end-start, we have substring = [start, end).
	EndIndex int64 `json:"endIndex,omitempty"`

	// StartIndex: Index of the first unicode character that matches the
	// query.
	StartIndex int64 `json:"startIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndIndex") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiMembership: A membership that the
// person has. The person can be a member of multiple circles and
// multiple contact-groups. A circle membership is created by adding a
// person to a circle by person-id or by email. A contact-group
// membership is created by adding a contact to a contact-group.
type AppsPeopleOzExternalMergedpeopleapiMembership struct {
	// CircleId: A circle that the person belongs to.
	CircleId string `json:"circleId,omitempty"`

	// ContactGroupId: A contact-group that the person belong to. The id can
	// be either a hex-formatted id or a camel-cased SystemContactGroup
	// predefined group name. The id will be predefined group name iff the
	// system_contact_group_id has a value.
	ContactGroupId string `json:"contactGroupId,omitempty"`

	// Metadata: The metadata field can be used to determine which container
	// generated the membership. For example, when the membership has a
	// contact_group_id, the metadata.container will be CONTACT and the
	// container_id will be the contact Id.
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// SystemContactGroupId: The membership has a contact_group_id, this
	// field will be populated when the membership is in a system-reserved
	// contact-group.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MY_CONTACTS"
	//   "STARRED"
	//   "FRIENDS"
	//   "FAMILY"
	//   "COWORKERS"
	SystemContactGroupId string `json:"systemContactGroupId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CircleId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CircleId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMembership) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMembership
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiMission struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiMission) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiMission
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiName: See
// go/people-api-howto:names for an overview of name usage in PeopleAPI.
// The `unstructured_name` field contains a free form name value. The
// `given_name`, `middle_name`, `family_name`, etc, fields contain the
// structured name. For CONTACT mutates, (i.e. when
// Name.metadata.container is CONTACT), it is recommended for clients to
// set either the `unstructured_name` or the set of structured name
// fields, not both. * When only the `unstructured_name` is set, it is
// parsed to produce a best-guess set of structured name values for the
// `given_name`, `family_name`, etc. * When only the structured name
// fields are set, the various values are combined to produce an
// `unstructured_name`. * When both are set, the `unstructured_name` is
// saved as-is and the structured name fields are saved as-is. This may
// be confusing as they might not "match". For PROFILE mutates, (i.e.
// when Name.metadata.container is PROFILE), it is _required_ for
// clients to use the structured name fields as the unstructured field
// value is ignored on write. The unstructured name fields are generated
// for convenience on read. For DEVICE_CONTACTS, see b/156020778.
type AppsPeopleOzExternalMergedpeopleapiName struct {
	// DisplayName: Read-only. A name synthesized based on
	// `unstructured_name` and the structured name fields. Example: "John
	// Smith" If a language code is passed in the side channel using
	// http://cs/symbol:framework.rpc.DeprecatedPropagatedLanguageCode.value
	// or http://cs/symbol:google.rpc.context.OriginContext.accept_language
	// and the name does not have `honorific_prefix`, `middle_name`, or
	// `honorific_suffix` set, the language code will be used to format
	// `display_name`. If `include_account_locale` is set on the
	// `MergePersonSourceOptions` and a language code is not passed in the
	// side channel. The language code from go/uls will be used as the
	// language code for formatting `display_name`.
	DisplayName string `json:"displayName,omitempty"`

	// DisplayNameLastFirst: Read-only. A name synthesized based on
	// `unstructured_name` and the structured name fields with the last name
	// first. Example: "Smith, John"
	DisplayNameLastFirst string `json:"displayNameLastFirst,omitempty"`

	// DisplayNameSource: Read-only. The source of the display name.
	DisplayNameSource *SocialGraphApiProtoDisplayNameSource `json:"displayNameSource,omitempty"`

	FamilyName string `json:"familyName,omitempty"`

	// FormattedName: DEPRECATED(b/70571931). Use `unstructured_name`
	// instead.
	FormattedName string `json:"formattedName,omitempty"`

	GivenName string `json:"givenName,omitempty"`

	HonorificPrefix string `json:"honorificPrefix,omitempty"`

	HonorificSuffix string `json:"honorificSuffix,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	MiddleName string `json:"middleName,omitempty"`

	// Pronunciations: This field is stored in contact annotations and
	// merged at read-time. It is available with CONTACT_ANNOTATION
	// container type at read time.
	Pronunciations *SocialGraphApiProtoPronunciations `json:"pronunciations,omitempty"`

	// ShortDisplayName: Read-only. A possibly shorter version of the user's
	// name. - The purpose of this field is to address the needs of UIs
	// where a full display name might be too large to fit. Instead of
	// relying on `first_name`, which might not be present,
	// `short_display_name` is preferred. - This is only available for
	// PROFILE and DOMAIN_PROFILE container types. - About the actual
	// content in this field: will be the first name when it's visible to
	// the requester, or the same as `display_name`, otherwise. A sample
	// scenario where the first name may not be visible is when the limited
	// profile is returned. For more info, see: http://shortn/_9iV7TJ33la
	ShortDisplayName string `json:"shortDisplayName,omitempty"`

	// UnstructuredName: The free form name value. For contact mutates it is
	// recommended for clients to set either the `unstructured_name` or the
	// set of structured name fields, not both.
	UnstructuredName string `json:"unstructuredName,omitempty"`

	YomiFamilyName string `json:"yomiFamilyName,omitempty"`

	YomiFullName string `json:"yomiFullName,omitempty"`

	YomiGivenName string `json:"yomiGivenName,omitempty"`

	YomiHonorificPrefix string `json:"yomiHonorificPrefix,omitempty"`

	YomiHonorificSuffix string `json:"yomiHonorificSuffix,omitempty"`

	YomiMiddleName string `json:"yomiMiddleName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiName) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiNamePronunciationAudioMetadataInfo:
//
//	Pronunciation audio metadata info. See
//
// go/name-pronunciation-backend. The metadata itself tracks the state
// of a user's name pronunciation audio.
type AppsPeopleOzExternalMergedpeopleapiNamePronunciationAudioMetadataInfo struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// NamePronunciationAudioMetadata: Actual metadata proto, shared with
	// FBS backends.
	NamePronunciationAudioMetadata *SocialGraphApiProtoNamePronunciationAudioMetadata `json:"namePronunciationAudioMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiNamePronunciationAudioMetadataInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiNamePronunciationAudioMetadataInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiNickname struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Possible values:
	//   "NICKNAME_UNKNOWN"
	//   "DEFAULT"
	//   "OTHER_NAME" - Used in Profiles UI
	//   "MAIDEN_NAME"
	//   "SHORT_NAME"
	//   "INITIALS"
	//   "ALTERNATE_NAME" - The nickname or alternate name, incorporated
	// into Display Name.
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiNickname) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiNickname
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOccupation struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOccupation) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOccupation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiOpeningHours: The periods that
// this place is open during the week. The periods are in chronological
// order, starting with today in the place-local timezone. An empty (but
// not absent) value indicates a place that is never open, e.g. because
// it is closed temporarily for renovations.
type AppsPeopleOzExternalMergedpeopleapiOpeningHours struct {
	// OpenNow: Is this place open right now? Always present unless we lack
	// time-of-day or timezone data for these opening hours.
	OpenNow bool `json:"openNow,omitempty"`

	Periods []*AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod `json:"periods,omitempty"`

	// WeekdayTexts: Localized strings describing the opening hours of this
	// place, one string for each day of the week. Will be empty if the
	// hours are unknown or could not be converted to localized text.
	// Example: "Sun: 18:00-06:00"
	WeekdayTexts []string `json:"weekdayTexts,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OpenNow") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OpenNow") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHours) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHours
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint struct {
	// Day: A day of the week, as an integer in the range 0-6. 0 is Sunday,
	// 1 is Monday, etc.
	Day int64 `json:"day,omitempty"`

	// Time: A time in 24-hour "hhmm" format (i.e. range is 0000 to 2359).
	Time string `json:"time,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod struct {
	Close *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint `json:"close,omitempty"`

	Open *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint `json:"open,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Close") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Close") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOrganization struct {
	Assignment []*AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment `json:"assignment,omitempty"`

	Certification string `json:"certification,omitempty"`

	CostCenter string `json:"costCenter,omitempty"`

	Current bool `json:"current,omitempty"`

	Department string `json:"department,omitempty"`

	Description string `json:"description,omitempty"`

	Domain string `json:"domain,omitempty"`

	// EndCalendarDay: Start and End Dates are better represented as
	// calendar entities. The intention is to replace timestamps. Not set if
	// no value exists. Clients can choose whether to use has* semantics or
	// default value semantics. For writes, the default proto and an absent
	// message are equivalent. Legacy callers in the
	// legacy_timestamp_event_write_behavior_enabled capability allowlist
	// should write to PeopleApi via end_ms and migrate to setting both so
	// they can be removed from the whitelist.
	EndCalendarDay *GoogleTypeDate `json:"endCalendarDay,omitempty"`

	// EndMs: Clients are encouraged to read the end_calendar_day instead.
	// PeopleApi writes will still use end_ms for legacy callers that are in
	// the legacy_timestamp_event_write_behavior_enabled capability
	// allowlist. New writers must use the calendar_day fields.
	EndMs int64 `json:"endMs,omitempty,string"`

	EndMsAsNumber int64 `json:"endMsAsNumber,omitempty,string"`

	// FormattedStringType: The `string_type` translated and formatted in
	// the request locale. See go/people-api-howto/localization for details
	// on how to usage.
	FormattedStringType string `json:"formattedStringType,omitempty"`

	FteMilliPercent int64 `json:"fteMilliPercent,omitempty"`

	Importance float64 `json:"importance,omitempty"`

	Location string `json:"location,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Name string `json:"name,omitempty"`

	Project []*AppsPeopleOzExternalMergedpeopleapiOrganizationProject `json:"project,omitempty"`

	// StartCalendarDay: Start and End Dates are better represented as
	// calendar entities. The intention is to replace timestamps. Not set if
	// no value exists. Clients can choose whether to use has* semantics or
	// default value semantics. For writes, the default proto and an absent
	// message are equivalent. Legacy callers in the
	// legacy_timestamp_event_write_behavior_enabled capability allowlist
	// should write to PeopleApi via start_ms and migrate to setting both so
	// they can be removed from the allowlist.
	StartCalendarDay *GoogleTypeDate `json:"startCalendarDay,omitempty"`

	// StartMs: Clients are encouraged to read the start_calendar_day
	// instead. PeopleApi writes will still use start_ms for legacy callers
	// that are in the legacy_timestamp_event_write_behavior_enabled
	// capability allowlist. New writers must use the calendar_day fields.
	StartMs int64 `json:"startMs,omitempty,string"`

	StartMsAsNumber int64 `json:"startMsAsNumber,omitempty,string"`

	// StringType: The type of the organization. The type can be free form
	// or one of these predefined values: * `work` * `school`
	StringType string `json:"stringType,omitempty"`

	Symbol string `json:"symbol,omitempty"`

	Title string `json:"title,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "WORK"
	//   "SCHOOL"
	//   "DOMAIN_ONLY" - Used for domains inferred from verified email
	// addresses. May be deprecated when/if we start mapping SCHOOL and WORK
	// Names to Domain.
	Type string `json:"type,omitempty"`

	YomiName string `json:"yomiName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Assignment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Assignment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOrganization) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganization
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiOrganization) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganization
	var s1 struct {
		Importance gensupport.JSONFloat64 `json:"importance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Importance = float64(s1.Importance)
	return nil
}

type AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment struct {
	Name string `json:"name,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOrganizationProject struct {
	Description string `json:"description,omitempty"`

	Name string `json:"name,omitempty"`

	Role string `json:"role,omitempty"`

	// Type: Mapped from StandardProjectTag / CustomProjectTag
	Type string `json:"type,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOrganizationProject) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganizationProject
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiOtherKeyword struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Possible values:
	//   "SOURCE_UNKNOWN"
	//   "OUTLOOK" - Following field is added to support Outlook schema.
	// This field is a general storage for Outlook string data that shall be
	// encoded as: "name:" + value strings where name of the Outlook field
	// cannot contain colons. Multiple Outlook fields shall be encoded as
	// multiple Keywords.
	//   "CUSTOM"
	Source string `json:"source,omitempty"`

	// Type: The type of the event. The type depends on the
	// `OtherKeyword.source`. `OUTLOOK` source fields must be one of: *
	// `billing_information` * `directory_server` * `keyword` * `mileage` *
	// `sensitivity` * `user` * `subject` All other fields are treated as a
	// `CUSTOM` source field. The value can be free form or one of these
	// predefined values: * `home` * `other` * `work`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiOtherKeyword) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiOtherKeyword
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPerson: Merged-person combines
// multiple sources of data like contacts and profiles. See
// go/people-api and go/understanding-merged-person NOTE: Why are all
// the fields repeated? See go/people-api-concepts#repeated
type AppsPeopleOzExternalMergedpeopleapiPerson struct {
	About []*AppsPeopleOzExternalMergedpeopleapiAbout `json:"about,omitempty"`

	Address []*AppsPeopleOzExternalMergedpeopleapiAddress `json:"address,omitempty"`

	// AgeRange: Deprecated. If age is needed use
	// `person.age_range_repeated` instead. Please see
	// go/people-api-howto:age on how to correctly get age data.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "LESS_THAN_EIGHTEEN"
	//   "TWENTY_ONE_OR_OLDER"
	//   "EIGHTEEN_TO_TWENTY"
	AgeRange string `json:"ageRange,omitempty"`

	// AgeRangeRepeated: Data on the person's age range, adult status, and
	// age of consent. NOTE: Please read go/people-api-howto:age on how to
	// correctly get age data.
	AgeRangeRepeated []*AppsPeopleOzExternalMergedpeopleapiAgeRangeType `json:"ageRangeRepeated,omitempty"`

	Birthday []*AppsPeopleOzExternalMergedpeopleapiBirthday `json:"birthday,omitempty"`

	// BraggingRights: Used only by contacts, no data will be returned for
	// profiles.
	BraggingRights []*AppsPeopleOzExternalMergedpeopleapiBraggingRights `json:"braggingRights,omitempty"`

	// Calendar: b/145671020: Deprecated for Profiles, but not for Contacts.
	Calendar []*AppsPeopleOzExternalMergedpeopleapiCalendar `json:"calendar,omitempty"`

	CertifiedBornBefore []*AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore `json:"certifiedBornBefore,omitempty"`

	// CircleMembership: Circles that this person is a member of.
	CircleMembership []*AppsPeopleOzExternalMergedpeopleapiCircleMembership `json:"circleMembership,omitempty"`

	ClientData []*AppsPeopleOzExternalMergedpeopleapiClientData `json:"clientData,omitempty"`

	CommunicationEmail []*AppsPeopleOzExternalMergedpeopleapiCommunicationEmail `json:"communicationEmail,omitempty"`

	// ConnectionReminder: Reminder to connect with a Contact (part of
	// go/people-prompts). Also contains contact-level prompts settings.
	// Each Contact can have a single `connection_reminder` (but can have
	// multiple Prompts inside of it). Field is repeated per PeopleAPI data
	// model go/people-api-concepts#repeated. Only supported for CONTACT
	// container.
	ConnectionReminder []*AppsPeopleOzExternalMergedpeopleapiConnectionReminder `json:"connectionReminder,omitempty"`

	ContactCreateContextInfo []*AppsPeopleOzExternalMergedpeopleapiContactCreateContextInfo `json:"contactCreateContextInfo,omitempty"`

	ContactEditContextInfo []*AppsPeopleOzExternalMergedpeopleapiContactEditContextInfo `json:"contactEditContextInfo,omitempty"`

	// ContactGroupMembership: Contact groups that this person is a member
	// of.
	ContactGroupMembership []*AppsPeopleOzExternalMergedpeopleapiContactGroupMembership `json:"contactGroupMembership,omitempty"`

	// ContactStateInfo: Contact state and related metadata. See
	// go/fbs-contacts-trash. If this field was requested but is not set on
	// the Person then the contact is in the DEFAULT contact state. This
	// field is read-only, and should not be set on a mutate (e.g.
	// UpdatePerson) call. Clients must call the explicit APIs (e.g.
	// UntrashPerson) to change contact state.
	ContactStateInfo []*AppsPeopleOzExternalMergedpeopleapiContactStateInfo `json:"contactStateInfo,omitempty"`

	// CoverPhoto: DEPRECATED. Now always returns a default cover photo. See
	// go/sunset-cover-photo.
	CoverPhoto []*AppsPeopleOzExternalMergedpeopleapiCoverPhoto `json:"coverPhoto,omitempty"`

	CustomSchemaField []*AppsPeopleOzExternalMergedpeopleapiCustomSchemaField `json:"customSchemaField,omitempty"`

	Email []*AppsPeopleOzExternalMergedpeopleapiEmail `json:"email,omitempty"`

	// EmergencyInfo: Emergency information. See
	// go/emergency-trusted-contacts-papi.
	EmergencyInfo []*AppsPeopleOzExternalMergedpeopleapiEmergencyInfo `json:"emergencyInfo,omitempty"`

	// Event: Event is currently in use by contacts.
	Event []*AppsPeopleOzExternalMergedpeopleapiEvent `json:"event,omitempty"`

	// ExtendedData: Data added by extensions that are not specific to a
	// particular field.
	ExtendedData *AppsPeopleOzExternalMergedpeopleapiPersonExtendedData `json:"extendedData,omitempty"`

	ExternalId []*AppsPeopleOzExternalMergedpeopleapiExternalId `json:"externalId,omitempty"`

	FileAs []*AppsPeopleOzExternalMergedpeopleapiFileAs `json:"fileAs,omitempty"`

	// Fingerprint: A fingerprint that can be used to reliably determine if
	// a resource has changed. Externally it is used as part of the etag.
	Fingerprint string `json:"fingerprint,omitempty"`

	Gender []*AppsPeopleOzExternalMergedpeopleapiGender `json:"gender,omitempty"`

	Im []*AppsPeopleOzExternalMergedpeopleapiIm `json:"im,omitempty"`

	// InAppNotificationTarget: Ways to send in-app notifications to this
	// person. See go/reachability. This field is read-only and ignored for
	// mutates.
	InAppNotificationTarget []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget `json:"inAppNotificationTarget,omitempty"`

	// InAppReachability: Used only by profile service, deprecated for
	// PeopleAPI and Sharpen. If you aren't sure, contact people-api-users@
	// and profile-service-eng@.
	InAppReachability []*AppsPeopleOzExternalMergedpeopleapiInAppReachability `json:"inAppReachability,omitempty"`

	// InteractionSettings: DEPRECATED. This field isn't populated in
	// people.list.
	InteractionSettings []*AppsPeopleOzExternalMergedpeopleapiInteractionSettings `json:"interactionSettings,omitempty"`

	Interest []*AppsPeopleOzExternalMergedpeopleapiInterest `json:"interest,omitempty"`

	Language []*AppsPeopleOzExternalMergedpeopleapiLanguage `json:"language,omitempty"`

	// LegacyFields: DEPRECATED. This field was only for backwards
	// compatibility with legacy GData callers, and should not be used by
	// new clients. Legacy fields used for mobile clients.
	LegacyFields *AppsPeopleOzExternalMergedpeopleapiLegacyFields `json:"legacyFields,omitempty"`

	// LimitedProfileSettings: Settings for the limited profile. See
	// go/limited-profiles-api.
	LimitedProfileSettings []*AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField `json:"limitedProfileSettings,omitempty"`

	// LinkedPerson: Other person resources linked indirectly by an edge.
	// The full person or just the IDs may be populated depending on request
	// parameters. We consider linked people distinct people, but they share
	// information. Example: A contact with two outgoing edges. The two
	// edges are considered separate, but linked people.
	LinkedPerson []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"linkedPerson,omitempty"`

	Location []*AppsPeopleOzExternalMergedpeopleapiLocation `json:"location,omitempty"`

	ManagementUpchain []*AppsPeopleOzExternalMergedpeopleapiManagementUpchain `json:"managementUpchain,omitempty"`

	// MapsProfile: MapsProfile, see go/product-profiles-backend-api
	MapsProfile []*AppsPeopleOzExternalMergedpeopleapiMapsProfile `json:"mapsProfile,omitempty"`

	// Membership: DEPRECATED. Please use `circle_membership` or
	// `contact_group_membership` instead. Contact-groups and circles that
	// this person is a member of.
	Membership []*AppsPeopleOzExternalMergedpeopleapiMembership `json:"membership,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonMetadata `json:"metadata,omitempty"`

	Mission []*AppsPeopleOzExternalMergedpeopleapiMission `json:"mission,omitempty"`

	// Name: See go/people-api-howto:names for details about names in
	// PeopleAPI.
	Name []*AppsPeopleOzExternalMergedpeopleapiName `json:"name,omitempty"`

	// NamePronunciationAudioMetadataInfo: Metadata info for a user's name
	// pronunciation audio. See go/name-pronunication-backend.
	NamePronunciationAudioMetadataInfo []*AppsPeopleOzExternalMergedpeopleapiNamePronunciationAudioMetadataInfo `json:"namePronunciationAudioMetadataInfo,omitempty"`

	Nickname []*AppsPeopleOzExternalMergedpeopleapiNickname `json:"nickname,omitempty"`

	Occupation []*AppsPeopleOzExternalMergedpeopleapiOccupation `json:"occupation,omitempty"`

	Organization []*AppsPeopleOzExternalMergedpeopleapiOrganization `json:"organization,omitempty"`

	// OtherKeyword: Legacy arbitrary key value fields
	OtherKeyword []*AppsPeopleOzExternalMergedpeopleapiOtherKeyword `json:"otherKeyword,omitempty"`

	// PeopleInCommon: DEPRECATED. This feature was stubbed, but never
	// implemented. This field will not be populated with any results.
	PeopleInCommon []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"peopleInCommon,omitempty"`

	// PersonAttribute: In order to request this field, the client must set
	// desired PersonAttributeKey in the dedicated RequestMask field
	// `person_attribute`. Unlike other person fields, this field cannot be
	// requested in the `include_field` field mask.
	PersonAttribute []*AppsPeopleOzExternalMergedpeopleapiPersonAttribute `json:"personAttribute,omitempty"`

	// PersonId: The ID of the person. This is determined by the backend, is
	// unstable, and may not be the same as a user_id. Internally referred
	// as 'personKey' to distinguish from the common PersonId pojo. See
	// go/people-api-concepts#person-id
	PersonId string `json:"personId,omitempty"`

	Phone []*AppsPeopleOzExternalMergedpeopleapiPhone `json:"phone,omitempty"`

	// Photo: See go/people-api-concepts/photos for usage details
	Photo []*AppsPeopleOzExternalMergedpeopleapiPhoto `json:"photo,omitempty"`

	// PlaceDetails: Data specific to places. Data which also applies to
	// contacts and profiles such as name, phone, photo, etc. are returned
	// in the corresponding Person fields.
	PlaceDetails []*AppsPeopleOzExternalMergedpeopleapiPlaceDetails `json:"placeDetails,omitempty"`

	// PlusPageInfo: DEPRECATED. Info about plus pages in the person.
	PlusPageInfo []*AppsPeopleOzExternalMergedpeopleapiPlusPageInfo `json:"plusPageInfo,omitempty"`

	PosixAccount []*AppsPeopleOzExternalMergedpeopleapiPosixAccount `json:"posixAccount,omitempty"`

	// ProfileUrl: DEPRECATED. (go/people-api-concepts#repeated): Use
	// person.profile_url_repeated instead. Access to this field is
	// restricted to a set of legacy clients. This is a Google+-only field.
	// See go/fbs-g+-deprecation. NOTE: `Person.profile_url` is only
	// populated for profile-centric person.
	ProfileUrl string `json:"profileUrl,omitempty"`

	// ProfileUrlRepeated: This is a Google+-only field. See
	// go/fbs-g+-deprecation.
	ProfileUrlRepeated []*AppsPeopleOzExternalMergedpeopleapiProfileUrl `json:"profileUrlRepeated,omitempty"`

	// Pronoun: Pronouns are not supported for consumer profiles. See
	// go/pronouns-in-people-system-prd for more details.
	Pronoun []*AppsPeopleOzExternalMergedpeopleapiPronoun `json:"pronoun,omitempty"`

	// ReadOnlyProfileInfo: Information about the profiles that are a part
	// of this Person. This is only applicable to PROFILE and DOMAIN_PROFILE
	// containers.
	ReadOnlyProfileInfo []*AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo `json:"readOnlyProfileInfo,omitempty"`

	// Relation: See go/relation-vs-relationship for relation vs
	// relationship explanation.
	Relation []*AppsPeopleOzExternalMergedpeopleapiRelation `json:"relation,omitempty"`

	// RelationshipInterest: DEPRECATED. No data is returned for this field
	// anymore.
	RelationshipInterest []*AppsPeopleOzExternalMergedpeopleapiRelationshipInterest `json:"relationshipInterest,omitempty"`

	// RelationshipStatus: DEPRECATED. No data is returned for this field
	// anymore.
	RelationshipStatus []*AppsPeopleOzExternalMergedpeopleapiRelationshipStatus `json:"relationshipStatus,omitempty"`

	RightOfPublicityState []*AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState `json:"rightOfPublicityState,omitempty"`

	// RosterDetails: Data specific to rosters (such as Google Groups and
	// Chat Rooms). Data which also applies to contacts and profiles such as
	// name, email, and photo, etc are returned in the corresponding Person
	// fields.
	RosterDetails []*AppsPeopleOzExternalMergedpeopleapiRosterDetails `json:"rosterDetails,omitempty"`

	// SearchProfile: Profile for Janata and Search.
	// go/janata-profile-in-sgbe
	SearchProfile []*AppsPeopleOzExternalMergedpeopleapiSearchProfile `json:"searchProfile,omitempty"`

	// SipAddress: SipAddress is currently in use by contacts.
	SipAddress []*AppsPeopleOzExternalMergedpeopleapiSipAddress `json:"sipAddress,omitempty"`

	Skills []*AppsPeopleOzExternalMergedpeopleapiSkills `json:"skills,omitempty"`

	// SocialConnection: NOTE: this is used by go/starlight, but not
	// actually used or returned in PeopleAPI. See b/27281119 for context.
	// Please reach out to people-api-eng@ if you have questions.
	SocialConnection []*AppsPeopleOzExternalMergedpeopleapiSocialConnection `json:"socialConnection,omitempty"`

	SortKeys *AppsPeopleOzExternalMergedpeopleapiSortKeys `json:"sortKeys,omitempty"`

	SshPublicKey []*AppsPeopleOzExternalMergedpeopleapiSshPublicKey `json:"sshPublicKey,omitempty"`

	// Tagline: Only supported for PLACE container results, no data will be
	// returned for profiles.
	Tagline []*AppsPeopleOzExternalMergedpeopleapiTagline `json:"tagline,omitempty"`

	// TeamsExtendedData: DEPRECATED. *UNSUPPORTED*. This field is never
	// populated.
	TeamsExtendedData *AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData `json:"teamsExtendedData,omitempty"`

	// UserDefined: UserDefined is currently in use by contacts.
	UserDefined []*AppsPeopleOzExternalMergedpeopleapiUserDefined `json:"userDefined,omitempty"`

	// VisibleToGuests: Add annotation_id and metadata (product_source) for
	// visible to guests contacts go/visible-to-guests.
	VisibleToGuests []*AppsPeopleOzExternalMergedpeopleapiVisibleToGuests `json:"visibleToGuests,omitempty"`

	Website []*AppsPeopleOzExternalMergedpeopleapiWebsite `json:"website,omitempty"`

	// ForceSendFields is a list of field names (e.g. "About") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "About") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPerson) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPersonAttribute: Client-specific
// binary blob stored with Person data. This differs from ClientData,
// which stores structured, key-value pairs.
type AppsPeopleOzExternalMergedpeopleapiPersonAttribute struct {
	// Possible values:
	//   "PERSON_ATTRIBUTE_UNKNOWN"
	//   "REJECTED_CLEANUP_CARD_SUGGESTIONS" - The value field of a
	// PersonAttribute object with this key will contain a byte serialized
	// RejectedCleanupCardSuggestions proto, see http://shortn/_3KyFdhbZfW
	AttributeKey string `json:"attributeKey,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeKey") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeKey") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPersonExtendedData: Extension data
// for the whole person entity.
type AppsPeopleOzExternalMergedpeopleapiPersonExtendedData struct {
	// AboutMeExtendedData: For use by AboutMe and SmartProfile clients.
	AboutMeExtendedData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData `json:"aboutMeExtendedData,omitempty"`

	// AppsWaldoExtendedData: For use with Apps Waldo Availability Data
	// extension
	AppsWaldoExtendedData *SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData `json:"appsWaldoExtendedData,omitempty"`

	// CallerIdExtendedData: For use with caller ID extension
	CallerIdExtendedData *AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData `json:"callerIdExtendedData,omitempty"`

	// ContactsExtendedData: For use with Contacts extension.
	ContactsExtendedData *AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData `json:"contactsExtendedData,omitempty"`

	// DomainName: Hosted domain this person is a member of. The domain_name
	// is also returned as part of the person's ReadOnlyProfileInfo, so
	// requesting it via this extension is no longer necessary.
	DomainName []string `json:"domainName,omitempty"`

	// DynamiteExtendedData: For use with Dynamite extension.
	DynamiteExtendedData *SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData `json:"dynamiteExtendedData,omitempty"`

	// GpayExtendedData: For use with Google Pay extension.
	GpayExtendedData *AppsPeopleOzExternalMergedpeopleapiGPayExtendedData `json:"gpayExtendedData,omitempty"`

	// GplusExtendedData: For use with Google+ extension.
	GplusExtendedData *AppsPeopleOzExternalMergedpeopleapiGplusExtendedData `json:"gplusExtendedData,omitempty"`

	// HangoutsExtendedData: For use with Hangouts extension.
	HangoutsExtendedData *AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData `json:"hangoutsExtendedData,omitempty"`

	// IsPlaceholder: For use with gmail extensions and lookup by email. If
	// true, no person was actually found using the specified email address,
	// but we want to return TLS info about the email address regardless.
	IsPlaceholder bool `json:"isPlaceholder,omitempty"`

	// MapsExtendedData: For use with Maps extension.
	MapsExtendedData *AppsPeopleOzExternalMergedpeopleapiMapsExtendedData `json:"mapsExtendedData,omitempty"`

	// PaisaExtendedData: For use with Paisa extension
	PaisaExtendedData *SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData `json:"paisaExtendedData,omitempty"`

	// PeopleStackExtendedData: DEPRECATED: Use
	// people_stack_person_extended_data instead. For use with PeopleStack
	// extension.
	PeopleStackExtendedData *SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData `json:"peopleStackExtendedData,omitempty"`

	// PeopleStackPersonExtendedData: For use with PeopleStack extension.
	PeopleStackPersonExtendedData *SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData `json:"peopleStackPersonExtendedData,omitempty"`

	// PlayGamesExtendedData: For use with Play Games Product Profile
	// extension. See go/jam-games-profile. The play games profile will be
	// returned only for profile-centric requests.
	PlayGamesExtendedData *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData `json:"playGamesExtendedData,omitempty"`

	// TlsIsPlaceholder: For use with the TLS extension and lookup by email.
	// If true, no person was actually found using the specified email
	// address, but we want to return TLS info about the email address
	// regardless. DEPRECATED: Use is_placeholder instead.
	TlsIsPlaceholder bool `json:"tlsIsPlaceholder,omitempty"`

	// YoutubeExtendedData: For use with Youtube extension.
	YoutubeExtendedData *AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData `json:"youtubeExtendedData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AboutMeExtendedData")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AboutMeExtendedData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata: Metadata for
// a single Person field. See go/understanding-merged-person
type AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata struct {
	// AclChoices: When the container is PROFILE/DOMAIN_PROFILE and the
	// profile owner is the requester, this read-only, synthesized field
	// indicates which ACLs the user is allowed to set on the profile field.
	// This is distinct from field_acl, which is the field's currently set
	// ACL. field_acl will always be a valid ACL choice, except for the case
	// of default synthesized profile fields like monogram profile photos.
	// For those, field_acl does not represent a user-set field ACL, so it
	// may or may not be a valid choice. In all cases, default_acl_choice
	// will always be a valid choice. This is currently only populated on
	// the photo field when the "person.photo.metadata.acl_choices" mask is
	// set.
	AclChoices []*AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"aclChoices,omitempty"`

	// AdditionalContainerInfo: Additional information about the container
	// of this field.
	AdditionalContainerInfo *AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo `json:"additionalContainerInfo,omitempty"`

	// Affinity: For field-level affinity scores. The affinity between the
	// requester and this particular field in the Person (e.g., frequency of
	// calling a particular phone number).
	Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"`

	// ContactVisibility: Each field can have different visibility settings
	// Only returned when explicitly requested.
	//
	// Possible values:
	//   "CONTACT_VISIBILITY_UNSPECIFIED"
	//   "VISIBLE_TO_GUEST" - This can be set for annotation fields(e.g.
	// nicknames, relationship) that the user wants to expose to other
	// people in their household. Example use case: differentiate between
	// speed dial nicknames, regular nicknames and relationships
	ContactVisibility []string `json:"contactVisibility,omitempty"`

	// Container: DEPRECATED. Use container_type instead. Having the
	// Container be an enum at the PFM message level causes circular
	// dependency when other types try to refer to it. It breaks javascript
	// build targets.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "AFFINITY" - Data from the user's frequent interactions.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	Container string `json:"container,omitempty"`

	// ContainerId: DEPRECATED. Use encoded_container_id instead. The
	// numeric id of the data source. The id is only unique within a single
	// container type. This is only set when the id of the container is
	// numeric, e.g. contact id.
	ContainerId int64 `json:"containerId,omitempty,string"`

	// ContainerPrimary: Indicates if this field is the primary field for
	// the container and container_id.
	ContainerPrimary bool `json:"containerPrimary,omitempty"`

	// ContainerType: The source for the data in the field.
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// CrossDeviceAllowed: True if this field can be used on other devices
	// than the one it originated from. Assigned by the server. Currently
	// only used for device contacts.
	CrossDeviceAllowed bool `json:"crossDeviceAllowed,omitempty"`

	// DefaultAclChoice: When the container is PROFILE/DOMAIN_PROFILE and
	// the profile owner is the requester, this read-only, synthesized field
	// contains the default ACL choice. This can be used to select a
	// preferred choice from acl_choices. Generally, default_acl_choice
	// should only be preferred for default synthesized profile fields like
	// monogram profile photos. Otherwise, the existing field_acl should be
	// preferred. This is currently only populated on the photo field when
	// the "person.photo.metadata.acl_choices" mask is set.
	DefaultAclChoice *AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"defaultAclChoice,omitempty"`

	// DeprecatedContactContainerId: DEPRECATED. Use container_id. Not
	// populated or used at all.
	DeprecatedContactContainerId int64 `json:"deprecatedContactContainerId,omitempty,string"`

	// EdgeKey: Field is an edge key for this person. Modifying it breaks
	// the link between data sources. This is equivalent to edge_key_info
	// having at least one entry with materialized = true.
	EdgeKey bool `json:"edgeKey,omitempty"`

	// EdgeKeyInfo: Edges that this field creates. This includes all edges
	// and not necessarily just the edge relevant to the joined entities.
	EdgeKeyInfo []*AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo `json:"edgeKeyInfo,omitempty"`

	// EncodedContainerId: The encoded id of the data source. The id is only
	// unique within a single container type. This field correlates to
	// person.metadata.identity_info.source_id.id. This field may not be
	// populated in some special cases, where the id is not visible to the
	// querying user. e.g. ListAutocompletions with full phone number query.
	EncodedContainerId string `json:"encodedContainerId,omitempty"`

	// FieldAcl: When the container is PROFILE and the profile owner is the
	// requester, this field indicates how the profile field is accessible.
	FieldAcl *AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"fieldAcl,omitempty"`

	// LastUpdateTime: Indicates the time that the field was added or last
	// edited. Currently this is populated for: (1) person.birthday with
	// ContainerType PROFILE, DOMAIN_PROFILE or ACCOUNT. (2) person.name,
	// person.address, person.relation, person.email and person.phone with
	// ContainerType CONTACT_ANNOTATION;
	LastUpdateTime string `json:"lastUpdateTime,omitempty"`

	// MatchingInfo: The matching informations if there was a query against
	// this field.
	MatchingInfo []*AppsPeopleOzExternalMergedpeopleapiMatchInfo `json:"matchingInfo,omitempty"`

	// OtherDedupedContainers: When deduping fields by value, list of
	// containers of the fields that where deduped.
	OtherDedupedContainers []*AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo `json:"otherDedupedContainers,omitempty"`

	// Primary: If true, indicates this field is the Person's primary field
	// eg. Contact, and (Profile) Person could have different Name fields,
	// and the Name represented by the Person is primary. For selecting a
	// primary field from RepeatedFields within a Person, use
	// container_primary.
	Primary bool `json:"primary,omitempty"`

	// ProductMetadata: The product(s) that generated the data in this
	// field. Empty is equivalent to DEFAULT. ST_USER_METADATA
	ProductMetadata []*AppsPeopleOzExternalMergedpeopleapiProductMetadata `json:"productMetadata,omitempty"`

	// Verified: Indicates whether this is a verified field. It is
	// synthesized from verification and is read-only. If there is at least
	// one verification with status PASSED, the field is considered
	// verified. Currently this is applicable to address, email, name, and
	// phone for PROFILE and DOMAIN_PROFILE. Use .metadata.verified in the
	// request mask.
	Verified bool `json:"verified,omitempty"`

	// Visibility: Currently, only people.get may set this value
	//
	// Possible values:
	//   "VISIBILITY_UNKNOWN"
	//   "PUBLIC" - The field is visible to every user.
	//   "USER" - The field is visible to the requester. The server cannot
	// provide additional indication beyond that. The field may or may not
	// be also visible to users other than the requester.
	Visibility string `json:"visibility,omitempty"`

	// Writeable: Whether the field is writeable to the requester.
	Writeable bool `json:"writeable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AclChoices") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AclChoices") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber: A
// person list with total number specified.
type AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber struct {
	People []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"people,omitempty"`

	// TotalNumber: The total number of people, which is aways no less than
	// the size of the above list.
	TotalNumber int64 `json:"totalNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "People") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "People") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPersonMetadata: Metadata for the
// entire Person resource.
type AppsPeopleOzExternalMergedpeopleapiPersonMetadata struct {
	// Affinity: Affinities associated with the person, with respect to the
	// requester.
	Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"`

	// Attribution: Populated when the data for the MergedPerson comes from
	// a 3rd party provider or data source. Clients must display these
	// attributions to the user if they are present. NOTE: This field is
	// only relevant when requesting the following containers: - PLACE (data
	// read from Maps)
	Attribution []string `json:"attribution,omitempty"`

	// BestDisplayName: The best name to use for this person for user-facing
	// display. See go/people-api-howto:names for details about how this
	// field is computed. In many cases this will simply be Person.name[0].
	// However, Person.name returns only explicit Name fields, but other
	// fields maybe usable as a name (for example: nicknames, file_as, ...).
	// `best_display_name` will be calculated from all fields in storage
	// which are usable as a name, even fields which are not explicitly
	// requested in the MergedPerson result. See
	// go/javagoog/apps/tacotown/socialgraph/entity/PersonNameFormatter.java
	BestDisplayName *AppsPeopleOzExternalMergedpeopleapiBestDisplayName `json:"bestDisplayName,omitempty"`

	// BlockType: DEPRECATED. Indicates whether the profile owner has
	// blocked this person. Please use
	// `person.read_only_profile_info.block_type` instead.
	//
	// Possible values:
	//   "BLOCK_TYPE_UNKNOWN"
	//   "CIRCLE" - Profile-blocked users
	//   "LEGACY" - Chat-blocked users
	BlockType []string `json:"blockType,omitempty"`

	// CircleId: DEPRECATED. The circles the person belongs to.
	CircleId []string `json:"circleId,omitempty"`

	// ContactGroupId: DEPRECATED. Please use
	// `person.contact_group_memberships` instead. The contact groups the
	// person belongs to.
	ContactGroupId []string `json:"contactGroupId,omitempty"`

	// ContactId: The IDs of all contacts contributing to this person.
	ContactId googleapi.Int64s `json:"contactId,omitempty"`

	// CustomResponseMaskingType: DEPRECATED. Customized masking of the
	// response similar to the legacy People2RequestMask People2Params
	// request message. NOTE: This param is inherently client-specific,
	// limited to specific legacy clients, and not open to new usage. NOTE:
	// Effects may be applied to a subset of people in the response.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "NONE" - No filtering of the response.
	//   "MENAGERIE" - Used by Menagerie to request menagerie-specific
	// custom filtering or masking on the response.
	CustomResponseMaskingType string `json:"customResponseMaskingType,omitempty"`

	// Deleted: For sync requests (i.e., changed since the provided
	// sync_token), indicates the resource is a tombstone for a Person
	// resource that has been entirely deleted.
	Deleted bool `json:"deleted,omitempty"`

	// DeprecatedBlocked: DEPRECATED. Please use
	// `person.read_only_profile_info.block_type` instead.
	DeprecatedBlocked bool `json:"deprecatedBlocked,omitempty"`

	// DeprecatedMembershipCircleId: DEPRECATED. This field is no longer
	// populated or read.
	DeprecatedMembershipCircleId googleapi.Int64s `json:"deprecatedMembershipCircleId,omitempty"`

	// DeprecatedMembershipContactGroupId: DEPRECATED. This field is no
	// longer populated or read.
	DeprecatedMembershipContactGroupId googleapi.Int64s `json:"deprecatedMembershipContactGroupId,omitempty"`

	// DeviceContactInfo: Info about the aggregated device contacts. When
	// the person contains RAW_DEVICE_CONTACT containers, each
	// DeviceContactInfo represents a single aggregate device contact made
	// up of one or more raw device contacts.
	DeviceContactInfo []*AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo `json:"deviceContactInfo,omitempty"`

	// IdentityInfo: Detailed metadata about the lookup IDs and data sources
	// included in a MergedPerson result.
	IdentityInfo *AppsPeopleOzExternalMergedpeopleapiIdentityInfo `json:"identityInfo,omitempty"`

	// InViewerDomain: DEPRECATED. Indicates whether this person is in the
	// same domain as the viewer. For proxying trust between two users based
	// on organization membership, see: - go/flex-orgs-platform -
	// go/flex-orgs-compliance-handbook (especially
	// http://shortn/_ChwfAY36Ys)
	InViewerDomain bool `json:"inViewerDomain,omitempty"`

	// IncomingBlockType: DEPRECATED. Indicates whether this person is
	// blocking the profile owner. Please use
	// `person.read_only_profile_info.incoming_block_type` instead.
	//
	// Possible values:
	//   "BLOCK_TYPE_UNKNOWN"
	//   "CIRCLE" - Profile-blocked users
	//   "LEGACY" - Chat-blocked users
	IncomingBlockType []string `json:"incomingBlockType,omitempty"`

	// LastUpdateTimeMicros: DEPRECATED. The last update timestamps for the
	// constituent components of this person are available in
	// `identity_info.source_ids`. The time of the most recent change to
	// this person, in !!!NANOS!!! (due to a bug). May be a change to any of
	// the underlying parts of the person (profile, contact, etc.). Not
	// guaranteed to be the timestamp of the most recent change, due to
	// limitations in the backend. This field is not fully deprecated for
	// backend container-specific storage services like ProfileService which
	// lack identity_info. The use is still discouraged in such systems and
	// they should prefer to use the `last_update_time` field of this
	// message instead.
	LastUpdateTimeMicros int64 `json:"lastUpdateTimeMicros,omitempty,string"`

	// Model: The person model that is used to construct this person.
	//
	// Possible values:
	//   "PERSON_MODEL_UNKNOWN"
	//   "PROFILE_CENTRIC" - The default People API model where a person can
	// contain no more than one profile and potentially many contacts.
	//   "CONTACT_CENTRIC" - The inversion of the default profile-centric
	// model, i.e. a person can contain no more than one contact but
	// potentially many profiles. See go/contact-centric-person-model for
	// more details.
	Model string `json:"model,omitempty"`

	// ObjectType: DEPRECATED.
	//
	// Possible values:
	//   "OBJECT_TYPE_UNKNOWN"
	//   "PERSON"
	//   "PAGE"
	ObjectType string `json:"objectType,omitempty"`

	// OwnerId: DEPRECATED. Please use
	// `person.read_only_profile_info.owner_id` instead.
	OwnerId string `json:"ownerId,omitempty"`

	// OwnerUserType: DEPRECATED. See
	// `person.read_only_profile_info.owner_user_type` instead.
	//
	// Possible values:
	//   "OWNER_USER_TYPE_UNKNOWN"
	//   "GOOGLE_USER" - The owner is a Google user.
	//   "GPLUS_USER" - The owner is a Currents user.
	//   "GPLUS_DISABLED_BY_ADMIN" - Google+, i.e. INSServiceID::GOOGLE_ME
	// service, is disabled by dasher admin. Only returned for requester's
	// own profile.
	//   "GOOGLE_APPS_USER" - The owner is a Google Apps for Work user.
	//   "GOOGLE_APPS_SELF_MANAGED_USER" - The owner is a self-managed
	// Google Apps for Work user. Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_USER" - The owner is a Google for Families user.
	// Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_CHILD_USER" - The owner is a Google for Families
	// child user. Only returned for requester's own profile.
	//   "GOOGLE_APPS_ADMIN_DISABLED" - The owner has been disabled
	// (archived, suspended) by the G Suite admin.
	//   "GOOGLE_ONE_USER" - The owner is a Google One user (go/googleone).
	// Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_CONVERTED_CHILD_USER" - The owner is a Google for
	// Families child user that was converted from an existing user. Only
	// returned for requester's own profile. (go/griffin-account)
	OwnerUserType []string `json:"ownerUserType,omitempty"`

	// PlusPageType: DEPRECATED. Please use `Person.plus_page_info` instead.
	//
	// Possible values:
	//   "PLUS_PAGE_TYPE_UNKNOWN"
	//   "LOCAL"
	//   "COMPANY"
	//   "BRAND"
	//   "CELEBRITY"
	//   "CAUSE"
	//   "ENTERTAINMENT"
	//   "OTHER"
	//   "OBSOLETE_PRIVATE" - Formerly a private madison
	// account(go/private-madison-account). Don't use it anymore.
	PlusPageType string `json:"plusPageType,omitempty"`

	// PreviousPersonId: DEPRECATED. This field is no longer populated or
	// read.
	PreviousPersonId []string `json:"previousPersonId,omitempty"`

	// ProfileOwnerStats: DEPRECATED. Stats/counters pertaining to followers
	// and incoming edges. Please use
	// `person.read_only_profile_info.profile_owner_stats` instead.
	ProfileOwnerStats *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats `json:"profileOwnerStats,omitempty"`

	// ScoringInfo: Contact people-directory-dev-team@ if you want to use
	// this field.
	ScoringInfo *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo `json:"scoringInfo,omitempty"`

	// UserVisibleStats: DEPRECATED. This field is no longer populated or
	// read.
	UserVisibleStats *AppsPeopleOzExternalMergedpeopleapiUserVisibleStats `json:"userVisibleStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Affinity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Affinity") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo struct {
	// RawMatchQualityScore: Only populated on a SearchDirectoryPeople call,
	// when results are scored. Contact people-directory-dev-team@ if you
	// want to use this field.
	RawMatchQualityScore float64 `json:"rawMatchQualityScore,omitempty"`

	// StExpressionResults: Only populated on a SearchDirectoryPeople call
	// that sends a request with StFieldSpecExpressions. - Used for linking
	// indexed terms with query terms for go/better-name-matching - Name
	// should be alphanumeric or underscores - Value should be an st
	// expression following the syntax at go/stsyntax Contact
	// people-directory-dev-team@ if you want to use this field.
	StExpressionResults []*AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult `json:"stExpressionResults,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "RawMatchQualityScore") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawMatchQualityScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo
	var s1 struct {
		RawMatchQualityScore gensupport.JSONFloat64 `json:"rawMatchQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RawMatchQualityScore = float64(s1.RawMatchQualityScore)
	return nil
}

type AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult struct {
	Name string `json:"name,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiPhone struct {
	// CanonicalizedForm: Canonicalized form that follows ITU-T E.164
	// international public telecommunication numbering plan.
	CanonicalizedForm string `json:"canonicalizedForm,omitempty"`

	// EmergencyInfo: Emergency information. See
	// go/emergency-trusted-contacts-papi.
	EmergencyInfo *AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo `json:"emergencyInfo,omitempty"`

	// ExtendedData: Read-only. Field requested by specifying
	// `HANGOUTS_PHONE_DATA` in `extension_set.extension_names`.
	ExtendedData *AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData `json:"extendedData,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: The type of the phone number. The type can be free form or one
	// of these predefined values: * `home` * `work` * `mobile` * `homeFax`
	// * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` *
	// `main` * `googleVoice` * `other`
	Type string `json:"type,omitempty"`

	Uri string `json:"uri,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalizedForm")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalizedForm") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPhone) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPhone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData struct {
	// StructuredPhone: For use with Hangouts extension.
	StructuredPhone *AppsPeopleOzExternalMergedpeopleapiStructuredPhone `json:"structuredPhone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "StructuredPhone") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StructuredPhone") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiPhoto struct {
	// Decoration: Read-only. Use UpdatePersonPhoto to change photo
	// decorations. If this photo is decorated, this field contains
	// information about its decorations. For now, this will contain at most
	// one entry.
	Decoration []*SocialGraphApiProtoDecorationOverlay `json:"decoration,omitempty"`

	// EmojiAvatarUrl: URL of an emoji avatar as an image. See go/emoji-cdn.
	// PeopleAPI will return the SVG format so that it can be scaled client
	// side and so that the images will not be animated. All clients that
	// use this field must also have fall-back handling for using the
	// `Photo.url` field if this is empty. When we have FIFE-compatible
	// emoji-image URLs we will drop this field and return the Photo.url
	// instead. Clients that have their own go/emoji-rendering integration
	// may prefer to render the emoji-avatar from `Photo.glyph` field using
	// their rendering system so that the emoji version/style match the rest
	// of the application. For further background, see
	// go/chatroom-avatar-as-roster-metadata. This field will only be
	// populated if all of: - The PersonFieldMetadata `container_type` for
	// the Photo is NAMED_CHAT_ROOM - The chat room has an emoji type avatar
	// image set
	EmojiAvatarUrl string `json:"emojiAvatarUrl,omitempty"`

	// Glyph: Unicode emoji representation of the chat room emoji avatar.
	// This can be used by clients that use go/emoji-rendering directly so
	// that they can present this with the same version/style as the rest of
	// their application. This value may also be useful to clients as
	// alt-text for the image. This field will only be populated if all of:
	// - The PersonFieldMetadata `container_type` for the Photo is
	// NAMED_CHAT_ROOM - The chat room has an emoji type avatar image set
	Glyph string `json:"glyph,omitempty"`

	// HtmlAttribution: A set of HTML data provider attributions that must
	// be shown with the result. Supported for PLACES photos only. See:
	// go/understanding-places-api-attribution-requirements
	HtmlAttribution []string `json:"htmlAttribution,omitempty"`

	// IsDefault: True when the photo is synthetic or generated (i.e. a
	// monogram or default photo), false when the person has a custom photo.
	IsDefault bool `json:"isDefault,omitempty"`

	// IsMonogram: Indicates if the photo is a monogram avatar. Combined
	// with is_default, the type of photo can be determined by:
	// is_default=true, is_monogram=true: Default monogram avatar.
	// is_default=true, is_monogram=false: Default silhouette avatar.
	// is_default=false: Custom photo. is_monogram is irrelevant in this
	// case.
	IsMonogram bool `json:"isMonogram,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// MonogramBackground: When is_monogram=true, this is the background
	// color of the monogram photo as a hex RGB formatted string "RRGGBB".
	MonogramBackground string `json:"monogramBackground,omitempty"`

	// OriginalPhoto: Read-only. A reference to the original, undecorated
	// profile photo in storage. This field is not stored. It is populated
	// by a live read to /SocialGraphImageService.GetActiveProfilePhoto.
	// This field is only returned when "person.photo.original_photo" is
	// specified in the request mask.
	OriginalPhoto *SocialGraphApiProtoImageReference `json:"originalPhoto,omitempty"`

	// PhotoId: For writes only. Indicates photo content for person
	// photo-field update. Currently only used for profile-photo updates
	// (not contact photos yet).
	PhotoId *AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId `json:"photoId,omitempty"`

	// PhotoToken: Most clients don't need to worry about this field and
	// should just use the `url` to fetch the photo. See
	// go/phototoken-migration-plan for some more context about this field.
	// If you think you want to use this please talk with people-api-eng@
	// first.
	PhotoToken string `json:"photoToken,omitempty"`

	// Url: See go/people-api-concepts/photos for info on the different
	// representations of URLs.
	Url string `json:"url,omitempty"`

	// ViewerUrl: A URL for a UI to view the photo in its original context.
	// For example, for a place photo, this is the url of a Google Maps page
	// displaying the photo. Supported for place photos only.
	ViewerUrl string `json:"viewerUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Decoration") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Decoration") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPhoto) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPhoto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId: Info
// necessary for looking up a photo in storage.
type AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId struct {
	// MediaKey: For writes only, pass the media key that represents the
	// image in photos backend. Note, this is not populated on reads.
	MediaKey string `json:"mediaKey,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MediaKey") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MediaKey") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPlaceDetails: Metadata specific to
// places.
type AppsPeopleOzExternalMergedpeopleapiPlaceDetails struct {
	// GoogleUrl: A URL hosted by Google providing more information about
	// this place This is the URL returned by Places API in the
	// Place.Url.google field
	GoogleUrl string `json:"googleUrl,omitempty"`

	LatLng *AppsPeopleOzExternalMergedpeopleapiLatLng `json:"latLng,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	OpeningHours *AppsPeopleOzExternalMergedpeopleapiOpeningHours `json:"openingHours,omitempty"`

	// PrimaryTypeName: The name of the primary type. Examples of primary
	// type are: "art_school", "clothing_wholesaler", etc. All primary types
	// can be found at http://shortn/_veqh6UwWdc
	PrimaryTypeName string `json:"primaryTypeName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GoogleUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GoogleUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPlaceDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPlaceDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData: Extension
// data for use in Play Games Product Profile. See go/jam-games-profile.
type AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData struct {
	// Achievements: User's top achievements that are sorted for example by
	// rarity.
	Achievements []*AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement `json:"achievements,omitempty"`

	// AvatarImageUrl: The avatar image to display for the user.
	AvatarImageUrl string `json:"avatarImageUrl,omitempty"`

	// Failure: Failure type if there is an error when fetching product
	// profile data.
	Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"`

	// GamerTag: The gamer tag set by the user. Not set if the user hasn't
	// set a gamer tag yet.
	GamerTag string `json:"gamerTag,omitempty"`

	// PlayerLevel: User's level.
	PlayerLevel int64 `json:"playerLevel,omitempty"`

	// ProfileVisibility: Specifies the visibility of the player's profile.
	//
	// Possible values:
	//   "UNKNOWN_CLIENT_PLAYER_PROFILE_VISIBILITY" - Safe default.
	//   "PRIVATE_VISIBILITY" - The profile is not visible to anyone but the
	// player themselves.
	//   "PUBLIC_VISIBILITY" - The profile is visible to everyone.
	//   "FRIENDS_VISIBILITY" - The profile is visible to the player and
	// their PGS friends.
	ProfileVisibility string `json:"profileVisibility,omitempty"`

	// TotalFriendsCount: Total number of friends.
	TotalFriendsCount int64 `json:"totalFriendsCount,omitempty,string"`

	// TotalUnlockedAchievements: How many achievements this player has
	// unlocked.
	TotalUnlockedAchievements int64 `json:"totalUnlockedAchievements,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Achievements") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Achievements") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement:
// Details of an achievement that the user has unlocked.
type AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement struct {
	// AchievementName: The name of the achievement.
	AchievementName string `json:"achievementName,omitempty"`

	// AchievementUnlockedIconUrl: The achievement icon url shown to the
	// user if it is unlocked.
	AchievementUnlockedIconUrl string `json:"achievementUnlockedIconUrl,omitempty"`

	// RarityPercentage: Rarity of unlocking this achievement (3% of players
	// unlocked would be 3)
	RarityPercentage float64 `json:"rarityPercentage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AchievementName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AchievementName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement) UnmarshalJSON(data []byte) error {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement
	var s1 struct {
		RarityPercentage gensupport.JSONFloat64 `json:"rarityPercentage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RarityPercentage = float64(s1.RarityPercentage)
	return nil
}

// AppsPeopleOzExternalMergedpeopleapiPlusPageInfo: Information about a
// plus page and the entity it represents.
type AppsPeopleOzExternalMergedpeopleapiPlusPageInfo struct {
	// ApplicationId: Int64 ID of packaging-service entry; if set, the plus
	// page is associated with a third-party application.
	ApplicationId int64 `json:"applicationId,omitempty,string"`

	// Possible values:
	//   "ENTITY_TYPE_UNSPECIFIED"
	//   "LOCAL" - These are the top-level entity types for plus pages.
	//   "COMPANY"
	//   "BRAND"
	//   "CELEBRITY"
	//   "CAUSE"
	//   "ENTERTAINMENT"
	//   "OTHER"
	//   "OBSOLETE_PRIVATE" - Used to identify a private madison
	// account(go/private-madison-account). Don't use it anymore.
	EntityType string `json:"entityType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPlusPageInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPlusPageInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPointSpec: Map marker location for
// an address.
type AppsPeopleOzExternalMergedpeopleapiPointSpec struct {
	Bounds *GeostoreRectProto `json:"bounds,omitempty"`

	Point *GeostorePointProto `json:"point,omitempty"`

	// Possible values:
	//   "UNKNOWN_POINT_SOURCE"
	//   "POINT_SOURCE_UNSPECIFIED"
	//   "USER_PROVIDED" - User has explicitly moved the point.
	//   "SYSTEM_PROVIDED" - System has generated the marker.
	//   "USER_CONFIRMED" - System has generated the marker, but user has
	// viewed and saved it unchanged.
	PointSource string `json:"pointSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bounds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bounds") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPointSpec) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPointSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPosixAccount: Custom field that
// represents POSIX account information. Description of the field
// family: go/fbs-posix. If account has non-empty Username or Uid we
// will enforce global uniqueness of (AccountNamespace, CustomerKey,
// SystemId, Uid) and (AccountNamespace, CustomerKey, SystemId,
// Username) tuples to ensure there are no duplicates.
type AppsPeopleOzExternalMergedpeopleapiPosixAccount struct {
	// AccountId: The user visible value is used to distinguish identical
	// posix account fields with different customer key values.
	AccountId string `json:"accountId,omitempty"`

	// AccountNamespace: Value indicates the uniqueness namespace that
	// applies to the POSIX information. The value is included in all POSIX
	// account uniqueness indices. The indexing prevents two accounts within
	// the same customer from having the same username. Namespacing allows
	// Windows and Linux users to share the same username.
	//
	// Possible values:
	//   "LINUX_GSUITE" - A Linux user for a G Suite domain.
	//   "LINUX_CONSUMER" - A Linux user for a Google account.
	//   "WINDOWS_GSUITE" - A Windows user for a G Suite domain.
	//   "WINDOWS_CONSUMER" - A Windows user for a Google account.
	AccountNamespace string `json:"accountNamespace,omitempty"`

	// AccountType: Value indicates whether the POSIX information is
	// associated with a non-human entity and the validation logic to apply
	// during PosixAccount mutation.
	//
	// Possible values:
	//   "LINUX_USER_ACCOUNT" - Linux account associated with a human user.
	//   "LINUX_SERVICE_ACCOUNT" - Linux account for a non-human entity.
	// Service accounts are used for unattended automation scripts. See
	// go/riseoftherobots for details.
	//   "LINUX_EXTERNAL_USER" - Linux account associated with a human user
	// where the owner of the POSIX data is granted access to resources
	// (VMs) owned by a different (external) organization.
	//   "WINDOWS_USER_ACCOUNT" - Windows account associated with a human
	// user.
	//   "WINDOWS_SERVICE_ACCOUNT" - Windows account for a non-human entity.
	// Service accounts are used for unattended automation scripts.
	//   "WINDOWS_EXTERNAL_USER" - Windows account associated with a human
	// user where the owner of the account data is granted access to
	// resources (VMs) owned by a different (external) organization.
	AccountType string `json:"accountType,omitempty"`

	// CustomerKey: The customer associated with the POSIX identity. If the
	// user is already associated with a G Suite Customer, this field has
	// the same value as
	// http://google3/ccc/hosted/policies/settings/dthree_customer_info.proto
	CustomerKey int64 `json:"customerKey,omitempty,string"`

	// Fingerprint: The value is automatically set to a SHA-256 fingerprint
	// of the POSIX account. A fingerprint should uniquely identify a POSIX
	// account entry.
	Fingerprint string `json:"fingerprint,omitempty"`

	// Gecos: The GECOS (user information) entry for this account.
	Gecos string `json:"gecos,omitempty"`

	// Gid: The default group ID.
	Gid uint64 `json:"gid,omitempty,string"`

	// HomeDirectory: The path to the home directory for this account.
	HomeDirectory string `json:"homeDirectory,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// OperatingSystemType: Value indicates whether to use Linux or Windows
	// specific validation logic during PosixAccount mutation.
	//
	// Possible values:
	//   "OPERATING_SYSTEM_TYPE_UNSPECIFIED" - The operating system type
	// associated with the user account information is unspecified.
	//   "LINUX" - Linux user account information.
	//   "WINDOWS" - Windows user account information.
	OperatingSystemType string `json:"operatingSystemType,omitempty"`

	// Shell: The path to the login shell for this account.
	Shell string `json:"shell,omitempty"`

	// SystemId: System identifier for which account Username or Uid apply
	// to. If not specified on mutate by a caller it will default to empty
	// value if either Username or Uid are being set. SystemId does require
	// to have a value (even an empty one) because it is included into
	// null-filtered Spanner index used to enforce uniqueness on Username
	// and Uid fields.
	SystemId string `json:"systemId,omitempty"`

	// Uid: The user ID.
	Uid uint64 `json:"uid,omitempty,string"`

	// Username: The username of the account.
	Username string `json:"username,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPosixAccount) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPosixAccount
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiProductMetadata struct {
	// Possible values:
	//   "PRODUCT_SOURCE_UNKNOWN"
	//   "PRODUCT_SOURCE_DEFAULT"
	//   "PRODUCT_SOURCE_ASSISTANT"
	//   "PRODUCT_SOURCE_JANATA" - The product for non-prominent people
	// creating their profiles and sharing contact info on Google search
	// (go/project-janata).
	//   "PRODUCT_SOURCE_SPEED_DIAL"
	ProductSource string `json:"productSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProductSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProductSource") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiProductMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiProductMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiProductProfileFailure: Product
// profiles failure type: the status of the rpc to fetch the product
// profile.
type AppsPeopleOzExternalMergedpeopleapiProductProfileFailure struct {
	// Possible values:
	//   "PRODUCT_PROFILE_FAILURE_TYPE_UNKNOWN"
	//   "RPC_FAILURE"
	FailureType string `json:"failureType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FailureType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FailureType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiProductProfileFailure
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats: Stats
// pertaining to incoming edges and views, visible to the requester
// (with acls applied). Related to, but not equal to,
// com.google.focus.proto.Storage.UserVisibleStats.
type AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats struct {
	// IncomingAnyCircleCount: Replacement for deprecated follower_count.
	// Comes from the EdgeSummary.
	IncomingAnyCircleCount int64 `json:"incomingAnyCircleCount,omitempty,string"`

	// ViewCount: Deprecated. This field is no longer populated by the
	// server.
	ViewCount int64 `json:"viewCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "IncomingAnyCircleCount") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IncomingAnyCircleCount")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiProfileUrl: This is a Google+-only
// field (and thus does not exist for consumer users). See
// go/fbs-g+-deprecation.
type AppsPeopleOzExternalMergedpeopleapiProfileUrl struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiProfileUrl) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiProfileUrl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiPronoun: Message to represent a
// user's set of preferred pronouns, see go/pronouns-backend.
type AppsPeopleOzExternalMergedpeopleapiPronoun struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	PronounData *SocialGraphApiProtoPronounData `json:"pronounData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiPronoun) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiPronoun
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo struct {
	// DataSet: The data set within the account that this raw contact
	// belongs to.
	DataSet string `json:"dataSet,omitempty"`

	// Dirty: The CP2 dirty field which indicates the sync state of the raw
	// contact:
	// https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#DIRTY
	// True if the row is changed but not synced
	Dirty bool `json:"dirty,omitempty"`

	// SourceIdExist: Whether the source ID exists for non-Google contacts.
	// Won't set for Google contacts.
	SourceIdExist bool `json:"sourceIdExist,omitempty"`

	// SyncInfo: The Sync Info of a raw contact.
	SyncInfo *SocialGraphApiProtoSyncInfo `json:"syncInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataSet") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo: Raw device
// contact information.
type AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo struct {
	// AccountName: Account name of raw contact, e.g. "google@gmail.com".
	AccountName string `json:"accountName,omitempty"`

	// AccountType: Account type of raw contact, e.g. "com.google" or
	// "com.linkedin.android".
	AccountType string `json:"accountType,omitempty"`

	// AppContactData: The detailed app-specific endpoint data available for
	// the given RawDeviceContactInfo instance. This proto should be used to
	// obtain the list of actions and mimetypes supported by the third-party
	// app. Design: go/3p-contact-upload
	AppContactData []*SocialGraphApiAppContactData `json:"appContactData,omitempty"`

	// AppInfo: The app-specific endpoint data needed for app action
	// fulfillment. Usage of this field should be avoided on the
	// server-side, and should use the more detailed |full_app_info| field.
	AppInfo *AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo `json:"appInfo,omitempty"`

	// CrossDeviceAllowed: If true, this raw contact can be used on other
	// devices than the one it originated from. Assigned by the server.
	CrossDeviceAllowed bool `json:"crossDeviceAllowed,omitempty"`

	// DeviceContactMetadata: Extra metadata for this raw contact.
	DeviceContactMetadata *AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata `json:"deviceContactMetadata,omitempty"`

	// GoogleContactId: The focus contact id for Google contacts.
	GoogleContactId int64 `json:"googleContactId,omitempty,string"`

	// Id: The base64 serialized
	// social.graph.peopleapi.proto.internal.RawDeviceContactId. This id
	// should be used to correlate to field.metadata.encoded_container_id
	// when the field.metadata.container_type is RAW_DEVICE_CONTACT The id
	// also correlates to person.metadata.identity_info.source_id.id.
	Id string `json:"id,omitempty"`

	// PhotoType: The type of photo from the device (if any).
	//
	// Possible values:
	//   "PHOTO_TYPE_UNKNOWN"
	//   "NO_PHOTO" - This raw contact doesn't have a photo.
	//   "THUMBNAIL" - This raw contact only has a thumbnail.
	//   "FULL_SIZE_PHOTO" - This raw contact has a full size photo.
	PhotoType string `json:"photoType,omitempty"`

	// RawContactId: The id of the raw contact on the device.
	RawContactId int64 `json:"rawContactId,omitempty,string"`

	// RawDeviceContactAnalyticalInfo: Only to be used by Romanesco team
	// specifically for analytics.
	RawDeviceContactAnalyticalInfo *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo `json:"rawDeviceContactAnalyticalInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo: Metadata
// information about a profile. This message replaces legacy
// profile-specific singleton fields from the PersonMetadata proto
// (singleton top level Person fields are not compatible with
// non-profile-centric person results, which may include multiple
// profile containers).
type AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo struct {
	// AccountEmail: The account email linked to the profile, if any exists
	// and is visible to the requester.
	AccountEmail *AppsPeopleOzExternalMergedpeopleapiAccountEmail `json:"accountEmail,omitempty"`

	// BlockType: Indicates whether the profile owner has blocked this
	// person.
	//
	// Possible values:
	//   "BLOCK_TYPE_UNKNOWN"
	//   "CIRCLE" - Profile-blocked users
	//   "LEGACY" - Chat-blocked users
	BlockType []string `json:"blockType,omitempty"`

	// CustomerInfo: CustomerInfo for dasher user. The reader has to
	// explicitly request this in the field_mask as
	// 'read_only_profile_info.customer_info'
	CustomerInfo *AppsPeopleOzExternalMergedpeopleapiCustomerInfo `json:"customerInfo,omitempty"`

	// DomainInfo: DEPRECATED. Use the `ReadOnlyProfileInfo.customer_info`
	// field instead (b/138120418). Only populated if in_viewer_domain is
	// true.
	DomainInfo *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo `json:"domainInfo,omitempty"`

	// InViewerDomain: DEPRECATED. Proxying trust between users in a domain
	// should use go/flex-orgs-platform. For more info see:
	// http://doc/18i0-C7vWcz2UuXYBsmulnriVCK3_EuMPpRlPa2OmMHw#heading=h.dobotdwx25kg
	// Indicates whether the profile owner is in the same domain as the
	// viewer.
	InViewerDomain bool `json:"inViewerDomain,omitempty"`

	// IncomingBlockType: Indicates whether this person is blocking the
	// profile owner.
	//
	// Possible values:
	//   "BLOCK_TYPE_UNKNOWN"
	//   "CIRCLE" - Profile-blocked users
	//   "LEGACY" - Chat-blocked users
	IncomingBlockType []string `json:"incomingBlockType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ObjectType: DEPRECATED.
	//
	// Possible values:
	//   "OBJECT_TYPE_UNKNOWN"
	//   "PERSON"
	//   "PAGE"
	ObjectType string `json:"objectType,omitempty"`

	// OwnerId: The Focus-obfuscated Gaia ID of the profile owner
	// (go/obfuscated-ids).
	OwnerId string `json:"ownerId,omitempty"`

	// Possible values:
	//   "OWNER_USER_TYPE_UNKNOWN"
	//   "GOOGLE_USER" - The owner is a Google user.
	//   "GPLUS_USER" - The owner is a Currents user.
	//   "GPLUS_DISABLED_BY_ADMIN" - Google+, i.e. INSServiceID::GOOGLE_ME
	// service, is disabled by dasher admin. Only returned for requester's
	// own profile.
	//   "GOOGLE_APPS_USER" - The owner is a Google Apps for Work user.
	//   "GOOGLE_APPS_SELF_MANAGED_USER" - The owner is a self-managed
	// Google Apps for Work user. Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_USER" - The owner is a Google for Families user.
	// Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_CHILD_USER" - The owner is a Google for Families
	// child user. Only returned for requester's own profile.
	//   "GOOGLE_APPS_ADMIN_DISABLED" - The owner has been disabled
	// (archived, suspended) by the G Suite admin.
	//   "GOOGLE_ONE_USER" - The owner is a Google One user (go/googleone).
	// Only returned for requester's own profile.
	//   "GOOGLE_FAMILY_CONVERTED_CHILD_USER" - The owner is a Google for
	// Families child user that was converted from an existing user. Only
	// returned for requester's own profile. (go/griffin-account)
	OwnerUserType []string `json:"ownerUserType,omitempty"`

	// PlusPageType: DEPRECATED. Please use `person.plus_page_info` instead.
	//
	// Possible values:
	//   "PLUS_PAGE_TYPE_UNKNOWN"
	//   "LOCAL"
	//   "COMPANY"
	//   "BRAND"
	//   "CELEBRITY"
	//   "CAUSE"
	//   "ENTERTAINMENT"
	//   "OTHER"
	//   "OBSOLETE_PRIVATE" - Formerly a private madison
	// account(go/private-madison-account). Don't use it anymore.
	PlusPageType string `json:"plusPageType,omitempty"`

	// ProfileOwnerStats: Stats/counters pertaining to followers and
	// incoming edges.
	ProfileOwnerStats *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats `json:"profileOwnerStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountEmail") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountEmail") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo:
// DEPRECATED.
type AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo struct {
	// DomainBadge: DEPRECATED. Organization badge for the domain this
	// person is a member of. The badge is the primary hosted domain.
	DomainBadge []string `json:"domainBadge,omitempty"`

	// DomainName: DEPRECATED. Hosted domain this person is a member of.
	// Formerly only available via PersonExtendedData.
	DomainName []string `json:"domainName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DomainBadge") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DomainBadge") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRelation: Relation stores the
// related person between the contact or profile and a third person. See
// go/relation-vs-relationship for relation vs relationship explanation.
// This field currently includes RelationshipToMe data in fields value
// and canonical_value for ContainerType CONTACT_ANNOTATION. This will
// be moved to RelationshipToMe in b/221081499.
type AppsPeopleOzExternalMergedpeopleapiRelation struct {
	// CanonicalValue: Canonicalized `value` of the relation from this
	// person to the user. This is currently used for data from contact
	// annotations. Possible canonical values are based from
	// http://google3/googledata/quality/aliases/relationship_en.config.
	CanonicalValue string `json:"canonicalValue,omitempty"`

	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// RelationDetails: The person whose email matches the Relation.value
	// field, if it is a valid email address. This field is read-only and
	// ignored on update.
	RelationDetails *AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails `json:"relationDetails,omitempty"`

	// Type: The relation type. The type can be free form or one of these
	// predefined values: * `spouse` * `child` * `mother` * `father` *
	// `parent` * `brother` * `sister` * `friend` * `relative` *
	// `domesticPartner` * `manager` * `assistant` * `referredBy` *
	// `partner`
	Type string `json:"type,omitempty"`

	// Value: The person this relation applies to. Custom value provided by
	// the user.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRelation) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRelation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails struct {
	// DisplayName: Equivalent to Name.display_name for the person_id
	// profile.
	DisplayName string `json:"displayName,omitempty"`

	// JobTitle: Equivalent to Organization.title for the primary
	// organization of the person_id profile.
	JobTitle string `json:"jobTitle,omitempty"`

	PersonId string `json:"personId,omitempty"`

	// PhotoUrl: Equivalent to Photo.url for the person_id profile.
	PhotoUrl string `json:"photoUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRelationshipInterest: Deprecated
// in b/122464133. No data returned for this field.
type AppsPeopleOzExternalMergedpeopleapiRelationshipInterest struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: These fields may give away the sexual orientation of the user.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRelationshipInterest) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationshipInterest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRelationshipStatus: Deprecated in
// b/122464133. No data returned for this field.
type AppsPeopleOzExternalMergedpeopleapiRelationshipStatus struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRelationshipStatus) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationshipStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState: User
// preference for shared endorsements. See go/se-devguide and
// go/sharedendorsements for details, including guidance on which
// contexts are which.
type AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Possible values:
	//   "STATE_UNSPECIFIED"
	//   "NOT_OK_TO_DISPLAY" - OK to display in non-commercial contexts, but
	// not in commercial ones.
	//   "OK_TO_DISPLAY" - Okay to display in commercial or advertising
	// contexts.
	//   "OK_TO_DISPLAY_IN_NON_ADS_COMMERCIAL_CONTEXT" - Okay to display in
	// commercial contexts other than advertising.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRosterDetails: Information
// specific to rosters like Google Groups and Chatrooms.
type AppsPeopleOzExternalMergedpeopleapiRosterDetails struct {
	// AbridgedRosterMemberships: Abridged / sample subset of member details
	// of the roster. NOTE: This field is only returned if the request's
	// field mask includes
	// "person.roster_details.abridged_roster_memberships".
	// http://cs/symbol:google.apps.cloudidentity.groups.internal.GroupSummary.abridged_memberships
	AbridgedRosterMemberships []*AppsPeopleOzExternalMergedpeopleapiRosterMember `json:"abridgedRosterMemberships,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// RosterMemberCount: Indicates the number of members and sub-rosters of
	// the roster. Corresponds to
	// http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.direct_member_count_per_type
	RosterMemberCount *AppsPeopleOzExternalMergedpeopleapiRosterMemberCount `json:"rosterMemberCount,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AbridgedRosterMemberships") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AbridgedRosterMemberships") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRosterDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRosterMember: Represents details
// of a member of a roster. Used in RosterDetails. Corresponds to
// http://cs/symbol:google.apps.cloudidentity.groups.internal.Membership
type AppsPeopleOzExternalMergedpeopleapiRosterMember struct {
	// MemberType: Type of the member.
	//
	// Possible values:
	//   "ROSTER_MEMBER_TYPE_UNSPECIFIED"
	//   "PERSON" - CIG's Membership.Type.USER
	//   "ROSTER" - CIG's Membership.Type.GROUP
	MemberType string `json:"memberType,omitempty"`

	// PersonId: Focus-Obfuscated Gaia Id of the member.
	PersonId string `json:"personId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MemberType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MemberType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRosterMember) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterMember
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiRosterMemberCount: Represents the
// summary of member counts of a roster. Used in RosterDetails.
// Corresponds to
// http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType
type AppsPeopleOzExternalMergedpeopleapiRosterMemberCount struct {
	// DirectGroupCount: Indicates the number of direct sub-rosters of the
	// roster. This comes from
	// http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.group_count
	DirectGroupCount int64 `json:"directGroupCount,omitempty,string"`

	// DirectUserCount: Indicates the number of direct, non-roster members
	// of the roster. This comes from
	// http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.user_count
	DirectUserCount int64 `json:"directUserCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DirectGroupCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DirectGroupCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiRosterMemberCount) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterMemberCount
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiSearchProfile: Profile for Janata
// and Search. go/janata-profile-in-sgbe
type AppsPeopleOzExternalMergedpeopleapiSearchProfile struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	SearchProfileData *SocialGraphApiProtoSearchProfileData `json:"searchProfileData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSearchProfile) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSearchProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiSipAddress: As of 03/2018 is not
// supported for user Profile.
type AppsPeopleOzExternalMergedpeopleapiSipAddress struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Type: The type of the SIP address. The type can be free form or or
	// one of these predefined values: * `home` * `work` * `mobile` *
	// `other`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSipAddress) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSipAddress
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiSkills struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSkills) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSkills
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiSocialConnection: The social
// connection of this person to the viewer. NOTE: this is used by
// go/starlight, but not actually used or returned in PeopleAPI. See
// b/27281119 for context.
type AppsPeopleOzExternalMergedpeopleapiSocialConnection struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Possible values:
	//   "SOCIAL_CONNECTION_UNKNOWN"
	//   "NO_CONNECTION" - This person is not connected to the viewer.
	//   "GPLUS_SECOND_HOP" - Google+ user is a second hop relative to
	// viewer.
	//   "DIRECT_CONNECTION" - User is a contact or in circles of the
	// viewer.
	//   "SELF" - This person is the viewer.
	Type []string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSocialConnection) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSocialConnection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiSortKeys struct {
	Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"`

	// InteractionRank: Deprecated. This field is only populated with 0.000
	// for legacy reasons. Clients should not use this field.
	InteractionRank string `json:"interactionRank,omitempty"`

	LastName string `json:"lastName,omitempty"`

	LastNameRaw string `json:"lastNameRaw,omitempty"`

	Name string `json:"name,omitempty"`

	// NameRaw: Raw name strings that were used to generate the name and
	// last_name sort keys fields above. Contacts+ need them to generate
	// section headers for list view (b/30642866).
	NameRaw string `json:"nameRaw,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Affinity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Affinity") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSortKeys) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSortKeys
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiSourceIdentity: Id of a single
// source from the merged person.
type AppsPeopleOzExternalMergedpeopleapiSourceIdentity struct {
	// Container: The type of source. To be deprecated infavor of
	// container_type
	//
	// Possible values:
	//   "UNKNOWN"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "AFFINITY" - Data from the user's frequent interactions.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	Container string `json:"container,omitempty"`

	// ContainerType: The type of the source.
	//
	// Possible values:
	//   "UNKNOWN_CONTAINER"
	//   "PROFILE" - Google Profile. PROFILE fields are editable by the
	// profile owner, unless the field metadata includes writeable=false.
	//   "CONTACT" - Google Contact
	//   "CIRCLE" - Deprecated. E-mail only circle membership should be
	// dead. E-mail only circle membership of non-g+ user.
	//   "PLACE" - A maps place
	//   "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are
	// not editable by anyone. They only occur when the requester is "me".
	// In the event an ACCOUNT field is ACLed non-private, it will be
	// returned as a PROFILE field when viewed by a requester who is not
	// "me".
	//   "EXTERNAL_ACCOUNT" - LinkedExternalSites
	// (go/PeopleApiConnectedSites)
	//   "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields
	// are editable by the Dasher administrator of the domain. They are not
	// editable by the profile owner.
	//   "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned
	// by a domain and represents a person, but is not a user in the domain.
	// For more details see https://support.google.com/a/answer/9281635.
	//   "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT
	// See go/mergedperson-for-device-contacts Aggregation is represented
	// using person.metadata.device_contact_info
	//   "GOOGLE_GROUP" - Google group. Examples: sales@zara.es.
	//   "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE *and* label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a
	// Baggins Roster with label DYNAMITE_SPACE but does *not* have label
	// DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms
	//   "AFFINITY" - Device contacts that are used in interaction ranking,
	// but have not been uploaded to Google. These are synthesized people
	// from interaction data. This container type is only used in
	// ListRankedPeople and ListRankedTargets actions. See
	// go/TopNWithClusteringPart1.
	//   "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device
	// contact. See go/mergedperson-for-device-contacts
	//   "CONTACT_ANNOTATION" - Data from contact annotation. Contact
	// annotations are currently generated and used by Google Assistant.
	//   "DELEGATED_CONTACT" - Data from delegated contacts. Delegated
	// contacts are the contacts delegated to the current requester. The
	// requester can then access those contacts. See go/ph-delegation.
	ContainerType string `json:"containerType,omitempty"`

	// Deleted: In sync responses, indicates whether the identity source has
	// been deleted. Not applicable to GOOGLE_GROUP.
	Deleted bool `json:"deleted,omitempty"`

	// Id: The encoded id of the data source. This field correlates to
	// PersonFieldMetadata.encoded_container_id. The possible values of this
	// `id` field are as follows based on the value of the `container_type`
	// field: CONTACT: Hex-encoded contact id. PROFILE: DOMAIN_PROFILE:
	// GOOGLE_GROUP: NAMED_CHAT_ROOM: Focus-obfuscated Gaia ID.
	// DOMAIN_CONTACT: Synthetic-contact id representing the domain shared
	// contact. PLACE: Encoded PlaceId
	// (go/javagoog/maps/api/places/util/PlaceIdEncoder.java)
	// RAW_DEVICE_CONTACT: Pair of device_id and raw_contact_id, encoded as
	// base64 serialized
	// social.graph.peopleapi.proto.internal.RawDeviceContactId proto.
	// CONTACT_ANNOTATION: Pair of annotation_id and event_timestamp,
	// encoded as base64 serialized
	// social.graph.peopleapi.proto.internal.ContactAnnotationId proto. --
	// DEPRECATED container types -- If the container is CIRCLE, then the id
	// is going to be the synthetic- contact id representing the email-only
	// circle member or gaia circle member for which the requester does not
	// have a contact for.
	Id string `json:"id,omitempty"`

	// LastUpdated: Last update timestamp of this source. NOTE: Only
	// populated for CONTACT container type in Java PeopleAPI. Populated for
	// CONTACT, PROFILE, DOMAIN_PROFILE in Sharpen implementation. NOTE: Not
	// populated for GOOGLE_GROUP.
	LastUpdated string `json:"lastUpdated,omitempty"`

	// LastUpdatedMicros: **DEPRECATED** Please use `last_updated` field
	// instead. Last update timestamp of this source in microseconds. NOTE:
	// Only populated for CONTACT container type.
	LastUpdatedMicros int64 `json:"lastUpdatedMicros,omitempty,string"`

	// SourceEtag: NOTE: Not populated for GOOGLE_GROUP.
	SourceEtag string `json:"sourceEtag,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Container") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Container") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSourceIdentity) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSourceIdentity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiSshPublicKey: Custom field that
// represents SSH public keys associated with the user. We can treat the
// field as a map from a string fingerprint to the SSH public key
// information.
type AppsPeopleOzExternalMergedpeopleapiSshPublicKey struct {
	ExpirationTime string `json:"expirationTime,omitempty"`

	// Fingerprint: The value is automatically set to a SHA-256 fingerprint
	// of an SSH public key. A fingerprint should uniquely identify an SSH
	// public key.
	Fingerprint string `json:"fingerprint,omitempty"`

	Key string `json:"key,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExpirationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExpirationTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiSshPublicKey) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiSshPublicKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiStructuredPhone: This message
// mirrors the ContactPhoneNumber message in
// ccc/grand_central/common/types.proto. For various reasons, we cannot
// take on a direct dependency. See other proto file for most recent
// documentation.
type AppsPeopleOzExternalMergedpeopleapiStructuredPhone struct {
	// FormattedType: The phone formatted type. See docs from mirrored
	// proto:
	// http://google3/ccc/grand_central/common/types.proto?l=128&rcl=241000760
	FormattedType string `json:"formattedType,omitempty"`

	PhoneNumber *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber `json:"phoneNumber,omitempty"`

	ShortCode *AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode `json:"shortCode,omitempty"`

	// Type: The type of phone. See docs from mirrored proto:
	// http://google3/ccc/grand_central/common/types.proto?l=125&rcl=241000760
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhone) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber struct {
	E164 string `json:"e164,omitempty"`

	I18nData *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData `json:"i18nData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "E164") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "E164") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData struct {
	CountryCode int64 `json:"countryCode,omitempty"`

	InternationalNumber string `json:"internationalNumber,omitempty"`

	IsValid bool `json:"isValid,omitempty"`

	NationalNumber string `json:"nationalNumber,omitempty"`

	RegionCode string `json:"regionCode,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "IS_POSSIBLE"
	//   "INVALID_COUNTRY_CODE"
	//   "TOO_SHORT"
	//   "TOO_LONG"
	//   "IS_POSSIBLE_LOCAL_ONLY"
	//   "INVALID_LENGTH"
	ValidationResult string `json:"validationResult,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode struct {
	// Code: The phone code. See docs from mirrored proto:
	// http://google3/ccc/grand_central/common/types.proto?l=70&rcl=241000760
	Code string `json:"code,omitempty"`

	CountryCode string `json:"countryCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiTagline struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiTagline) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiTagline
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData: *UNSUPPORTED*.
// This message is never populated and is no longer used.
type AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData struct {
	AdminTo []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"adminTo,omitempty"`

	Admins []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"admins,omitempty"`

	DottedLineManagers []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"dottedLineManagers,omitempty"`

	DottedLineReports *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber `json:"dottedLineReports,omitempty"`

	// Possible values:
	//   "UNKNOWN_FAILURE"
	//   "MANAGEMENT_CHAIN"
	//   "REPORTS"
	//   "DOTTED_LINE_REPORTS"
	//   "DOTTED_LINE_MANAGERS"
	//   "ADMINS"
	//   "ADMIN_TO"
	Failures []string `json:"failures,omitempty"`

	ManagementChain []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"managementChain,omitempty"`

	Reports *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber `json:"reports,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdminTo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdminTo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiUserDefined struct {
	Key string `json:"key,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiUserDefined) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiUserDefined
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiUserVisibleStats: DEPRECATED in
// favor of ProfileStats. Stats pertaining to incoming edges and views,
// visible to the requester (with acls applied). Related to, but not
// equal to, com.google.focus.proto.Storage.UserVisibleStats.
type AppsPeopleOzExternalMergedpeopleapiUserVisibleStats struct {
	// IncomingAnyCircleCount: Replacement for deprecated follower_count.
	// Comes from the EdgeSummary.
	IncomingAnyCircleCount int64 `json:"incomingAnyCircleCount,omitempty,string"`

	ViewCount int64 `json:"viewCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "IncomingAnyCircleCount") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IncomingAnyCircleCount")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiUserVisibleStats) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiUserVisibleStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiVisibleToGuests: Store metadata
// information like annotation-id and product source for visible to
// guests contacts go/visible-to-guests.
type AppsPeopleOzExternalMergedpeopleapiVisibleToGuests struct {
	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiVisibleToGuests) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiVisibleToGuests
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData struct {
	// IsIncomplete: Used by Contacts client-side to indicate whether a
	// person is not completed.
	IsIncomplete bool `json:"isIncomplete,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsIncomplete") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsIncomplete") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiWebsite struct {
	// FormattedType: The `type` translated and formatted in the request
	// locale. See go/people-api-howto/localization for details on how to
	// usage.
	FormattedType string `json:"formattedType,omitempty"`

	Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"`

	// Rel: Currently in Oz: "Links": Links with no rel. "Other profiles":
	// Links with rel=ME. "Contributor to": Links with rel=CONTRIBUTOR_TO or
	// PAST_CONTRIBUTOR_TO.
	Rel []*AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo `json:"rel,omitempty"`

	// Type: The type of the website. The type can be free form or one of
	// these predefined values: * `home` * `work` * `blog` * `profile` *
	// `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a
	// Currents application. * `other`
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FormattedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FormattedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiWebsite) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiWebsite
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo struct {
	// Possible values:
	//   "UNKNOWN"
	//   "ME" - rel="me"
	//   "NOT_ME" - rel=""
	//   "CONTRIBUTOR_TO" - rel="contributor-to"
	//   "PAST_CONTRIBUTOR_TO" - rel="past-contributor-to"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData: Extension
// data for use in Youtube Product Profile.
type AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData struct {
	// ChannelData: Information about a channel created by the user. A user
	// can create multiple Youtube channels.
	ChannelData []*AppsPeopleOzExternalMergedpeopleapiChannelData `json:"channelData,omitempty"`

	// Failure: Failure type if there is an error when fetching product
	// profile data.
	Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChannelData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelData") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAccessControlOutput: Access settings for providers.
type AssistantApiAccessControlOutput struct {
	// AllowNonUnicornUserAccessYoutubeKids: If true, the user consented to
	// use YouTube Kids as a video provider for non-unicorn users(voice
	// recognized adults or guest). Unicorn accounts shouldn’t use this
	// setting.
	AllowNonUnicornUserAccessYoutubeKids bool `json:"allowNonUnicornUserAccessYoutubeKids,omitempty"`

	// Possible values:
	//   "UNKNOWN_GUEST_ACCESS"
	//   "USE_DEFAULT_ACCOUNT_FOR_GUEST" - Guests can access content using
	// linked users' account.
	//   "DISABLED_FOR_GUEST" - No access for guests.
	GuestAccessOnYoutube string `json:"guestAccessOnYoutube,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowNonUnicornUserAccessYoutubeKids") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AllowNonUnicornUserAccessYoutubeKids") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAccessControlOutput) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAccessControlOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiActionV2SupportedFeatures: The features supported by the
// ActionV2 protocol. Note that after we move on to ConversationProto
// for all surfaces we can remove this message.
type AssistantApiActionV2SupportedFeatures struct {
	// ExpressUrlInSettingsResponseSupported: This flag is used to work
	// around a bug in AGSA 6.8 that got away. The bug prevents users from
	// accessing their shopping list if the URL of the shopping list is not
	// a keep.google.com URL. This will happen when switch the backend that
	// stores the shopping list from Keep to a backend maintained by the
	// Google Shopping Express team.
	ExpressUrlInSettingsResponseSupported bool `json:"expressUrlInSettingsResponseSupported,omitempty"`

	// ReconnectClientInputSupported: Whether client supports reconnect
	// client input in action v2 payload. This capability is needed to
	// determine if client supports parsing client input payload from
	// actionv2 proto for workflow purposes. See go/personal-workflow.
	// OWNER:nyzstar,vvvemuri.
	ReconnectClientInputSupported bool `json:"reconnectClientInputSupported,omitempty"`

	// SimpleActionV2PuntSupported: Whether or not the surface supports a
	// simple UnsupportedAction instead of a ModalState punt card for
	// rendering. For ActionV2 punt cards, the ModalState extension on the
	// ResourceSet is the canonical way of building punt cards. However,
	// while most all devices support the ActionV2 protocol, not all devices
	// handle the ModalState rendering as part of the ActionV2. For these
	// devices, we want to build a modified ActionV2 for punt cards which
	// omits this ModalState. At present, this is only Android Wear and
	// should not be used for other devices if they support ModalState or
	// Conversation protocol.
	SimpleActionV2PuntSupported bool `json:"simpleActionV2PuntSupported,omitempty"`

	// SupportedActionType: A list of all the action types supported by the
	// client. These should be the string representation of
	// majel.ActionTypes within "quality/majel/api/proto/action_v2.proto".
	SupportedActionType []string `json:"supportedActionType,omitempty"`

	// TakeScreenshotSupported: Checks if screenshots can be taken on the
	// client. This field is set on the client from AGSA 7.2 onwards.
	TakeScreenshotSupported bool `json:"takeScreenshotSupported,omitempty"`

	// VoiceDelightImmersiveUiSupported: If IMMERSIVE_ACTIONS UiType is
	// supported by the client.
	VoiceDelightImmersiveUiSupported bool `json:"voiceDelightImmersiveUiSupported,omitempty"`

	// VoiceDelightStickersSupported: If Voice Delight Stickers are
	// supported by the client. In order to support Voice Delight stickers,
	// the client should know how to extract sticker_url from
	// VoiceDelightSystemInteractionSegment.
	VoiceDelightStickersSupported bool `json:"voiceDelightStickersSupported,omitempty"`

	// VoiceDelightSuggestionsSupported: If Voice Delight Suggestion Chips
	// are supported by the client. In order to support Voice Delight
	// Suggestion Chips, the client should know how to extract suggestions
	// form VoiceDelightSystemInteraction.ResourceSet.
	VoiceDelightSuggestionsSupported bool `json:"voiceDelightSuggestionsSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExpressUrlInSettingsResponseSupported") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ExpressUrlInSettingsResponseSupported") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiActionV2SupportedFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiActionV2SupportedFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAndroidIntentCapabilities: Capabilities related to
// Android intent support. These capabilities can apply to any device on
// the Android platform. Provides the list of Android package names that
// support a given Android intent.
type AssistantApiAndroidIntentCapabilities struct {
	AndroidIntentCapability []*AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability `json:"androidIntentCapability,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AndroidIntentCapability") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidIntentCapability")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAndroidIntentCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAndroidIntentCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability struct {
	// IntentActionName: The Action name of the Android Intent in standard
	// notation
	// (https://developer.android.com/reference/android/content/Intent#getAction()).
	IntentActionName string `json:"intentActionName,omitempty"`

	// PackageNames: The Android provider packages that support the intent,
	// e.g. "com.google.android.deskclock".
	PackageNames []string `json:"packageNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntentActionName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntentActionName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAppCapabilities: Used to describe app capabilities of the
// device installed apps reported to the server.
type AssistantApiAppCapabilities struct {
	// AllowlistedForMediaFulfillment: Indicates whether the provider is
	// compatible for media fulfillment on this surface. For example, Amazon
	// Music isn't compatible with the driving mode.
	AllowlistedForMediaFulfillment bool `json:"allowlistedForMediaFulfillment,omitempty"`

	// AppIntegrationsSettings: Currently unused. Will be used in the future
	// when integrating with incremental app capabilities.
	AppIntegrationsSettings *AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"`

	// DisabledSystemApp: This system app is disabled in settings.
	DisabledSystemApp bool `json:"disabledSystemApp,omitempty"`

	// Provider: The installed app of the provider.
	Provider *AssistantApiCoreTypesProvider `json:"provider,omitempty"`

	// RoutableToProviderCloud: This provider has integrated its cloud
	// backend with Google, and Google can route the user queries to the
	// provider's cloud.
	RoutableToProviderCloud bool `json:"routableToProviderCloud,omitempty"`

	// SearchableOnDevice: This provider has an app that supports on-device
	// search through the provider's own inventory.
	SearchableOnDevice bool `json:"searchableOnDevice,omitempty"`

	// SearchableOnServer: This provider has integrated its content with
	// Google, and Google has enabled to serve its content as a server-side
	// solution.
	SearchableOnServer bool `json:"searchableOnServer,omitempty"`

	// SupportsScreenlessInitiation: This provider has an app that supports
	// starting new media playback when there is no screen (e.g. by
	// integrating with the Bisto SDK).
	SupportsScreenlessInitiation bool `json:"supportsScreenlessInitiation,omitempty"`

	// WhitelistedForAnnotation: This provider is an app which should be
	// used for query annotations. This is useful for apps which may not be
	// already indexed by Google or are client specific.
	WhitelistedForAnnotation bool `json:"whitelistedForAnnotation,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowlistedForMediaFulfillment") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AllowlistedForMediaFulfillment") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAppCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAppCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAppCapabilitiesDelta: Used to describe the incremental
// change of app capabilities of the device installed apps reported to
// the server.
type AssistantApiAppCapabilitiesDelta struct {
	// AppIntegrationsSettings: Currently unused. Will be used in the future
	// when integrating with incremental app capabilities.
	AppIntegrationsSettings *AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"`

	// ProviderDelta: The installed app of the provider.
	ProviderDelta *AssistantApiCoreTypesProviderDelta `json:"providerDelta,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AppIntegrationsSettings") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppIntegrationsSettings")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAppCapabilitiesDelta) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAppCapabilitiesDelta
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiAppControlSupport struct {
	// Possible values:
	//   "DEFAULT_DISABLED" - Disable all app control capabilities.
	//   "ENABLED_WITH_SMART_DICTATION" - Enable app control SD-dependent
	// capabilities.
	Enabled string `json:"enabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAppControlSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAppControlSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAppIntegrationsSettings: Contains the app privacy bits
// used for App Integrations implicit request.
// (go/app-privacy-settings-for-implicit-requests)
type AssistantApiAppIntegrationsSettings struct {
	// HandleRequestsWithPredictedApps: Whether to enable Assistant to
	// handle request with predicted apps.
	//
	// Possible values:
	//   "UNSET"
	//   "FALSE"
	//   "TRUE"
	HandleRequestsWithPredictedApps string `json:"handleRequestsWithPredictedApps,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HandleRequestsWithPredictedApps") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "HandleRequestsWithPredictedApps") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAppIntegrationsSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAppIntegrationsSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiAssistantContinuedPresenceSupport struct {
	// PlateSupport: Indicates in what cases assistant continued presence
	// can be shown as a plate. This field is white-listed as being
	// PII-free. Please do not add PII here.
	//
	// Possible values:
	//   "DEFAULT_NO_PLATE" - Assistant continued presence cannot be shown.
	//   "SEARCH_ONLY" - Assistant continued presence can be shown only in
	// SearchNowActivity. See go/lockhart-acp.
	PlateSupport string `json:"plateSupport,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PlateSupport") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PlateSupport") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAssistantContinuedPresenceSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAssistantContinuedPresenceSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAudioInput: These capabilities represent the audio input
// features associated with the device. This includes what kind of audio
// input the device can handle, and what the privacy circumstances of
// that input are.
type AssistantApiAudioInput struct {
	// Possible values:
	//   "SURROUNDING_USERS" - Audio may be produced by or visible to any
	// users in the vicinity of the authenticated user -- e.g., a speaker.
	// NOTE that this is the default value since it's better to assume that
	// the user is in public when they're not than vice versa.
	//   "AUTHENTICATED_USER_ONLY" - Audio can be assumed to come from or go
	// to the authenticated user -- e.g., the mic or headphone on a phone or
	// headset.
	Environment string `json:"environment,omitempty"`

	// Possible values:
	//   "VOICE_QUALITY" - An audio device capable of handling audio at
	// fidelity high enough for voice use (TTS, speech recognition,
	// telephone) but insufficient for media playback.
	//   "MUSIC_QUALITY" - An audio device capable of handling high-fidelity
	// audio, suitable for use as a media device.
	Quality string `json:"quality,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Environment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Environment") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAudioInput) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAudioInput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiAudioOutput: These capabilities represent the audio
// output features associated with the device. This includes what kind
// of audio output the device can handle, and what the privacy
// circumstances of that output are.
type AssistantApiAudioOutput struct {
	// Possible values:
	//   "UNKNOWN" - The setting for always on speaker is unknown.
	//   "NOT_SUPPORTED" - Always on speaker is not supported.
	//   "SUPPORTED" - Always on speaker is supported.
	AlwaysOnSpeaker string `json:"alwaysOnSpeaker,omitempty"`

	// Possible values:
	//   "SURROUNDING_USERS" - Audio may be produced by or visible to any
	// users in the vicinity of the authenticated user -- e.g., a speaker.
	// NOTE that this is the default value since it's better to assume that
	// the user is in public when they're not than vice versa.
	//   "AUTHENTICATED_USER_ONLY" - Audio can be assumed to come from or go
	// to the authenticated user -- e.g., the mic or headphone on a phone or
	// headset.
	Environment string `json:"environment,omitempty"`

	// Possible values:
	//   "MEDIA_TTS_MIXABLE_UNKNOWN" - Unknown whether device supports
	// mixing TTS and device media.
	//   "MEDIA_TTS_MIXABLE_NOT_SUPPORTED" - Device cannot mix TTS and
	// device media.
	//   "MEDIA_TTS_MIXABLE_SUPPORTED" - Device can mix TTS and device
	// media.
	MediaTtsMixable string `json:"mediaTtsMixable,omitempty"`

	// Possible values:
	//   "VOICE_QUALITY" - An audio device capable of handling audio at
	// fidelity high enough for voice use (TTS, speech recognition,
	// telephone) but insufficient for media playback.
	//   "MUSIC_QUALITY" - An audio device capable of handling high-fidelity
	// audio, suitable for use as a media device.
	Quality string `json:"quality,omitempty"`

	VolumeProperties *AssistantApiVolumeProperties `json:"volumeProperties,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlwaysOnSpeaker") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlwaysOnSpeaker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiAudioOutput) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiAudioOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCallCapabilities: CallCapabilities supported by a
// surface. See go/call-capabilities. Next ID: 7
type AssistantApiCallCapabilities struct {
	// CallFormats: The supported call formats on the surface.
	//
	// Possible values:
	//   "UNSPECIFIED_FORMAT"
	//   "AUDIO"
	//   "VIDEO"
	//   "TEXT"
	CallFormats []string `json:"callFormats,omitempty"`

	// CallMediums: The supported call mediums on the surface.
	//
	// Possible values:
	//   "UNSPECIFIED_MEDIUM"
	//   "PSTN" - Public Switched Telephone Network.
	//   "VOIP" - Voice Over IP.
	//   "EMAIL"
	//   "ONLINE_CHAT"
	//   "TEXT_MESSAGING" - Super set of SMS and MMS
	//   "MESSAGE" - Super set of EMAIL, ONLINE_CHAT, TEXT_MESSAGING
	CallMediums []string `json:"callMediums,omitempty"`

	// CallOptions: The call options this surface can provide. For example,
	// SPEAKERPHONE is available on Android OPA while iOPA doesn't support
	// it yet.
	//
	// Possible values:
	//   "UNSPECIFIED_CALL_OPTION"
	//   "SPEAKERPHONE"
	//   "BLUETOOTH"
	//   "HEADSET"
	//   "MIC" - Optional to set since call.CONTROL_MIC client_op infers
	// this option.
	//   "CAMERA" - Optional to set since video_call.CONTROL_CAMERA
	// client_op
	CallOptions []string `json:"callOptions,omitempty"`

	// FallbackToTetheredDeviceAppCapabilities: If true, APP_ID queries
	// initiated by this device should fall back to execution on the
	// tethered device if it's available and if the primary device cannot
	// perform the action (e.g. due to the app not being installed).
	FallbackToTetheredDeviceAppCapabilities bool `json:"fallbackToTetheredDeviceAppCapabilities,omitempty"`

	// SupportedRecipientTypes: Should only be checked if nonempty.
	//
	// Possible values:
	//   "UNSPECIFIED_ENDPOINT"
	//   "PHONE_NUMBER"
	//   "EMAIL_ADDRESS"
	//   "APP_UNIQUE_ID"
	//   "EMERGENCY_PHONE_NUMBER"
	//   "VOICEMAIL"
	SupportedRecipientTypes []string `json:"supportedRecipientTypes,omitempty"`

	// SupportsDuoEmailEndpoint: Whether the surface supports Duo calling
	// email endpoints.
	SupportsDuoEmailEndpoint bool `json:"supportsDuoEmailEndpoint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallFormats") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallFormats") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCallCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCallCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCameraCapabilities: These capabilities represent the
// camera features associated with the device.
type AssistantApiCameraCapabilities struct {
	// FaceMatchCapable: Whether the device supports Face Match.
	FaceMatchCapable bool `json:"faceMatchCapable,omitempty"`

	// HasCamera: Whether the device has a camera.
	HasCamera bool `json:"hasCamera,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FaceMatchCapable") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FaceMatchCapable") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCameraCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCameraCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCameraReceiverCapabilities: These capabilities present
// the capability of the device running camera receiver apps.
type AssistantApiCameraReceiverCapabilities struct {
	// HasLimitedCameraStreamCapability: Whether the device has limited
	// camera stream capability. If true, check supported_camera_receivers
	// for detailed supported cameras.
	HasLimitedCameraStreamCapability bool `json:"hasLimitedCameraStreamCapability,omitempty"`

	// SupportedCameraReceivers: The camera receiver cast apps the device
	// supports. Only used if has_limited_camera_stream_capability is true.
	SupportedCameraReceivers []*AssistantApiCoreTypesCastAppInfo `json:"supportedCameraReceivers,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HasLimitedCameraStreamCapability") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "HasLimitedCameraStreamCapability") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCameraReceiverCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCameraReceiverCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCarAssistantCapabilities: Capabilities that are
// associated with Assistants on auto surfaces. This is different from
// other capabilities such as CarSettingsCapabilities,
// CloudCarCapabilities since they are specific to settings and 3P cloud
// information. All the auto/car Assistant specific capabilities should
// live here.
type AssistantApiCarAssistantCapabilities struct {
	// ShouldPuntMultiAssistantMode: Indicates whether the current Assistant
	// should provide a multi Assistant specific punt when there are
	// multiple Auto specific Google Assistants (Android Auto Projected
	// (AAP) and Android Auto Embedded (AAE)) in the same GAS enabled car.
	// This will be used by both AAP and AAE. Design doc: go/doubledash++
	ShouldPuntMultiAssistantMode bool `json:"shouldPuntMultiAssistantMode,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ShouldPuntMultiAssistantMode") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ShouldPuntMultiAssistantMode") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCarAssistantCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCarAssistantCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCarSettingsCapabilities: Capabilities that are associated
// with Assistant Settings on auto surfaces.
type AssistantApiCarSettingsCapabilities struct {
	// PlayWarmerWelcome: If true, it indicates that the auto surface client
	// should receive a warmer welcome TTS for signed-out users. For
	// signed-in user, we will rely on server side metadata.
	// go/aaae:preview-lang
	PlayWarmerWelcome bool `json:"playWarmerWelcome,omitempty"`

	// SupportsAddingCars: If true, it indicates that the client can be used
	// to add cars after account linking with the OEM.
	SupportsAddingCars bool `json:"supportsAddingCars,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PlayWarmerWelcome")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PlayWarmerWelcome") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCarSettingsCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCarSettingsCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiCastAssistantSettingLinkingResult struct {
	// CastLinkingStatus: Cast linking status for ATV surfaces. This is
	// derived from error messages returned from Cast Orchestration Server
	// and will be used for data profiling
	// only(go/katniss-settings-dashboard).
	//
	// Possible values:
	//   "NOT_SET" - LINT.IfChange
	//   "SUCCEED"
	//   "DEVICE_CONFLICT"
	//   "DEVICE_NAME_EMPTY"
	//   "CLIENT_ID_MISSING_TAG"
	//   "INVALID_DEVICE_ID"
	//   "DATA_SYNC_THROTTLED"
	//   "CREATE_ROBOT_ACCOUNT_FAILED"
	//   "UNAUTHORIZED_CLIENT"
	//   "OTHER_ERROR" -
	// LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.
	// proto)
	CastLinkingStatus string `json:"castLinkingStatus,omitempty"`

	// TruncatedErrorMsg: The error msg returned from COS, truncated in case
	// it's too large.
	TruncatedErrorMsg string `json:"truncatedErrorMsg,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CastLinkingStatus")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CastLinkingStatus") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCastAssistantSettingLinkingResult) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCastAssistantSettingLinkingResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCastCapabilities: These capabilities represent
// capabilities that have to do with casting that pertain to this
// device. Next ID: 9
type AssistantApiCastCapabilities struct {
	// CameraReceiverCapabilities: Whether the device has limited camera
	// stream capability and if yes, which receivers are supported.
	CameraReceiverCapabilities *AssistantApiCameraReceiverCapabilities `json:"cameraReceiverCapabilities,omitempty"`

	// CameraStreamSupportedProtocols: The supported protocols for camera
	// streaming. The value is used as string in
	// go/smarthome-internal-api#camera-stream, so using a string for this
	// field instead of an enum. Supported protocols: (align the definition
	// in go/smarthome-camerastream-trait) - "hls": HTTP Live Streaming -
	// "dash": Dynamic Adaptive Streaming over HTTP - "smooth_stream":
	// Smooth Streaming - "progressive_mp4": Progressive MP4 (will likely
	// only be used for Clips) - "webrtc": WebRTC (currently, only H.264 is
	// supported) - "nexustalk": Internal-only protocol used for Nest
	CameraStreamSupportedProtocols []string `json:"cameraStreamSupportedProtocols,omitempty"`

	// CanReceiveCast: True if we can cast things to this device.
	CanReceiveCast bool `json:"canReceiveCast,omitempty"`

	// DeviceId: Optional for primarily cast devices (e.g., Chirp,
	// Chromecast). For devices that are NOT primarily cast devices, but
	// having a cast receiver as secondary functionality, this field SHOULD
	// store the cast-device-id to be used to send remote casting commands
	// to the device. Example: Android TV, which supports both
	// Android-native actions as well as remote casting using its built-in
	// cast receiver. Android TV device id contains a DUSI id, which is not
	// a cast-device-id. When executing a cast command on the Android TV,
	// this field is used to route the cast command (through
	// CloudCastService) to the cast receiver on the device.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// DynamicGroupsSupported: Whether this device supports dynamic groups
	// or not. It implies if a Stream Control operation (transfer,
	// expansion, and contraction) could be applied on this device since
	// Stream Control is implemented as part of dynamic groups (ie,
	// adding/removing devices from playback)
	DynamicGroupsSupported bool `json:"dynamicGroupsSupported,omitempty"`

	// Possible values:
	//   "NONE"
	//   "STATIC_GROUP" - Static group is created by the user through UI. It
	// contains two or more devices.
	//   "DYNAMIC_GROUP" - Dynamic group is a temporary group created when
	// devices are added to / removed from a playback. It should be torn
	// down after the playback is done.
	//   "STEREO_PAIR" - Stereo pair is created by the user through UI. It
	// contains exact two devices, a left device and a right device.
	GroupType string `json:"groupType,omitempty"`

	// OverlayApplicationsSupported: Whether UI overlay applications are
	// supported on this device. It's used by Chromecast only.
	OverlayApplicationsSupported bool `json:"overlayApplicationsSupported,omitempty"`

	// YetiGamingSupported: Whether the device supports playing games
	// through Yeti. This is set by the cast device when the device is
	// updated: Chromecast updates -> Chromecast registers its capabilities
	// with CCS -> CCS passes the capabilities to the
	// AssistantSettingsService -> AssistantSettingsService stores the
	// device's capabilities. go/yeti-gaming-supported-cast-capability
	YetiGamingSupported bool `json:"yetiGamingSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CameraReceiverCapabilities") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CameraReceiverCapabilities") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCastCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCastCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty:
// The properties of the client op device.MODIFY_SETTING. This proto is
// stored in the SupportedClientOp proto.
type AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty struct {
	// SkipAndroidAndGsaVersionCheck: Additional specific setting
	// capabilities. This boolean is used to indicate whether we want to
	// skip the Android and GSA version check in
	// CheckSettingSchemaAndMaybeGetUris() from
	// assistant/vertical/device/fulfillment/utils/setting_utils.h. Consider
	// setting this field to true if your device is neither Android or GSA
	// (especially when the UserAgent string of your device's TaskRequest
	// will not contain a valid/up-to-date Android/GSA version).
	SkipAndroidAndGsaVersionCheck bool `json:"skipAndroidAndGsaVersionCheck,omitempty"`

	// SupportedSettings: Uses DeviceSetting enum which corresponds to
	// setting_id. This indicates which specific settings are supported by
	// client. An empty list implies all settings are supported.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "ABOUT_ME"
	//   "ACCESSIBILITY"
	//   "ACTIVE_EDGE"
	//   "ACTIVE_EDGE_SENSITIVITY"
	//   "ADAPTIVE_BATTERY"
	//   "ADAPTIVE_BRIGHTNESS"
	//   "ADAPTIVE_CHARGING"
	//   "ADAPTIVE_CONNECTIVITY"
	//   "ADAPTIVE_SOUND"
	//   "ADD_ACCOUNT"
	//   "ADD_BLUETOOTH_DEVICE" - Pair a bluetooth device.
	//   "ADD_DEVICE" - Link a device to Assistant/Google Home.
	//   "ADD_FINGERPRINT"
	//   "ADS_TRACKING"
	//   "AIRPLANE_MODE"
	//   "ALARM_VOLUME"
	//   "ALARM_SOUND" - Deprecated, use DEFAULT_ALARM_SOUND instead.
	//   "ALLOW_MULTIPLE_USERS"
	//   "AMBIENT_DISPLAY_ALWAYS_ON"
	//   "AMBIENT_DISPLAY_NEW_NOTIFICATION"
	//   "ANDROID_AUTO"
	//   "ANDROID_VERSION"
	//   "APP_BATTERY_USAGE"
	//   "APP_DATA_USAGE"
	//   "APP_DETAILS"
	//   "APP_SHORTCUT"
	//   "APPS_NOTIFICATIONS"
	//   "APPS_STORAGE"
	//   "ASSISTANT_ACCOUNT"
	//   "ASSISTANT_FACE_MATCH"
	//   "ASSISTANT_LANGUAGE"
	//   "ASSISTANT_VOICE_MATCH"
	//   "AUTO_ROTATE"
	//   "AUTO_ROTATE_FACE_DETECTION"
	//   "BACKUP"
	//   "BATTERY_LEVEL"
	//   "BATTERY_LOW"
	//   "BATTERY_PERCENTAGE"
	//   "BATTERY_PRESENT"
	//   "BATTERY_SAVER"
	//   "BATTERY_SAVER_SCHEDULE"
	//   "BATTERY_SHARE"
	//   "BATTERY_USAGE"
	//   "BIOMETRIC"
	//   "BLUETOOTH" - Bluetooth on/off toggle
	//   "BLUETOOTH_NAME"
	//   "BLUETOOTH_ADDRESS"
	//   "BLUETOOTH_SETTINGS" - Bluetooth preferences page
	//   "BRIGHTNESS_LEVEL"
	//   "BUBBLES"
	//   "CALL_VOLUME"
	//   "CAMERA_DOUBLE_TWIST"
	//   "CAST"
	//   "CAR_CRASH_DETECTION"
	//   "COLOR_INVERSION"
	//   "COLOR_CORRECTION"
	//   "CONVERSATIONS"
	//   "CHARGING_SOUNDS_AND_VIBRATION"
	//   "CHARGING_STATE"
	//   "CONNECTED_DEVICES"
	//   "CONTACTLESS_PAYMENTS"
	//   "DATA_ROAMING"
	//   "DATA_SAVER"
	//   "DATA_USAGE" - Cellular carrier (non-wifi) data usage statistics &
	// settings for the device.
	//   "DATA_LIMIT" - Toggle to enable data use limit
	//   "DATA_LIMIT_LEVEL" - The mobile data use after which mobile data is
	// automatically disabled.
	//   "DATA_WARNING" - Toggle to enable data use warning
	//   "DATA_WARNING_LEVEL" - The mobile data use after which a warning is
	// shown to the user.
	//   "DEFAULT_ALARM_SOUND"
	//   "DEFAULT_NOTIFICATION_SOUND"
	//   "DEFAULT_APPS"
	//   "DEVELOPER_OPTIONS"
	//   "DEVICE_ASSISTANT_APP" - Device's voice assistant app selection.
	//   "DEVICE_NAME"
	//   "DISPLAY_OVER_OTHER_APPS"
	//   "DISPLAY_SIZE"
	//   "DO_NOT_DISTURB"
	//   "DO_NOT_DISTURB_MESSAGES"
	//   "DO_NOT_DISTURB_CALLS"
	//   "DO_NOT_DISTURB_ALARMS"
	//   "DO_NOT_DISTURB_SCHEDULES"
	//   "DOUBLE_TAP_CHECK_PHONE"
	//   "DRIVING_MODE" - Special mode for using device hands-free while
	// driving.
	//   "EARTHQUAKE_ALERTS"
	//   "EMERGENCY" - Main emergency settings
	//   "EMERGENCY_ALERTS"
	//   "EMERGENCY_CONTACTS"
	//   "EMERGENCY_INFORMATION"
	//   "ETHERNET_TETHERING"
	//   "EXTRA_DIM" - Makes screen extra dark.
	//   "EXTREME_BATTERY_SAVER"
	//   "FACTORY_RESET"
	//   "FIND_MY_DEVICE"
	//   "FLASHLIGHT"
	//   "FOCUS_MODE"
	//   "FONT_SIZE"
	//   "FREE_UP_SPACE"
	//   "FINGERPRINT_MANAGER"
	//   "GESTURES" - A page for device gestures
	//   "HAPTIC_FEEDBACK_VIBRATION" - Deprecated, use VIBRATION instead.
	//   "HARD_KEYBOARD"
	//   "HEADS_UP"
	//   "HIGH_REFRESH_RATE"
	//   "HOT_SPOT" - Toggle for internet sharing via WiFi.
	//   "HOTSPOT_TETHERING" - Common settings page for internet sharing via
	// various means.
	//   "HOT_WORD"
	//   "IP_ADDRESS" - Show my IP address
	//   "IMPROVE_LOCATION_ACCURACY"
	//   "JUMP_TO_CAMERA"
	//   "KEYBOARD_SHORTCUTS"
	//   "LIFT_CHECK_PHONE"
	//   "LIVE_TRANSLATE"
	//   "LOCATION"
	//   "LOCATION_HISTORY"
	//   "LOCATION_BLUETOOTH_SCANNING"
	//   "LOCATION_WIFI_SCANNING"
	//   "LOCK_SCREEN" - Settings page for what is visible on the lock
	// screen.
	//   "LOCK_SCREEN_DEVICE_CONTROLS"
	//   "LOCK_SCREEN_WALLET"
	//   "MAC_ADDRESS" - Show my MAC address
	//   "MAGNIFICATION"
	//   "MAGNIFY_BUTTON"
	//   "MAGNIFY_TRIPLE_TAP"
	//   "MANIFY_BUTTON"
	//   "MANIFY_TRIPLE_TAP"
	//   "MEDIA"
	//   "MEDIA_VOLUME"
	//   "MICROPHONE_ACCESS" - Microphone Access is a toggleable setting
	// that controls if Microphone usage is allowed at the system level or
	// not. It is not the per-App Microphone permission page.
	// https://screenshot.googleplex.com/4hrskftPSur7hHh
	//   "MOBILE" - Wireless internet settings, including WiFi, Cellular,
	// etc.
	//   "MOBILE_DATA" - Setting to enable/disable cellular data connection
	// being used on the device.
	// https://screenshot.googleplex.com/jMSRtW3Aq4o
	//   "MUSIC"
	//   "MUTE_MODE"
	//   "NETWORK"
	//   "NETWORK_RESET" - Restarts the device network stack, no settings
	// are deleted.
	//   "NFC"
	//   "NIGHT_LIGHT_INTENSITY"
	//   "NIGHT_LIGHT_SWITCH"
	//   "NIGHT_MODE"
	//   "NOTIFICATION_BADGE"
	//   "NOTIFICATION_SOUND" - Deprecated, use DEFAULT_NOTIFICATION_SOUND
	// instead.
	//   "NOTIFICATION_ON_SCREEN"
	//   "NOTIFICATION_HISTORY"
	//   "NOTIFY_FOR_PUBLIC_NETWORKS"
	//   "ONEHANDED_MODE"
	//   "OS_VERSION"
	//   "PASSWORD" - Password manager
	//   "PERMISSION_MANAGER" - Shows permissions and allows add/remove
	// allowed apps.
	//   "PERMISSION_USAGE" - Shows usage of each permission by app.
	//   "PERSONALIZATION"
	//   "PRINTING"
	//   "PHONE_NUMBER"
	//   "PICTURE_IN_PICTURE"
	//   "POINTER_SPEED"
	//   "POWER_MENU"
	//   "REMINDERS"
	//   "REQUIRE_DEVICE_UNLOCK_FOR_NFC"
	//   "RINGTONE"
	//   "RING_VOLUME"
	//   "NEARBY_DEVICES_SCANNING"
	//   "NEARBY_SHARE"
	//   "SCREEN_LOCKING_SOUND"
	//   "SCREEN_MAGNIFICATION"
	//   "SCREEN_TIMEOUT"
	//   "SCREEN_LOCK" - Settings page for screen locking security methods.
	//   "SCREEN_SAVER"
	//   "SELECT_TO_SPEAK"
	//   "SET_TIME_AUTOMATICALLY"
	//   "SET_TIME_ZONE_AUTOMATICALLY"
	//   "SETTINGS"
	//   "SIM" - Currently active/primary SIM.
	//   "SIM_MANAGER"
	//   "SPEECH_RATE"
	//   "STORAGE_USAGE"
	//   "SWIPE_FOR_NOTIFICATION"
	//   "SWITCH_ACCESS"
	//   "SYSTEM_UPDATE" - Deprecated, use SYSTEM_UPDATES instead.
	//   "SYSTEM_UPDATES"
	//   "SYSTEM_NAVIGATION" - Settings page for configuring how navigation
	// between apps is done. Specifically android has choice between Buttons
	// of Gestures mode.
	//   "SYSTEM_NAVIGATION_GESTURES"
	//   "SYSTEM_NAVIGATION_BUTTONS"
	//   "TALKBACK_PASSWORDS"
	//   "TEXT_TO_SPEECH"
	//   "TIME_ZONE"
	//   "UNUSED_APPS"
	//   "USB"
	//   "USB_TETHERING"
	//   "VERBOSE_TTS"
	//   "VIBRATE" - Deprecated, use VIBRATION instead.
	//   "VIBRATION" - Vibration master toggle - controls all vibration
	// functions. Corresponds to "Vibration & haptics" toggle in the Android
	// settings app.
	//   "VIBRATION_MODE" - Controls whether the ringer mode will be silent
	// or will vibrate. Details in
	// https://developer.android.com/reference/android/media/AudioManager#RINGER_MODE_VIBRATE
	// Different from VIBRATION from above.
	//   "VOICE"
	//   "VOLUME_LEVEL"
	//   "WAKE_SCREEN_FOR_NOTIFICATIONS"
	//   "WALLPAPERS"
	//   "WEBVIEW"
	//   "WIFI"
	//   "WIFI_ADD_NETWORK"
	//   "WIFI_ADD_NETWORK_QR_CODE"
	//   "WIFI_CALLING"
	//   "WIFI_HOTSPOT" - Duplicate, use HOT_SPOT instead
	//   "ABOUT_PHONE" - Begin of NGA proto consistence
	//   "ACCOUNTS"
	//   "APPLICATION"
	//   "ASSISTANT"
	//   "AUDIO"
	//   "BATTERY"
	//   "BELL_SCHEDULE"
	//   "CONTINUED_CONVERSATION"
	//   "DATE_TIME"
	//   "DARK_THEME"
	//   "DEVICE_INFO"
	//   "DICTIONARY"
	//   "DIGITAL_WELLBEING"
	//   "DISPLAY"
	//   "LANGUAGE"
	//   "NIGHT_LIGHT" - Duplicate, use NIGHT_MODE instead
	//   "NOTIFICATION"
	//   "NOTIFICATION_VOLUME"
	//   "PHONE_RINGTONE"
	//   "PRIVACY"
	//   "ROAMING"
	//   "ROUTINES"
	//   "SEARCH"
	//   "SECURITY"
	//   "SOUND"
	//   "SPELL_CHECKER"
	//   "SYSTEM"
	//   "STORAGE"
	//   "VPN" - End of NGA proto consistence
	//   "AUTOCLICK" - Chrome OS specific accessibility settings
	//   "CARET_HIGHLIGHT"
	//   "CHROMEVOX"
	//   "CURSOR_HIGHLIGHT"
	//   "DOCKED_MAGNIFIER"
	//   "FOCUS_HIGHLIGHT"
	//   "FULLSCREEN_MAGNIFIER"
	//   "HIGH_CONTRAST_MODE"
	//   "LARGE_CURSOR"
	//   "MONO_AUDIO"
	//   "STICKY_KEYS"
	//   "TAP_DRAGGING"
	//   "VIRTUAL_KEYBOARD" - End of Chrome OS specific accessibility
	// settings
	//   "WEARABLE_AMBIENT" - Wearable device settings
	//   "WEARABLE_NOISE_CANCELLATION"
	//   "WEARABLE_TOUCH_CONTROLS"
	//   "RAISE_TO_TALK"
	//   "BEDTIME_MODE"
	//   "THEATER_MODE"
	//   "TOUCH_LOCK" - End of Wearable device settings
	SupportedSettings []string `json:"supportedSettings,omitempty"`

	// SupportsDoNotDisturbWithDuration: Additional specific setting
	// capabilities. This boolean is used to indicate if do not disturb with
	// duration is supported through device.MODIFY_SETTING clientop on a
	// client or not.
	SupportsDoNotDisturbWithDuration bool `json:"supportsDoNotDisturbWithDuration,omitempty"`

	// SupportsMuteUnmute: Additional specific setting capabilities. This
	// boolean is used to indicate if new unmute logic is enabled on a
	// client or not.
	SupportsMuteUnmute bool `json:"supportsMuteUnmute,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SkipAndroidAndGsaVersionCheck") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SkipAndroidAndGsaVersionCheck") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiClientOpPropertiesProviderOpenClientOpProperty: The
// properties of the provider.OPEN ClientOp. This proto is stored in the
// SupportedClientOp proto with the key provider.OPEN.
type AssistantApiClientOpPropertiesProviderOpenClientOpProperty struct {
	// KeepsConversationAliveAfterOpeningApp: Whether conversation is kept
	// alive after opening the app. See go/keep-opa-conversation-alive for
	// details.
	KeepsConversationAliveAfterOpeningApp bool `json:"keepsConversationAliveAfterOpeningApp,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "KeepsConversationAliveAfterOpeningApp") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "KeepsConversationAliveAfterOpeningApp") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiClientOpPropertiesProviderOpenClientOpProperty) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiClientOpPropertiesProviderOpenClientOpProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiClockCapabilities: Used to describe clock capabilities of
// the device (for example, capabilities related to maximum number of
// supported alarms and timers that can be created on the device).
// Fields may be populated by clients or be backfilled by SAL (in case
// of Timon, for example).
type AssistantApiClockCapabilities struct {
	// MaxSupportedAlarms: Maximum number of alarms that can be created on
	// the client.
	MaxSupportedAlarms int64 `json:"maxSupportedAlarms,omitempty"`

	// MaxSupportedExtendedTimerDuration: Maximum extended timer duration
	// supported by the client. The extended timer duration is the total
	// start-to-finish duration after an AddTimeToTimer operation. E.g. if a
	// user sets a timer for 30 minutes, and later adds 10 minutes, the
	// extended duration is 40 minutes.
	MaxSupportedExtendedTimerDuration *AssistantApiDuration `json:"maxSupportedExtendedTimerDuration,omitempty"`

	// MaxSupportedTimerDuration: Maximum duration of timers that can be
	// created on the client.
	MaxSupportedTimerDuration *AssistantApiDuration `json:"maxSupportedTimerDuration,omitempty"`

	// MaxSupportedTimers: Maximum number of timers that can be created on
	// the client.
	MaxSupportedTimers int64 `json:"maxSupportedTimers,omitempty"`

	// PreferredStopwatchProvider: The preferred provider to use for
	// stopwatch related functionality.
	PreferredStopwatchProvider *AssistantApiCoreTypesProvider `json:"preferredStopwatchProvider,omitempty"`

	// RestrictAlarmsToNext24h: Whether the client restricts alarms to ring
	// within the next 24 hours.
	RestrictAlarmsToNext24h bool `json:"restrictAlarmsToNext24h,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MaxSupportedAlarms")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MaxSupportedAlarms") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiClockCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiClockCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCommunicationUiCapabilities: UI capabilities for the
// surfaces rendering Comms features. See
// go/rohan-comms-fluid-actions-customization.
type AssistantApiCommunicationUiCapabilities struct {
	// Possible values:
	//   "DEFAULT"
	//   "SIMPLIFIED" - Fluid actions output optimized for small devices,
	// with no on-device management of conversation state available.
	FluidActionsUiType string `json:"fluidActionsUiType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FluidActionsUiType")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FluidActionsUiType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCommunicationUiCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCommunicationUiCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiContactLookupCapabilities struct {
	// FallbackToTetheredDevice: If true, contact.LOOKUP should be routed to
	// the tethered device (if present) if the tethered device supports
	// contact.LOOKUP and the primary device does not.
	FallbackToTetheredDevice bool `json:"fallbackToTetheredDevice,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "FallbackToTetheredDevice") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FallbackToTetheredDevice")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiContactLookupCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiContactLookupCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesAndroidAppInfo: The android app information of
// the provider. Like, Spotify. Next ID: 16 LINT.IfChange
type AssistantApiCoreTypesAndroidAppInfo struct {
	AccountType string `json:"accountType,omitempty"`

	// AndroidIntent: Intent associated with the app. We include intents
	// here as different versions of the same app may support different
	// intents. In those cases, the package_name is not enough to identify
	// the app and we should use the combination of package_name and
	// android_intent. This field might contain sensitive data, if
	// represents ClientOp with encapsulated PII such as user query.
	AndroidIntent string `json:"androidIntent,omitempty"`

	// AppUniqueId: Store the app unique id endpoint. This will be passed
	// over to app to fulfill the action.
	AppUniqueId string `json:"appUniqueId,omitempty"`

	// AppVersion: The android app version. Deprecated because
	// https://developer.android.com/reference/android/content/pm/PackageInfo.html#getLongVersionCode
	AppVersion int64 `json:"appVersion,omitempty"`

	// DataMimetype: data_mimetype and account_type are the what AGSA uses
	// to filter which contacts support this Android app in ContactProvider.
	DataMimetype string `json:"dataMimetype,omitempty"`

	// IsBroadcastIntent: If true, client should broadcast the intent
	// instead of open the intent.
	IsBroadcastIntent bool `json:"isBroadcastIntent,omitempty"`

	// IsDefault: App is the default app for it's core functionality. For
	// example, it will be true for Android messages if it is the default
	// app to send and receive SMS on the phone.
	IsDefault bool `json:"isDefault,omitempty"`

	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// LongVersionCode: The long android app version.
	LongVersionCode int64 `json:"longVersionCode,omitempty,string"`

	// Mimetype: Store mimetype of this endpoint. We will use this as the
	// differentiator for Assistant to know whether to use the RawContact
	// for messaging, call or video call. For example, send message mimetype
	// for whatsapp: "vnd.android.cursor.item/vnd.com.whatsapp.profile"
	// voice call mimetype for whatsapp:
	// "vnd.android.cursor.item/vnd.com.whatsapp.voip.call"
	Mimetype string `json:"mimetype,omitempty"`

	// PackageName: The android app package of the provider, like
	// "com.spotify.music".
	PackageName string `json:"packageName,omitempty"`

	// ProviderType: The OemProviderType is specific for OEM system Android
	// apps. For example, in Auto Embedded, the OEM will have a system
	// Radio/Media app. The system app’s capabilities/core functionalities
	// are captured here. For physical media sources, the OEM may decide to
	// implement one media app (thus, one package name) that handles
	// multiple physical media sources. For these cases, each physical media
	// source will be sent as different providers even though the package
	// name is the same.
	//
	// Possible values:
	//   "UNKNOWN_OEM_PROVIDER_TYPE"
	//   "RADIO_PROVIDER_TYPE" - Refers to an app that handles AM/FM Radio
	// via a physical radio tuner in the device. See
	// go/radio-assistant-for-auto.
	//   "SXM_RADIO_PROVIDER_TYPE" - Refers to an app that handles Satellite
	// (SiriusXM) Radio via a physical Satellite tuner in the device. See
	// go/sxm-on-gas.
	ProviderType string `json:"providerType,omitempty"`

	// ShortcutId: Id of the app's Android shortcut to be launched by
	// Assistant. The client is expected to use the Android LauncherApps API
	// to execute this shortcut which in turn will open the app. For
	// example, Whatsapp may create an Android shortcut for a frequently
	// messaged contact with an id "contact_123". This field will contain
	// that id and the client can execute it to open up the chat with that
	// particular contact. If this field is set, the package_name field must
	// also be set since both will be used by the LauncherApps API for
	// execution. If this field is set, the intent related fields will be
	// ignored and not used as a fallback. Design:
	// go/shortcut-id-in-provider-open-clientop This field should only be
	// set for devices with Android API level >= 25 (since that is the
	// version from which the LauncherApps startShortcut API is available)
	ShortcutId string `json:"shortcutId,omitempty"`

	// TargetClass: The fully qualified target class name of the provider,
	// like "com.example.myapp.GetOrderService".
	TargetClass string `json:"targetClass,omitempty"`

	// VersionName: The android app version name, like "4.1.091.05.40d",
	// "11.2.7.21.alpha". Android Docs:
	// https://developer.android.com/reference/android/content/pm/PackageInfo#versionName
	VersionName string `json:"versionName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesAndroidAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesAndroidAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesAndroidAppInfoDelta: The change of
// AndroidAppInfo, e.g. app installation or deletion for incremental
// delta app info upload.
type AssistantApiCoreTypesAndroidAppInfoDelta struct {
	// AndroidAppInfo: The android app information of the provider. Like,
	// Spotify.
	AndroidAppInfo *AssistantApiCoreTypesAndroidAppInfo `json:"androidAppInfo,omitempty"`

	// LastUpdateTimestamp: The client-side timestamp in millis when the app
	// is last updated, installed or deleted.
	LastUpdateTimestamp string `json:"lastUpdateTimestamp,omitempty"`

	// UpdateType: App is installed or deleted.
	//
	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "IS_INSTALLED"
	//   "IS_DELETED"
	UpdateType string `json:"updateType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidAppInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidAppInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesAndroidAppInfoDelta) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesAndroidAppInfoDelta
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCalendarEvent: This proto contains the
// information of a calendar event, including title, start time, end
// time, etc. IMPORTANT: The definition of CalendarEvent proto is being
// moved to
// //assistant/api/core_types/governed/calendar_event_type.proto. All
// existing references will be updated to point to the new location. If
// you are adding a reference, use the new one instead.
// LINT.IfChange(CalendarEvent) NEXT_ID: 26
type AssistantApiCoreTypesCalendarEvent struct {
	// Attendees: Attendees invited to the event, usually includes also the
	// organizer.
	Attendees []*AssistantApiCoreTypesCalendarEventAttendee `json:"attendees,omitempty"`

	// BackgroundColor: The background color of the event, in RGB format.
	BackgroundColor int64 `json:"backgroundColor,omitempty"`

	// CalendarId: Optional calendar containing the event.
	CalendarId string `json:"calendarId,omitempty"`

	// Creator: The person who created this event.
	Creator *AssistantApiCoreTypesCalendarEventAttendee `json:"creator,omitempty"`

	// Description: Optional description of the event (plain text).
	Description string `json:"description,omitempty"`

	// End: The end time of the event. Start and end time must either both
	// be date or both be datetime. End is exclusive, ie. the first day /
	// first second when the event is over.
	End *AssistantApiDateTime `json:"end,omitempty"`

	// EventId: Optional event id provided by assistant server. Needs to be
	// unique, at least on a per-user and calendar level, ideally globally
	// unique. If none is given, the server will assign an id.
	EventId string `json:"eventId,omitempty"`

	// FlairName: The flair name, calculated according to the event title
	// (go/as-cal-flair). With the flair name, background images can be got
	// from gstatic (go/scs):
	// https://ssl.gstatic.com/tmly/f8944938hffheth4ew890ht4i8/flairs/
	FlairName string `json:"flairName,omitempty"`

	// ForegroundColor: The foreground color of the event, in RGB format.
	ForegroundColor int64 `json:"foregroundColor,omitempty"`

	// GuestsCanInviteOthers: Whether the guests can invite other guests.
	GuestsCanInviteOthers bool `json:"guestsCanInviteOthers,omitempty"`

	// GuestsCanModify: Whether the guests can modify the event.
	GuestsCanModify bool `json:"guestsCanModify,omitempty"`

	// GuestsCanSeeGuests: Whether the guests of the event can be seen. If
	// false, the user is reported as the only attendee to the event, even
	// though there may be more attendees.
	GuestsCanSeeGuests bool `json:"guestsCanSeeGuests,omitempty"`

	// HabitId: Optional id of the Habit (Calendar Goal) this event is
	// linked to
	HabitId string `json:"habitId,omitempty"`

	// HabitStatus: Optional status for this habit event instance.
	//
	// Possible values:
	//   "UNKNOWN_STATUS"
	//   "ACTIVE"
	//   "DEFERRAL_REQUESTED"
	//   "COMPLETE"
	//   "UNDEFERRABLE"
	HabitStatus string `json:"habitStatus,omitempty"`

	// HtmlLink: Absolute link to this event in the Calendar web UI.
	HtmlLink string `json:"htmlLink,omitempty"`

	// Location: Optional location of the event (plain text).
	Location string `json:"location,omitempty"`

	MeetingContacts []*AssistantApiCoreTypesCalendarEventMeetingContact `json:"meetingContacts,omitempty"`

	// Organizer: The organizer of this event.
	Organizer *AssistantApiCoreTypesCalendarEventAttendee `json:"organizer,omitempty"`

	// OtherAttendeesExcluded: Whether not all attendees are included in the
	// attendee list. This is set when the attendees list has been truncated
	// (e.g., when the number of attendees is beyond the maxAttendees
	// limitation).
	OtherAttendeesExcluded bool `json:"otherAttendeesExcluded,omitempty"`

	// ParticipationResponse: The user's response (the owner of this copy of
	// the event) to this event.
	//
	// Possible values:
	//   "RESPONSE_STATUS_UNSPECIFIED"
	//   "NEEDS_ACTION"
	//   "DECLINED"
	//   "TENTATIVE"
	//   "ACCEPTED"
	ParticipationResponse string `json:"participationResponse,omitempty"`

	// RecurringEventId: If this is an instance of a recurring event,
	// recurring_event_id identifies the recurring series as a whole.
	RecurringEventId string `json:"recurringEventId,omitempty"`

	// Rooms: Meeting rooms associated to this event.
	Rooms []*AssistantApiCoreTypesCalendarEventRoom `json:"rooms,omitempty"`

	// Start: The start time of the event. This event is an all-day event if
	// start has no time_of_day.
	Start *AssistantApiDateTime `json:"start,omitempty"`

	// Summary: The title of the event.
	Summary string `json:"summary,omitempty"`

	// Visibility: Optional visibility of the event.
	//
	// Possible values:
	//   "DEFAULT"
	//   "PUBLIC"
	//   "PRIVATE"
	//   "CONFIDENTIAL"
	//   "SECRET"
	//   "SHADOW"
	//   "UNKNOWN" - When we receive a value outside of this enum it will be
	// replaced with this UNKNOWN field. When trying to send UNKNOWN it will
	// be silently converted to DEFAULT.
	Visibility string `json:"visibility,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attendees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attendees") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCalendarEvent) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCalendarEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCalendarEventAttendee: Next id: 8
type AssistantApiCoreTypesCalendarEventAttendee struct {
	// DisplayName: Display name, present only if available.
	DisplayName string `json:"displayName,omitempty"`

	// Email: Email address of the attendee (calendar), for regular events.
	// For +Events, this field is not populated, instead "id" is used.
	Email string `json:"email,omitempty"`

	// GivenName: Given (first) name, present only if available. This is
	// used for generating meeting titles as given name is preferred over
	// display (full) name (ie: "Jeff : Sundar" is better than "Jeff Dean :
	// Sundar Pichai").
	GivenName string `json:"givenName,omitempty"`

	// Id: Profile ID of the principal, for +Events. For regular events,
	// this field is not populated, instead "email" is used.
	Id string `json:"id,omitempty"`

	// Organizer: Is this the organizer?
	Organizer bool `json:"organizer,omitempty"`

	// ResponseStatus: Attendees response status.
	//
	// Possible values:
	//   "RESPONSE_STATUS_UNSPECIFIED"
	//   "NEEDS_ACTION"
	//   "DECLINED"
	//   "TENTATIVE"
	//   "ACCEPTED"
	ResponseStatus string `json:"responseStatus,omitempty"`

	// Self: Is this the owner of this copy of the event?
	Self bool `json:"self,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCalendarEventAttendee) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCalendarEventAttendee
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCalendarEventMeetingContact: Next id: 10
type AssistantApiCoreTypesCalendarEventMeetingContact struct {
	// ConferenceId: ID that corresponds to in ConferenceData.conference_id
	// in calendar.common.ConferenceData proto. For Meet, this is the
	// identifier used to join a meeting via URL.
	ConferenceId string `json:"conferenceId,omitempty"`

	// Possible values:
	//   "NUMBER_CLASS_UNSPECIFIED" - No number class has been specified.
	//   "LOW_COST" - The number has a low cost to receive calls on.
	//   "HIGH_COST" - The number has a high cost to receive calls on.
	//   "LEGACY" - Class for legacy numbers.
	DialInNumberClasses []string `json:"dialInNumberClasses,omitempty"`

	// PhoneNumberUri: Default meeting phone number, for example:
	// "tel:+1-475-777-1840"
	PhoneNumberUri string `json:"phoneNumberUri,omitempty"`

	// PinNumber: A PIN that the participant will need to input after
	// dialing in the conference.
	PinNumber string `json:"pinNumber,omitempty"`

	// Provider: Provider info for the meeting.
	Provider *AssistantApiCoreTypesProvider `json:"provider,omitempty"`

	// RegionCode: The region code for the default meeting phone number
	RegionCode string `json:"regionCode,omitempty"`

	// Possible values:
	//   "SOURCE_UNSPECIFIED" - The source is unknown.
	//   "STRUCTURED_DATA" - The conference information was retrieved from
	// structured fields.
	//   "UNSTRUCTURED_DATA" - The conference information was parsed and
	// extracted from unstructured fields (e.g. event description).
	Source string `json:"source,omitempty"`

	// UniversalPinNumber: The universal meeting PIN number for phone
	// numbers in all available countries
	UniversalPinNumber string `json:"universalPinNumber,omitempty"`

	// Url: URL that can be used to join the meeting.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConferenceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConferenceId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCalendarEventMeetingContact) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCalendarEventMeetingContact
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCalendarEventRoom: A room that is available for
// a potential meeting or has been booked for a scheduled meeting. Next
// id: 4
type AssistantApiCoreTypesCalendarEventRoom struct {
	// Email: Room email that identifies the room and is used to book it.
	Email string `json:"email,omitempty"`

	// LocationDetails: Additional room details. Read-only, populated on
	// request.
	LocationDetails *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails `json:"locationDetails,omitempty"`

	// Name: Room name (ex: "MTV-PR55-5-A-Shadow 5K0 (13) GVC (No external
	// guests)").
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCalendarEventRoom) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCalendarEventRoom
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails: Room
// location details. Read-only, populated on request. Next id: 8
type AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails struct {
	// Building: Building where the room is (ex: "PR55").
	Building string `json:"building,omitempty"`

	// City: City where the room is (ex: "MTV").
	City string `json:"city,omitempty"`

	// Floor: Floor where the room is (ex: "5").
	Floor string `json:"floor,omitempty"`

	// Latitude: The latitude in degrees.
	Latitude float64 `json:"latitude,omitempty"`

	// Longitude: The longitude in degrees.
	Longitude float64 `json:"longitude,omitempty"`

	// Section: Section in the floor (ex: "A").
	Section string `json:"section,omitempty"`

	// SimpleName: Room name (ex: "Shadow 5K0").
	SimpleName string `json:"simpleName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Building") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Building") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails
	var s1 struct {
		Latitude  gensupport.JSONFloat64 `json:"latitude"`
		Longitude gensupport.JSONFloat64 `json:"longitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	return nil
}

// AssistantApiCoreTypesCalendarEventWrapper: This empty type allows us
// to publish sensitive calendar events to go/attentional-entities,
// while maintaining BUILD visibility protection for their contents. The
// BUILD-visibility-protected extension to this message is defined at
// http://google3/assistant/verticals/calendar/proto/multi_account_calendar_event.proto
// IMPORTANT: The definition of CalendarEventWrapper proto is being
// moved to
// //assistant/api/core_types/governed/calendar_event_type.proto. All
// existing references will be updated to point to the new location. If
// you are adding a reference, use the new one instead.
type AssistantApiCoreTypesCalendarEventWrapper struct {
}

// AssistantApiCoreTypesCastAppInfo: The cast app information of the
// provider.
type AssistantApiCoreTypesCastAppInfo struct {
	// CastAppId: The cast app id. |cast_app_id| is the ID of the cast app
	// used on the current device and |content_app_id| is the ID of the app
	// that provides the actual content. For example, in a group playback,
	// on a follower device, the |cast_app_id| is the follower cast app ID
	// and the |content_app_id| is the leader cast app ID.
	CastAppId string `json:"castAppId,omitempty"`

	// ContentAppId: The id of the cast app that provides the content in a
	// group. The field will always be filled. In the case of a group
	// playback and the current device is a follower, the |cast_app_id| has
	// the ID of the follower app, and |content_app_id| has ID of the actual
	// content app. In all other cases, |content_app_id| and |cast_app_id|
	// will be the same.
	ContentAppId string `json:"contentAppId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CastAppId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CastAppId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCastAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCastAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesChromeOsAppInfo: The ChromeOS app information of
// the provider. Next ID: 3
type AssistantApiCoreTypesChromeOsAppInfo struct {
	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// PackageName: Unique package name that identifies a ChromeOS app of
	// the provider.
	PackageName string `json:"packageName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalizedAppName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalizedAppName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesChromeOsAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesChromeOsAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCloudProviderInfo: The third party provider
// information.
type AssistantApiCoreTypesCloudProviderInfo struct {
	AgentStyle *AssistantApiCoreTypesCloudProviderInfoAgentStyle `json:"agentStyle,omitempty"`

	// DirectoryUrl: URL to a directory page about the third party agent in
	// Assistant HQ. This is a universal (https) URL that may be handled
	// natively by clients to show HQ or launch to the HQ directory web
	// page.
	DirectoryUrl string `json:"directoryUrl,omitempty"`

	// LogoUrl: The logo url for the third party provider.
	LogoUrl string `json:"logoUrl,omitempty"`

	// Name: The user visible name of the cloud provider, which may be used
	// for example in the chat header during a conversation with the third
	// party.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentStyle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentStyle") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCloudProviderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCloudProviderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesCloudProviderInfoAgentStyle: The style
// customizations for the 3p agent.
type AssistantApiCoreTypesCloudProviderInfoAgentStyle struct {
	// BackgroundColor: The background color of the agent. Used if no
	// background image is specified for the given display orientation, or
	// if the provided background image does not fit.
	BackgroundColor *AssistantApiCoreTypesGovernedColor `json:"backgroundColor,omitempty"`

	// Possible values:
	//   "DEFAULT" - The client's default theme.
	//   "DARK" - The theme used when the card has a background image. See
	// go/aog-cards-header-theme-dark for details on applying this theme.
	//   "LIGHT" - The theme used when the card has a background color (and
	// no background image). See go/aog-cards-header-theme-light for details
	// on applying this theme.
	HeaderTheme string `json:"headerTheme,omitempty"`

	// LandscapeBackgroundImageUrl: URL for the background image of the
	// agent on landscape display.
	LandscapeBackgroundImageUrl string `json:"landscapeBackgroundImageUrl,omitempty"`

	// LogoUrl: URL for the image containing the 3p logo. This can include
	// logomark and logotype, or logotype only. If present, this can be used
	// in place of the square logo contained in the top level logo_url field
	// in CloudProviderInfo. See go/cards-logo-customization for details on
	// applying this logo.
	LogoUrl string `json:"logoUrl,omitempty"`

	// MaskColor: The color of the mask to apply to the background. See
	// go/aog-cards-background-mask for details on applying this mask.
	MaskColor *AssistantApiCoreTypesGovernedColor `json:"maskColor,omitempty"`

	// PortraitBackgroundImageUrl: URL for the background image of the agent
	// on portrait display.
	PortraitBackgroundImageUrl string `json:"portraitBackgroundImageUrl,omitempty"`

	// PrimaryColor: The primary color of the agent. Used by the client to
	// style the header and suggestion chips.
	PrimaryColor *AssistantApiCoreTypesGovernedColor `json:"primaryColor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BackgroundColor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BackgroundColor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesCloudProviderInfoAgentStyle) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesCloudProviderInfoAgentStyle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesDeviceConfig: The identification information for
// third party devices that integrates with the assistant. All of these
// fields will be populated by the third party when the query is sent
// from the third party device. Next Id: 5
type AssistantApiCoreTypesDeviceConfig struct {
	// AgentId: Pantheon Project ID that uniquely identifies the consumer
	// project ID. Required
	AgentId string `json:"agentId,omitempty"`

	// DeviceId: Unique identifier for the device. Example: DBCDW098234.
	// Required
	DeviceId string `json:"deviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesDeviceConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesDeviceConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesDeviceId: LINT.IfChange(DeviceId) Specifies
// identifier of a device AKA surface. Note there may be multiple device
// ids for the same physical device E.g. Allo app and Assistant app on
// Nexus. Note: DeviceId usage is complicated. Please do not depend on
// it for surface specific logic. Please use
// google3/assistant/api/capabilities.proto instead. IMPORTANT: When
// checking for equality between two `DeviceId`s, you should always use
// an `isSameDevice{As}` function to check for equality, as deep
// equality between `DeviceId`'s is not guaranteed. * C++:
// http://google3/assistant/assistant_server/util/device_id_util.cc;l=23;rcl=421295740
// * Dart:
// http://google3/assistant/context/util/lib/device_id.dart;l=26;rcl=442126145
// * Java:
// http://google3/java/com/google/assistant/assistantserver/utils/DeviceIdHelper.java;l=9;rcl=390378522
// See http://go/deviceid-equality for more details. Next ID: 14
type AssistantApiCoreTypesDeviceId struct {
	// AgsaClientInstanceId: The client_instance_id on devices with GSA. See
	// 'client_instance_field' in go/androidids.
	AgsaClientInstanceId string `json:"agsaClientInstanceId,omitempty"`

	// AlloDeviceId: Allo Id. Corresponds to the GBotRequest.Sender.sender.
	// NOTE(dychen): This may change to standard android/ios physical device
	// ids in order to enable shared data (e.g. installed app on physical
	// device shared between Allo and Opa apps on Nexus).
	AlloDeviceId string `json:"alloDeviceId,omitempty"`

	// CanonicalDeviceId: A unique device ID for Assistant devices as
	// proposed by go/ocelot-team to solve the device id fragmentation
	// problem. The value of this id is the HomeGraph id of the device. See
	// go/ocelot-track-0-registry-design. New surfaces should use the
	// canonical_device_id instead of using other ids, and the registration
	// should utilize the DeviceDataLayer (go/ddl-v0). Please contact the
	// assistant-state-management@ team for guidance. Note: We didn't reuse
	// |home_graph_device_id| because in Assistant code base
	// |home_graph_device_id| is common to associate it with 3P devices. See
	// go/project-yellowstone for more context.
	CanonicalDeviceId string `json:"canonicalDeviceId,omitempty"`

	// CastDeviceId: If set, indicates that the device is a cast device, and
	// contains the UUID of the cast device. Corresponds to the device_id
	// field of the CastDevice proto.
	CastDeviceId string `json:"castDeviceId,omitempty"`

	// ClientInstanceId: DUSI (go/dusi) is used as the identifier here. This
	// identifier is unique to the user and device. This will help identify
	// which device or application the user's request originated from. This
	// is not to be confused with the client_instance_id that android
	// devices provide. This is currently used by surfaces that use the
	// assistant-legacy-nexus and assistant-legacy-clockwork pipelines. DUSI
	// is created and set in S3. This field is only filled for GAIA
	// requests.
	ClientInstanceId string `json:"clientInstanceId,omitempty"`

	// ConnectedDockId: A device ID produced by a connected dock, which is
	// registered in HomeGraph.
	ConnectedDockId string `json:"connectedDockId,omitempty"`

	// DeviceConfig: The unique DeviceConfig to the specific third party
	// device. It is also used by Android Auto Embedded first party device.
	// See go/opa-ids.
	DeviceConfig *AssistantApiCoreTypesDeviceConfig `json:"deviceConfig,omitempty"`

	// DeviceType: The device's surface type. This is the string version of
	// surface_type. The server should use the SurfaceType value derived
	// from this string. If the device_type isn't supported within the
	// SurfaceType enum, it will be set as UNKNOWN. Developers should use
	// the enum in ServerParams instead of this string.
	DeviceType string `json:"deviceType,omitempty"`

	// HomeGraphDeviceId: The unique device ID for HomeGraph devices. This
	// is the HomeGraph ID, created when the device is registered into
	// HomeGraph. It is immutable for the same device unless it is
	// completely deleted and recreated. See go/home-graph for details.
	HomeGraphDeviceId string `json:"homeGraphDeviceId,omitempty"`

	// LibassistantDeviceId: The unique ID for libassistant based devices.
	// See go/libassistant-id for details.
	LibassistantDeviceId string `json:"libassistantDeviceId,omitempty"`

	// MultiHotwordArbitrationDeviceId: If set, indicates that the device is
	// participating the multi-hotword arbitration and the id is an UUID to
	// distinguish it from other devices. It should also be consistent
	// between requests from a single device within a session (or short
	// duration).
	MultiHotwordArbitrationDeviceId string `json:"multiHotwordArbitrationDeviceId,omitempty"`

	// OpaIosDeviceId: The unique device ID for the Assistant App on iOS.
	// See go/opa-ios-design for details.
	OpaIosDeviceId string `json:"opaIosDeviceId,omitempty"`

	// QuartzDeviceId: The unique ID of a Quartz device. See
	// go/quartz-design-doc for more details. Quartz ID is a hash of
	// (android_id + gaia).
	QuartzDeviceId string `json:"quartzDeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AgsaClientInstanceId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgsaClientInstanceId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesDeviceId) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesDeviceId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesDeviceUserIdentity: IMPORTANT: The definition of
// DeviceUserIdentity is being moved to
// //assistant/api/core_types/governed/device_user_identity.proto. All
// existing references will be updated to point to the new location. If
// you are adding a reference, use the new DeviceUserIdentity instead of
// this one. // LINT.IfChange
type AssistantApiCoreTypesDeviceUserIdentity struct {
	// DeviceId: The identifier of the device.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// GaiaId: The identifier of the user.
	GaiaId int64 `json:"gaiaId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesDeviceUserIdentity) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesDeviceUserIdentity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesGovernedColor: Represents a color in the RGBA
// color space. This message mirrors google.type.Color.
type AssistantApiCoreTypesGovernedColor struct {
	// Alpha: The fraction of this color that should be applied to the
	// pixel. That is, the final pixel color is defined by the equation:
	// pixel color = alpha * (this color) + (1.0 - alpha) * (background
	// color) This means that a value of 1.0 corresponds to a solid color,
	// whereas a value of 0.0 corresponds to a completely transparent color.
	// If omitted, this color object is to be rendered as a solid color (as
	// if the alpha value had been explicitly given with a value of 1.0).
	Alpha float64 `json:"alpha,omitempty"`

	// Blue: The amount of blue in the color as a value in the interval [0,
	// 1].
	Blue float64 `json:"blue,omitempty"`

	// Green: The amount of green in the color as a value in the interval
	// [0, 1].
	Green float64 `json:"green,omitempty"`

	// Red: The amount of red in the color as a value in the interval [0,
	// 1].
	Red float64 `json:"red,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alpha") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alpha") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedColor) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedColor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantApiCoreTypesGovernedColor) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantApiCoreTypesGovernedColor
	var s1 struct {
		Alpha gensupport.JSONFloat64 `json:"alpha"`
		Blue  gensupport.JSONFloat64 `json:"blue"`
		Green gensupport.JSONFloat64 `json:"green"`
		Red   gensupport.JSONFloat64 `json:"red"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Alpha = float64(s1.Alpha)
	s.Blue = float64(s1.Blue)
	s.Green = float64(s1.Green)
	s.Red = float64(s1.Red)
	return nil
}

// AssistantApiCoreTypesGovernedRingtoneTaskMetadata: Task metadata
// information describing the ringtone. Next id: 11
type AssistantApiCoreTypesGovernedRingtoneTaskMetadata struct {
	// Category: The category related with the ringtone. It's used to
	// generate ringtone related with the category if the entity_mid is not
	// be populated. E.g. for instrument, the ringtone may be piano sound.
	//
	// Possible values:
	//   "UNKNOWN_CATEGORY"
	//   "ANIMAL"
	//   "CHARACTER" - Character alarm is a kind of media alarm. CHARACTER
	// category should be removed. Use MEDIA for character alarms
	//   "EMOTION"
	//   "INSTRUMENT"
	//   "MEDIA"
	//   "SPORTS_EQUIPMENT"
	//   "VEHICLE"
	//   "ON_DEVICE" - An alarm sound that the user can select to play when
	// an alarm is firing, the alarm sound resource is located on device in
	// libassistant.
	//   "FUNTIME" - An alarm sound that is based upon the label that the
	// timer or alarm is invoked with (ie pizza timer invokes an Italian
	// accordian theme). The assets are streamed from web storage.
	Category string `json:"category,omitempty"`

	CharacterAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata `json:"characterAlarmMetadata,omitempty"`

	CharacterTag string `json:"characterTag,omitempty"`

	// EntityMid: The freebase mid of the entity related to the ringtone. It
	// will be used to generate the ringtone for the alarm or timer (with
	// support for i18n). For instance, for the "cat" mid, the related
	// ringtone will be a cat sound in some language, and for the "Beyonce"
	// mid, the ringtone will be, e.g., a playlist of Beyonce's best hits.
	EntityMid string `json:"entityMid,omitempty"`

	FuntimeMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata `json:"funtimeMetadata,omitempty"`

	GenMlAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata `json:"genMlAlarmMetadata,omitempty"`

	// GentleWakeInfo: Gentle wake information for this alarm.
	GentleWakeInfo *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo `json:"gentleWakeInfo,omitempty"`

	OnDeviceAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata `json:"onDeviceAlarmMetadata,omitempty"`

	// OnDeviceAlarmSound: Will be deprecated. Use OnDeviceAlarmMetadata.
	//
	// Possible values:
	//   "DEFAULT"
	//   "MELLOW"
	//   "MODERN_TIMES"
	//   "BEAUTIFUL_MIND"
	//   "LITTLE_SUNSHINE"
	//   "TOUCH_OF_ZEN"
	//   "ABOUT_TIME"
	//   "RANDOM"
	//   "BOROBUDUR"
	//   "PEBBLES"
	//   "BRIGHT_MORNING"
	//   "ACROSS_THE_VALLEY"
	//   "MORNING_SONG"
	//   "KYOTO"
	//   "AWAKEN"
	//   "CUCKOO"
	//   "DIGITAL_BLAST"
	//   "ACOUSTIC_SUNLIGHT"
	//   "SUNRISE_BOSSA"
	//   "CALM_GLOW"
	//   "ANTIQUE_CLOCK"
	//   "JUST_BIRDS"
	//   "JUNGLE_AMBIENCE"
	//   "QUAINT_VILLAGE"
	//   "BUBBLY_BOSSA"
	//   "ACOUSTIC_JAM"
	//   "EUPHORIC"
	OnDeviceAlarmSound string `json:"onDeviceAlarmSound,omitempty"`

	RoutineAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata `json:"routineAlarmMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata struct {
	// AgentIds: For character alarm, the media resources are provided
	// through AOG apps. During alarm trigger phase, aog apps with the
	// specified agent_ids are used to get the media resources. Multiple
	// "AoG agents" can satisfy a character_tag. So the user will select the
	// agents they want at alarm creation time. The chosen agents will be
	// recorded so that the resources only from those agents will be used at
	// trigger time. The number of selected agent_ids will not exceed 3. See
	// go/character-alarm-aog.
	AgentIds []string `json:"agentIds,omitempty"`

	// CharacterTags: The Character Alarm tag. Tags are needed to identify
	// the theme of the alarm. For example, if the tag is 'astronaut',
	// astronaut based audio is played during alarm ring. Note : We have
	// made it repeated so that the user can choose multiple character alarm
	// themes at one go. At present, the user is allowed to choose only one
	// theme during alarm creation.
	CharacterTags []string `json:"characterTags,omitempty"`

	// IconUrls: Icons urls corresponding to a character. Note : We have
	// made it repeated so that we can show different images when the alarm
	// rings. At present, we only support only one image.
	IconUrls []string `json:"iconUrls,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentIds") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata:
// Used to make timers and alarms more delightful. See
// go/funtime-engdesign for more details.
type AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata struct {
	// AgentIds: For FunTime alarms and timers, the media resources are
	// provided through AOG apps during their ringtone. Multiple AoG agents
	// can satisfy a label. So a random agent will be chosen from those that
	// are supplied. See go/funtime-engdesign.
	AgentIds []string `json:"agentIds,omitempty"`

	// AnimationBlob: These bytes may represent the blob of the Rive
	// animation that we pass to the Opal App. We will deprecate this field
	// if we figure out a solution to load the animation from the web.
	AnimationBlob string `json:"animationBlob,omitempty"`

	// AnimationUrl: Url for Rive animation that is brought up on ring. Rive
	// is a lightweight animation library that is compatible with Flutter on
	// Opal. See https://rive.app/.
	AnimationUrl string `json:"animationUrl,omitempty"`

	// TimerHeroUrl: The url used to load the image that is at the center of
	// the timer during timer countdown visuals.
	TimerHeroUrl string `json:"timerHeroUrl,omitempty"`

	// TtsServiceRequestBytes: This is used to call S3 to realize the TTS.
	// Is in the form of bytes because of a circular dependency issue in
	// libassistant protos. It is a serialized proto of type
	// speech.s3.TtsServiceRequest.
	TtsServiceRequestBytes string `json:"ttsServiceRequestBytes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentIds") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata:
// Metadata for machine learning generated audio samples. This will be
// similar to character alarms, Category will be set MEDIA but this
// metadata field will be used to identify the ringtone type on surface.
// (go/magenta-alarm-ringtones).
type AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata struct {
	IsEnabled bool `json:"isEnabled,omitempty"`

	// RingtoneLabel: Label for the generated ringtone.
	RingtoneLabel string `json:"ringtoneLabel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsEnabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsEnabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo:
// Gentle wake actions like slowly brightening the room/device screen
// leading up to the alarm firing (go/cube-gentle-wake-up).
type AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo struct {
	// EffectDurationMs: Specifies how long the effect lasts. Allowed for
	// effect to last after the alarm has started ringing. If unset or
	// negative or 0, effect is assumed to last until alarm trigger time.
	EffectDurationMs int64 `json:"effectDurationMs,omitempty,string"`

	// IsEnabled: Indicates if gentle wake action is to be performed before
	// this alarm fires. This is enabled only if the device supports sunrise
	// alarm capability.
	// http://cs/symbol:assistant.api.SunriseFeaturesSupport
	IsEnabled bool `json:"isEnabled,omitempty"`

	// StartTimedeltaMs: Specifies how long before the alarm fire time, the
	// wakeup effect will start. ALWAYS POSITIVE.
	StartTimedeltaMs int64 `json:"startTimedeltaMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EffectDurationMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EffectDurationMs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata
// : This describes the alarm sound resource enum and the alarm sound
// label for the on device alarm sound. On-device ringtones are product
// specific, hence Opal/UI layer will be responsible for populating this
// metadata at creation/edit. The enum map will be used to convert to an
// internal resource id used by libassistant for accessing the asset
// which are not exposed to UI.
type AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata struct {
	// OnDeviceAlarmSound: Opal/UI layer will set this bit based on the user
	// selection.
	//
	// Possible values:
	//   "DEFAULT"
	//   "MELLOW"
	//   "MODERN_TIMES"
	//   "BEAUTIFUL_MIND"
	//   "LITTLE_SUNSHINE"
	//   "TOUCH_OF_ZEN"
	//   "ABOUT_TIME"
	//   "RANDOM"
	//   "BOROBUDUR"
	//   "PEBBLES"
	//   "BRIGHT_MORNING"
	//   "ACROSS_THE_VALLEY"
	//   "MORNING_SONG"
	//   "KYOTO"
	//   "AWAKEN"
	//   "CUCKOO"
	//   "DIGITAL_BLAST"
	//   "ACOUSTIC_SUNLIGHT"
	//   "SUNRISE_BOSSA"
	//   "CALM_GLOW"
	//   "ANTIQUE_CLOCK"
	//   "JUST_BIRDS"
	//   "JUNGLE_AMBIENCE"
	//   "QUAINT_VILLAGE"
	//   "BUBBLY_BOSSA"
	//   "ACOUSTIC_JAM"
	//   "EUPHORIC"
	OnDeviceAlarmSound string `json:"onDeviceAlarmSound,omitempty"`

	// OnDeviceAlarmSoundLabel: A string label to identify the alarm sound
	// name. Opal/UI layer will set this as per product definition. This
	// will be used to display the name of the selected ringtone.
	OnDeviceAlarmSoundLabel string `json:"onDeviceAlarmSoundLabel,omitempty"`

	// TtsServiceRequestBytes: This is used to call S3 to realize the TTS.
	// Is in the form of bytes because of a circular dependency issue in
	// libassistant protos. It is a serialized proto of type
	// speech.s3.TtsServiceRequest. This request will contain an ssml with
	// the url to the ringtone files hosted on gstatic.
	TtsServiceRequestBytes string `json:"ttsServiceRequestBytes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OnDeviceAlarmSound")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OnDeviceAlarmSound") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata struct {
	// RoutineId: The unique id for each routine. When the alrm is
	// dismissed, it will trigger the routine of the routine alarm's creator
	// if feasible.
	RoutineId string `json:"routineId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RoutineId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RoutineId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesHomeAppInfo: The Home app information of the
// provider. Next ID: 3
type AssistantApiCoreTypesHomeAppInfo struct {
	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// PackageName: Unique package name that identifies a Home app of the
	// provider.
	PackageName string `json:"packageName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalizedAppName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalizedAppName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesHomeAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesHomeAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesImage: An image represents the data about an
// image or a photo. IMPORTANT: The definition of the Image message is
// being moved to //assistant/api/core_types/governed/image_type.proto.
// All existing references will be updated to point to the new location.
// If you are adding a reference, use the new Image message instead of
// this one. LINT.IfChange NextId: 13
type AssistantApiCoreTypesImage struct {
	// AccessibilityText: A text description of the image to be used for
	// accessibility, e.g. screen readers.
	AccessibilityText string `json:"accessibilityText,omitempty"`

	// AppIconIdentifier: App identifier. This field is specific to mobile
	// surfaces and stands for app package name for Android surface, and app
	// bundle identifier for iOS. In case identifier is specified but
	// invalid, some default icon will be used, e.g.
	// PackageManager.getDefaultActivityIcon() for Android. If you want to
	// show image for AGSA versions which don't support this field, you can
	// specify source_url as backup.
	AppIconIdentifier string `json:"appIconIdentifier,omitempty"`

	// BadgeImage: This is the image that is displayed as the badge on the
	// main image.
	BadgeImage *AssistantApiCoreTypesImage `json:"badgeImage,omitempty"`

	// Content: Content of the image in bytes.
	Content string `json:"content,omitempty"`

	Height int64 `json:"height,omitempty"`

	// ImageSource: Indicate the data source where the image is fetched.
	//
	// Possible values:
	//   "UNKNOWN" - Unknown image source.
	//   "PLACEHOLDER" - Indicates this image is a default placeholder
	// because no valid image is found.
	//   "VISUAL_DICT" - Indicates the image is fetched from Visual
	// Dictionary.
	//   "LAVD" - Indicates the image is fetched from LAVD
	// (visual-dictionary-license-aware-requirements).
	//   "VISUAL_DICT_DEFAULT_LOCALE" - Indicates the image is fetched from
	// Visual Dictionary of default locale "en".
	ImageSource string `json:"imageSource,omitempty"`

	// JsonContent: Content of image in form of JSON representation.
	JsonContent string `json:"jsonContent,omitempty"`

	// LetterDrawableText: Text used to generate a letter drawable (a letter
	// icon with color). It will be the default icon if the source_url is
	// empty or cannot be rendered.
	LetterDrawableText string `json:"letterDrawableText,omitempty"`

	// ProviderUrl: Url of the image provider, which is the website
	// containing the image. For example, https://www.agentx.com.
	ProviderUrl string `json:"providerUrl,omitempty"`

	// SourceUrl: The source url of the image. For example,
	// https://www.agentx.com/logo.png
	SourceUrl string `json:"sourceUrl,omitempty"`

	// SourceUrlType: Type of the source url.
	//
	// Possible values:
	//   "DEFAULT_URL_TYPE"
	//   "LOTTIE" - Json url used to drive animation on surfaces using
	// Airbnb lottie library.
	//   "DUO_CLIENT" - Duo url specifying the Duo resource id to be used
	// ('duo://'). WARNING: This may not be supported on all clients. At the
	// moment, only Dragonglass surfaces are supporting this.
	//   "CONTACT_ID" - Contact ID specifying contact resource to be used.
	SourceUrlType string `json:"sourceUrlType,omitempty"`

	// Width: The width and height of the image in pixels.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessibilityText")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessibilityText") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesImage) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesImage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesInternalProviderInfo: Info for targeting a
// feature provided directly by the Assistant surface itself. i.e Could
// be pointing to AGSA audio player for AUDIO_PLAYER on AGSA.
type AssistantApiCoreTypesInternalProviderInfo struct {
	// Type: Specifying which type of internal provider.
	//
	// Possible values:
	//   "UNKNOWN_INTERNAL_PROVIDER_TYPE"
	//   "AUDIO_PLAYER" - Deprecated, because supported AGSA implementation
	// had a bug (b/72229328). Use AUDIO_PLAYER_V2 instead.
	//   "AUDIO_PLAYER_V2" - Internal provider for playing audio.
	//   "MEDIA_PLAYER" - Internal provider for playing audio and video for
	// AGSA.
	//   "MEDIA_PLAYER_IOS" - iOS MEDIA_PLAYER.
	//   "AUDIO_ONLY_PLAYER" - Internal provider for playing audio only,
	// different from MEDIA_PLAYER. It is used by KaiOS, for news vertical.
	// It is different from AUDIO_PLAYER_V2 which is for AGSA, and not
	// supported by news vertical.
	//   "NARRATED_WEB_MEDIA_PLAYER" - Internal provider for playing audio
	// narration of web pages.
	//   "LIBASSISTANT_MEDIA_PLAYER" - Internal provider for playing audio
	// for libassistant. Historically each enum represents a different media
	// player implementation. This one is meant for the playing media on the
	// libassistant enabled surfaces.
	//   "LENS_PLAYER" - Internal provider for playing audio using lens
	// audio player, for screenshot based readout.
	//   "NEWS_PLAYER" - Internal provider for news vertical on
	// AssistantMediaPlayer in AGSA.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesInternalProviderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesInternalProviderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesIosAppInfo: The iOS app information of the
// provider. Next ID: 4
type AssistantApiCoreTypesIosAppInfo struct {
	// BundleIdentifier: Bundle identifier that identifies an iOS app of the
	// provider.
	BundleIdentifier string `json:"bundleIdentifier,omitempty"`

	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// OpenAppUrl: A URL to open the provider's app.
	OpenAppUrl string `json:"openAppUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BundleIdentifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BundleIdentifier") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesIosAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesIosAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesKaiOsAppInfo: The KaiOS app information of the
// provider. Next ID: 4
type AssistantApiCoreTypesKaiOsAppInfo struct {
	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// OpenAppUrl: A URL to open the provider's app.
	OpenAppUrl string `json:"openAppUrl,omitempty"`

	// PackageName: Unique package name that identifies a KaiOS app of the
	// provider.
	PackageName string `json:"packageName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalizedAppName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalizedAppName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesKaiOsAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesKaiOsAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesLocationCoordinates: Geographic coordinate
// information for location.
type AssistantApiCoreTypesLocationCoordinates struct {
	// AccuracyMeters: The accuracy of the coordinates in meters.
	AccuracyMeters float64 `json:"accuracyMeters,omitempty"`

	// LatDegrees: Latitude degrees.
	LatDegrees float64 `json:"latDegrees,omitempty"`

	// LngDegrees: Longitude degrees.
	LngDegrees float64 `json:"lngDegrees,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccuracyMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccuracyMeters") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesLocationCoordinates) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesLocationCoordinates
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantApiCoreTypesLocationCoordinates) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantApiCoreTypesLocationCoordinates
	var s1 struct {
		AccuracyMeters gensupport.JSONFloat64 `json:"accuracyMeters"`
		LatDegrees     gensupport.JSONFloat64 `json:"latDegrees"`
		LngDegrees     gensupport.JSONFloat64 `json:"lngDegrees"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AccuracyMeters = float64(s1.AccuracyMeters)
	s.LatDegrees = float64(s1.LatDegrees)
	s.LngDegrees = float64(s1.LngDegrees)
	return nil
}

// AssistantApiCoreTypesMessageNotification: This proto captures the
// contents of a messaging app notification that is typically part of a
// conversation thread. Next Id: 20
type AssistantApiCoreTypesMessageNotification struct {
	// AppName: App name of the message notification, e.g. Hangouts.
	AppName string `json:"appName,omitempty"`

	// BundleId: The key used to group this notification into a cluster.
	BundleId string `json:"bundleId,omitempty"`

	// DataUri: Uri for the attachment (image, audio, video etc.).
	DataUri string `json:"dataUri,omitempty"`

	// GroupName: Name of the group associated with the message
	// notification. This field is set iff this is a group message.
	GroupName string `json:"groupName,omitempty"`

	// GroupingKey: The group key of a proactive notification. Details in
	// assistant.api.client_op.NotificationArgs.grouping_key.
	GroupingKey string `json:"groupingKey,omitempty"`

	// Index: Index of the message notification.
	Index int64 `json:"index,omitempty"`

	// MarkAsReadActionAvailable: Boolean indicating if the mark_as_read
	// action is available for this message.
	MarkAsReadActionAvailable bool `json:"markAsReadActionAvailable,omitempty"`

	// MessageLength: Length of the message/notification content in
	// characters. Note: We can't send the full content because of privacy
	// restriction, preventing sending client content to our backends.
	// Concatenated message_length of all notification_entries.
	MessageLength int64 `json:"messageLength,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "INDIVIDUAL"
	//   "GROUP"
	MessageRecipientType string `json:"messageRecipientType,omitempty"`

	// MimeType: Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4',
	// 'image/png'.
	MimeType string `json:"mimeType,omitempty"`

	NotificationEntries []*AssistantApiCoreTypesMessageNotificationNotificationEntry `json:"notificationEntries,omitempty"`

	// NotificationIconKey: On-device cache key for notification icon.
	NotificationIconKey string `json:"notificationIconKey,omitempty"`

	// NotificationKey: String key of the notification. It is the key from
	// original StatusBarNotification received from Android OS. It is used
	// to identify the original notification to send a reply.
	NotificationKey string `json:"notificationKey,omitempty"`

	// OpaqueToken: The opaque_token of a proactive notification. Details in
	// assistant.api.client_op.NotificationArgs.opaque_token.
	OpaqueToken string `json:"opaqueToken,omitempty"`

	// PackageName: App pkg of the message notification, e.g.
	// "com.google.android.talk".
	PackageName string `json:"packageName,omitempty"`

	// PostTime: Timestamp of the last notification's post time.
	PostTime int64 `json:"postTime,omitempty,string"`

	// ReplyActionAvailable: Boolean indicating if the reply action is
	// available for this message.
	ReplyActionAvailable bool `json:"replyActionAvailable,omitempty"`

	Sender *AssistantApiCoreTypesMessageNotificationPerson `json:"sender,omitempty"`

	// SenderName: Sender's name of the message notification, e.g. Elsa.
	// Last sender name in case of a group conversation.
	SenderName string `json:"senderName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesMessageNotification) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesMessageNotification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesMessageNotificationNotificationEntry: Structure
// of each notification in the MessageNotification Bundle. Attribute
// sender_name could be different in case of group messages. Next Id: 6
type AssistantApiCoreTypesMessageNotificationNotificationEntry struct {
	// DataUri: Uri for the attachment (image, audio, video etc.).
	DataUri string `json:"dataUri,omitempty"`

	// MessageBody: Content of the message body in the notification.
	MessageBody string `json:"messageBody,omitempty"`

	// MimeType: Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4',
	// 'image/png'.
	MimeType string `json:"mimeType,omitempty"`

	// PostTime: Timestamp of the notification's post time.
	PostTime string `json:"postTime,omitempty"`

	// Sender: Sender of the message notification.
	Sender *AssistantApiCoreTypesMessageNotificationPerson `json:"sender,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataUri") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataUri") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesMessageNotificationNotificationEntry) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesMessageNotificationNotificationEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesMessageNotificationPerson: Mirrors part of
// https://developer.android.com/reference/android/app/Person Next Id: 4
type AssistantApiCoreTypesMessageNotificationPerson struct {
	IsImportant bool `json:"isImportant,omitempty"`

	Key string `json:"key,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsImportant") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsImportant") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesMessageNotificationPerson) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesMessageNotificationPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesProvider: Provider. Like, Spotify or
// iHeartRadio. Next ID: 13
type AssistantApiCoreTypesProvider struct {
	// AndroidAppInfo: The android app information of the provider.
	AndroidAppInfo *AssistantApiCoreTypesAndroidAppInfo `json:"androidAppInfo,omitempty"`

	// CastAppInfo: The cast app information of the provider.
	CastAppInfo *AssistantApiCoreTypesCastAppInfo `json:"castAppInfo,omitempty"`

	// ChromeosAppInfo: The ChromeOS app information of the provider.
	ChromeosAppInfo *AssistantApiCoreTypesChromeOsAppInfo `json:"chromeosAppInfo,omitempty"`

	// CloudProviderInfo: The third party provider information.
	CloudProviderInfo *AssistantApiCoreTypesCloudProviderInfo `json:"cloudProviderInfo,omitempty"`

	// FallbackUrl: A URL to fallback to if app can not be opened.
	FallbackUrl string `json:"fallbackUrl,omitempty"`

	HomeAppInfo *AssistantApiCoreTypesHomeAppInfo `json:"homeAppInfo,omitempty"`

	// IconImageUrl: Public URL pointing to an icon image for the provider.
	// e.g.
	// https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM
	IconImageUrl string `json:"iconImageUrl,omitempty"`

	// InternalProviderInfo: The internal assistant provider information.
	InternalProviderInfo *AssistantApiCoreTypesInternalProviderInfo `json:"internalProviderInfo,omitempty"`

	// IosAppInfo: The iOS app information of the provider.
	IosAppInfo *AssistantApiCoreTypesIosAppInfo `json:"iosAppInfo,omitempty"`

	// KaiosAppInfo: The KaiOS app information of the provider.
	KaiosAppInfo *AssistantApiCoreTypesKaiOsAppInfo `json:"kaiosAppInfo,omitempty"`

	// SipProviderInfo: The sip information of the provider.
	SipProviderInfo *AssistantApiCoreTypesSipProviderInfo `json:"sipProviderInfo,omitempty"`

	// WebProviderInfo: The web provider information.
	WebProviderInfo *AssistantApiCoreTypesWebProviderInfo `json:"webProviderInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidAppInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidAppInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesProvider) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesProviderDelta: ProviderDelta. The incremental
// change, e.g. installation or deletion for Spotify or iHeartRadio.
// Currently it is for Android only. A few considerations for edge
// cases: - If the app being deleted is not found from Footprints, it is
// ignored. - For Footprint upload through Geller, the gPRC response is
// available for client to retry in the next upload if the upload fails.
// - For Assistant Request, there is no upload status similar to the
// current AppCapabilities. Next ID: 4
type AssistantApiCoreTypesProviderDelta struct {
	// AndroidAppInfoDelta: The android app information of the provider.
	AndroidAppInfoDelta *AssistantApiCoreTypesAndroidAppInfoDelta `json:"androidAppInfoDelta,omitempty"`

	// FallbackUrl: A URL to fallback to if app can not be opened.
	FallbackUrl string `json:"fallbackUrl,omitempty"`

	// IconImageUrl: Public URL pointing to an icon image for the provider.
	// e.g.
	// https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM
	IconImageUrl string `json:"iconImageUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidAppInfoDelta")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidAppInfoDelta") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesProviderDelta) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesProviderDelta
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesSipProviderInfo: Session Initiation Protocol
// (SIP) information for providers that use SIP to initiate multimedia
// communication sessions, like Google Voice and Fi.
// https://en.wikipedia.org/wiki/Session_Initiation_Protocol
type AssistantApiCoreTypesSipProviderInfo struct {
	// ProviderId: The providers id (MID) which is the primary identifier
	// for a call provider within the Assistant. A MID, or machine
	// identifier, is a unique identifier issued by Knowledge Graph for all
	// entities contained in it's graph.
	ProviderId string `json:"providerId,omitempty"`

	// Realm: Calling realm to be use for each call. i.e. For anonymous,
	// this would be set to anonymous.chirp.google.com
	Realm string `json:"realm,omitempty"`

	// UseBirdsongTacl: If true, client should use the Birdsong TaCL API for
	// this call. Uses the VoiceCallManager API by default. For more
	// details: go/birdsong-migration-google-home
	UseBirdsongTacl bool `json:"useBirdsongTacl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProviderId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProviderId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesSipProviderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesSipProviderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesSurfaceIdentity: The set of information that
// helps the server identify the surface. This replaces the User-Agent
// string within the Assistant Server. Note: The SurfaceIdentity proto
// should only be used to derive the capabilities of a surface. It
// should not be accessed outside of the CapabilityBuilder or
// CapabilityChecker. NEXT ID: 5 IMPORTANT: The definitions of the
// SurfaceIdentity and SurfaceVersion protos are being moved to
// //assistant/api/core_types/governed/surface_identity.proto All
// existing references will be updated to point to the new location. If
// you are adding a reference, use the new SurfaceIdentity and
// SurfaceVersion protos instead of the protos defined here.
// LINT.IfChange
type AssistantApiCoreTypesSurfaceIdentity struct {
	// DeviceId: The identifier of the device.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// SurfaceType: The device's surface type. The types are defined at
	// google3/assistant/api/core_types/surfaces.gcl. NOTE: This is the new
	// field that is going to replace the `surface_type_string` field above.
	// For more details please refer to go/ontologicalize-surface-type.
	//
	// Possible values:
	//   "UNKNOWN_TYPE" - Unknown surface type.
	//   "ACCL" - Android conversation client library (go/accl) is an
	// Android library which implements the Conversation Protocol that
	// allows a surface to have conversations with the Assistant server.
	// OWNERS: surfaces-infra-core@
	//   "AGSA" - Android Google Search App (go/agsa). OWNERS:
	// surfaces-infra-core@
	//   "ANDROID" - Android. OWNERS: surfaces-infra-core@
	//   "ANDROID_AUTO" - Assistant on Android Auto (go/ast-auto). OWNERS:
	// opa-android-leads@
	//   "ANDROID_LITE" - Assistant on Android Go (not part of AGSA).
	// OWNERS: assistantgo-eng@
	//   "ANDROID_PHONE" - Assistant on Android phones accessed through the
	// Google App (velvet). This surface is formerly known as OPA_AGSA.
	// OWNERS: opa-android-leads@
	//   "ANDROID_SCREENLESS" - Assistant on Nexus with screen off/locked.
	// Use go/bisto device to trigger. OWNERS: opa-android-leads@
	//   "ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode
	// (go/titan-hubmode-surface). This is OPA Android first party Smart
	// Display devices. The UI experience is built on Opal (Gallium and
	// Flutter) and native Android. OWNERS: opa-android-leads@
	//   "ANDROID_TABLET" - Assistant on Android tablet. OWNERS:
	// opa-android-leads@
	//   "ANDROID_THINGS" - Android Things (go/things). OWNERS:
	// surfaces-infra-core@
	//   "ANDROID_THINGS_CUBE" - Lenovo Smart Clock v1, a stationary smart
	// display device with a 4-inch screen, targeted for bedroom/bedside use
	// cases like alarm, sleep tracking. Based on Android Things. See
	// go/cube-home. OWNERS: cube-eng@
	//   "ANDROID_THINGS_JASPER" - Former codename for 3P 8-inch and 10-inch
	// Smart Displays from Lenovo, JBL and LG, targeted for use in the
	// kitchen. Based on Android Things. See go/jasper-home. OWNERS:
	// jasper-eng@
	//   "ANDROID_TV" - The Android platform that powers smart televisions,
	// set-top-boxes, and over-the-top devices. See go/atv-eng and
	// go/opa-tv. OWNERS: opa-tv-eng@
	//   "ANDROID_WEAR" - Legacy Wear OS Assistant. OWNERS:
	// wear-assistant-eng@
	//   "ASSISTANT_KIT" - AssistantKit (go/assistantkit) is a collection of
	// iOS libraries allowing first party apps to integrate Google Assistant
	// features. OWNERS: assistantkit-eng@
	//   "ASSISTANT_SDK" - Standalone gRPC based client. See go/easi.
	// OWNERS: assistant-sdk-service-eng@
	//   "AUTO" - Automobile. OWNERS: surfaces-infra-core@
	//   "CAST_OS" - Cast OS (go/opal-castos-docs#what-is-castos). OWNERS:
	// surfaces-infra-core@
	//   "CHROME_OS" - Chrome OS (go/chromsos) OWNERS: surfaces-infra-core@
	//   "CHROMECAST_MANHATTAN" - For chromecast with assistant + screen,
	// e.g. Newman. OWNERS: cast-eng-platform@
	//   "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g.
	// executing time scheduled routines: go/scheduled-routines. OWNERS:
	// surfaces-infra-core@
	//   "CROS" - Assistant on native Chrome OS (go/croissant). OWNERS:
	// croissant@
	//   "FITBIT_OS" - Fitbit OS. OWNERS: surfaces-infra-core@
	//   "FITBIT_OS_WATCH" - Assistant on Fitbit OS Watch. OWNERS:
	// assistant-wearable-team@
	//   "FITBIT_OS_WATCH_ANDROID" - Assistant on Fitbit Watch paired with
	// AGSA. OWNERS: assistant-wearable-team@
	//   "FITBIT_OS_WATCH_IOS" - Assistant on Fitbit Watch paired with iOPA.
	// OWNERS: assistant-wearable-team@
	//   "GOOGLE_HOME" - Google home speaker, i.e., Chirp devices. See
	// go/assistant-speakers. OWNERS: assistant-speaker-leads@
	//   "HEADPHONE" - Headphone. OWNERS: surfaces-infra-core@
	//   "HEADPHONE_ANDROID" - Assistant on headphones paired with AGSA.
	// OWNERS: assistant-wearable-team@
	//   "HEADPHONE_IOS" - Assistant on headphones paired with iOPA. OWNERS:
	// assistant-wearable-team@
	//   "IOPA" - Assistant on iOS devices (go/opa-ios). OWNERS:
	// opa-ios-eng@
	//   "IOS" - iOS. OWNERS: surfaces-infra-core@
	//   "IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use
	// go/bisto device to trigger. OWNERS: bisto-team@
	//   "IPAD" - iPad devices. OWNERS: surfaces-infra-core@
	//   "IPHONE" - iPhone devices. OWNERS: surfaces-infra-core@
	//   "KAI_OS" - Kai OS (go/kaios). OWNERS: surfaces-infra-core@
	//   "KAI_OS_AMA" - Assistant on KaiOS (go/kaiosama). OWNERS:
	// assistant-kaios-eng@
	//   "LIBASSISTANT" - LibAssistant (go/libassistant) C++ SDK that powers
	// Assistant experience on both 1P devices like Google Home and 3P
	// devices like Sonos. OWNERS: libassistant-core@
	//   "PHONE" - A phone. OWNERS: surfaces-infra-core@
	//   "PIXEL" - Pixel devices. OWNERS: surfaces-infra-core@
	//   "PIXEL5" - Pixel 5. OWNERS: surfaces-infra-core@
	//   "PIXEL6" - Pixel 6. OWNERS: surfaces-infra-core@
	//   "PIXEL7" - Pixel 7. OWNERS: surfaces-infra-core@
	//   "PIXEL_BUDS" - Assistant on Pixel Buds. OWNERS:
	// assistant-wearable-team@
	//   "PIXEL_WATCH" - Assistant on Pixel Watch (a.k.a., Rohan). OWNERS:
	// assistant-wearable-team@
	//   "SCREENLESS" - Devices with screen off or locked (go/bisto).
	// OWNERS: surfaces-infra-core@
	//   "SMART_DISPLAY" - Smart surface, such as Titan. OWNERS:
	// surfaces-infra-core@
	//   "SPEAKER" - A speaker. OWNERS: surfaces-infra-core@
	//   "TABLET" - A tablet. OWNERS: surfaces-infra-core@
	//   "TELEPHONE" - Assistant on a phone call (go/telephone). OWNERS:
	// telephone-assistant-eng@
	//   "THING" - IoT device. OWNERS: surfaces-infra-core@
	//   "WATCH" - Watch. OWNERS: surfaces-infra-core@
	//   "WEAR_OS" - Wear OS. OWNERS: surfaces-infra-core@
	//   "WEAR_OS_WATCH" - Assistant on Wear OS Watch (a.k.a., Edoras).
	// OWNERS: assistant-wearable-team@
	SurfaceType string `json:"surfaceType,omitempty"`

	// SurfaceTypeString: The device's surface type. This is the string
	// version of the assistant.api.core_types.SurfaceType enum. The server
	// should not use this field, rather it should use the SurfaceType value
	// derived from this string.
	SurfaceTypeString string `json:"surfaceTypeString,omitempty"`

	// SurfaceVersion: The version of the surface/client. This is different
	// from the Conversation protocol version.
	SurfaceVersion *AssistantApiCoreTypesSurfaceVersion `json:"surfaceVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesSurfaceIdentity) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesSurfaceIdentity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesSurfaceType: Specifies the types of device
// surfaces. LINT.IfChange When adding new surface types make sure that
// My Activity (https://myactivity.google.com/product/assistant) will
// correctly render by adding your enum to
// http://cs/symbol:GetAssistSurfaceName%20f:%5C.cc$ If your type
// doesn't fit in to any of the existing surfaces messages, add a new
// message in
// http://google3/personalization/footprints/boq/uservisible/events/intl/smh_frontend_messages.h.
type AssistantApiCoreTypesSurfaceType struct {
	// Possible values:
	//   "UNKNOWN"
	//   "ANDROID_ALLO"
	//   "ANDROID_AUTO" - Deprecated (never used). Use OPA_ANDROID_AUTO
	// instead.
	//   "ANDROID_THINGS_CUBE" - Assistant on small screen stationary
	// device.
	//   "ANDROID_THINGS_JASPER"
	//   "ANDROID_TV"
	//   "ANDROID_TV_KIDS"
	//   "ANDROID_WEAR"
	//   "AR_GLASSES" - Assistant on AR Glasses with both visual and audio
	// experiences. Ask ar-assistant@ for details.
	//   "ASSISTANT_SDK" - For Assistant SDK gRPC client.
	//   "AUDIOWEAR"
	//   "BUBBLE_CHARACTERS_IOS" - go/assistant-lamda-overview-characters
	//   "CAPABILITY_BASED_SURFACE" - Surface for capability based testing.
	//   "CHROMECAST_ASSISTANT" - For chrome cast assistant web app.
	//   "CHROMECAST_MANHATTAN" - For chrome cast with assistant + screen
	// (e.g., Google Nest Hub).
	//   "CHROMECAST_SEARCH"
	//   "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g.
	// executing time
	//   "COMPANION_SCREEN" - scheduled routines: go/routine-cloud-ex For
	// Quartz.
	//   "DYNAMITE_WEB"
	//   "ENSEMBLE"
	//   "EYESFREE_AGSA" - Deprecated. Please use OPA_ANDROID_SCREENLESS.
	//   "EYESFREE_GMM"
	//   "GBOARD" - For Gboard app
	//   "GLASS"
	//   "GOOGLE_HOME"
	//   "HANGOUTS_CHATBOT"
	//   "IOS_ALLO"
	//   "IOS_GSA"
	//   "IOS_WEAR"
	//   "LIBASSISTANT" - For standalone libassistant devices.
	//   "LINE_CHATBOT" - LINE 3P messaging app
	//   "MULTIMODAL_AGSA" - Deprecated.
	//   "NON_ASSISTANT_SURFACE" - Surfaces that do not speak to the
	// Assistant, i.e. web HQ
	//   "OPA_AGSA" - Assistant on Android phones accessed through the
	// Google App (velvet). This represents neither all of the assistant on
	// android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the
	// assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS,
	// OPA_AGSA_CHROME_OS, etc.).
	//   "OPA_AGSA_CHROME_OS" - Deprecated. Please use OPA_CROS.
	//   "OPA_ANDROID_AUTO"
	//   "OPA_ANDROID_LITE" - This is OPA on Android Go (not part of AGSA)
	//   "OPA_ANDROID_SCREENLESS" - Assistant on Nexus with screen
	// off/locked. Use go/bisto device to trigger.
	//   "OPA_ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode
	// (go/titan-hubmode-surface). This is OPA Android first party Smart
	// Display devices. The UI experience is built on Opal (Gallium and
	// Flutter) and native Android.
	//   "OPA_ANDROID_TABLET" - Assistant on Android tablet
	//   "OPA_CROS" - Assistant on native Chrome OS (go/croissant).
	//   "OPA_GACS" - For assistant on GACS devices (go/gacs-dd). Google
	// Assistant Conversation Service (GACS) defines intents the device
	// accepts. This surface serves the intents in the assistant response.
	//   "OPA_IOS"
	//   "OPA_IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use
	// go/bisto device to trigger.
	//   "OPA_KAIOS" - Assistant on KaiOS. go/kaiosama
	//   "OPA_MOBILE_WEB" - Assistant on Mobile Web. go/opa-spidey
	//   "RTOS_PHONE" - Assistant on low-cost RTOS phones (go/conceRTOS).
	//   "SMS_CHATBOT"
	//   "TELEGRAM_CHATBOT" - Telegram 3P messaging app
	//   "TELEPHONE_ASSISTANT" - Assistant on a phone call (go/telephone).
	//   "VERILY_ONDUO"
	//   "YOUTUBE_APP" - A Youtube app.
	//   "AGSA_BISTO_FOR_EVAL" - Eval-only surfaces. These surfaces are not
	// real surfaces. They are only used in intermediate steps of eval query
	// and request generation: 1. Eval samplers (OPA query sampler and
	// Cannery sampler) checks logs and temporarily assigns these surface
	// types to the logs, to put Bisto, Lockhart Mic, ... queries in the
	// correct query pools. 2. Request builders uses these surface types to
	// determine how TaskRequest for Bisto, Lockhart Mic, ... should be
	// built, like whether some user user agent should be used, whether some
	// entry source should be set. The surface types in the generated
	// TaskRequest is still the production surface types, like
	// OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android
	// eval. Will be merged with OPA_ANDROID_SCREENLESS in the future.
	//   "COGSWORTH_FOR_EVAL"
	//   "LOCKHART_MIC_FOR_EVAL"
	//   "OPA_ANDROID_AUTO_EMBEDDED_FAKE" - OPA_ANDROID_AUTO has another
	// sub-surface (embedded) that differs in the reported capabilities,
	// client-ops, flags but uses the same surface_type string of
	// OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests
	// and evals for this embedded surface. Deprecated as of Feb 2019.
	// Please use "OPA_ANDROID_AUTO_EMBEDDED" client type for tests and
	// eval. See go/client-onboarding for more details.
	// https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32&rcl=247481455
	//   "SPARK" - Unlaunched new surface prototype, ask spark-eng@.
	//   "WALLE" - Wall-E is an Area120 Project building assistant powered
	// robots. The surface is an extended joplin which have same
	// capabilities as a google home adding custom robot features. Currently
	// in active development. Please reach out walle-software@ or bingxin@
	// for questions. For details see go/walle-as-pipeline-1-pager.
	//   "UNIT_TESTING" - Surface used for unit-testing purposes. Unit-tests
	// might still require the existence of a "valid" SurfaceType to succeed
	// (eg. initialization of the CapabilityBuilder, proto matching, etc.).
	// With the move away from SurfaceType checks, a generic "TESTING"
	// SurfaceType can be used for such tests without affecting the test
	// behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not
	// have any capabilities or ResponseType tied to it. It should only be
	// used for unit-tests and should not be exposed in the ASDebugger.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesSurfaceType) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesSurfaceType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesSurfaceVersion: The version of the
// surface/client. New surfaces are encouraged to only use the
// “major” field to keep track of version number. The “minor”
// field may be used for surfaces that rely on both the “major” and
// “minor” fields to define their version.
type AssistantApiCoreTypesSurfaceVersion struct {
	Major int64 `json:"major,omitempty"`

	Minor int64 `json:"minor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Major") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Major") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesSurfaceVersion) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesSurfaceVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiCoreTypesWebProviderInfo: The web information of the
// provider. Next ID: 5
type AssistantApiCoreTypesWebProviderInfo struct {
	// HomeStorage: Serialized storage (context) persisted and retrieved for
	// the app and home.
	HomeStorage string `json:"homeStorage,omitempty"`

	// LocalizedAppName: The localized app name.
	LocalizedAppName string `json:"localizedAppName,omitempty"`

	// OpenAppUrl: A URL to open the provider's app.
	OpenAppUrl string `json:"openAppUrl,omitempty"`

	// ThirdPartyCustomNluInfo: Info about 3P Custom NLU used in this web
	// provider. TODO(b/321644453) remove when QRewrite is able to call
	// SERoot.
	ThirdPartyCustomNluInfo *AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo `json:"thirdPartyCustomNluInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HomeStorage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HomeStorage") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesWebProviderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesWebProviderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo struct {
	// Locale: The locale of this agent version, represented by BCP-47
	// language strings, such as "en", "en-US", "fr", "fr-CA", "sr-Latn",
	// "zh-Hans-CN", etc.
	Locale string `json:"locale,omitempty"`

	// NluAgentId: Unique internal identifier of 3P Custom NLU agent. UUID.
	NluAgentId string `json:"nluAgentId,omitempty"`

	// NluAgentVersion: Identifies the 3P Custom NLU agent version.
	NluAgentVersion int64 `json:"nluAgentVersion,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiCrossDeviceExecutionCapability struct {
	// LocalConnectivityEnabled: Whether the device has torus/usonia
	// capabililities enabled or not.
	LocalConnectivityEnabled bool `json:"localConnectivityEnabled,omitempty"`

	// RemoteCastMediaEnabled: Whether the device supports cast media
	// originated from a remote device to be executed through local
	// execution and can upload results asynchronously. Needs to be checked
	// before sending remote media initiation through local channel since it
	// needs an async result upload path.
	RemoteCastMediaEnabled bool `json:"remoteCastMediaEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LocalConnectivityEnabled") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalConnectivityEnabled")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiCrossDeviceExecutionCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiCrossDeviceExecutionCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiDate: A Gregorian calendar date. IMPORTANT: The
// definition of Date proto is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead.
type AssistantApiDate struct {
	// Day: The day, in 1...31.
	Day int64 `json:"day,omitempty"`

	// Month: The month, in 1...12.
	Month int64 `json:"month,omitempty"`

	// Year: The year, e.g. 2016.
	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiDate) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiDateTime: A date-time specification, combining a date and
// civil time (relative to a given timezone). IMPORTANT: The definition
// of DateTime proto is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead.
type AssistantApiDateTime struct {
	// Date: A Gregorian calendar date.
	Date *AssistantApiDate `json:"date,omitempty"`

	// TimeOfDay: A civil time relative to a timezone.
	TimeOfDay *AssistantApiTimeOfDay `json:"timeOfDay,omitempty"`

	// TimeZone: A time zone in IANA format.
	TimeZone *AssistantApiTimeZone `json:"timeZone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Date") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Date") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiDeviceCapabilities: This message describes roughly what a
// surface is capable of doing and metadata around those capabilities.
// These capabilities are determined based on: - device hardware -
// software - status (e.g. volume level, battery percentage) These
// capabilities refer to the surface and not the physical device. The
// list of supported surfaces can be found in the
// assistant.api.core_types.SurfaceType enum. A surface's capabilities
// can differ from the device's. An example would be ANDROID_ALLO
// running on Pixel. Allo does not support AudioInput while the Pixel
// does. In this case, audio_input will be set to false for Assistant
// Allo requests while it might be set to true for OPA_NEXUS requests.
// Next ID: 34
type AssistantApiDeviceCapabilities struct {
	// AndroidIntentCapabilities: Capabilites related to Android intent
	// support.
	AndroidIntentCapabilities *AssistantApiAndroidIntentCapabilities `json:"androidIntentCapabilities,omitempty"`

	// AudioInput: These capabilities are scoped to the ability to gather
	// audio. It includes information like the type of audio that can be
	// gathered (e.g. public, private).
	AudioInput *AssistantApiAudioInput `json:"audioInput,omitempty"`

	// AudioOutput: These capabilities are scoped to the ability to play
	// audio. It includes information like the type of audio that can be
	// played (e.g. public, private).
	AudioOutput *AssistantApiAudioOutput `json:"audioOutput,omitempty"`

	// CallCapabilities: The call capabilities of this device.
	// go/call-capabilities
	CallCapabilities *AssistantApiCallCapabilities `json:"callCapabilities,omitempty"`

	// Camera: These capabilities are scoped to the camera abilities of this
	// device.
	Camera *AssistantApiCameraCapabilities `json:"camera,omitempty"`

	// CarUxRestrictions: UX restrictions for Auto.
	//
	// Possible values:
	//   "UX_RESTRICTIONS_UNSPECIFIED" - This value should not be used.
	//   "UX_RESTRICTIONS_BASELINE" - No specific restrictions in place, but
	// baseline distraction optimization guidelines need to be adhered to
	// when CarUxRestrictions.isRequiresDistractionOptimization() returns
	// true.
	//   "UX_RESTRICTIONS_FULLY_RESTRICTED" - All restrictions are in
	// effect.
	//   "UX_RESTRICTIONS_NO_KEYBOARD" - No text entry for the purpose of
	// searching or other manual text string entry activities.
	//   "UX_RESTRICTIONS_NO_VIDEO" - No video - no animated frames > 1fps.
	CarUxRestrictions []string `json:"carUxRestrictions,omitempty"`

	// Cast: These capabilities are scoped to the cast abilities of this
	// device.
	Cast *AssistantApiCastCapabilities `json:"cast,omitempty"`

	CommunicationUiCapabilities *AssistantApiCommunicationUiCapabilities `json:"communicationUiCapabilities,omitempty"`

	ContactLookupCapabilities *AssistantApiContactLookupCapabilities `json:"contactLookupCapabilities,omitempty"`

	// DeviceId: This is the same device id that is specified in the
	// conversation protocol and should be unique to each device/user/model
	// combination. For example, if a request is coming from a watch through
	// AGSA the watch and AGSA should have different device_ids. Note: this
	// field should only be used to determine which device the capabilities
	// belong to and not to access the id of the device. Instead
	// DeviceProperties should be used and accessed through ParamsAccessor.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// DeviceUxMode: Capabilities related to Android tablet UX experience.
	//
	// Possible values:
	//   "DEVICE_UX_MODE_DEFAULT"
	//   "DEVICE_UX_MODE_SUPPORT_LIMITED_SHARED_LOCKSCREEN" - Device
	// supports the Shared Lock Screen: a glanceable space that lets anyone
	// in the house use shared apps and the Assistant, without unlocking the
	// device. This is for devices which only support limited SLS, e.g. TKY.
	DeviceUxMode string `json:"deviceUxMode,omitempty"`

	// HasVoiceTelephony: Indicates that the device has connection to
	// cellular network that allows it to make voice calls. This is distinct
	// from device just being capable of voice telephony, because the device
	// can be capable yet miss the suitable SIM card (for example, it could
	// miss SIM card altogether, or have data-only SIM card).
	HasVoiceTelephony bool `json:"hasVoiceTelephony,omitempty"`

	// JwnCapabilities: Indicates if the client supports Javascript
	// Whatsnext (go/jwn). Also contains the Jwn libraries present on the
	// client along with their versions.
	JwnCapabilities *AssistantApiJwnCapabilities `json:"jwnCapabilities,omitempty"`

	// LensPerceptionCapabilities: Capabilities related to Lens Perception,
	// i.e. image understanding. See go/lens-perception-sdk.
	LensPerceptionCapabilities *AssistantApiLensPerceptionCapabilities `json:"lensPerceptionCapabilities,omitempty"`

	// Location: These capabilities are scoped to the location abilities of
	// this device.
	Location *AssistantApiLocationCapabilities `json:"location,omitempty"`

	// LoggingOnlyData: Data which is produced for logging and debugging.
	// Servers MUST NOT use this for any other purposes, such as branching
	// on it.
	LoggingOnlyData *AssistantApiLoggingOnlyData `json:"loggingOnlyData,omitempty"`

	MessageCapabilities *AssistantApiMessageCapabilities `json:"messageCapabilities,omitempty"`

	// Movement: These capabilities are scoped to abilities of the device to
	// move around.
	Movement *AssistantApiMovementCapabilities `json:"movement,omitempty"`

	// NotificationCapabilities: DEPRECATED: Use
	// SystemNotificationRestrictions instead. Specifies whether the surface
	// is able to display notifications. This field is superficially similar
	// to ProactiveNotificationOutput, but unlike that field which tracks a
	// per-user preference on the OPA side, this field captures whether the
	// surface is capable of displaying notifications.
	//
	// Possible values:
	//   "NO_NOTIFICATION_CAPABILITY" - The surface is not able to display
	// notifications.
	//   "NOTIFICATIONS_DISABLED" - The notifications are disabled on the
	// surface.
	//   "NOTIFICATIONS_ENABLED" - The notifications are enabled.
	NotificationCapabilities string `json:"notificationCapabilities,omitempty"`

	// NotificationOutputRestrictions: Settings, that reflect whether a
	// specific notification type is allowed for current device, e.g. if the
	// user opted out from notification category or category group. This
	// settings are server-side stored and evaluated unlike
	// SystemNotificationRestrictions field.
	NotificationOutputRestrictions *AssistantApiNotificationOutputRestrictions `json:"notificationOutputRestrictions,omitempty"`

	// OutputRestrictions: These are user configured restrictions indicating
	// what the device is allowed to output from the privacy point of view.
	OutputRestrictions *AssistantApiOutputRestrictions `json:"outputRestrictions,omitempty"`

	// PopOnLockscreenCapability: Capability to support Pop on lockscreen.
	//
	// Possible values:
	//   "POP_ON_LOCKSCREEN_DEFAULT" - Pop will default to enabled on
	// lockscreen.
	//   "POP_ON_LOCKSCREEN_ENABLED" - Pop is enabled on lockscreen.
	//   "POP_ON_LOCKSCREEN_DISABLED" - Pop is disabled on lockscreen.
	PopOnLockscreenCapability string `json:"popOnLockscreenCapability,omitempty"`

	// SafetyRestrictions: Indicates if the client has safety related
	// restriction.
	//
	// Possible values:
	//   "DEFAULT_NO_SAFETY_RESTRICTION" - The surface has no safety
	// restriction.
	//   "DISTRACTION_SAFETY_RESTRICTION" - The surface has safety
	// restriction due to any distraction.
	SafetyRestrictions string `json:"safetyRestrictions,omitempty"`

	// Screen: These capabilities are scoped to the ability to see and
	// interact with the Assistant through a screen. If the device has no
	// screen it should send an empty ScreenCapabilities. Sending no
	// ScreenCapabilities will cause this to be overridden with the surface
	// default.
	Screen *AssistantApiScreenCapabilities `json:"screen,omitempty"`

	// SodaCapabilities: Capabilities related to SODA (Speech On-Device
	// API).
	SodaCapabilities *AssistantApiSodaCapabilities `json:"sodaCapabilities,omitempty"`

	// Software: These capabilities are scoped to the software available on
	// the device as well as the set of supported Assistant features.
	Software *AssistantApiSoftwareCapabilities `json:"software,omitempty"`

	// SpeechCapabilities: DEPRECATED Capabilities related to speech
	// detection on devices.
	SpeechCapabilities *AssistantApiSpeechCapabilities `json:"speechCapabilities,omitempty"`

	// SupportedLocale: Locales supported by assistant settings for speaking
	// and display. This is independent from device language that is defined
	// in device setting. New locales are added based on rollout, whitelist
	// and app version releases because older versions does not have model
	// support. Currently supported locale list differs by surface type.
	SupportedLocale []string `json:"supportedLocale,omitempty"`

	// SurfaceIdentity: The set of information that helps the server
	// identify the surface.
	SurfaceIdentity *AssistantApiCoreTypesSurfaceIdentity `json:"surfaceIdentity,omitempty"`

	// SurfaceTypeString: The device's surface type. This is the string
	// version of the assistant.api.core_types.SurfaceType enum. The server
	// should not use this field, rather it should use the SurfaceType value
	// derived from this string.
	SurfaceTypeString string `json:"surfaceTypeString,omitempty"`

	// SystemNotificationRestrictions: Restrictions related to system-level
	// notifications. This field is superficially similar to
	// ProactiveNotificationOutput, but unlike that field which tracks a
	// per-user preference on the OPA side, this field captures system level
	// notifications restrictions. This field is not stored and is merged to
	// capablities from conversation params. It exists mostly for logging
	// purposes of android channel state and global app-level notification
	// opt out.
	SystemNotificationRestrictions *AssistantApiSystemNotificationRestrictions `json:"systemNotificationRestrictions,omitempty"`

	// ThirdPartyCapabilities: Capabilities related to third party
	// integration.
	ThirdPartyCapabilities *AssistantApiThirdPartyCapabilities `json:"thirdPartyCapabilities,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AndroidIntentCapabilities") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AndroidIntentCapabilities") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiDeviceCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiDeviceCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiDuration: A Duration represents a signed, fixed-length
// span of time represented as a count of seconds and fractions of
// seconds at nanosecond resolution. It is independent of any calendar
// and concepts like "day" or "month". It is related to Timestamp in
// that the difference between two Timestamp values is a Duration and it
// can be added or subtracted from a Timestamp. Range is approximately
// +-10,000 years.
type AssistantApiDuration struct {
	// Nanos: Signed fractions of a second at nanosecond resolution of the
	// span of time. Durations less than one second are represented with a 0
	// `seconds` field and a positive or negative `nanos` field. For
	// durations of one second or more, a non-zero value for the `nanos`
	// field must be of the same sign as the `seconds` field. Must be from
	// -999,999,999 to +999,999,999 inclusive.
	Nanos int64 `json:"nanos,omitempty"`

	// Seconds: Signed seconds of the span of time. Must be from
	// -315,576,000,000 to +315,576,000,000 inclusive.
	Seconds int64 `json:"seconds,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Nanos") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Nanos") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiDuration) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiDuration
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiFeatureSpecificActionSupport struct {
	// ClarificationDataSupported: Whether client supports clarification
	// suggestion chip to be displayed see
	// |assistant.suggestions.ClarificationData|
	ClarificationDataSupported bool `json:"clarificationDataSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClarificationDataSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ClarificationDataSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiFeatureSpecificActionSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiFeatureSpecificActionSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiFitnessFeatureSupport struct {
	// SupportedActivities: A list of fitness activity types supported by
	// this client.
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED" - The type is unknown.
	//   "WALK" - Represents a walking activity type.
	//   "RUN" - Represents a running activity type.
	//   "ELLIPTICAL" - Represents an elliptical activity type.
	//   "SWIM" - Represents a swimming activity type.
	//   "WEIGHTS" - Represents a weightlifting activity type.
	//   "TREADMILL" - Represents a treadmill activity type (e.g.
	// walking/running on a treadmill).
	//   "BIKE" - Represents a cycling activity type.
	//   "YOGA" - Represents a yoga activity type.
	//   "WORKOUT" - Represents a generic workout activity.
	//   "BOOT_CAMP" - Represents a bootcamp activity type.
	//   "CIRCUIT_TRAINING" - Represents a circuit training activity type.
	//   "GOLF" - Represents a golf activity type.
	//   "HIKING" - Represents a hiking activity type.
	//   "INTERVAL_TRAINING" - Represents an interval training activity
	// type.
	//   "KICKBOXING" - Represents a kickboxing activity type.
	//   "MARTIAL_ARTS" - Represents a martial arts activity type.
	//   "PILATES" - Represents a pilates activity type.
	//   "SPINNING" - Represents a spinning(indoor cycling, stationary
	// biking) activity type.
	//   "STAIR_CLIMBING" - Represents a stair climbing activity type.
	//   "TENNIS" - Represents a tennis activity type.
	//   "AEROBICS" - Represents an aerobics activity type.
	//   "CORE_TRAINING" - Represents a core training activity type.
	//   "DANCING" - Represents a dancing activity type.
	//   "HIGH_INTENSITY_INTERVAL_TRAINING" - Represents a HIIT activity
	// type.
	//   "KAYAKING" - Represents a kayaking activity type.
	//   "ROWING" - Represents a rowing activity type.
	//   "SKIING" - Represents a skiing activity type.
	//   "STANDUP_PADDLEBOARDING" - Represents a standup paddleboading(SUP)
	// activity type.
	//   "STRENGTH_TRAINING" - Represents a strength training activity type.
	//   "SNOWBOARDING" - Represents a snowboarding activity type.
	SupportedActivities []string `json:"supportedActivities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SupportedActivities")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SupportedActivities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiFitnessFeatureSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiFitnessFeatureSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiFluidActionsSupport struct {
	// StateSyncMethod: Specifies the params proto that Fluid Actions uses
	// to sync state with server.
	//
	// Possible values:
	//   "STATE_SYNC_METHOD_UNSPECIFIED" - Unspecified state sync method.
	//   "DIALOG_STATE_PARAMS" - New params proto used to sync state between
	// client and server. New clients must use this value. For proto
	// details, see:
	// http://google3/assistant/api/params/dialog_state_params.proto
	StateSyncMethod string `json:"stateSyncMethod,omitempty"`

	// ForceSendFields is a list of field names (e.g. "StateSyncMethod") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StateSyncMethod") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiFluidActionsSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiFluidActionsSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiGacsCapabilities: Capabilities of Google assistant
// conversation service(GACS) devices. These capabilites including
// supported GACS actions and response size limitations.
type AssistantApiGacsCapabilities struct {
	// DeviceId: DeviceId of the accessory device (eg. watch) Commonly the
	// go/dusi (eg. client_instance_id) is provided.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// ResponseConfig: Configuration sent by device.
	ResponseConfig *GoogleAssistantAccessoryV1ResponseConfig `json:"responseConfig,omitempty"`

	// TtsEncoding: DEPRECATED: Format of TTS audio requested by the device.
	//
	// Possible values:
	//   "LINEAR_16BIT" - Signed 16-bit little-endian (a.k.a s16le) linear
	// PCM.
	//   "MULAW" - G.711 audio companding.
	// https://en.wikipedia.org/wiki/G.711 8-bit μ-law encoding according
	// to G.711
	//   "ALAW" - 8-bit A-law encoding according to G.711.
	//   "MP3" - The default MP3 encoding is 32kbps. Text-to-speech audio at
	// this bit rate has audible compression artifacts and is not
	// recommended. Please use OPUS_IN_OGG instead.
	//   "MP3_64KBPS" - MP3 at 64kbps sounds nearly identical to
	// uncompressed for 24kHz TTS audio, and sounds similar to OPUS_IN_OGG.
	//   "SPEEX" - Raw speex stream with each frame concatenated together.
	// The size of each frame will need to be communciated separately.
	// Variable bitrate encoding is unsupported using this output type.
	//   "SPEEX_WITH_HEADER_BYTE" - Similar to SPEEX, this mode will
	// concatenate together the speex frames. However, each frame will have
	// prepended a single byte that describes the length of the following
	// frame.
	//   "SPEEX_IN_OGG" - In this case, we'll wrap the speex contents in an
	// ogg container, resulting in a more generally decode-able format but
	// one with more storage overhead.
	//   "OPUS_IN_OGG" - Opus encoded audio wrapped in an ogg container. The
	// result will be a file which can be played natively on Android, and in
	// browsers (at least Chrome and Firefox). The quality of the encoding
	// is considerably higher than MP3 when using the same bitrate. At the
	// moment, this defaults to 32kbps but the TTS team reserves the right
	// to adjust the bitrate to provide the best experience.
	//   "OPUS_24KBPS_IN_OGG" - Opus encoded audio in 24kbps wrapped in an
	// ogg container. The result will be a file which can be played natively
	// on Android, and in browsers while reducing data consumption slightly.
	//   "OPUS_16KBPS_IN_OGG" - The following bitrates for Opus below 24kbps
	// are here only for special usecases; they result in a significant
	// reduction in quality. Please get in touch with the TTS team if you
	// think you might have a valid usecase. NOTE(staz): These bitrates are
	// not officially supported. TTS is to be served at a minimum of 24kbps
	// everywhere, including in NBU countries. See b/137234032#comment13 on
	// why lower bitrates don't help in tangible ways even in NBU markets.
	//   "OPUS_12KBPS_IN_OGG"
	//   "OPUS_16KBPS_CONTAINERLESS" - Opus encoded audio using the
	// specified bitrate without a container such as Ogg, RTP or WebM. The
	// response is a stream which can be played natively on low powered
	// wearable devices. Delivered as multiple frames per S3 response. These
	// frames need to be carefully byte-delimited (constant bitrate) by the
	// client. They use a statically defined frame duration of 20ms. Frame
	// size per bit-rate: 16kbps: each frame is of size 40 bytes 24kbps:
	// each frame is of size 60 bytes 32kbps: each frame is of size 80 bytes
	//   "OPUS_24KBPS_CONTAINERLESS"
	//   "OPUS_32KBPS_CONTAINERLESS"
	TtsEncoding string `json:"ttsEncoding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiGacsCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiGacsCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiGcmCapabilities: Capabilities related to GCM.
type AssistantApiGcmCapabilities struct {
	// GcmRegistrationId: GCM registration id for the device. Used to pass
	// messages to the device.
	GcmRegistrationId string `json:"gcmRegistrationId,omitempty"`

	// SupportsAssistantGcm: Assistant supports GCM on the device. ClientOps
	// can be sent to it over GCM and will be executed.
	SupportsAssistantGcm bool `json:"supportsAssistantGcm,omitempty"`

	// SupportsClientInputOverGcm: If it is set to true, then it indicates
	// to server that device is capable of receiving a GCM payload with
	// serialized client input. The client input will be sent back to
	// Assistant Server over conversation protocol.
	SupportsClientInputOverGcm bool `json:"supportsClientInputOverGcm,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GcmRegistrationId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GcmRegistrationId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiGcmCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiGcmCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiGestureCapabilities: The gesture capabilities related to
// Selina. Next ID: 4
type AssistantApiGestureCapabilities struct {
	// GestureSensing: Whether Gesture is supported. When false, override
	// the value for tap and omniswipe.
	GestureSensing bool `json:"gestureSensing,omitempty"`

	// OmniswipeGestureCapable: Whether omniswipe is supported
	OmniswipeGestureCapable bool `json:"omniswipeGestureCapable,omitempty"`

	// TapGestureCapable: Whether tap is supported
	TapGestureCapable bool `json:"tapGestureCapable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GestureSensing") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GestureSensing") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiGestureCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiGestureCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiGuestAccessOutput: DEPRECATED: Use AccessControlOutput
// instead. Access settings for guests.
type AssistantApiGuestAccessOutput struct {
	// Possible values:
	//   "UNKNOWN_GUEST_ACCESS"
	//   "USE_DEFAULT_ACCOUNT_FOR_GUEST" - Guests can access content using
	// linked users' account.
	//   "DISABLED_FOR_GUEST" - No access for guests.
	GuestAccessOnYoutube string `json:"guestAccessOnYoutube,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GuestAccessOnYoutube") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GuestAccessOnYoutube") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiGuestAccessOutput) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiGuestAccessOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiImmersiveCanvasSupport struct {
	// ConfirmationMessageSupported: Whether the client supports
	// confirmation messages in Immersive Canvas actions.
	ConfirmationMessageSupported bool `json:"confirmationMessageSupported,omitempty"`

	// PauseSignalSupported: Whether the client support canvas pause signal.
	// If true, the Assistant Server will send a signal when canvas
	// transitioning to pause mode.
	PauseSignalSupported bool `json:"pauseSignalSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ConfirmationMessageSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ConfirmationMessageSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiImmersiveCanvasSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiImmersiveCanvasSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiJwnCapabilities: These capabilities are used to determine
// the jwn libraries and their versions that are present on the client.
type AssistantApiJwnCapabilities struct {
	// LibrariesVersionMap: The name and version of the jwn libraries
	// currently stored on the client. These are the same that the server
	// communicated when the library was first sent down.
	LibrariesVersionMap map[string]string `json:"librariesVersionMap,omitempty"`

	// SupportedCompressionMode: Compression algorithms supported on the
	// client. Server can choose one of these to compress WhatsNext
	// Javascript programs and libraries.
	//
	// Possible values:
	//   "NONE" - jwn_program is not in compressed state.
	//   "BROTLI" - Brotli (google3/third_party/brotli) compression used.
	// Recommended compressor for Javascript.
	//   "FLATE" - Flate (google3/util/compression/flate) compression used.
	SupportedCompressionMode []string `json:"supportedCompressionMode,omitempty"`

	// SupportsJwn: Whether the client supports running jwn code.
	SupportsJwn bool `json:"supportsJwn,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LibrariesVersionMap")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LibrariesVersionMap") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiJwnCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiJwnCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiLensPerceptionCapabilities: Capabilities related to Lens
// Perception, i.e. image understanding. See
// go/loa-lens-device-capabilities. Next ID: 6
type AssistantApiLensPerceptionCapabilities struct {
	// HasLensPerception: Whether the device supports Lens Perception.
	HasLensPerception bool `json:"hasLensPerception,omitempty"`

	// IsLensDirectIntentAvailable: Indicates whether Lens supports Lens
	// Direct Intent (go/lensdirectintent).
	IsLensDirectIntentAvailable bool `json:"isLensDirectIntentAvailable,omitempty"`

	// IsLensLiveViewfinderAvailable: Indicates whether Lens supports Live
	// view-finder experience.
	IsLensLiveViewfinderAvailable bool `json:"isLensLiveViewfinderAvailable,omitempty"`

	// IsLensPostCaptureAvailable: Indicates whether Lens supports
	// Post-capture experience with an image payload.
	IsLensPostCaptureAvailable bool `json:"isLensPostCaptureAvailable,omitempty"`

	// LensCapabilities: Contains the capabilities that Lens can support.
	LensCapabilities *AssistantApiLensPerceptionCapabilitiesLensCapabilities `json:"lensCapabilities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HasLensPerception")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HasLensPerception") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLensPerceptionCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLensPerceptionCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilities: The set of
// capabilities that Lens can support. This is the Assistant proto
// representation of Lens capabilities defined at
// j/c/g/android/apps/gsa/search/shared/service/proto/lens_service_event.
// proto Next ID: 7
type AssistantApiLensPerceptionCapabilitiesLensCapabilities struct {
	// Dining: The presence of this message means that Dining is supported.
	Dining *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining `json:"dining,omitempty"`

	// Education: The presence of this message means that Education is
	// supported.
	Education *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation `json:"education,omitempty"`

	// Outdoor: The presence of this message means that Outdoor is
	// supported.
	Outdoor *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor `json:"outdoor,omitempty"`

	// Shopping: The presence of this message means that Shopping is
	// supported.
	Shopping *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping `json:"shopping,omitempty"`

	// Text: The presence of this message means that intenting directly into
	// the text filter is supported.
	Text *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText `json:"text,omitempty"`

	// Translate: The presence of this message means that Translation is
	// supported.
	Translate *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate `json:"translate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dining") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dining") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining: Dining
// recognition capability. For example popular dishes on a given
// restaurant menu image.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining struct {
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation:
// Education recognition capability.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation struct {
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor:
// Outdoor place recognition capability. For example recognizing
// storefronts.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor struct {
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping:
// Shopping recognition capability.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping struct {
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText: Text
// recognition capability.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText struct {
	// IsTextToSpeechSupported: Indicates whether text-to-speech is
	// supported.
	IsTextToSpeechSupported bool `json:"isTextToSpeechSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsTextToSpeechSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsTextToSpeechSupported")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate:
// Translation capability.
type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate struct {
	// SupportedLanguageTags: The list of language IETF BCP 47 tags that are
	// supported. See the full details in the comment on the equivalent
	// field in:
	// http://google3/java/com/google/android/apps/gsa/search/shared/service/proto/lens_service_event.proto;l=55;rcl=355512559
	SupportedLanguageTags []string `json:"supportedLanguageTags,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportedLanguageTags") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SupportedLanguageTags") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiLiveTvChannelCapabilities struct {
	// ChannelsByProvider: A list of channel providers each of which
	// provides a list of its channels.
	ChannelsByProvider []*AssistantApiLiveTvChannelCapabilitiesChannelsByProvider `json:"channelsByProvider,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChannelsByProvider")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelsByProvider") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLiveTvChannelCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLiveTvChannelCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiLiveTvChannelCapabilitiesChannelsByProvider struct {
	// Channels: A list of channels provided by this input. Keep the
	// performance impact in mind when the number/size of the channels is
	// large. When there are too many channels, consider stripping out some
	// data.
	Channels []*AssistantApiLiveTvChannelCapabilitiesLiveTvChannel `json:"channels,omitempty"`

	// InputId: An identifier to identify the input source. For example for
	// TIF based channels, this will be the TIF input ID to differentiate
	// different tuner apps. See https://source.android.com/devices/tv
	InputId string `json:"inputId,omitempty"`

	// ProviderType: Type of provider who provides this channel input.
	//
	// Possible values:
	//   "UNKNOWN_PROVIDER_TYPE"
	//   "OTT_PROVIDER" - OTT providers providing live tv contents like
	// Sling, Youtube TV.
	//   "TUNER" - TV Tuner apps providing live tv contents.
	ProviderType string `json:"providerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Channels") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Channels") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLiveTvChannelCapabilitiesChannelsByProvider) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLiveTvChannelCapabilitiesChannelsByProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiLiveTvChannelCapabilitiesLiveTvChannel struct {
	// ChannelId: Unique channel identifier.
	ChannelId string `json:"channelId,omitempty"`

	// ChannelName: A list of channel names and synonyms.
	ChannelName []string `json:"channelName,omitempty"`

	// ChannelNumber: Channel number displayed to user. Optional.
	ChannelNumber string `json:"channelNumber,omitempty"`

	// Deeplink: A deep link into the Live player app that tunes to this
	// channel.
	Deeplink string `json:"deeplink,omitempty"`

	// Mid: KG mid of the channel if it exists in KG.
	Mid string `json:"mid,omitempty"`

	// NetworkMid: Network KG mid of the channel if it exists in KG
	NetworkMid string `json:"networkMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChannelId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLiveTvChannelCapabilitiesLiveTvChannel) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLiveTvChannelCapabilitiesLiveTvChannel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiLiveTvProvider struct {
	// ProviderInfo: Contains detailed provider information such as android
	// app package name.
	ProviderInfo *AssistantApiCoreTypesProvider `json:"providerInfo,omitempty"`

	// ProviderKey: An provider enum string for OTT providers. The available
	// key can be found in go/ump-provider-enum For Tuner provider, the
	// provider key would be an ID the tuner app uploaded from TIF. See
	// https://source.android.com/devices/tv
	ProviderKey string `json:"providerKey,omitempty"`

	// Possible values:
	//   "UNKNOWN_PROVIDER_TYPE"
	//   "OTT_PROVIDER" - OTT providers providing live tv contents like
	// Sling, Youtube TV.
	//   "TUNER" - TV Tuner apps providing live tv contents.
	ProviderType string `json:"providerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProviderInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProviderInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLiveTvProvider) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLiveTvProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiLocationCapabilities struct {
	GpsAvailable bool `json:"gpsAvailable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GpsAvailable") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GpsAvailable") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLocationCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLocationCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiLoggingOnlyData: Data which is produced for logging and
// debugging. Servers MUST NOT use this for any other purposes, such as
// branching on it. Next ID: 15
type AssistantApiLoggingOnlyData struct {
	// AccountIndex: The index of the account on the device. Useful when
	// there are multiple accounts on a device such as distinguishing
	// primary user data from secondary users. There is no guarantee that
	// this is a stable number but is relatively stable in practice.
	AccountIndex int64 `json:"accountIndex,omitempty"`

	// AcpVersion: A user-readable string describing the ACP version
	// (go/acp-version) of the client app used by the user to originate the
	// conversation.
	AcpVersion string `json:"acpVersion,omitempty"`

	// AndroidId: Random identifier assigned to Android mobile devices.
	// Older logs may have previously stored other kinds of android IDs in
	// this field, but all current logs should use the GServices Id. See
	// go/androidids.
	AndroidId int64 `json:"androidId,omitempty,string"`

	// AppVersion: A user-readable string describing the version of the
	// client app used by the user to originate the conversation.
	AppVersion string `json:"appVersion,omitempty"`

	// AssistantSettingsSource: An enum specifying when was this ATV
	// AssistantSettings entry initially created.
	//
	// Possible values:
	//   "NOT_SET" - LINT.IfChange
	//   "FIRST_SCREEN_DEVICE_OOBE" - Created during ATV Device
	// OOBE(setupwraith)
	//   "FIRST_SCREEN_KATNISS_OOBE" - Created within Katniss(Assistant
	// client on TV)
	//   "FIRST_SCREEN_DELEGATION_OOBE" - Created within Katniss delegation
	// path
	//   "FIRST_SCREEN_FIXER_JOB" - Created by fix settings job in katniss.
	//   "FIRST_SCREEN_FCM_JOB" - Created by FCM jobs in katnisss.
	//   "FIRST_SCREEN_HOME_GRAPH_JOB" - Created by home graph jobs in
	// katniss.
	//   "FIRST_SCREEN_PERSONAL_BIT" - Created by enable personal bit button
	// in Settings UI
	//   "FIRST_SCREEN_VOICE_INPUT_BIT" - Created by enable voice input bit
	// button in Settings UI
	//   "FIRST_SCREEN_OTHER" - Created by other parts in katniss
	//   "SECOND_SCREEN_AGSA" - Created by AGSA
	//   "SECOND_SCREEN_GHA_IOS" - Created by Google Home App IOS
	//   "SECOND_SCREEN_GHA_ANDROID" - Created by Google Home App Android
	// LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.
	// proto)
	AssistantSettingsSource string `json:"assistantSettingsSource,omitempty"`

	// BoardName: The type of board used by manufacturer for this device
	BoardName string `json:"boardName,omitempty"`

	// BoardRevision: The revision of board used
	BoardRevision string `json:"boardRevision,omitempty"`

	// CastAssistantSettingLinkingResult: This field records the linking
	// status between Assistant setting entry and Cast setting entry.
	// Currently only ATV surface populates this field for profiling
	// purpose.
	CastAssistantSettingLinkingResult *AssistantApiCastAssistantSettingLinkingResult `json:"castAssistantSettingLinkingResult,omitempty"`

	// DeviceModel: A user-readable string describing the device's hardware
	// platform.
	DeviceModel string `json:"deviceModel,omitempty"`

	// EmbedderBuildInfo: Any relevant info concerning the build options of
	// the embedder (that is the software which runs as the 'driver' of an
	// Assistant library, such as libassistant. the embedder is typically
	// built by a third party)
	EmbedderBuildInfo string `json:"embedderBuildInfo,omitempty"`

	// InitialAppVersion: A string recording the app version that is
	// initially used to created this settings entry.
	InitialAppVersion string `json:"initialAppVersion,omitempty"`

	// MdnsDisplayName: default display name of device over mdns. This is
	// specified at the factory, not specified by the user.
	MdnsDisplayName string `json:"mdnsDisplayName,omitempty"`

	// PlatformBuild: A user-readable string describing the device's
	// software platform.
	PlatformBuild string `json:"platformBuild,omitempty"`

	// VirtualReleaseChannel: A string describing device's release channel.
	// For cast devices, the string will look like "qa-beta-channel",
	// "eng-no-update", etc.
	VirtualReleaseChannel string `json:"virtualReleaseChannel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiLoggingOnlyData) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiLoggingOnlyData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiMediaControlSupport struct {
	// SkipConfirmationsWhilePlaying: Whether to prevent confirmations
	// (text, tts) for media control actions while media is playing so that
	// the media session is not interrupted.
	SkipConfirmationsWhilePlaying bool `json:"skipConfirmationsWhilePlaying,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SkipConfirmationsWhilePlaying") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SkipConfirmationsWhilePlaying") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiMediaControlSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiMediaControlSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiMessageCapabilities struct {
	// FallbackToTetheredDeviceAppCapabilities: If true, APP_ID queries
	// initiated by this device should fall back to execution on the
	// tethered device if it's available and if the primary device cannot
	// perform the action (e.g. due to the app not being installed).
	FallbackToTetheredDeviceAppCapabilities bool `json:"fallbackToTetheredDeviceAppCapabilities,omitempty"`

	// SupportedRecipientTypes: Should only be checked if nonempty.
	//
	// Possible values:
	//   "UNSPECIFIED_ENDPOINT"
	//   "PHONE_NUMBER"
	//   "EMAIL_ADDRESS"
	//   "APP_UNIQUE_ID"
	//   "EMERGENCY_PHONE_NUMBER"
	//   "VOICEMAIL"
	SupportedRecipientTypes []string `json:"supportedRecipientTypes,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "FallbackToTetheredDeviceAppCapabilities") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "FallbackToTetheredDeviceAppCapabilities") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiMessageCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiMessageCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiMovementCapabilities struct {
	// Mobility: Indicates how much the device moves around. E.g., TV has a
	// low mobility level, while Auto has a very high level.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "LOW"
	//   "MEDIUM"
	//   "HIGH"
	//   "VERY_HIGH"
	Mobility string `json:"mobility,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mobility") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mobility") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiMovementCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiMovementCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiNotificationOutputRestrictions struct {
	OptOutState *AssistantApiNotificationOutputRestrictionsOptOutState `json:"optOutState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OptOutState") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OptOutState") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiNotificationOutputRestrictions) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiNotificationOutputRestrictions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiNotificationOutputRestrictionsOptOutState: Per
// category/category group notification opt out settings.
type AssistantApiNotificationOutputRestrictionsOptOutState struct {
	CategoryGroupState []*AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState `json:"categoryGroupState,omitempty"`

	CategoryState []*AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState `json:"categoryState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryGroupState")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryGroupState") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiNotificationOutputRestrictionsOptOutState) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiNotificationOutputRestrictionsOptOutState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "SYSTEM" - This is required, do not remove. Group for notification
	// categories that should not be displayed at all.
	//   "PROMOTIONAL" - Promotional notifications.
	//   "SUBSCRIPTIONS" - Notifications for Subscriptions.
	//   "PROACTIVE" - Proactive notifications
	//   "REMINDERS" - Reminders (including assigned reminders).
	//   "EXTENDED_ANSWERS" - Cross surface answers.
	//   "FEEDBACK" - Assistant asking for feedback from users.
	//   "ACTIONS_ON_GOOGLE" - AoG 3P notifications.
	//   "DUO_MISSED_CALLS" - Missed call notifications from DUO.
	//   "HOME_AUTOMATION" - Home Automation notifications.
	//   "GETTING_AROUND" - Getting around notifications.
	//   "UNIT_TESTING" - Always keep at the end.
	CategoryGroup string `json:"categoryGroup,omitempty"`

	// Possible values:
	//   "OPTED_IN" - Default value is intentionally set to opted in as all
	// categories/category groups are enabled by default.
	//   "OPTED_OUT"
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryGroup") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryGroup") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "SYSTEM_REQUIRED_LOW_PRIORITY" - Categories required by Assistant &
	// won't be shown on settings page.
	//   "SYSTEM_REQUIRED_HIGH_PRIORITY"
	//   "DISCOVERY" - Promotional discovery notifications.
	//   "REALTIME_PROMOTIONAL"
	//   "SUBSCRIPTIONS" - Subscriptions (both event and time based).
	//   "FLIGHT_UPDATES" - Proactive notification categories.
	//   "TRANSPORT_UPDATES"
	//   "BILL_UPDATES"
	//   "PACKAGE_DELIVERY_UPDATES"
	//   "EVENT_UPDATES"
	//   "DUE_DATE_UPDATES"
	//   "CELEBRATION_UPDATES"
	//   "ROUTINE_UPDATES"
	//   "TASK_SUGGESTIONS"
	//   "AT_A_PLACE"
	//   "APP_RECOMMENDATIONS"
	//   "TRAVEL_UPDATES"
	//   "REMINDER_DUE" - Reminder notification categories.
	//   "NEW_REMINDER_ASSIGNMENT"
	//   "ASSIGNED_REMINDER_DUE" - We're probably going to deprecate
	// ASSIGNED_REMINDER_DUE.
	//   "ROUTINE_SETTINGS_UPDATES" - Routine related notification
	// categories.
	//   "MAPS_OR_DIRECTIONS" - Extended answer (cross device) notification
	// categories.
	//   "MOVIE_SHOWTIMES"
	//   "SPORTS_UPDATES"
	//   "NEWS_UPDATES"
	//   "SONGS_AND_ARTISTS"
	//   "TRANSLATIONS"
	//   "ANSWERS_TO_QUESTIONS"
	//   "SETTINGS_LINKS"
	//   "RESERVATION_UPDATES"
	//   "DEPRECATED_FEEDBACK_REQUESTS" - Feedback requests from Assistant.
	//   "FEEDBACK_REQUESTS"
	//   "ACTIONS_ON_GOOGLE" - Actions on Google (Third party)
	// notifications.
	//   "DUO_MISSED_CALLS" - Missed call notifications from DUO.
	//   "HOME_AUTOMATION" - Home Automation related notifications.
	//   "TIME_TO_LEAVE" - Getting around notifications.
	//   "COMMUTE"
	//   "OCCASIONALLY_REPEATED_ACTIONS" - Repeated actions. Having two
	// categories for occasionally and frequently repeated ones since the
	// FREQUENTLY_REPEATED_ACTIONS are buzzing.
	//   "FREQUENTLY_REPEATED_ACTIONS"
	//   "ASPIRE" - Assistant Aspire notifications.
	//   "ASSISTANT_DRIVING_MODE"
	//   "DISCOVERY_DEFAULT_PRIORITY" - Discovery notifications that shows
	// in status bar but doesn't make noise.
	//   "HOLIDAY_REMINDERS"
	//   "CROSS_DEVICE_TIMER"
	//   "LIVE_CARD" - Live cards, these are not real notifications but live
	// cards shown on Home App.
	//   "ASYNC_ACTION" - These are not really notifications, rather push
	// messages to initiate an asynchronous action.
	//   "UNIT_TESTING" - Always keep at the end.
	Category string `json:"category,omitempty"`

	// Possible values:
	//   "OPTED_IN" - Default value is intentionally set to opted in as all
	// categories/category groups are enabled by default.
	//   "OPTED_OUT"
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiOemCapabilities: Encapsulates the action capabilities of
// the OEM device. This data is merged from Device Model lookup,
// per-device registration, and per-request context. This data is sent
// to NLU layer for query understanding.
type AssistantApiOemCapabilities struct {
	// CloudCapability: The OEM Cloud execution capability of this device,
	// containing routing details for cloud fulfillment.
	CloudCapability *AssistantDevicesPlatformProtoCloudCapability `json:"cloudCapability,omitempty"`

	// CloudDeviceCapabilities: If fulfillment is done via 3P cloud and 3P
	// supports device capabilities, this field will be set.
	CloudDeviceCapabilities googleapi.RawMessage `json:"cloudDeviceCapabilities,omitempty"`

	// DeviceModelId: Device Model Id from DeviceModelPackage.
	DeviceModelId string `json:"deviceModelId,omitempty"`

	// DeviceModelRevisionId: Device Model Revision Id from
	// DeviceModelPackage.
	DeviceModelRevisionId int64 `json:"deviceModelRevisionId,omitempty,string"`

	// DeviceSpecificData: Opaque supported action data related to a
	// specific domain of devices, for example for car.
	// go/car-talk-registration-model
	DeviceSpecificData string `json:"deviceSpecificData,omitempty"`

	// InternalCapability: Internal-only config containing metadata about
	// the Device Model, for example to control the ranking behavior.
	InternalCapability *AssistantDevicesPlatformProtoInternalCapability `json:"internalCapability,omitempty"`

	// ThirdPartyActionConfig: 3P Action Metadata, populated from the Device
	// Model lookup and the client request parameters. For example, an
	// Assistant SDK request would have the billed project id of the
	// Assistant request added here in order to enable any Device Actions
	// developed using the same Google Cloud project. This data is sent to
	// Service Engine to mask triggering for Device Actions.
	ThirdPartyActionConfig *AssistantApiThirdPartyActionConfig `json:"thirdPartyActionConfig,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CloudCapability") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudCapability") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiOemCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiOemCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiOnDeviceAssistantCapabilities: Definitions of on-device
// assistant capabilities.
type AssistantApiOnDeviceAssistantCapabilities struct {
	// IsLocalNetworkArbitrationSupported: Capabilities related to local
	// network arbitration (go/local-network-arbitration). Indicates if the
	// device is capable of being a host device in the LAN whiling doing
	// local network arbitration.
	IsLocalNetworkArbitrationSupported bool `json:"isLocalNetworkArbitrationSupported,omitempty"`

	// IsOnDeviceArbitrationSupported: Capabilities related to on-device
	// arbitration(go/arbitration-on-device).
	IsOnDeviceArbitrationSupported bool `json:"isOnDeviceArbitrationSupported,omitempty"`

	// IsOnDeviceAssistantSupported: Indicates if on-device assistant is
	// enabled on this device. Example usecases: NGA (go/nga) or Marble
	// (go/marble).
	IsOnDeviceAssistantSupported bool `json:"isOnDeviceAssistantSupported,omitempty"`

	// IsOnDeviceUnderstandingSupported: This may be used by NGA. E.g. if
	// understanding happens on device, we can have more aggressive logic
	// when fulfilling some features on the server side, like teleport.
	IsOnDeviceUnderstandingSupported bool `json:"isOnDeviceUnderstandingSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsLocalNetworkArbitrationSupported") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "IsLocalNetworkArbitrationSupported") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiOnDeviceAssistantCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiOnDeviceAssistantCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiOnDeviceSmartHomeCapabilities: Definitions of on-device
// Smart Home capabilities. Next ID: 2
type AssistantApiOnDeviceSmartHomeCapabilities struct {
	// IsOnDeviceSmartHomeSupported: Master bit for on-device Smart Home
	// features.
	IsOnDeviceSmartHomeSupported bool `json:"isOnDeviceSmartHomeSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsOnDeviceSmartHomeSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "IsOnDeviceSmartHomeSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiOnDeviceSmartHomeCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiOnDeviceSmartHomeCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiOnDeviceStorageCapabilities: The on-device storage
// capabilities found on the device.
type AssistantApiOnDeviceStorageCapabilities struct {
	// IsSupported: Determines if an on-device storage is supported.
	IsSupported bool `json:"isSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsSupported") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsSupported") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiOnDeviceStorageCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiOnDeviceStorageCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiOutputRestrictions: These are user configurable
// permissions representing what the device is allowed to output. Next
// ID: 11
type AssistantApiOutputRestrictions struct {
	// AccessControlOutput: Access settings for all providers.
	AccessControlOutput *AssistantApiAccessControlOutput `json:"accessControlOutput,omitempty"`

	// GooglePhotoContent: The type of Google Photo content which the device
	// can output.
	//
	// Possible values:
	//   "ALL_PHOTO_CONTENT" - All content can be output, including contents
	// from restriced categories (e.g. violent, racy).
	//   "NO_RESTRICTED_PHOTO_CONTENT" - Only content from non-restricted
	// categories can be output.
	GooglePhotoContent string `json:"googlePhotoContent,omitempty"`

	// GuestAccessOutput: DEPRECATED: Use access_control_output instead.
	// Access settings for guests.
	GuestAccessOutput *AssistantApiGuestAccessOutput `json:"guestAccessOutput,omitempty"`

	// PersonalData: The level of personal data which the device can output.
	// See go/personal-readout for detail.
	//
	// Possible values:
	//   "PERSONAL_DATA_OUTPUT_UNKNOWN" - UNKNOWN.
	//   "ALL_PERSONAL_DATA_WITH_PROACTIVE" - DO NOT USE. This field has
	// been deprecated.
	//   "ALL_PERSONAL_DATA" - All personal data can be output.
	//   "NO_PERSONAL_DATA" - No personal data can be output.
	PersonalData string `json:"personalData,omitempty"`

	// ProactiveNotificationOutput: This controls if the server can
	// proactively send notification to users, and it does not affect
	// scenarios that users ask for information. The notification may
	// include TTS and lights. It could be only lights for chirp.
	//
	// Possible values:
	//   "UNKNOWN_PROACTIVE_NOTIFICATION" - The setting for proactive
	// notification is unknown
	//   "NO_PROACTIVE_NOTIFICATION" - No proactive notification can be
	// output
	//   "ALL_PROACTIVE_NOTIFICATIONS" - All proactive notifications can be
	// output
	ProactiveNotificationOutput string `json:"proactiveNotificationOutput,omitempty"`

	// ProactiveOutput: Restrictions on displaying and interacting with
	// content on proactive surfaces (e.g. Dragonglass home screen). Note:
	// NEVER access this field of OutputRestrictions directly, use the code
	// in assistant/assistant_server/settings/device/device_settings_util.h
	// instead.
	ProactiveOutput *AssistantApiProactiveOutput `json:"proactiveOutput,omitempty"`

	// YoutubeAutoplayRestriction: Whether YouTube autoplay is allowed for
	// queries from the user to this device. See
	// go/assistant-youtube-settings for details.
	//
	// Possible values:
	//   "AUTOPLAY_RESTRICTION_UNSPECIFIED"
	//   "AUTOPLAY_ALLOWED" - Autoplay can be applied to youtube queries to
	// the device from this user
	//   "AUTOPLAY_DISABLED" - Autoplay must not be enabled for youtube
	// queries to the device from this user
	YoutubeAutoplayRestriction string `json:"youtubeAutoplayRestriction,omitempty"`

	// YoutubeContent: The type of YouTube content which the device can
	// output.
	//
	// Possible values:
	//   "ALL_YOUTUBE_CONTENT" - All content can be output.
	//   "NO_RESTRICTED_CONTENT" - No restricted content can be output.
	YoutubeContent string `json:"youtubeContent,omitempty"`

	// YoutubeTvContent: The type of YouTube TV content which the device can
	// output.
	//
	// Possible values:
	//   "ALL_YOUTUBE_TV_CONTENT" - All YouTube TV content can be output.
	//   "NO_RESTRICTED_YOUTUBE_TV_CONTENT" - No restricted YouTube TV
	// content can be output.
	YoutubeTvContent string `json:"youtubeTvContent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessControlOutput")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessControlOutput") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiOutputRestrictions) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiOutputRestrictions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiProactiveOutput: Next ID: 7
type AssistantApiProactiveOutput struct {
	// AllowAllPersonalData: Allows displaying all personal data on
	// proactive surfaces with no face match capability.
	AllowAllPersonalData bool `json:"allowAllPersonalData,omitempty"`

	// AndroidTvAssistantSettingsSource: For ANDROID_TV devices, the
	// location that this setting was last changed from. Note: this
	// structure allows to extend to more per-vertical bits in the future.
	//
	// Possible values:
	//   "NOT_SET" - LINT.IfChange
	//   "FIRST_SCREEN_DEVICE_OOBE" - Created during ATV Device
	// OOBE(setupwraith)
	//   "FIRST_SCREEN_KATNISS_OOBE" - Created within Katniss(Assistant
	// client on TV)
	//   "FIRST_SCREEN_DELEGATION_OOBE" - Created within Katniss delegation
	// path
	//   "FIRST_SCREEN_FIXER_JOB" - Created by fix settings job in katniss.
	//   "FIRST_SCREEN_FCM_JOB" - Created by FCM jobs in katnisss.
	//   "FIRST_SCREEN_HOME_GRAPH_JOB" - Created by home graph jobs in
	// katniss.
	//   "FIRST_SCREEN_PERSONAL_BIT" - Created by enable personal bit button
	// in Settings UI
	//   "FIRST_SCREEN_VOICE_INPUT_BIT" - Created by enable voice input bit
	// button in Settings UI
	//   "FIRST_SCREEN_OTHER" - Created by other parts in katniss
	//   "SECOND_SCREEN_AGSA" - Created by AGSA
	//   "SECOND_SCREEN_GHA_IOS" - Created by Google Home App IOS
	//   "SECOND_SCREEN_GHA_ANDROID" - Created by Google Home App Android
	// LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.
	// proto)
	AndroidTvAssistantSettingsSource string `json:"androidTvAssistantSettingsSource,omitempty"`

	// HealthAndFitnessProactive: Allows displaying Health and Fitness
	// content on proactive surfaces. This is a sub bit of the device-wide
	// PR bit - the device-wide PR bit must be enabled AND this vertical sub
	// bit must be enabled for H&F content to be shown. This bit will be
	// available on all surfaces that have the proactive-bit enabled. If the
	// proactive-bit is not enabled, then we do not show health and fitness
	// content at all (or even allow access to this setting).
	//
	// Possible values:
	//   "NO_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT" - No health and fitness
	// proactive content can be output
	//   "ALL_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT" - All health and fitness
	// proactive content can be output
	HealthAndFitnessProactive string `json:"healthAndFitnessProactive,omitempty"`

	// PhotosProactive: Allows displaying photos content on Dragonglass
	// proactive surfaces. This is a sub bit of the device-wide PR bit - the
	// device-wide PR bit must be enabled AND this vertical sub bit must be
	// enabled for photos content to be shown on Dragonglass surfaces. This
	// bit will be available on all Dragonglass surfaces that have the
	// proactive-bit enabled. If the proactive-bit is not enabled or it's
	// not a Dragonglass surface, then we do not show proactive photos
	// content at all, nor allow access to this setting. See
	// go/opa-photos-sg-settings for more details.
	//
	// Possible values:
	//   "UNKNOWN_PHOTOS_PROACTIVE_OUTPUT"
	//   "NO_PHOTOS_PROACTIVE_OUTPUT" - No photos proactive content can be
	// output. This indicates that user has explicitly disabled photos
	// proactive settings.
	//   "ALL_PHOTOS_PROACTIVE_OUTPUT" - All photos proactive content can be
	// output. This indicates that user has explicitly enabled photos
	// proactive settings.
	PhotosProactive string `json:"photosProactive,omitempty"`

	// SupportsProactiveOutput: Whether a device supports proactive output.
	// Note that this is assumed to be true for all Smart Display devices,
	// but surfaces that newly start supporting proactive_output should set
	// this bit.
	SupportsProactiveOutput bool `json:"supportsProactiveOutput,omitempty"`

	// UserMatchProactive: Settings for displaying personal data on
	// proactive surfaces with face match capability.
	//
	// Possible values:
	//   "UNKNOWN_USER_MATCH_PROACTIVE"
	//   "NEVER_SHOW" - Never show proactive content.
	//   "ONLY_SHOW_ON_USER_MATCH" - Only show proactive content on Face
	// Match.
	//   "ALWAYS_SHOW" - Always show proactive content.
	UserMatchProactive string `json:"userMatchProactive,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowAllPersonalData") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowAllPersonalData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiProactiveOutput) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiProactiveOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiProtobuf: Also known as "Extensions Without Extensions"
// or "The Poor Man's Any", this simple proto is used to transmit
// arbitrary protocol buffers over the wire. Unlike extensions: - It
// does not require the proto type to be compiled into the binary.
// (Useful so that the proto declaration can be inside the conversation
// package) - It is compatible with all versions of proto, including
// proto3 and the wack-tastic version used on ChromecastOS. Server
// libraries for dealing with it live in
// google3/assistant/protocol/protobuf_lib.h.
type AssistantApiProtobuf struct {
	// ProtobufData: The serialized protocol buffer.
	ProtobufData string `json:"protobufData,omitempty"`

	// ProtobufType: The type of the protocol buffer to use. This must be a
	// resolvable name (Namespace.ProtoName) and refer to a proto which is
	// either compiled in to both client and server (e.g. a base proto type)
	// or to one which is part of the conversation package.
	ProtobufType string `json:"protobufType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProtobufData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProtobufData") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiProtobuf) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiProtobuf
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiRecurrence: Date-based recurrences specify repeating
// events. Conceptually, a recurrence is a (possibly unbounded) sequence
// of dates on which an event falls, described by a list of constraints.
// A date is in a recurrence if and only if it satisfies all of the
// constraints. Note that devices may support some constraints, but not
// all. IMPORTANT: The definition of Recurrence proto is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead.
type AssistantApiRecurrence struct {
	// Begin: The first day of the recurrence. If begin is not set, then the
	// reminder will start infinitely in the past.
	Begin *AssistantApiDate `json:"begin,omitempty"`

	// BlacklistedRanges: A list of blacklisted dates to skip the alarm on.
	BlacklistedRanges []*AssistantApiRecurrenceDatetimeRange `json:"blacklistedRanges,omitempty"`

	// DayOfMonth: Specifies the date in a month. For example, if
	// day_of_month is 15, then it represent the 15th day of the specified
	// month.
	DayOfMonth []int64 `json:"dayOfMonth,omitempty"`

	// DayOfWeek: Specifies a weekly or daily recurrence. Constraint: The
	// date falls on one of these days of the week, in 0...6
	// (Sunday...Saturday).
	DayOfWeek []int64 `json:"dayOfWeek,omitempty"`

	// End: The last day of the recurrence.
	End *AssistantApiDate `json:"end,omitempty"`

	// Every: Multiplier on the frequency of the recurrence. Use this to
	// specify patterns that recur every X days, months, years, etc.
	// Example: [remind me to call mom every 2nd week]. Default is 1 (every
	// day, every month, every year).
	Every int64 `json:"every,omitempty"`

	// MonthOfYear: Specifies the month in a year. Constrain: the month
	// falls on one of these months, in 1, 2, ... 12 (January...December).
	MonthOfYear []int64 `json:"monthOfYear,omitempty"`

	// NumOccurrences: The number of occurrences after which the recurrence
	// should end.
	NumOccurrences int64 `json:"numOccurrences,omitempty"`

	// WeekOfMonth: Specifies the index of week in a month. For example, the
	// second Tuesday every month, in this case, week_of_month should be 2.
	WeekOfMonth []int64 `json:"weekOfMonth,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiRecurrenceDatetimeRange: A representation of a range of
// time with start and end datetime specified.
type AssistantApiRecurrenceDatetimeRange struct {
	// EndDate: End date of the range.
	EndDate *AssistantApiDateTime `json:"endDate,omitempty"`

	// StartDate: Start date of the range.
	StartDate *AssistantApiDateTime `json:"startDate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndDate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiRecurrenceDatetimeRange) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiRecurrenceDatetimeRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiScreenCapabilities: These capabilities represent the
// tactile features associated with the device. This includes, for
// example, whether the device has a screen, how big the screen is, and
// privacy of the screen. Next ID: 11
type AssistantApiScreenCapabilities struct {
	// FontScaleFactor: The scale factor used to convert Scalable Pixel (SP)
	// units to Density-independent Pixel (DP) units (DP = SP * scale
	// factor). Fonts are measured in units of SP, and on some platforms
	// such as Android the SP to DP scale factor can be affected by the font
	// size a user selects in accessibility settings.
	FontScaleFactor float64 `json:"fontScaleFactor,omitempty"`

	// InputType: The types of input that this screen supports. Note that
	// this can be empty in which case the screen's input type is unknown.
	//
	// Possible values:
	//   "TOUCHSCREEN" - The device has a screen that support touch input.
	InputType []string `json:"inputType,omitempty"`

	// Mask: Mask defined for this device, if any.
	Mask *AssistantApiScreenCapabilitiesMask `json:"mask,omitempty"`

	// ProtoLayoutTargetedSchema: The targeted schema version for
	// ProtoLayout requests.
	ProtoLayoutTargetedSchema *AssistantApiScreenCapabilitiesProtoLayoutVersion `json:"protoLayoutTargetedSchema,omitempty"`

	// Resolution: If this field is absent, the resolution of the screen is
	// unknown.
	Resolution *AssistantApiScreenCapabilitiesResolution `json:"resolution,omitempty"`

	// ScreenOff: If screen is turned off.
	ScreenOff bool `json:"screenOff,omitempty"`

	// ScreenStateDetection: The ability of the client to correctly report
	// screen state.
	//
	// Possible values:
	//   "UNKNOWN_SCREEN_STATE_DETECTION"
	//   "UNRELIABLE_SCREEN_STATE_DETECTION" - The client reports screen
	// state but may be unreliable based on different remotes/inputs used to
	// turn the screen off. Example: Android TVs with soundbars.
	//   "RELIABLE_SCREEN_STATE_DETECTION"
	ScreenStateDetection string `json:"screenStateDetection,omitempty"`

	// SupportedRenderingFormat: The primary supported rendering format for
	// display on the device's screen. This may be used to determine what
	// format of card to be returned when rendering cards.
	//
	// Possible values:
	//   "UNKNOWN_RENDERING_FORMAT"
	//   "CONCISE_TEXT" - Concise Text go/concise-text-responses
	//   "PROTO_LAYOUT" - Proto Layout, the layout for Proto Tiles
	// go/prototiles
	//   "ELEMENTS" - Elements, the layout for xUIKit go/xuikit
	SupportedRenderingFormat string `json:"supportedRenderingFormat,omitempty"`

	// SupportedScreenStates: The screen states that the client supports.
	// The current screen state is specified in DeviceProperties.screen.
	//
	// Possible values:
	//   "UNKNOWN_SCREEN_STATE"
	//   "ON"
	//   "OFF"
	SupportedScreenStates []string `json:"supportedScreenStates,omitempty"`

	// VisionHelpEnabled: Whether the device enabled vision help features in
	// accessiblity settings. The settings is config in Assistant App and
	// on-device settings, and stored in footprints. When enabled, font,
	// color and TTS will be adjusted.
	VisionHelpEnabled bool `json:"visionHelpEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FontScaleFactor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FontScaleFactor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiScreenCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiScreenCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantApiScreenCapabilities) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantApiScreenCapabilities
	var s1 struct {
		FontScaleFactor gensupport.JSONFloat64 `json:"fontScaleFactor"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FontScaleFactor = float64(s1.FontScaleFactor)
	return nil
}

// AssistantApiScreenCapabilitiesMask: A mask applied to the screen's
// pixel space to determine regions not visible on the physical device.
type AssistantApiScreenCapabilitiesMask struct {
	// Possible values:
	//   "UNKNOWN_MASK" - Default value.
	//   "NO_MASK" - Used for devices with no mask. In this case, every
	// point in the region defined by width_px and height_px corresponds to
	// a physical, visible pixel. This is distinct from rectangular screens
	// that DO have regions with no pixels, e.g. an inset or cutout that
	// occludes one or more sides of the screen.
	//   "ROUND_MASK" - Used for devices with oval or circular screens. The
	// vertical and horizontal resolution of the screen determines the
	// vertical and horizontal diameters of the oval. Pixels outside this
	// oval region are non-existent or physically occluded.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiScreenCapabilitiesMask) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiScreenCapabilitiesMask
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiScreenCapabilitiesProtoLayoutVersion: Version info for
// ProtoLayout requests.
type AssistantApiScreenCapabilitiesProtoLayoutVersion struct {
	Major int64 `json:"major,omitempty"`

	Minor int64 `json:"minor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Major") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Major") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiScreenCapabilitiesProtoLayoutVersion) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiScreenCapabilitiesProtoLayoutVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiScreenCapabilitiesResolution: A Resolution proto
// indicates the size of the application window. All fields are
// required.
type AssistantApiScreenCapabilitiesResolution struct {
	// Dpi: Dots (pixels) per inch of the screen.
	Dpi int64 `json:"dpi,omitempty"`

	HeightPx int64 `json:"heightPx,omitempty"`

	// MSize: m_size is the smallest square box size to display a capital
	// letter M so that the user can still easily understand it.
	MSize int64 `json:"mSize,omitempty"`

	// NengSize: neng_size is the smallest square box size to display a
	// letter 螚 (Neng, U+879A) so that the user can easily understand it.
	// (Neng is a visually dense Chinese letter, and so may require a larger
	// box than an M.)
	NengSize int64 `json:"nengSize,omitempty"`

	// WidthPx: The dimensions of the application window, in pixels.
	WidthPx int64 `json:"widthPx,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dpi") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dpi") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiScreenCapabilitiesResolution) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiScreenCapabilitiesResolution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSelinaCapabilites: The Soli capabilities on Elaine,
// including gestures and sleep sensing. go/dingo-dc-software Next ID: 4
type AssistantApiSelinaCapabilites struct {
	// GestureCapabilities: A list of gestures that selina supports
	GestureCapabilities *AssistantApiGestureCapabilities `json:"gestureCapabilities,omitempty"`

	// SelinaSupported: Whether the client supports selina.
	SelinaSupported bool `json:"selinaSupported,omitempty"`

	// SleepSensingSupported: Whether the client can monitor sleep. This
	// allows us to show sleep CUJ related information: go/TwilightDesign
	SleepSensingSupported bool `json:"sleepSensingSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GestureCapabilities")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GestureCapabilities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSelinaCapabilites) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSelinaCapabilites
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsAmbientSettings struct {
	// AnyUserHasSetPersonalPhotos: Whether any user sets personal photos on
	// this device. See go/ambient-setting-in-assistant-design.
	AnyUserHasSetPersonalPhotos bool `json:"anyUserHasSetPersonalPhotos,omitempty"`

	// RecentHighlightsEnabled: Whether or not the user's current selection
	// for their ambient photo frame includes the auto-generated "Recent
	// Highlights" album. This is used to determine which users to display
	// the go/opa-photos-memories-tile. See go/opa-photo-memories-imax-optin
	// for more discussion on why this bit was created.
	RecentHighlightsEnabled bool `json:"recentHighlightsEnabled,omitempty"`

	// ShowPersonalPhotoData: Whether to enable the personal photo data in
	// the ambient settings: https://screenshot.googleplex.com/Wd4OFkQfOyF
	// See go/opa-photos-ambient-location-date-dd#heading=h.5x4iaouuiett for
	// explanation.
	ShowPersonalPhotoData bool `json:"showPersonalPhotoData,omitempty"`

	// ShowPersonalPhotos: Whether current user sets personal photos on this
	// device. See go/ambient-setting-in-assistant-design.
	ShowPersonalPhotos bool `json:"showPersonalPhotos,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnyUserHasSetPersonalPhotos") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AnyUserHasSetPersonalPhotos") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsAmbientSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsAmbientSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsAppCapabilities: These capabilties are associated
// with Assistant Settings on devices.
type AssistantApiSettingsAppCapabilities struct {
	// CarSettingsCapabilities: Capabilities that are associated with
	// Assistant Settings on auto surfaces.
	CarSettingsCapabilities *AssistantApiCarSettingsCapabilities `json:"carSettingsCapabilities,omitempty"`

	// ReissueQueryAfterMusicSetup: Whether the client supports reissuing
	// query after setting up in Music Settings.
	ReissueQueryAfterMusicSetup bool `json:"reissueQueryAfterMusicSetup,omitempty"`

	// SupportsPaymentsSettingsUpdate: Whether the client supports updating
	// payments setting.
	SupportsPaymentsSettingsUpdate bool `json:"supportsPaymentsSettingsUpdate,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CarSettingsCapabilities") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CarSettingsCapabilities")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsAppCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsAppCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsAutoFramingSettings: Settings pertaining to auto
// framing. See go/auto-framing-presentation.
type AssistantApiSettingsAutoFramingSettings struct {
	IsAutoFramingEnabled bool `json:"isAutoFramingEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsAutoFramingEnabled") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsAutoFramingEnabled") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsAutoFramingSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsAutoFramingSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsCarrierCallDeviceSettings: Carrier related call
// settings on the device.
type AssistantApiSettingsCarrierCallDeviceSettings struct {
	// AllowIncomingCalls: Whether this device is allowed to receive
	// incoming PSTN calls.
	AllowIncomingCalls bool `json:"allowIncomingCalls,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowIncomingCalls")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowIncomingCalls") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsCarrierCallDeviceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsCarrierCallDeviceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsCommunicationsFilter: Specification of which
// communication features can be used.
type AssistantApiSettingsCommunicationsFilter struct {
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL" - Allow all communication features.
	//   "BLOCK_CALLS_AND_MESSAGES" - Allow all communication features, with
	// the exception of calls and messages.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsCommunicationsFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsCommunicationsFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDeviceDowntimeSettings: Specification of times
// when most features on a device are disabled for certain users. During
// these periods, the device will respond to most interactions with
// something like "sorry, I'm sleeping right now". Design:
// go/home-ft-settings-storage PRD: go/home-family-tools-prd
type AssistantApiSettingsDeviceDowntimeSettings struct {
	Schedules []*AssistantApiSettingsLabeledDowntimeSchedule `json:"schedules,omitempty"`

	// Targets: The set of users of this device that will have these
	// downtime settings applied. Must have at least one element.
	//
	// Possible values:
	//   "UNKNOWN_DEVICE_SUPERVISION_TARGET"
	//   "EVERYONE" - All people that use the device.
	//   "KID_ACCOUNTS" - Users with a Unicorn account that are
	// voice-matched to the device.
	//   "GUESTS" - Users interacting with the device without being voice
	// matched. We cannot identify these users and don't know their ages.
	Targets []string `json:"targets,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Schedules") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Schedules") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceDowntimeSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceDowntimeSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDeviceFeatureFilters: Defines a set of
// restrictions on particular device features for a certain set of
// users. Design: go/home-ft-settings-storage PRD:
// go/home-family-tools-prd
type AssistantApiSettingsDeviceFeatureFilters struct {
	// Enabled: Enables/disables all the filters at the same time. For new
	// devices or non-Cast devices this is always false.
	Enabled bool `json:"enabled,omitempty"`

	// FeatureFilters: The filters (feature restrictions) to apply when
	// `enabled` is true.
	FeatureFilters *AssistantApiSettingsFeatureFilters `json:"featureFilters,omitempty"`

	// Targets: The set of users of this device that will have these
	// settings applied. Must have at least one element.
	//
	// Possible values:
	//   "UNKNOWN_DEVICE_SUPERVISION_TARGET"
	//   "EVERYONE" - All people that use the device.
	//   "KID_ACCOUNTS" - Users with a Unicorn account that are
	// voice-matched to the device.
	//   "GUESTS" - Users interacting with the device without being voice
	// matched. We cannot identify these users and don't know their ages.
	Targets []string `json:"targets,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceFeatureFilters) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceFeatureFilters
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsDeviceLogsOptIn struct {
	// OptInEnabled: Indicates whether the crash logs can be uploaded and
	// the device logs can be enabled
	OptInEnabled bool `json:"optInEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OptInEnabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OptInEnabled") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceLogsOptIn) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceLogsOptIn
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDeviceSettings: Next ID: 73
type AssistantApiSettingsDeviceSettings struct {
	// AckStatus:
	// LINT.ThenChange(//depot/google3/assistant/ui/assistant_device_settings
	// _ui.proto)
	//
	// Possible values:
	//   "ACK_COMPLETED"
	//   "ACK_PENDING"
	AckStatus string `json:"ackStatus,omitempty"`

	// Address: A human-readable address string for the location; generally
	// a one-line address such as "34 Masonic Ave, San Francisco CA 94117,
	// United States". Set this field to empty string for deletion, in which
	// case the rest of the location related fields below will be cleared as
	// well.
	Address string `json:"address,omitempty"`

	// AliasName: The alias names of the device, e.g. my living room tv, tv,
	// living room and etc., which user will usually use to refer to the
	// device in addition to human_friendly_name. It can help speech biasing
	// and query understanding. This field is set by the user and already
	// localized.
	AliasName []string `json:"aliasName,omitempty"`

	// AllowIncomingCalls: Whether this device is allowed to receive
	// incoming calls.
	AllowIncomingCalls bool `json:"allowIncomingCalls,omitempty"`

	// AmbientSettings: Ambient settings contains the configuration of Photo
	// Frame on DG device. This field relies on IMAX service to do the
	// update, sync happenes after user updates IMAX device settings or a
	// device registers in CloudCastDevice. So it's more like a cached
	// version instead of definitive source-of-truth. More details at
	// go/ambient-setting-in-assistant-design.
	AmbientSettings *AssistantApiSettingsAmbientSettings `json:"ambientSettings,omitempty"`

	// AncillaryDeviceId: The additional device ids. Currently used only for
	// ATV. go/project-yellowstone Note: This field is for internal (Within
	// settings) use only.
	AncillaryDeviceId *AssistantApiSettingsInternalAncillaryDeviceId `json:"ancillaryDeviceId,omitempty"`

	// AutoFramingSettings: Auto framing settings associated with a device.
	// See go/auto-framing-presentation.
	AutoFramingSettings *AssistantApiSettingsAutoFramingSettings `json:"autoFramingSettings,omitempty"`

	// BlueSteelEnabled: Indicates whether the user has enabled Blue Steel.
	// See go/blue-steel for more info on this project.
	BlueSteelEnabled bool `json:"blueSteelEnabled,omitempty"`

	// Capabilities: Describes roughly what a device is capable of doing and
	// metadata around those capabilities. Note: this includes device
	// limitations as well as user configurable settings.
	Capabilities *AssistantApiDeviceCapabilities `json:"capabilities,omitempty"`

	// City: city and postal_code are sent to third party AoG Apps as
	// location when permission is granted for precise or coarse location.
	// https://developers.google.com/actions/reference/rest/Shared.Types/Permission
	// city and postal_code have the same description as in Proto Postal
	// Address:
	// https://cs.corp.google.com/piper///depot/google3/location/country/postaladdress.proto
	// city corresponds to locality_name, postal_code corresponds to
	// postal_code_number. These two fields are set in
	// assistant_settings_service by AddressConverter.
	// https://cs.corp.google.com/piper///depot/google3/location/addressformatter/public/addressconverter.h
	// See go/aog-i18n-address-parse for more information
	City string `json:"city,omitempty"`

	// ColocationStatus: Status of colocation. go/co-location-work-v2 Note:
	// this is a cache at the Assistant level. The source of truth is inside
	// CastAuthenticationServer, which is only used for Home devices.
	//
	// Possible values:
	//   "COLOCATION_UNKNOWN"
	//   "COLOCATION_ESTABLISHED"
	//   "COLOCATION_NOT_ESTABLISHED"
	//   "COLOCATION_NOT_SUPPORTED"
	ColocationStatus string `json:"colocationStatus,omitempty"`

	// CreationTimestampMs: The timestamp that the device is linked with the
	// user in milliseconds.
	CreationTimestampMs int64 `json:"creationTimestampMs,omitempty,string"`

	// CrossSurfaceAvailability: Availability of this device for Assistant
	// Cross-surface handoffs. (go/assistant-cross-surface)
	CrossSurfaceAvailability *AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability `json:"crossSurfaceAvailability,omitempty"`

	// DefaultAudioDeviceId: The identification of the default device which
	// user want to output audio. See go/default-media-output-design for
	// more info.
	DefaultAudioDeviceId *AssistantApiCoreTypesDeviceId `json:"defaultAudioDeviceId,omitempty"`

	// DefaultVideoDeviceId: The identification of the default device which
	// user want to output video. Note that, we don't fallback to this for
	// audio playback when default_audio_device_id is not set. See
	// go/default-media-output-design for more info.
	DefaultVideoDeviceId *AssistantApiCoreTypesDeviceId `json:"defaultVideoDeviceId,omitempty"`

	// DeviceBrand: The brand of the device, populated from DeviceOemParams.
	// Examples: "google", "samsung".
	DeviceBrand string `json:"deviceBrand,omitempty"`

	// DeviceId: The identification of the device.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// DeviceModelId: The model ID of the device. This should be globally
	// unique across manufactures/OEMs. Examples: "nest_cam_iq_2017",
	// "comcast_voice_box_2017".
	DeviceModelId string `json:"deviceModelId,omitempty"`

	// DeviceModelRevision: The Device Platform Service lookup revision.
	// (go/device-model-revision) For 1p devices, and most 3p devices with
	// no custom feature, this should be always 0, which means no lookup
	// needed. For 3p devices with custom assistant feature, this is
	// provided directly by OEM as incremental (e.g. 1, 2, 3, ...)
	DeviceModelRevision int64 `json:"deviceModelRevision,omitempty"`

	// Dusi: Only valid for ATV. Stores the android DUSI for the
	// corresponding user. More details: go/auto-logout-on-unlink.
	Dusi string `json:"dusi,omitempty"`

	// FaceEnrollmentErrors: List of errors that happened during the face
	// enrollment process if it failed. See go/face-match-enrollment-error
	// for more info.
	//
	// Possible values:
	//   "UNKNOWN_FACE_ENROLLMENT_ERROR"
	//   "MISSING_FRONTAL_POSE" - The gallery images don't have the required
	// frontal pose properties.
	//   "FACE_NOT_DETECTED" - Face was NOT detected in an image.
	//   "MULTIPLE_FACE_DETECTED" - Multiple faces detected in an image.
	//   "FACE_WITHOUT_SIGNATURE" - Cannot create signature for a detected
	// face.
	//   "FACE_DETECTION_LOW_CONFIDENCE" - Face detection confidence score
	// is too low.
	//   "FACE_LANDMARK_LOW_CONFIDENCE" - Face detection landmark confidence
	// score is too low.
	//   "FACE_WITHOUT_CONFIDENCE" - Face detection contains no confidence
	// score, which is invalid.
	//   "FACE_TOO_SMALL" - Face detection was too small for enrollment.
	//   "FAILED_TO_READ_IMAGE" - Unable to read the image file from the
	// gallery.
	//   "FAILED_TO_DECODE_IMAGE" - Unable to decode the jpeg image.
	//   "FACE_DETECTION_ERROR" - Unable to run face detector on the decoded
	// image.
	//   "FACE_WITHOUT_EMBEDDING_CONFIDENCE" - Face detection contains no
	// confidence score for embedding.
	FaceEnrollmentErrors []string `json:"faceEnrollmentErrors,omitempty"`

	// FaceEnrollmentStatus: Indicates whether the user's face has been
	// successfully enrolled on this device. See go/face-match-server-design
	// for more info.
	//
	// Possible values:
	//   "UNKNOWN_STATUS"
	//   "SUCCESS"
	//   "FAILURE"
	//   "PENDING"
	FaceEnrollmentStatus string `json:"faceEnrollmentStatus,omitempty"`

	// FaceMatchEnabled: Indicates whether the user has enabled Face Match
	// for this device. See go/face-match-server-design for more info on
	// this project.
	FaceMatchEnabled bool `json:"faceMatchEnabled,omitempty"`

	// FlAudioCacheEnabled: When true, allow data collection of audio on
	// this device for Federated Learning.
	FlAudioCacheEnabled bool `json:"flAudioCacheEnabled,omitempty"`

	// FlVisualFramesCacheEnabled: When true, allow data collection of
	// frames on this device.
	FlVisualFramesCacheEnabled bool `json:"flVisualFramesCacheEnabled,omitempty"`

	// GcmSettings: Stores GCM info associated with a device. See
	// go/quartz-design-doc for more info.
	GcmSettings *AssistantApiSettingsGcmSettings `json:"gcmSettings,omitempty"`

	// HomeGraphData: Holds the data that should be written to HomeGraph.
	// Note: this field is not persisted in Assistant Settings storage. It
	// is simply used for transporting data when client calls
	// UpdateSettings.
	HomeGraphData *AssistantApiSettingsHomeGraphData `json:"homeGraphData,omitempty"`

	// HomeGraphId: The home graph ID that can be used to lookup the
	// corresponding entry in HomeGraph. go/home-graph. Note: when this
	// field is empty, it doesn't necessarily mean that the device is not in
	// home graph. It just means that Assistant doesn't know about the
	// mapping.
	HomeGraphId string `json:"homeGraphId,omitempty"`

	// HospitalityModeStatus: Indicates whether the device is currently in
	// Hospitality mode. go/hospitality-mode-design. This is moved to a per
	// user setting in assistant settings. ref. go/hospitality-settings-v2
	HospitalityModeStatus *AssistantApiSettingsHospitalityMode `json:"hospitalityModeStatus,omitempty"`

	// HotwordSensitivity: The level of hotword sensitivity.
	// go/hotword-sensitivity-prd
	//
	// Possible values:
	//   "UNKNOWN_HOTWORD_SENSITIVITY"
	//   "HOTWORD_SENSITIVITY_LOW"
	//   "HOTWORD_SENSITIVITY_NORMAL"
	//   "HOTWORD_SENSITIVITY_HIGH"
	//   "HOTWORD_SENSITIVITY_LOW_2"
	//   "HOTWORD_SENSITIVITY_HIGH_2"
	HotwordSensitivity string `json:"hotwordSensitivity,omitempty"`

	// HotwordThresholdAdjustmentFactor: HotwordThresholdAdjustmentFactor
	// contains threshold_adjustment_factor, and it's validity. TAF is a
	// measure of adjustment applied to the hotword threshold as a result of
	// go/autotune. Currently, this is updated from query_settings_frame,
	// but if we move to updating it from the client, this could also
	// contain TAFs as a result of Hotword Sensitivity, in addition to
	// Autotune.
	HotwordThresholdAdjustmentFactor *AssistantApiSettingsHotwordThresholdAdjustmentFactor `json:"hotwordThresholdAdjustmentFactor,omitempty"`

	// HumanFriendlyName: The human-friendly name of the cast device, e.g.,
	// my living room tv. This field is set by the user and already
	// localized.
	HumanFriendlyName string `json:"humanFriendlyName,omitempty"`

	// InternalVersion: Internal version of the DeviceSettings for
	// measurement of the DeviceSettings mutation race conditions. See
	// go/consistent-assistant-settings-update.
	InternalVersion *AssistantApiSettingsInternalVersion `json:"internalVersion,omitempty"`

	// IsCloudSyncDevice: Indicates whether the device is also managed
	// through HA cloud sync. go/ha-dev-guide
	IsCloudSyncDevice bool `json:"isCloudSyncDevice,omitempty"`

	// IsDeviceActivationCacheEnabled: When true, the user has explicitly
	// allowed audio and visual data collection on this device
	IsDeviceActivationCacheEnabled bool `json:"isDeviceActivationCacheEnabled,omitempty"`

	// KidsMode: Specifies if kids-mode is enabled for the device. See
	// go/aff-parentalsupervision-dd.
	KidsMode *AssistantApiSettingsKidsMode `json:"kidsMode,omitempty"`

	// LastCastRegistrationTimestamp: Device's latest registration timestamp
	// provided by Cast side. This field is not necessarily up to date. The
	// update frequency is defined in
	// last_registration_update_frequency_in_days field of AssistantConfig
	// in
	// java/com/google/chrome/dongle/common/proto/home_assistant_config.proto
	// . go/cast-last-registration-time
	LastCastRegistrationTimestamp string `json:"lastCastRegistrationTimestamp,omitempty"`

	// LastUsedCoarseTimestamp: Coarsened hourly timestamp of when the
	// device was last used.
	LastUsedCoarseTimestamp string `json:"lastUsedCoarseTimestamp,omitempty"`

	// LinkedDeviceId: Stores pairing between different devices. See
	// go/quartz-design-doc for more info.
	LinkedDeviceId []*AssistantApiCoreTypesDeviceId `json:"linkedDeviceId,omitempty"`

	// LinkedUsers: Please do NOT use this field without prior approval from
	// PWG. Users who have signed in onto this device,
	// go/linked-users-in-pkg.
	LinkedUsers []*AssistantApiSettingsLinkedUser `json:"linkedUsers,omitempty"`

	// Locale: The locale for the device: language + region, i.e., en-US,
	// ja-JP.
	Locale string `json:"locale,omitempty"`

	// LocationCoordinates: Coordinate information of the device location.
	LocationCoordinates *AssistantApiCoreTypesLocationCoordinates `json:"locationCoordinates,omitempty"`

	// LocationFeature: The feature proto of the location of the device.
	// Note: client does not need to populate this. It will be
	// auto-populated based on "address" field on server side. Currently,
	// only "bound" and "type" are persisted, since the entire FeatureProto
	// is too big.
	LocationFeature *GeostoreFeatureProto `json:"locationFeature,omitempty"`

	// MarketplaceDisclosure: See go/marketplace-disclosure for more info.
	MarketplaceDisclosure *AssistantApiSettingsMarketplaceDisclosure `json:"marketplaceDisclosure,omitempty"`

	MasqueradeMode *AssistantApiSettingsMasqueradeMode `json:"masqueradeMode,omitempty"`

	// NotificationProfile: Information about how to send the user a
	// notification. This won't be populated for fb-conv users (allo group
	// chat users).
	NotificationProfile *AssistantApiSettingsNotificationProfile `json:"notificationProfile,omitempty"`

	// OauthClientId: OAuth client id for the device. This field is
	// available for Assistant SDK devices. It is written when the device is
	// registered to the user
	// (AssistantSettingsUiService.LinkAssistantDeviceUi). When user revokes
	// grant on the Assistant device, Assistant Devices Platform Service
	// will receive Pubsub notification with OAuth client id for the revoked
	// device, and we will compare that with this stored id to identity
	// device to remove.
	OauthClientId string `json:"oauthClientId,omitempty"`

	// OnDeviceAppSettings: Device specific app related settings.
	OnDeviceAppSettings *AssistantApiSettingsOnDeviceAppSettings `json:"onDeviceAppSettings,omitempty"`

	// OptInStatus: Specifies if device logs and crashes can be captured
	// during SendFeedback
	OptInStatus *AssistantApiSettingsDeviceLogsOptIn `json:"optInStatus,omitempty"`

	// PaymentsEnabled: DEPRECATED: Use
	// DeviceCapabilities.OutputRestrictions.personal_data instead. Whether
	// the user has enabled payments for this device.
	PaymentsEnabled bool `json:"paymentsEnabled,omitempty"`

	// PersonalizationMetadata: Metadata about how personalization settings
	// were configured.
	PersonalizationMetadata *AssistantApiSettingsPersonalizationMetadata `json:"personalizationMetadata,omitempty"`

	// PoliteMode: Specify whether polite mode is enabled for this device.
	// See go/pretty-please-dd.
	PoliteMode *AssistantApiSettingsPoliteMode `json:"politeMode,omitempty"`

	PostalCode string `json:"postalCode,omitempty"`

	// ReauthTrustedDeviceSettings: Trusted device preferences Assistant
	// reauth. go/assistant-reauth-verify-skip.
	ReauthTrustedDeviceSettings *AssistantApiSettingsReauthTrustedDeviceSettings `json:"reauthTrustedDeviceSettings,omitempty"`

	// ShortenedAddress: A human-readable shortened address. This is usually
	// the street address. Note: client does not need to populate this. It
	// will be auto-populated based on "address" field on server side.
	// Developers can use this field to avoid reading out the full address
	// everytime.
	ShortenedAddress string `json:"shortenedAddress,omitempty"`

	// SpeakerIdEnabled: Indicates whether the user has enabled speaker-id
	// for this device. See go/google-assistant-multi-user for more info on
	// this project.
	SpeakerIdEnabled bool `json:"speakerIdEnabled,omitempty"`

	// SpeechOutputSettings: Settings related to TTS output.
	SpeechOutputSettings *AssistantApiSettingsSpeechOutputSettings `json:"speechOutputSettings,omitempty"`

	// SpeechSettings: Speech/hotword detection related settings.
	SpeechSettings *AssistantApiSettingsSpeechSettings `json:"speechSettings,omitempty"`

	// SupervisionSettings: Restrictions on how and when certain users can
	// use a device. See go/home-ft-prd.
	SupervisionSettings *AssistantApiSettingsDeviceSupervisionSettings `json:"supervisionSettings,omitempty"`

	// SurfaceType: The type of assistant surface. Only use this field when
	// device type is ASSISTANT.
	SurfaceType *AssistantApiCoreTypesSurfaceType `json:"surfaceType,omitempty"`

	// TetheredInfo: Presence indicates a tethered wearable.
	// go/wearable-device-ids.
	TetheredInfo *AssistantApiSettingsTetheredInfo `json:"tetheredInfo,omitempty"`

	// TimeZone: Device time zone. It's mainly used for a one-time
	// notification for new users when they just bought and activated their
	// devices. They may not have used Search or Assistant before, so their
	// timezone info may not available elsewhere when we want to send a
	// notification. This should be used as a fallback only when other
	// timezone sources such as
	// assistant_settings:user_attribute#inferred_user_timezone are not
	// available. Also, when both |time_zone| and |location| are set, the
	// |location| should be preferred to derive the most up to date
	// timezone. This info directly comes from the device through early
	// device setting recording mechanism. See more details at
	// go/early-device-setting-recording.
	TimeZone *AssistantApiTimeZone `json:"timeZone,omitempty"`

	// TruncatedLocalNetworkId: Local network ID of the device (truncated to
	// obfuscate devices and households globally). This is a temporary
	// signal to determine proximity of Assistant devices in a house (HGS
	// place).
	TruncatedLocalNetworkId string `json:"truncatedLocalNetworkId,omitempty"`

	// TrustedVoiceEnabled: DEPRECATED: Use speech_settings instead.
	// Indicates whether the user has enabled trusted voice for this device.
	// See go/hotword-settings-on-cloud for more info on this project.
	TrustedVoiceEnabled bool `json:"trustedVoiceEnabled,omitempty"`

	// Type: The type of the device. Note: this should only be used for
	// grouping devices for UI presentation purpose. Use |capabilities| to
	// decide what the device can do.
	//
	// Possible values:
	//   "UNKNOWN_DEVICE_TYPE"
	//   "ASSISTANT"
	//   "HOME_AUTOMATION"
	//   "CAST"
	//   "CAST_GROUP"
	//   "QUARTZ" - Quartz in AGSA
	//   "QUARTZ_IOS" - Quartz in iOPA
	//   "CLOUD_AUTO" - Non-assistant Auto devices from Cloud.
	Type string `json:"type,omitempty"`

	// VerboseTtsForChromecastEnabled: Indicates whether to play verbose tts
	// for Elementary on chirp. See: go/opa-cast-a11y-impl-design fore more
	// info on this project. Note: this should probably be in
	// SpeechOutputSetting below.
	VerboseTtsForChromecastEnabled bool `json:"verboseTtsForChromecastEnabled,omitempty"`

	// VmLastUsedCoarseTimestamp: Coarsened hourly timestamp of when the
	// user was last verified by VoiceMatch on this device. This is used for
	// enforcing VoiceMatch model TTL. go/voicematch-pdd-ttl
	VmLastUsedCoarseTimestamp string `json:"vmLastUsedCoarseTimestamp,omitempty"`

	// VoiceEnrollmentStatus: Indicates whether the user's voice has been
	// successfully enrolled on this device.
	//
	// Possible values:
	//   "VOICE_ENROLLMENT_UNKNOWN_STATUS" - User has no utterances and no
	// speaker id model.
	//   "VOICE_ENROLLMENT_SUCCESS" - User has speaker id model.
	//   "VOICE_ENROLLMENT_FAILURE" - User has utterances but no speaker id
	// model (for ex. hotword was not detected in utterances).
	//   "VOICE_ENROLLMENT_PENDING" - Speaker id model generation is
	// in-progress.
	VoiceEnrollmentStatus string `json:"voiceEnrollmentStatus,omitempty"`

	// VoiceInputEnabled: A boolean indicates whether voice input
	// (mic-button, hotword, etc) is enabled.
	VoiceInputEnabled bool `json:"voiceInputEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AckStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AckStatus") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability struct {
	// LastKnownClientLocale: Last known locale of the client.
	LastKnownClientLocale string `json:"lastKnownClientLocale,omitempty"`

	// LastParamsWriteTimestamp: This is the timestamp when the
	// AssistantRequestParams (in ASSISTANT_SNAPSHOT corpus) were last
	// written for this device.
	LastParamsWriteTimestamp string `json:"lastParamsWriteTimestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LastKnownClientLocale") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastKnownClientLocale") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsDeviceSupervisionSettings struct {
	// DowntimeSettings: Specification of times that a device shouldn't
	// respond to certain users. See go/home-ft-prd.
	DowntimeSettings *AssistantApiSettingsDeviceDowntimeSettings `json:"downtimeSettings,omitempty"`

	// FeatureFilters: Restrictions on features that certain users can
	// access on a device. See go/home-ft-prd.
	FeatureFilters *AssistantApiSettingsDeviceFeatureFilters `json:"featureFilters,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DowntimeSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DowntimeSettings") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDeviceSupervisionSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDeviceSupervisionSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDowntimePeriod: Specifies a period of up to 24
// hours when downtime should be enabled, starting at certain time on a
// certain day of the week, and ending at a later time on either that
// day or the following day.
type AssistantApiSettingsDowntimePeriod struct {
	// Enabled: True if downtime should be enabled during this period.
	Enabled bool `json:"enabled,omitempty"`

	// EndTime: Time of day that this downtime period should end. Required.
	// If end_time > start_time, end_time is relative to start_day.
	// Otherwise, end_time is relative to the day after start_day. For
	// example, start_day: MONDAY, start_time: 9 p.m., end_time: 6 a.m.
	// means that the downtime period starts at 9 p.m. on Monday and ends at
	// 6 a.m. on Tuesday.
	EndTime *GoogleTypeTimeOfDay `json:"endTime,omitempty"`

	// StartDay: The day of the week when this downtime period starts.
	// Required.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	StartDay string `json:"startDay,omitempty"`

	// StartTime: Time of day that this downtime period should start.
	// Required.
	StartTime *GoogleTypeTimeOfDay `json:"startTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDowntimePeriod) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDowntimePeriod
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDowntimeSchedule: Specification of when downtime
// is enabled on different days of the week. Contains up to 7
// DowntimePeriod messages, up to one per day of the week.
type AssistantApiSettingsDowntimeSchedule struct {
	// Enabled: True if this downtime schedule should be enabled.
	Enabled bool `json:"enabled,omitempty"`

	// Periods: Downtime entries for the days of the week, in no particular
	// order. There can be at most one period defined for each day of the
	// week. Days of the week with no explicit period defined are treated as
	// disabled, so the device is available all day (modulo an end time that
	// may spill over from the previous day).
	Periods []*AssistantApiSettingsDowntimePeriod `json:"periods,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDowntimeSchedule) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDowntimeSchedule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsDuoCallDeviceSettings: Duo related call settings
// on the device. Next ID: 5
type AssistantApiSettingsDuoCallDeviceSettings struct {
	// AllowKnockKnock: True if Duo Knock Kncok feature is enabled on the
	// device.
	AllowKnockKnock bool `json:"allowKnockKnock,omitempty"`

	// ShouldBeLinked: Boolean indicating if user has explicitly marked this
	// device to be linked or not. This bit is used in case where unexpected
	// errors occur and we have to check for account/device status and mark
	// the device linked after verification.
	ShouldBeLinked bool `json:"shouldBeLinked,omitempty"`

	// State: The call state of the device (i.e. whether an Duo call account
	// has been setup on the device).
	//
	// Possible values:
	//   "UNKNOWN_LINK_STATE"
	//   "NOT_LINKED" - The user chose not to link the app.
	//   "LINKED" - The user completed linking the app.
	//   "LINKED_WAITING" - The user chose to link the app, but the linking
	// has not completed yet.
	//   "LINK_ERROR" - There was some error in link state and link state
	// should be refreshed by querying tachyon backend. But this does not
	// guarantee that state will be linked after this request.
	State string `json:"state,omitempty"`

	// TalkbackEnabled: Client device settings: settings which are populated
	// by client to give to duocore. TalkBack is an accessibility service
	// that helps blind and vision-impaired users interact with their
	// devices. Indicates whether talkback is enabled for the device. Note:
	// this is per device settings currently filled by client for all users.
	TalkbackEnabled bool `json:"talkbackEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowKnockKnock") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowKnockKnock") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsDuoCallDeviceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsDuoCallDeviceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsFeatureFilters: Specification of which assistant
// features are allowed for a particular device or user account.
type AssistantApiSettingsFeatureFilters struct {
	CommunicationsFilter *AssistantApiSettingsCommunicationsFilter `json:"communicationsFilter,omitempty"`

	MusicFilter *AssistantApiSettingsMusicFilter `json:"musicFilter,omitempty"`

	NewsFilter *AssistantApiSettingsNewsFilter `json:"newsFilter,omitempty"`

	PodcastFilter *AssistantApiSettingsPodcastFilter `json:"podcastFilter,omitempty"`

	SearchFilter *AssistantApiSettingsSearchFilter `json:"searchFilter,omitempty"`

	ThirdPartyAppsFilter *AssistantApiSettingsThirdPartyAppsFilter `json:"thirdPartyAppsFilter,omitempty"`

	VideoFilter *AssistantApiSettingsVideoFilter `json:"videoFilter,omitempty"`

	WebviewFilter *AssistantApiSettingsWebviewFilter `json:"webviewFilter,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CommunicationsFilter") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommunicationsFilter") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsFeatureFilters) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsFeatureFilters
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsGcmSettings struct {
	GcmId string `json:"gcmId,omitempty"`

	GcmPackage string `json:"gcmPackage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GcmId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GcmId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsGcmSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsGcmSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHomeGraphData: Next ID: 8
type AssistantApiSettingsHomeGraphData struct {
	// AgentId: Agent ID, aka project ID. Used as the AgentDeviceId.agent_id
	// of device when calling Home Graph Service.
	AgentId string `json:"agentId,omitempty"`

	// Attributes: See go/ha-dev-guide and HomeGraphItem.attribute in
	// //assistant/verticals/homeautomation/proto/home_graph.proto
	Attributes googleapi.RawMessage `json:"attributes,omitempty"`

	// DeviceId: Device ID, used as AgentDeviceId.device_id of device when
	// calling Home Graph Service.
	DeviceId string `json:"deviceId,omitempty"`

	// DeviceType: HGS device type. See
	// java/com/google/home/graph/service/config/protoconf.pi for the
	// exhaustive list of type strings.
	DeviceType string `json:"deviceType,omitempty"`

	// ShouldWriteToHomeGraph: Whether device data should be written to Home
	// Graph via Assistant device_settings. Assistant SDK and Google Home
	// write their devices into Home Graph through AssistantSettingsService,
	// while Home Automation Partner devices (e.g. SmartThings, Philips Hue,
	// Nest, TP-Link, etc.) don't need to be written to Home Graph through
	// AssistantSettingsService. This field decides whether
	// AssistantSettingsService writes devices to Home Graph or not.
	ShouldWriteToHomeGraph bool `json:"shouldWriteToHomeGraph,omitempty"`

	// SupportedTraits: Supported traits of the device. See
	// java/com/google/home/graph/service/config/protoconf.pi for the
	// exhaustive list of trait-strings.
	SupportedTraits []string `json:"supportedTraits,omitempty"`

	// SupportsDirectResponse: Whether the device supports direct response.
	// See HomeGraphItem.supports_direct_response in
	// //assistant/verticals/homeautomation/proto/home_graph.proto
	SupportsDirectResponse bool `json:"supportsDirectResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHomeGraphData) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHomeGraphData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsHospitalityCardSettings struct {
	// CardConfig: Config for Hospitality UI modules.
	CardConfig []*AssistantApiSettingsHospitalityCardSettingsCardConfig `json:"cardConfig,omitempty"`

	// ShowMediaTapGestureTutorial: Toggle media tap gesture tutorial card.
	ShowMediaTapGestureTutorial bool `json:"showMediaTapGestureTutorial,omitempty"`

	// ShowPhotoSwipeGestureTutorial: Toggle photo swipe gesture tutorial
	// card.
	ShowPhotoSwipeGestureTutorial bool `json:"showPhotoSwipeGestureTutorial,omitempty"`

	// YoutubeCardConfig: Config for YouTube video cards.
	YoutubeCardConfig []*AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig `json:"youtubeCardConfig,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CardConfig") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CardConfig") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHospitalityCardSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHospitalityCardSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHospitalityCardSettingsCardConfig: Configuration
// for hospitality card.
type AssistantApiSettingsHospitalityCardSettingsCardConfig struct {
	// ActiveActionRequired: Whether the UI module requires user action. If
	// true, the UI module can peek on to the top of Ambient. See
	// SmartDisplayModuleState::ACTIVE_ACTION_REQUIRED.
	ActiveActionRequired bool `json:"activeActionRequired,omitempty"`

	// Dismissable: Whether the UI module is dismissable.
	Dismissable bool `json:"dismissable,omitempty"`

	// EffectiveTime: The time that the module is effective and visible to
	// the user. If not set, the module is effective immediately.
	EffectiveTime *AssistantApiTimestamp `json:"effectiveTime,omitempty"`

	// ExpiryTime: The time that the module is expired and invisible to the
	// user. If not set, the module never expires.
	ExpiryTime *AssistantApiTimestamp `json:"expiryTime,omitempty"`

	// ImageUrl: The image URL for the UI module.
	ImageUrl string `json:"imageUrl,omitempty"`

	// ModuleId: Module ID.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MID_STAY_SURVEY"
	//   "CHECK_OUT"
	//   "CHECK_IN"
	//   "RESET"
	ModuleId string `json:"moduleId,omitempty"`

	// PayloadQuery: Payload query to the partner AoG action when user
	// responds to UI Module, e.g. “Tell the hotel how my stay is
	// going”.
	PayloadQuery string `json:"payloadQuery,omitempty"`

	// Title: Title of the message to be shown to user at the top of the UI
	// Module.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ActiveActionRequired") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActiveActionRequired") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHospitalityCardSettingsCardConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHospitalityCardSettingsCardConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig:
// Configuration for YouTube video card (Stargazer tile).
type AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig struct {
	// ImageUrl: URL of image to go on card. The URL must be a public link
	// accessible from ZeroState.
	ImageUrl string `json:"imageUrl,omitempty"`

	// PlaylistId: ID of YouTube playlist to play on card tap. A playlist is
	// used instead of a single video id to avoid autoplaying related
	// videos. The playlist and the videos it contains must be public or
	// unlisted to be accessible from ZeroState.
	PlaylistId string `json:"playlistId,omitempty"`

	// Text: Text on card (i.e., video title).
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHospitalityMode: Hospitality mode config for the
// current device. go/hospitality-mode-design. Next ID: 17
type AssistantApiSettingsHospitalityMode struct {
	// AogContextId: List of AOG app context ids that are linked to this
	// device. These apps will have access to the structure information for
	// the device.
	AogContextId []string `json:"aogContextId,omitempty"`

	// AogInvocationPhrase: Invocation phrase for hotel's AoG action. Used
	// for ZS promotion card and "talk to my hotel" rewrites. Setting this
	// to an empty value will mark it unset.
	AogInvocationPhrase string `json:"aogInvocationPhrase,omitempty"`

	Branding *AssistantApiSettingsHospitalityModeBranding `json:"branding,omitempty"`

	CardSettings *AssistantApiSettingsHospitalityCardSettings `json:"cardSettings,omitempty"`

	// DeviceClearRequest: The time when we received a request to reset the
	// device.
	DeviceClearRequest *AssistantApiTimestamp `json:"deviceClearRequest,omitempty"`

	// DialogTtlOverrideMicros: Should the dialog have a shorter ttl. See
	// go/ipp-consumer-prd#heading=h.ibu9b1ysdl4t and
	// go/interpreter-device-clear#bookmark=id.hw8ey1bzjadn for context.
	DialogTtlOverrideMicros int64 `json:"dialogTtlOverrideMicros,omitempty,string"`

	// EnterpriseId: Identifier for the enterprise which owns the device.
	// Setting this to an empty value will mark it unset.
	EnterpriseId string `json:"enterpriseId,omitempty"`

	// HospitalityModeEnabled: Indicates whether this device is in the
	// hospitality mode.
	HospitalityModeEnabled bool `json:"hospitalityModeEnabled,omitempty"`

	// LastDeviceClear: Last time the device was cleared and placed in
	// hospitality mode. Will be set when the switch is toggled on and reset
	// when a guest checks out. On the device this triggers removing alarms,
	// timers, etc.
	LastDeviceClear *AssistantApiTimestamp `json:"lastDeviceClear,omitempty"`

	// LastModifiedTimestamp: Indicates when hospitality settings were last
	// updated.
	LastModifiedTimestamp *AssistantApiTimestamp `json:"lastModifiedTimestamp,omitempty"`

	// LastWelcomed: Last time the welcome message was played for the guest.
	// If last_welcomed < welcome_request, the message should be replayed
	// and this time set.
	LastWelcomed *AssistantApiTimestamp `json:"lastWelcomed,omitempty"`

	// ManualResetRequired: Indicates whether or not the device must be
	// reset manually (by voice or touch), as opposed to being automatically
	// reset. go/hospitality-manual-reset
	ManualResetRequired bool `json:"manualResetRequired,omitempty"`

	// PromotedLanguages: In order promoted languages for interpreter
	// devices. This represents languages by BCP-47 language strings, such
	// as "en", "en-US", "fr", "fr-CA", "sr-Latn", "zh-Hans-CN",
	// "zh-Hant-HK",etc.
	PromotedLanguages []string `json:"promotedLanguages,omitempty"`

	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "HOTEL_ROOM"
	//   "INTERPRETER" - go/hospitality-interpreter-mode
	//   "SENIOR_LIVING_ROOM" - go/merrill-prd
	//   "RETAIL_DEMO" - go/assistant-retail-demo
	Type string `json:"type,omitempty"`

	// VerbalResetSupported: Whether we allow users to initiate clearing the
	// device verbally. We generally allow this for private devices and not
	// for public ones.
	VerbalResetSupported bool `json:"verbalResetSupported,omitempty"`

	// WelcomeRequest: The time when we received a request to welcome the
	// user.
	WelcomeRequest *AssistantApiTimestamp `json:"welcomeRequest,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AogContextId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AogContextId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHospitalityMode) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHospitalityMode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHospitalityModeBranding: TODO(b/169423976)
// Consider moving Branding out of user level settings into enterprise
// level settings. Partner branding fields used to customize the ui.
// Next ID: 7
type AssistantApiSettingsHospitalityModeBranding struct {
	// DisplayName: Brand display in the UI
	DisplayName string `json:"displayName,omitempty"`

	// DisplayNameForLanguage: Brand display in the UI for languages that
	// the enterprise has a localized name that is different from its global
	// branding name. For example, Hilton is 'ヒルトン' in Japanese and
	// '希爾頓' in Chinese. The keys are hospitality supported display
	// locales, e.g. en, ja-JP, etc, defined in experiment parameter
	// Hospitality__hospitality_display_supported_locales.
	DisplayNameForLanguage map[string]string `json:"displayNameForLanguage,omitempty"`

	LargeLogoUrl string `json:"largeLogoUrl,omitempty"`

	SmallLogoUrl string `json:"smallLogoUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHospitalityModeBranding) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHospitalityModeBranding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsHotwordThresholdAdjustmentFactor:
// HotwordThresholdAdjustmentFactor contains
// threshold_adjustment_factor, and it's validity. value should only be
// considered when is_valid = true.
type AssistantApiSettingsHotwordThresholdAdjustmentFactor struct {
	// IsValid: Currently, is_valid is set to false whenever the TAF is not
	// an Autotune aware value. This includes hotword sensitivity users, or
	// devices not eligible for autotune.
	IsValid bool `json:"isValid,omitempty"`

	Value int64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsValid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsValid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsHotwordThresholdAdjustmentFactor) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsHotwordThresholdAdjustmentFactor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsInternalAncillaryDeviceId: Represents supporting
// device ids.
type AssistantApiSettingsInternalAncillaryDeviceId struct {
	// DeviceId: Contains device ids known to devices. eg. For ATV, it
	// contains client_instance_id and cast_id.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsInternalAncillaryDeviceId) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsInternalAncillaryDeviceId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsInternalVersion: Represents a version of a
// specifit setting, e.g. DeviceSettings.
type AssistantApiSettingsInternalVersion struct {
	// GenerationTime: Contains the timestamp when this version was
	// generated.
	GenerationTime string `json:"generationTime,omitempty"`

	// Id: Integer value of the version, it is a monotonically increasing
	// number and starts at 0. On every update it is incremented by 1.
	Id int64 `json:"id,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "GenerationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GenerationTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsInternalVersion) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsInternalVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsKidsMode: Kids mode config for the current
// device. go/aff-parentalsupervision-dd
type AssistantApiSettingsKidsMode struct {
	KidsModeEnabled bool `json:"kidsModeEnabled,omitempty"`

	// ObfuscatedGaiaId: Identifier of the account currently specified to be
	// used with kids mode.
	ObfuscatedGaiaId string `json:"obfuscatedGaiaId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KidsModeEnabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KidsModeEnabled") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsKidsMode) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsKidsMode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsLabeledDowntimeSchedule struct {
	// DisplayName: User-provided name for this schedule.
	DisplayName string `json:"displayName,omitempty"`

	Schedule *AssistantApiSettingsDowntimeSchedule `json:"schedule,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsLabeledDowntimeSchedule) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsLabeledDowntimeSchedule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsLinkedUser: Represents the profile of the user
// who has signed in onto this device. Next id: 5
type AssistantApiSettingsLinkedUser struct {
	// CastLinkingTime: Time of linking of the device with the user provided
	// by Cast.
	CastLinkingTime string `json:"castLinkingTime,omitempty"`

	// Email: Primary email address of the user.
	Email string `json:"email,omitempty"`

	GaiaId int64 `json:"gaiaId,omitempty,string"`

	// Names: Supports features which depend on profile name, when no
	// matching contact is found.
	Names []*AppsPeopleOzExternalMergedpeopleapiName `json:"names,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CastLinkingTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CastLinkingTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsLinkedUser) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsLinkedUser
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsMarketplaceDisclosure struct {
	// Confirmed: True if the user has confirmed the marketplace disclosure.
	Confirmed bool `json:"confirmed,omitempty"`

	// TimestampMs: The time user confirmed the marketplace disclosure.
	TimestampMs int64 `json:"timestampMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Confirmed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confirmed") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsMarketplaceDisclosure) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsMarketplaceDisclosure
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsMasqueradeMode: Guest mode for the current
// device. go/assistant-guest-mode-summary
type AssistantApiSettingsMasqueradeMode struct {
	LastEnterGuestModeTimestamp *AssistantApiTimestamp `json:"lastEnterGuestModeTimestamp,omitempty"`

	LastExitGuestModeTimestamp *AssistantApiTimestamp `json:"lastExitGuestModeTimestamp,omitempty"`

	MasqueradeModeEnabled bool `json:"masqueradeModeEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LastEnterGuestModeTimestamp") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "LastEnterGuestModeTimestamp") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsMasqueradeMode) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsMasqueradeMode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsMusicFilter: Specification of which music
// features can be used.
type AssistantApiSettingsMusicFilter struct {
	// AvailableProviders: Providers available at the time user updated
	// settings.
	//
	// Possible values:
	//   "UNKNOWN_MUSIC_PROVIDER"
	//   "YOUTUBE_MUSIC"
	//   "GOOGLE_PLAY_MUSIC"
	//   "SPOTIFY"
	//   "APPLE_MUSIC"
	//   "PANDORA"
	AvailableProviders []string `json:"availableProviders,omitempty"`

	// ProviderFilterState: Represents the state for the music provider
	// filter.
	//
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL_PROVIDERS" - With this state, all music providers are
	// allowed.
	//   "ALLOW_WHITELISTED_PROVIDERS" - This limits the allowed providers
	// to the whitelisted ones. This means that we can block all providers
	// if the whitelist is empty.
	ProviderFilterState string `json:"providerFilterState,omitempty"`

	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL" - Allow all music.
	//   "BLOCK_EXPLICIT" - Block music with explicit lyrics.
	//   "BLOCK_ALL" - Block all music.
	State string `json:"state,omitempty"`

	// WhitelistedProviders: Contains the list of whitelisted music
	// providers.
	//
	// Possible values:
	//   "UNKNOWN_MUSIC_PROVIDER"
	//   "YOUTUBE_MUSIC"
	//   "GOOGLE_PLAY_MUSIC"
	//   "SPOTIFY"
	//   "APPLE_MUSIC"
	//   "PANDORA"
	WhitelistedProviders []string `json:"whitelistedProviders,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvailableProviders")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailableProviders") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsMusicFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsMusicFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsNewsFilter: Specification of which news features
// can be used.
type AssistantApiSettingsNewsFilter struct {
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL_NEWS" - Allow all news.
	//   "BLOCK_ALL_NEWS" - Block all news.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsNewsFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsNewsFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsNotificationProfile struct {
	// AlloNotificationProfile: Each device can have only one type of
	// notification profile.
	AlloNotificationProfile *AssistantApiSettingsNotificationProfileAlloNotificationProfile `json:"alloNotificationProfile,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AlloNotificationProfile") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlloNotificationProfile")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsNotificationProfile) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsNotificationProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsNotificationProfileAlloNotificationProfile struct {
	// BotSendToken: The send token of the conversation with the user.
	BotSendToken *ChatBotPlatformBotSendToken `json:"botSendToken,omitempty"`

	// Id: The fireball id of this user.
	Id *ChatBotPlatformFireballId `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BotSendToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BotSendToken") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsNotificationProfileAlloNotificationProfile) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsNotificationProfileAlloNotificationProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsOnDeviceAppSettings struct {
	// CarrierCallDeviceSettings: On device carrier call related settings.
	CarrierCallDeviceSettings *AssistantApiSettingsCarrierCallDeviceSettings `json:"carrierCallDeviceSettings,omitempty"`

	// DuoCallDeviceSettings: On device duo call related settings.
	DuoCallDeviceSettings *AssistantApiSettingsDuoCallDeviceSettings `json:"duoCallDeviceSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CarrierCallDeviceSettings") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CarrierCallDeviceSettings") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsOnDeviceAppSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsOnDeviceAppSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsPersonalizationMetadata struct {
	// Possible values:
	//   "PERSONALIZATION_FLOW_UNKNOWN"
	//   "PERSONALIZATION_FLOW_DEVICE"
	//   "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd
	//   "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd
	//   "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio:
	// go/assistant-pc-prd
	FaceMatch string `json:"faceMatch,omitempty"`

	// Possible values:
	//   "PERSONALIZATION_FLOW_UNKNOWN"
	//   "PERSONALIZATION_FLOW_DEVICE"
	//   "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd
	//   "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd
	//   "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio:
	// go/assistant-pc-prd
	PersonalResults string `json:"personalResults,omitempty"`

	// Possible values:
	//   "PERSONALIZATION_FLOW_UNKNOWN"
	//   "PERSONALIZATION_FLOW_DEVICE"
	//   "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd
	//   "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd
	//   "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio:
	// go/assistant-pc-prd
	VoiceMatch string `json:"voiceMatch,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FaceMatch") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FaceMatch") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsPersonalizationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsPersonalizationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsPodcastFilter: Specification of which podcast
// features can be used.
type AssistantApiSettingsPodcastFilter struct {
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL_PODCASTS" - Allow all podcasts.
	//   "BLOCK_ALL_PODCASTS" - Block all podcasts.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsPodcastFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsPodcastFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsPoliteMode: Polite mode config for the current
// device. go/polite-mode-dd
type AssistantApiSettingsPoliteMode struct {
	PoliteModeEnabled bool `json:"politeModeEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PoliteModeEnabled")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PoliteModeEnabled") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsPoliteMode) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsPoliteMode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsReauthTrustedDeviceSettings: Settings related to
// Assistant reauth. go/assistant-reauth-verify-skip Next id: 2
type AssistantApiSettingsReauthTrustedDeviceSettings struct {
	// TrustSettingsForClient: Mapping from integrator client id to device's
	// trust settings. Id from
	// assistant/agent_platform/transactions/reauth/reauth_client.proto.
	TrustSettingsForClient map[string]AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings `json:"trustSettingsForClient,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "TrustSettingsForClient") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TrustSettingsForClient")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsReauthTrustedDeviceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsReauthTrustedDeviceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings: Next
// id: 6
type AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings struct {
	// NeverAskAgain: If true, don't ask user to trust this device again.
	NeverAskAgain bool `json:"neverAskAgain,omitempty"`

	// NeverAskExpirationTimestamp: DEPRECATED: Use never_ask_again instead.
	// Expiration timestamp of "never ask again" status. If this field is
	// set and is later than current timestamp, we should NOT ask the user
	// whether they'd like to trust this device.
	NeverAskExpirationTimestamp string `json:"neverAskExpirationTimestamp,omitempty"`

	// TrustDeviceExpirationTimestamp: Expiration timestamp of "trusted"
	// status. If this field is set and is later than current timestamp, we
	// can consider this device to be trusted.
	TrustDeviceExpirationTimestamp string `json:"trustDeviceExpirationTimestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NeverAskAgain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NeverAskAgain") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsSearchFilter: Specification of which search
// features can be used.
type AssistantApiSettingsSearchFilter struct {
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_SAFE_SEARCH" - Allow only safe search for the Assistant.
	//   "BLOCK_SEARCH" - Block (almost) all search features. Some "safe"
	// features that users wouldn't consider search (like calculator) are
	// still allowed in this mode.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsSearchFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsSearchFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsSpeechOutputSettings: Settings related to TTS
// output.
type AssistantApiSettingsSpeechOutputSettings struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "VERBOSE" - Provide speech output most of the time.
	//   "MIN_VERBOSITY" - Optimize where to provide speech output.
	//   "HANDS_FREE_ONLY" - Provide speech output only in hands-free mode.
	// No TTS will be provided otherwise.
	SpeechOutput string `json:"speechOutput,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SpeechOutput") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SpeechOutput") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsSpeechOutputSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsSpeechOutputSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsSpeechSettings: Settings related to speech
// detection. See go/hotword-settings-on-cloud for more info. Next ID:
// 16
type AssistantApiSettingsSpeechSettings struct {
	// ContinuedConversationEnabled: Indicates whether Continued
	// Conversation is enabled for this device.
	ContinuedConversationEnabled bool `json:"continuedConversationEnabled,omitempty"`

	// DeviceModelType: Stores the device model type e.g Pixel.
	DeviceModelType string `json:"deviceModelType,omitempty"`

	// DspAvailable: Whether the device has DSP chip to enable always on
	// hotword detection.
	DspAvailable bool `json:"dspAvailable,omitempty"`

	// HotwordInNavigationEnabled: Whether hotword has been enabled by the
	// user during navigation.
	//
	// Possible values:
	//   "UNAVAILABLE" - Setting is unavailable to the user.
	//   "ENABLED" - Setting is available and enabled by the user.
	//   "DISABLED" - Setting is available but disabled by the user.
	//   "UNDECIDED" - Setting is available, but user never touched this
	// setting.
	//   "OPA_DISABLED" - Setting is disabled because Opa is disabled by
	// user.
	//   "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is
	// unsupported. Deprecated, use voice_match_available
	//   "INCOMPLETE" - Setting is incomplete, see
	// go/hotword-incomplete-state
	//   "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user
	// without opa availability. go/no-opa-yes-vm
	HotwordInNavigationEnabled string `json:"hotwordInNavigationEnabled,omitempty"`

	// HotwordSetting: Stores hotword setting status for the locales which
	// don't support voice match.
	//
	// Possible values:
	//   "UNAVAILABLE" - Setting is unavailable to the user.
	//   "ENABLED" - Setting is available and enabled by the user.
	//   "DISABLED" - Setting is available but disabled by the user.
	//   "UNDECIDED" - Setting is available, but user never touched this
	// setting.
	//   "OPA_DISABLED" - Setting is disabled because Opa is disabled by
	// user.
	//   "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is
	// unsupported. Deprecated, use voice_match_available
	//   "INCOMPLETE" - Setting is incomplete, see
	// go/hotword-incomplete-state
	//   "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user
	// without opa availability. go/no-opa-yes-vm
	HotwordSetting string `json:"hotwordSetting,omitempty"`

	// LockscreenEnabled: Whether pin/pattern lockscreen has been enabled by
	// the user.
	LockscreenEnabled bool `json:"lockscreenEnabled,omitempty"`

	// OpaEligibilityState: Stores if Assistant is available for the user's
	// device/locale, where Enabled means it is available and disabled means
	// it is not.
	//
	// Possible values:
	//   "UNAVAILABLE" - Setting is unavailable to the user.
	//   "ENABLED" - Setting is available and enabled by the user.
	//   "DISABLED" - Setting is available but disabled by the user.
	//   "UNDECIDED" - Setting is available, but user never touched this
	// setting.
	//   "OPA_DISABLED" - Setting is disabled because Opa is disabled by
	// user.
	//   "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is
	// unsupported. Deprecated, use voice_match_available
	//   "INCOMPLETE" - Setting is incomplete, see
	// go/hotword-incomplete-state
	//   "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user
	// without opa availability. go/no-opa-yes-vm
	OpaEligibilityState string `json:"opaEligibilityState,omitempty"`

	// OpaEligible: Stores if Assistant is available for the user's
	// device/locale. Deprecated as bools do not give accurate true/false
	// ratios due to old clients reporting the default value.
	OpaEligible bool `json:"opaEligible,omitempty"`

	// SdkVersion: Stores the Android SDK version. This comes from
	// android.os.Build.VERSION.SDK_INT.
	SdkVersion int64 `json:"sdkVersion,omitempty"`

	// SpeakerIdModelPresent: Whether speaker ID model is present for the
	// user.
	SpeakerIdModelPresent bool `json:"speakerIdModelPresent,omitempty"`

	// SpeakerIdRecognitionEnabled: Indicates whether the user has enabled
	// speaker-id (fromAnyScreen/alwaysOn) for this device. Deprecated - use
	// voice_match_setting instead
	SpeakerIdRecognitionEnabled bool `json:"speakerIdRecognitionEnabled,omitempty"`

	// TrustedVoiceEnabled: Indicates whether the user has enabled trusted
	// voice for this device.
	TrustedVoiceEnabled bool `json:"trustedVoiceEnabled,omitempty"`

	// UnlockWithHotwordAvailable: A bool indicating whether device supports
	// unlocking device with hotword.
	UnlockWithHotwordAvailable bool `json:"unlockWithHotwordAvailable,omitempty"`

	// UserMigratedToDeclined: Stores if user was migrated from undecided to
	// declined as apart of Mariko project. Used for potential growth
	// targeting.
	UserMigratedToDeclined bool `json:"userMigratedToDeclined,omitempty"`

	// VoiceMatchSetting: Stores the hotword/voice match setting status for
	// the locales which support voice match.
	//
	// Possible values:
	//   "UNAVAILABLE" - Setting is unavailable to the user.
	//   "ENABLED" - Setting is available and enabled by the user.
	//   "DISABLED" - Setting is available but disabled by the user.
	//   "UNDECIDED" - Setting is available, but user never touched this
	// setting.
	//   "OPA_DISABLED" - Setting is disabled because Opa is disabled by
	// user.
	//   "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is
	// unsupported. Deprecated, use voice_match_available
	//   "INCOMPLETE" - Setting is incomplete, see
	// go/hotword-incomplete-state
	//   "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user
	// without opa availability. go/no-opa-yes-vm
	VoiceMatchSetting string `json:"voiceMatchSetting,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ContinuedConversationEnabled") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ContinuedConversationEnabled") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsSpeechSettings) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsSpeechSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSettingsTetheredInfo struct {
	// PrimaryHostDeviceId: The host this wearable is tethered to (e.g.
	// phone). When host is AGSA then this is agsa_client_instance_id. When
	// host is IOPA then this is opa_ios_device_id.
	PrimaryHostDeviceId string `json:"primaryHostDeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PrimaryHostDeviceId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PrimaryHostDeviceId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsTetheredInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsTetheredInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsThirdPartyAppsFilter: Specification of which
// third party apps can be used.
type AssistantApiSettingsThirdPartyAppsFilter struct {
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL" - Allow all third party apps.
	//   "ALLOW_CERTIFIED_FOR_FAMILIES" - Only allow certified Apps for
	// Families. See
	// https://developers.google.com/actions/apps-for-families/.
	//   "BLOCK_ALL" - Block all third party apps.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsThirdPartyAppsFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsThirdPartyAppsFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsVideoFilter: Specification of which video
// features can be used.
type AssistantApiSettingsVideoFilter struct {
	// AutoplayToggleState: State that indicates whether autoplay is enabled
	// for youtube videos.
	//
	// Possible values:
	//   "UNKNOWN_STATE" - Default uninitialized state.
	//   "ENABLED" - Allow autoplay for youtube videos.
	//   "DISABLED" - Disable autoplay for youtube videos.
	AutoplayToggleState string `json:"autoplayToggleState,omitempty"`

	// AvailableProviders: Providers available at the time user updated
	// settings.
	//
	// Possible values:
	//   "UNKNOWN_VIDEO_PROVIDER"
	//   "YOUTUBE"
	//   "YOUTUBE_TV"
	//   "YOUTUBE_KIDS"
	AvailableProviders []string `json:"availableProviders,omitempty"`

	// ProviderFilterState: Represents the state for the video provider
	// filter.
	//
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL_PROVIDERS" - With this state, all video providers are
	// allowed.
	//   "ALLOW_WHITELISTED_PROVIDERS" - This limits the allowed providers
	// to the whitelisted ones. This means that we can block all providers
	// if the whitelist is empty.
	ProviderFilterState string `json:"providerFilterState,omitempty"`

	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL" - Allow all videos.
	//   "BLOCK_MATURE_CONTENT" - Block videos with mature content.
	//   "BLOCK_ALL" - Block all videos.
	State string `json:"state,omitempty"`

	// WhitelistedProviders: Contains the list of whitelisted video
	// providers.
	//
	// Possible values:
	//   "UNKNOWN_VIDEO_PROVIDER"
	//   "YOUTUBE"
	//   "YOUTUBE_TV"
	//   "YOUTUBE_KIDS"
	WhitelistedProviders []string `json:"whitelistedProviders,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AutoplayToggleState")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AutoplayToggleState") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsVideoFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsVideoFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSettingsWebviewFilter: Specification of which webview
// features can be used.
type AssistantApiSettingsWebviewFilter struct {
	// JasperWebviewConsent: Indicates if user has consented Jasper warning
	// message.
	JasperWebviewConsent bool `json:"jasperWebviewConsent,omitempty"`

	// Possible values:
	//   "UNKNOWN_STATE"
	//   "ALLOW_ALL_WEBSITES" - Allow all websites.
	//   "BLOCK_ALL_WEBSITES" - Block all websites.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "JasperWebviewConsent") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "JasperWebviewConsent") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSettingsWebviewFilter) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSettingsWebviewFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSignInMethod: The method of sign in which the client
// supports.
type AssistantApiSignInMethod struct {
	// Possible values:
	//   "UNSPECIFIED" - Unspecified value. Defaults to the same sign-in
	// behavior as PHONE_APP.
	//   "NOT_ALLOWED" - Sign in is not allowed, e.g., go/telephone.
	//   "PHONE_APP" - Sign in with Home app, e.g. Google Home.
	//   "ON_DEVICE_MENU" - Sign in with on device menu, e.g., LGTV,
	// go/web-assistant
	//   "WEB_APP" - Sign in with the Assistant sign in website. See
	// go/baird-web-based-sign-in.
	Method string `json:"method,omitempty"`

	// SignInRequired: Make Google sign-in mandatory for using Google
	// Assistant on the device.
	SignInRequired bool `json:"signInRequired,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Method") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Method") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSignInMethod) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSignInMethod
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSodaCapabilities: Capabilities related to SODA (Speech
// On-Device API). Next ID: 5
type AssistantApiSodaCapabilities struct {
	// SupportsHotwordSensitivity: Whether the device supports different
	// levels of hotword sensitivity. go/hotword-sensitivity-prd
	SupportsHotwordSensitivity bool `json:"supportsHotwordSensitivity,omitempty"`

	// SupportsSimpleStop: Whether Simple Stop (go/simple-stop) is enabled
	// on the device. Simple stop allows users to stop firing alarms and
	// timers by just saying "stop" without first saying the hotword.
	SupportsSimpleStop bool `json:"supportsSimpleStop,omitempty"`

	// SupportsSpeakerId: Whether the device supports speaker-id (speaker
	// identification based on hotword and/or spoken query - go/speaker-id).
	// Note: there are existing devices that support speaker-id but does not
	// have this capability set. Not having this field populated doesn't
	// necessarily mean the device doesn't support speaker-id.
	SupportsSpeakerId bool `json:"supportsSpeakerId,omitempty"`

	// SupportsWarmWords: Whether the device supports WarmWords
	// (go/warm-words-framework).
	SupportsWarmWords bool `json:"supportsWarmWords,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportsHotwordSensitivity") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SupportsHotwordSensitivity") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSodaCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSodaCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSoftwareCapabilities: These capabilities represent what
// software features the client supports. This should be determined
// based on the client's various software versions (OS, GSA version,
// etc). Next ID: 26
type AssistantApiSoftwareCapabilities struct {
	// AppCapabilities: IMPORTANT: Only one of AppCapabilities and
	// AppCapabilitiesDelta should be in the SoftwareCapabilities. In the
	// edge case if the client sends up both AppCapabilities and
	// AppCapabilitiesDelta, AppCapabilitiesDelta is ignored. Complete list
	// of app capabilities.
	AppCapabilities []*AssistantApiAppCapabilities `json:"appCapabilities,omitempty"`

	// AppCapabilitiesDelta: Incremental update for app capabilities.
	AppCapabilitiesDelta []*AssistantApiAppCapabilitiesDelta `json:"appCapabilitiesDelta,omitempty"`

	// AppIntegrationsSettings: App integrations settings for each packge
	// name.
	AppIntegrationsSettings map[string]AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"`

	// CarAssistantCapabilities: Capabilities related to Assistant on Auto
	// surfaces.
	CarAssistantCapabilities *AssistantApiCarAssistantCapabilities `json:"carAssistantCapabilities,omitempty"`

	// ClockCapabilities: Capabilities related to clock functionality, like
	// alarms, timers, etc.
	ClockCapabilities *AssistantApiClockCapabilities `json:"clockCapabilities,omitempty"`

	// ConversationVersion: A top-level version of Conversation protocol
	// where the versions are explicitly defined at
	// go/conversation-versions.
	ConversationVersion *AssistantApiSupportedConversationVersion `json:"conversationVersion,omitempty"`

	// CrossDeviceExecutionCapabilities: For torus x-device execution
	// support
	CrossDeviceExecutionCapabilities *AssistantApiCrossDeviceExecutionCapability `json:"crossDeviceExecutionCapabilities,omitempty"`

	GacsCapabilities *AssistantApiGacsCapabilities `json:"gacsCapabilities,omitempty"`

	GcmCapabilities *AssistantApiGcmCapabilities `json:"gcmCapabilities,omitempty"`

	// LiveTvChannelCapabilities: Capabilities related to live TV channels.
	LiveTvChannelCapabilities *AssistantApiLiveTvChannelCapabilities `json:"liveTvChannelCapabilities,omitempty"`

	// OemCapabilities: List of actions OEM supports. This includes built-in
	// actions and custom actions.
	OemCapabilities *AssistantApiOemCapabilities `json:"oemCapabilities,omitempty"`

	// OnDeviceAssistantCapabilities: on-device Assistant capabilities
	OnDeviceAssistantCapabilities *AssistantApiOnDeviceAssistantCapabilities `json:"onDeviceAssistantCapabilities,omitempty"`

	// OnDeviceSmartHomeCapabilities: Capability bits for on-device Smart
	// Home. go/framework-for-local-semex
	OnDeviceSmartHomeCapabilities *AssistantApiOnDeviceSmartHomeCapabilities `json:"onDeviceSmartHomeCapabilities,omitempty"`

	// OnDeviceStorageCapabilities: Reflects the storage capabilities on the
	// device.
	OnDeviceStorageCapabilities *AssistantApiOnDeviceStorageCapabilities `json:"onDeviceStorageCapabilities,omitempty"`

	// OperatingSystem: The operating system of the device.
	//
	// Possible values:
	//   "OS_TYPE_UNKNOWN"
	//   "OS_TYPE_ANDROID"
	//   "OS_TYPE_CAST"
	//   "OS_TYPE_FUCHSIA"
	//   "OS_TYPE_LINUX"
	OperatingSystem string `json:"operatingSystem,omitempty"`

	// OrderedLiveTvProviders: An ordered list containing the live tv
	// providers available in the client. The order of the providers
	// reflects the ranking in the client and will be respected by server as
	// well.
	OrderedLiveTvProviders []*AssistantApiLiveTvProvider `json:"orderedLiveTvProviders,omitempty"`

	// SelinaCapabilities: The Soli capabilities on Elaine.
	// go/dingo-dc-software
	SelinaCapabilities *AssistantApiSelinaCapabilites `json:"selinaCapabilities,omitempty"`

	SettingsAppCapabilities *AssistantApiSettingsAppCapabilities `json:"settingsAppCapabilities,omitempty"`

	SupportedClientOp []*AssistantApiSupportedClientOp `json:"supportedClientOp,omitempty"`

	SupportedFeatures *AssistantApiSupportedFeatures `json:"supportedFeatures,omitempty"`

	SupportedMsgVersion *AssistantApiSupportedProtocolVersion `json:"supportedMsgVersion,omitempty"`

	SupportedProviderTypes *AssistantApiSupportedProviderTypes `json:"supportedProviderTypes,omitempty"`

	SurfaceProperties *AssistantApiSurfaceProperties `json:"surfaceProperties,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppCapabilities") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppCapabilities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSoftwareCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSoftwareCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSpeechCapabilities: DEPRECATED These capabilties are
// associated with speech detection on devices.
type AssistantApiSpeechCapabilities struct {
	// DspAvailable: A bool indicating whether device supports dsp based
	// hotword detection.
	DspAvailable bool `json:"dspAvailable,omitempty"`

	// UnlockWithHotwordAvailable: A bool indicating whether device supports
	// unlocking device with hotword.
	UnlockWithHotwordAvailable bool `json:"unlockWithHotwordAvailable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DspAvailable") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DspAvailable") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSpeechCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSpeechCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSuggestionsSupport: Next ID: 18
type AssistantApiSuggestionsSupport struct {
	// ClickImpersonationSupported: Whether client supports user
	// impersonation on suggestion chip click.
	// go/suggestion-click-impersonation
	ClickImpersonationSupported bool `json:"clickImpersonationSupported,omitempty"`

	// ColoredChipBackgroundBorderSupported: Whether client supports
	// suggestion chips with colored background/border. Deprecated in favor
	// of go/color-token-suggestion-chip.
	ColoredChipBackgroundBorderSupported bool `json:"coloredChipBackgroundBorderSupported,omitempty"`

	// ColoredChipTextSupported: Whether client supports suggestion chips
	// with colored text. See design doc:
	// http://go/opa-suggestions-ux-eng-design. Deprecated in favor of
	// go/color-token-suggestion-chip.
	ColoredChipTextSupported bool `json:"coloredChipTextSupported,omitempty"`

	// DebugDataSupported: Whether client supports suggestions debug data to
	// be displayed.
	DebugDataSupported bool `json:"debugDataSupported,omitempty"`

	// DrlHistoryChipSupported: Whether DRL history chip is supported.
	// Related bug: http://b/241837879, http://b/171854732 Design doc:
	// http://go/panthera-history-chip-dd DRL history chip was originally
	// rolled out to Panthera in
	// http://google3/googledata/experiments/mobile/agsa/studies/agsa_nga/opa_panthera_one_input_ui_launch.gcl?l=55&rcl=384682900.
	// We plan to roll it out to NGA and TNG. drl_history_chip_supported bit
	// specifies whether the client support (and should have) DRL history
	// chip.
	DrlHistoryChipSupported bool `json:"drlHistoryChipSupported,omitempty"`

	// EscapeHatchSupported: Whether client supports escape hatches aka post
	// execution suggestions go/nga-escape-hatch-prd
	//
	// Possible values:
	//   "UNSUPPORTED"
	//   "NGA_ESCAPE_HATCH"
	EscapeHatchSupported string `json:"escapeHatchSupported,omitempty"`

	// ExecutedTextSupported: Whether the client can rewrite suggestion
	// query text into executed text, if the latter is present. If this
	// feature is disabled, the rewrite happens in Assistant Server.
	ExecutedTextSupported bool `json:"executedTextSupported,omitempty"`

	// ExecutionContextSupported: Whether the client supports passing back
	// `execution_context` from
	// |assistant.api.client_op.SuggestionProcessingParams| when the
	// suggestion is clicked or spoken.
	ExecutionContextSupported bool `json:"executionContextSupported,omitempty"`

	// FeatureSpecificActionSupport: Whether the client supports features in
	// |SuggestionFeatureSpecificAction|.
	FeatureSpecificActionSupport *AssistantApiFeatureSpecificActionSupport `json:"featureSpecificActionSupport,omitempty"`

	// FeatureSpecificAppActionsNotificationSupported: Whether the client
	// supports handling App Actions' notification when the suggestion is
	// clicked. This will allow the server to populate the
	// `app_actions_notification_data` extension field from
	// |SuggestionFeatureSpecificAction| proto message.
	FeatureSpecificAppActionsNotificationSupported bool `json:"featureSpecificAppActionsNotificationSupported,omitempty"`

	// MultiStepTrySayingSupported: Whether the multi-step try saying
	// suggestion feature is supported. dd: go/tng-multi-step-simplified
	MultiStepTrySayingSupported bool `json:"multiStepTrySayingSupported,omitempty"`

	// RuleIdInExecutionContextSupported: Whether the rule_id field in the
	// execution_context is supported. This is a temporary workaround to be
	// able to identify clicks on Person entity suggestions on Sabrina and
	// is expected to be eventually deprecated. TODO(b/185517153) :
	// Deprecate (but do not delete) once click tracking is correctly sent
	// up from the Katniss client.
	RuleIdInExecutionContextSupported bool `json:"ruleIdInExecutionContextSupported,omitempty"`

	// ShowExecutedTextSupported: Whether the client can show executed_text
	// after the click on the suggestion chip. Must be set to false on TNG.
	// TNG disregards |SuggestionProcessingParams.show_executed_text| field
	// and always treats it as if |show_executed_text=true|.
	ShowExecutedTextSupported bool `json:"showExecutedTextSupported,omitempty"`

	// ShowTranslationSupported: Whether the client can show chip as (text |
	// translation). go/lang-partner-doc
	ShowTranslationSupported bool `json:"showTranslationSupported,omitempty"`

	// SupportedDisplayTargets: A list of suggestions display targets
	// supported by this client. If unset only DEFAULT
	// SuggestionDisplayTarget is supported.
	SupportedDisplayTargets []*AssistantApiSuggestionsSupportDisplayTargetSupport `json:"supportedDisplayTargets,omitempty"`

	// WidgetDataSupported: Whether client supports widget suggestion chip
	// to be displayed.
	WidgetDataSupported bool `json:"widgetDataSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClickImpersonationSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ClickImpersonationSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSuggestionsSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSuggestionsSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSuggestionsSupportDisplayTargetSupport struct {
	// ExecutedTextSupported: Whether the client can rewrite suggestion
	// query text into executed text, if the latter is present for the
	// display target.
	ExecutedTextSupported bool `json:"executedTextSupported,omitempty"`

	// HeaderTextSupported: Whether PresentationParams.header_text is
	// supported for the display target.
	HeaderTextSupported bool `json:"headerTextSupported,omitempty"`

	// RepressImpressionSupported: Whether Suggestion.repress_impression is
	// supported. If not repressed suggestions are not returned.
	RepressImpressionSupported bool `json:"repressImpressionSupported,omitempty"`

	// Target: Display target that is supported.
	//
	// Possible values:
	//   "DEFAULT" - Use the default display target.
	//   "NGA_INPUT_PLATE" - Show Escape Hatch chips. The chips are
	// displayed outside of response layer for example over app that query
	// was fulfilled in.
	//   "CONVERSATION_STARTERS" - Show chips as Conversation Starters in
	// Opa and Panthera.
	//   "QUICK_ACTIONS" - Show chips as Panthera quick actions
	// (go/quick-actions-dd).
	//   "TACTILE_ASSISTANT_SUGGESTS" - Show chips in Tactile "Assistant
	// Suggests" section.
	//   "TACTILE_MY_ACTIONS" - Show chips in Tactile "My Actions" section.
	//   "TRY_SAYING" - Show chips as "Try Saying" suggestions.
	//   "RICH_SUGGESTIONS" - Show suggestions as rich suggestions and
	// chips; go/prs-redesign-dd
	Target string `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExecutedTextSupported") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExecutedTextSupported") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSuggestionsSupportDisplayTargetSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSuggestionsSupportDisplayTargetSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSunriseFeaturesSupport struct {
	// SunriseSimulationSupported: If true, the device can slowly brighten
	// the screen and simulate sunrise experience. Alarms with sunrise field
	// enabled can be set on this device.
	SunriseSimulationSupported bool `json:"sunriseSimulationSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SunriseSimulationSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SunriseSimulationSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSunriseFeaturesSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSunriseFeaturesSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedClientOp: These are the set of ClientOps that
// are supported by the device.
type AssistantApiSupportedClientOp struct {
	// ClientOpName: This should be the same as the name of the
	// SemanticClientOp that is supported.
	ClientOpName string `json:"clientOpName,omitempty"`

	// ClientOpProperties: The properties associated with the ClientOp. This
	// proto should be associated with the client_op_name.
	ClientOpProperties *AssistantApiProtobuf `json:"clientOpProperties,omitempty"`

	SupportedExecution *AssistantApiSupportedClientOpSupportedExecution `json:"supportedExecution,omitempty"`

	// Version: A version of 0 is the equivalent to not having support for
	// that client_op type. Note that a client_op is also unsupported if it
	// is not included at all in the list of supported client_ops.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientOpName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientOpName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedClientOp) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedClientOp
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedClientOpSupportedExecution: Additional
// properties that client can support for executing the client op. They
// are surface-specific execution properties and are unrelated to the
// execution model.
type AssistantApiSupportedClientOpSupportedExecution struct {
	// SupportsPartialFulfillment: ClientOp execution supports special
	// rendering behavior while the user is in the middle of expressing
	// their query. This behavior includes: 1) New partial output always
	// over-writes prior partial output. 2) Canceling the interaction
	// removes partial fulfilment from any user visible interaction history.
	// If this is true, whether to apply the special rendering behavior will
	// be determined by PartialFulfillmentRenderingParams. More details can
	// be found at go/ma-natcon-pf-api.
	SupportsPartialFulfillment bool `json:"supportsPartialFulfillment,omitempty"`

	// SupportsSynchronousExecution: Client can support synchronous
	// execution of the client op. For tts.OUTPUT client op it means that
	// client would honor |synchronous_playback_args| argument. Please see
	// more at go/synchronous-sounds-design.
	SupportsSynchronousExecution bool `json:"supportsSynchronousExecution,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportsPartialFulfillment") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SupportsPartialFulfillment") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedClientOpSupportedExecution) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedClientOpSupportedExecution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedConversationVersion: The overall Conversation
// Protocol version. As we make fundamental changes to Conversation
// protocol that are non-backwards compatible, we will increment the
// protocol version. By default, all clients will support version 0. All
// versions are documented at go/conversation-versions.
type AssistantApiSupportedConversationVersion struct {
	// SupportsConversationProtocol: Whether conversation protocol is
	// supported explicitly. If true,
	// SingleDeviceCapabilityChecker::SupportsConversationProtocol will
	// always return true.
	SupportsConversationProtocol bool `json:"supportsConversationProtocol,omitempty"`

	// Version: The supported version number.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportsConversationProtocol") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SupportsConversationProtocol") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedConversationVersion) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedConversationVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedFeatures: These are the set of features that are
// supported by the device. It's a part of the SoftwareCapabilities of
// the device. Next ID: 62
type AssistantApiSupportedFeatures struct {
	// AaeNotificationSourceSupported: Whether the client supports the
	// alternative message notification sources on AAE, in which case
	// notification-related operations can access it.
	AaeNotificationSourceSupported bool `json:"aaeNotificationSourceSupported,omitempty"`

	// AcpSupport: In what way is assistant continued presence supported.
	// (go/opa-acp-prd)
	AcpSupport *AssistantApiAssistantContinuedPresenceSupport `json:"acpSupport,omitempty"`

	ActionV2SupportedFeatures *AssistantApiActionV2SupportedFeatures `json:"actionV2SupportedFeatures,omitempty"`

	// AlarmTimerManagerApiSupported: Whether the client supports
	// AlarmTimerManager API (go/alarm-timer-manager-api).
	AlarmTimerManagerApiSupported bool `json:"alarmTimerManagerApiSupported,omitempty"`

	// AppControlSupport: The client information for app control support.
	// More details in: go/acaia.
	AppControlSupport *AssistantApiAppControlSupport `json:"appControlSupport,omitempty"`

	// AssistantExploreSupported: Whether the client supports the assistant
	// explore section. This field will be active only when the Explore
	// section is available to the user. This means that the user is (a)
	// signed-in, (b) a IOPA / AGSA user, and (c) in a locale where explore
	// is available.
	AssistantExploreSupported bool `json:"assistantExploreSupported,omitempty"`

	// AssistantForKidsSupported: Whether Assistant for Kids (a.k.a.
	// Designed for Family) features are supported.
	AssistantForKidsSupported bool `json:"assistantForKidsSupported,omitempty"`

	// BypassDiDcCheckForComms: Whether communications flows for the client
	// can bypass the DI/DC check. The client will enforce some other
	// equivalent permission as necessary concerning access to device
	// contacts and apps.
	BypassDiDcCheckForComms bool `json:"bypassDiDcCheckForComms,omitempty"`

	// BypassMsgNotificationDismissal: Whether or not Assistant should
	// enforce the dismissal of communication notifications associated with
	// messages.
	BypassMsgNotificationDismissal bool `json:"bypassMsgNotificationDismissal,omitempty"`

	// Client1mProvidersSupported: Whether the client supports 1m providers
	// (go/1m-partner-expansion).
	Client1mProvidersSupported bool `json:"client1mProvidersSupported,omitempty"`

	// ClientOpResultBatchingSupported: Whether the client can batch client
	// op results before sending them to the server.
	ClientOpResultBatchingSupported bool `json:"clientOpResultBatchingSupported,omitempty"`

	// CrossDeviceBroadcastSupported: Whether the client supports
	// cross-device broadcast (i.e. on Torus).
	CrossDeviceBroadcastSupported bool `json:"crossDeviceBroadcastSupported,omitempty"`

	// CrossDeviceBroadcastVersion: The version of cross device broadcast
	// (ie; broadcast on torus) which the client supports.
	//
	// Possible values:
	//   "CROSS_DEVICE_BROADCAST_NOT_SUPPORTED" - Broadcast with torus is
	// not supported on this device.
	//   "CROSS_DEVICE_BROADCAST_V1" - This device supports the cross device
	// broadcast V1 features.
	CrossDeviceBroadcastVersion string `json:"crossDeviceBroadcastVersion,omitempty"`

	// CsatVisualOverlaySupported: Whether the client supports csat visual
	// overlay. (go/sd-od-csat)
	CsatVisualOverlaySupported bool `json:"csatVisualOverlaySupported,omitempty"`

	// DuoClientApiFeatures: The features set which duo client on the device
	// supports. This should be serialized from proto {@code
	// duo_client_api.DuoClientApiFeatures}.
	DuoClientApiFeatures string `json:"duoClientApiFeatures,omitempty"`

	// DuoGroupCallingSupported: Whether the client supports Duo group
	// calling.
	DuoGroupCallingSupported bool `json:"duoGroupCallingSupported,omitempty"`

	// FitnessFeatureSupport: Information about what support this device has
	// for fitness.
	FitnessFeatureSupport *AssistantApiFitnessFeatureSupport `json:"fitnessFeatureSupport,omitempty"`

	// FluidActionsSupport: Fluid Actions features supported by the client.
	// If this field is not set in the incoming request, it could mean that
	// the client does not support Fluid Actions. Alternatively, it could
	// mean that the client supports Fluid Actions, but syncs state with
	// server using the old protocol, namely ConversationStateParams. When
	// b/140733618 is resolved, Surface Adaptation Layer will add this field
	// for old clients that support Fluid Actions framework.
	FluidActionsSupport *AssistantApiFluidActionsSupport `json:"fluidActionsSupport,omitempty"`

	// FuntimeSupported: Whether the surface client op performer supports
	// Funtime alarms and timers. go/funtime-engdesign
	FuntimeSupported bool `json:"funtimeSupported,omitempty"`

	// GdiSupported: Whether account linking via Google Deep Integrations
	// (GDI) is supported. go/opa-gdi-design
	GdiSupported bool `json:"gdiSupported,omitempty"`

	// GearheadNotificationSourceSupported: Whether the client supports the
	// Gearhead message notification source, in which case
	// notification-related operations can access it.
	GearheadNotificationSourceSupported bool `json:"gearheadNotificationSourceSupported,omitempty"`

	// HasPhysicalRadio: Whether the client has a physical radio installed.
	HasPhysicalRadio bool `json:"hasPhysicalRadio,omitempty"`

	// ImmersiveCanvasConfirmationMessageSupported: Whether the client
	// supports confirmation messages in Immersive Canvas actions.
	// Deprecated: use the filed in immersive_canvas_support.
	ImmersiveCanvasConfirmationMessageSupported bool `json:"immersiveCanvasConfirmationMessageSupported,omitempty"`

	ImmersiveCanvasSupport *AssistantApiImmersiveCanvasSupport `json:"immersiveCanvasSupport,omitempty"`

	// InDialogAccountLinkingSupported: Whether the client supports account
	// linking in-dialog (askForSignIn). This is used before this feature is
	// moved to conversation protocol. To support this, the client needs to:
	// - Integrate with Google Deep Integrations. - Have logic to send the
	// result of account linking back to AS.
	InDialogAccountLinkingSupported bool `json:"inDialogAccountLinkingSupported,omitempty"`

	// IsPairedPhoneContactUploadNeededForComms: Whether paired-phone
	// contact upload is needed for communications queries to work (e.g. on
	// AAE).
	IsPairedPhoneContactUploadNeededForComms bool `json:"isPairedPhoneContactUploadNeededForComms,omitempty"`

	// IsPairedPhoneNeededForComms: Whether a Bluetooth-paired phone is a
	// core component of communications flows on the client.
	IsPairedPhoneNeededForComms bool `json:"isPairedPhoneNeededForComms,omitempty"`

	// LaunchKeyboardSupported: Which way of launching the keyboard the
	// client supports.
	//
	// Possible values:
	//   "LAUNCH_KEYBOARD_UNSUPPORTED" - Launching the keyboard from a
	// suggestion chip is not supported.
	//   "OPA_ANDROID_LAUNCH_KEYBOARD_URI" - The keyboard can be opened by
	// using the opa-android://launch_keyboard uri. Takes the url-encoded
	// parameters: - query: the string to prefill the keyboard with. -
	// start: (optional) the start position of the span to highlight. - end:
	// (optional) the end position of the span to highlight.
	LaunchKeyboardSupported string `json:"launchKeyboardSupported,omitempty"`

	// LensSupported: Whether the client has Google Lens (Assistant Eyes).
	LensSupported bool `json:"lensSupported,omitempty"`

	// LiveCardsSupported: Whether the surface supports LiveCards. In cases
	// where the user intent flow cannot be completed within the Assistant,
	// LiveCards are used to take the user to an external app or website.
	// These cards will be pushed to the Google Home app via the PushMessage
	// ClientOp.
	LiveCardsSupported bool `json:"liveCardsSupported,omitempty"`

	// MapsDialogsSupported: Whether the client supports Assistant dialogs
	// within Maps. This field will be set only when the Maps on the surface
	// supports Assistant dialogs embedded within Maps. go/gsa-gmm.
	MapsDialogsSupported bool `json:"mapsDialogsSupported,omitempty"`

	// MasqueradeModeSupported: Whether the device supports masquerade mode
	// (go/masquerade).
	MasqueradeModeSupported bool `json:"masqueradeModeSupported,omitempty"`

	// MediaControlSupport: Information about how client handles media
	// controls (play, pause, skip ...)
	MediaControlSupport *AssistantApiMediaControlSupport `json:"mediaControlSupport,omitempty"`

	// MediaSessionDetection: The ability of the client to detect media
	// sessions on the device.
	//
	// Possible values:
	//   "UNKNOWN_MEDIA_SESSION_DETECTION"
	//   "RELIABLE_MEDIA_SESSION_DETECTION" - The client has perfect
	// knowledge of what is playing on the device. For example, Chirp falls
	// into this category. We can reliably choose to control or punt based
	// on media params.
	//   "UNRELIABLE_MEDIA_SESSION_DETECTION" - The client has some
	// knowledge about the media sessions on the device. For example, OPA TV
	// falls into this category. For these cases, we should probably always
	// try to return the media control client op to the client.
	//   "NO_MEDIA_SESSION_DETECTION" - The client has no idea about the
	// media playback on the device. For these cases, we should either punt
	// or attempt to control media and silently fail.
	//   "MEDIA_SESSION_DETECTION_DISABLED_SCREEN_CONTEXT" - Media session
	// detection is supported by the client but disabled by the user (for
	// example: OPA_CROS) by turning off screen context setting.
	MediaSessionDetection string `json:"mediaSessionDetection,omitempty"`

	// MeetSupported: Whether the client supports joining a Google Meet
	// meeting.
	MeetSupported bool `json:"meetSupported,omitempty"`

	// NoInputResponseSupported: Whether the client can render no input
	// response or just ignore it. No input response is returned when client
	// has a no speech input interaction, eg. user tapped mic but didn't say
	// anything.
	NoInputResponseSupported bool `json:"noInputResponseSupported,omitempty"`

	// OpaOnSearchSupported: When the entry source is search, whether the
	// client supports rendering a similar response as OPA one does. Entry
	// source is defined at
	// http://cs/symbol:assistant.api.params.DeviceProperties.EntrySource
	OpaOnSearchSupported bool `json:"opaOnSearchSupported,omitempty"`

	// ParentalControlsSupported: Whether or not the client supports
	// enabling parental controls. When a device to supports parental
	// controls, it has the software necessary to store the relevant
	// information required for parental controls to work. This information
	// includes a boolean "enabled bit" as well as the obfuscated gaia ID of
	// the kid account selected for use with parental controls. Devices
	// supportings kids mode send this information to S3 via S3ClientInfo in
	// every request. See go/aff-kidsproduct for details.
	ParentalControlsSupported bool `json:"parentalControlsSupported,omitempty"`

	// PersistentDisplaySupported: Whether the client supports persistent
	// display. The new feature allows Assistant devices with screen to
	// display a continuously updating permanent display, such as ambient
	// weather, without the need for a user to ask the Assistant. Design
	// doc: go/assistant-persistent-display.
	PersistentDisplaySupported bool `json:"persistentDisplaySupported,omitempty"`

	// PrivacyAwareLockscreenSupported: Whether the client supports the
	// privacy-aware lockscreen protocol (go/assistant-lockscreen-spec).
	PrivacyAwareLockscreenSupported bool `json:"privacyAwareLockscreenSupported,omitempty"`

	// RemoteCloudCastingEnabled: Whether the client has remote casting
	// enabled. For ex: we want to disable this for clients like Auto.
	RemoteCloudCastingEnabled bool `json:"remoteCloudCastingEnabled,omitempty"`

	// ServerGeneratedFeedbackChipsEnabled: Whether the Assistant Server
	// should generate feedback suggestion chips.
	ServerGeneratedFeedbackChipsEnabled bool `json:"serverGeneratedFeedbackChipsEnabled,omitempty"`

	// ShLockScreenSupported: Whether the client supports SmartHome lock
	// screen logic (i.e. on Tangor).
	ShLockScreenSupported bool `json:"shLockScreenSupported,omitempty"`

	// SignInMethod: Which kind of sign in the client supports.
	SignInMethod *AssistantApiSignInMethod `json:"signInMethod,omitempty"`

	// SleepSensingSupported: Whether the client can monitor sleep. This
	// allows us to show sleep CUJ related information: go/TwilightDesign
	// Use for development only, see the same field in
	// DeviceCapabilities.SoftwareCapabilities.SelinaCapabilities.
	SleepSensingSupported bool `json:"sleepSensingSupported,omitempty"`

	// SmartspaceCrossDeviceTimerSupported: Whether the client supports
	// smart space cross-device timers. (go/ss-x-device-timer)
	SmartspaceCrossDeviceTimerSupported bool `json:"smartspaceCrossDeviceTimerSupported,omitempty"`

	// SoliGestureDetectionSupported: Whether or not the client supports
	// gesture detection via soli chips. The reason to prepend the name with
	// soli is to distinguish it from computer vision based methods, e.g.
	// Newman devices.
	SoliGestureDetectionSupported bool `json:"soliGestureDetectionSupported,omitempty"`

	// SuggestionsSupport: Suggestion chips features, supported by the
	// client.
	SuggestionsSupport *AssistantApiSuggestionsSupport `json:"suggestionsSupport,omitempty"`

	// SunriseFeaturesSupport: Whether the client supports the sunrise
	// screen brightening feature before the alarm fires. This is used to
	// indicate whether sunrise alarms can be set on the device.
	// http://cs/symbol:assistant.api.core_types.governed.RingtoneTaskMetadata.GentleWakeInfo
	SunriseFeaturesSupport *AssistantApiSunriseFeaturesSupport `json:"sunriseFeaturesSupport,omitempty"`

	// TapToReadOptimizationSupported: Whether the client supports faster
	// optimization for tap_to_read feature.
	TapToReadOptimizationSupported bool `json:"tapToReadOptimizationSupported,omitempty"`

	// ThirdPartyGuiSupported: Whether the device supports the 3p GUI
	// framework, which allows third parties to enter the conversation with
	// the user, showing their logo next to their chat bubbles, etc.
	// go/3p-phone
	ThirdPartyGuiSupported bool `json:"thirdPartyGuiSupported,omitempty"`

	// TransactionFeaturesSupport: Transactions features, supported by the
	// client. Transactions feature may includes how Transactions team want
	// to populate additional information from the device to the server.
	TransactionFeaturesSupport *AssistantApiTransactionFeaturesSupport `json:"transactionFeaturesSupport,omitempty"`

	// TransactionsVersion: The version of transactions which the client
	// supports.
	//
	// Possible values:
	//   "NO_TRANSACTIONS" - Transactions are not supported on this device.
	//   "TRANSACTIONS_INITIAL_LAUNCH" - This device supports the client
	// features present at the initial consumer launch of transactions.
	//   "TRANSACTIONS_V2" - This device supports the transaction version v2
	// client features, includes transactions clientops. Deprecated given
	// there're some iOS version populate this enum but don't support
	// clientops.
	//   "TRANSACTIONS_V3" - This device supports the transaction version v3
	// client features, includes transactions clientops.
	TransactionsVersion string `json:"transactionsVersion,omitempty"`

	// UsesSeparateFullViewer: If set, it indicates that the client can open
	// a separate HTML browser/webviewer (full viewer) to display certain
	// visual results. These visual results usually require more memory to
	// render (e.g. high resolution photos). Compared to the regular viewer
	// that display all other Assistant result, the full viewer does not
	// have memory limit. The field is copied from the device model. See
	// http://google3/assistant/devices_platform/proto/device_model_capabilities.proto?l=225&rcl=312576471
	// Also see go/webassistant-full-card-viewer.
	UsesSeparateFullViewer bool `json:"usesSeparateFullViewer,omitempty"`

	// ViewReminderHubPageNotSupported: Whether the client supports viewing
	// of reminder hub page or not. Default is supported. Set to true to
	// disable returning reminder hub page url in reminder responses.
	ViewReminderHubPageNotSupported bool `json:"viewReminderHubPageNotSupported,omitempty"`

	// WarmWelcomeTutorialSupported: Whether the client supports the
	// programmatic warm welcome tutorial. Design doc: go/opal-pww-design.
	WarmWelcomeTutorialSupported bool `json:"warmWelcomeTutorialSupported,omitempty"`

	// WebBrowserSupported: Whether the supports opening a URL in a web
	// browser. For example, we want to disable this for clients like Chirp.
	WebBrowserSupported bool `json:"webBrowserSupported,omitempty"`

	// WhatsNextSupported: Whether or not the client supports WhatsNext in
	// the protocol.
	WhatsNextSupported bool `json:"whatsNextSupported,omitempty"`

	// ZoomSupported: Whether the client supports joining a Zoom meeting.
	ZoomSupported bool `json:"zoomSupported,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AaeNotificationSourceSupported") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AaeNotificationSourceSupported") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedProtocolVersion: Contains versions of protocol
// buffer messages. This is the equivalence of a proto3 map, keyed by a
// protocol buffer message’s name, and the value is the version of
// this message. e.g. {"assistant.api.core_types.Timer": 2,
// "assistant.api.core_types.Alarm": 1} See
// go/assistant-protocol-versioning for more details.
type AssistantApiSupportedProtocolVersion struct {
	MessageVersion []*AssistantApiSupportedProtocolVersionMessageVersionPair `json:"messageVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MessageVersion") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MessageVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedProtocolVersion) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedProtocolVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiSupportedProtocolVersionMessageVersionPair struct {
	// MessageName: The full path of a message which should start from the
	// package name. e.g. "assistant.api.core_types.Timer".
	MessageName string `json:"messageName,omitempty"`

	// Version: The supported version number.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MessageName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MessageName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedProtocolVersionMessageVersionPair) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedProtocolVersionMessageVersionPair
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSupportedProviderTypes: Types of providers that are
// supported by the client. For example, ChromeOS support both web app
// and Android app (for eligible devices).
type AssistantApiSupportedProviderTypes struct {
	// Possible values:
	//   "PROVIDER_TYPE_UNSPECIFIED"
	//   "ANDROID_APP" - For AndroidAppInfo
	//   "CAST_APP" - For CastAppInfo
	//   "CLOUD_PROVIDER" - For CloudProviderInfo
	//   "SIP_PROVIDER" - For SipProviderInfo
	//   "IOS_APP" - For IosAppInfo
	//   "INTERNAL_PROVIDER" - For InternalProviderInfo
	//   "WEB_PROVIDER" - For WebProviderInfo
	//   "KAIOS_APP" - For KaiOsAppInfo
	//   "HOME_APP" - For HomeAppInfo
	//   "CHROMEOS_APP" - For ChromeOsAppInfo
	SupportedTypes []string `json:"supportedTypes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SupportedTypes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SupportedTypes") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSupportedProviderTypes) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSupportedProviderTypes
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSurfaceProperties: Properties of the surface that are not
// hardware related or feature specific.
type AssistantApiSurfaceProperties struct {
	ExecutionCapabilities *AssistantApiSurfacePropertiesExecutionCapabilities `json:"executionCapabilities,omitempty"`

	// ResponseDisplayFormat: If this field is unset, the response format is
	// unknown
	//
	// Possible values:
	//   "SINGLE_ITEM" - The surface can only show a single item (card,
	// display text, etc) of the response at a time. For example, if both a
	// display text and a card are sent in a response, the surface may only
	// show the card to the user.
	//   "MULTIPLE_ITEMS" - The surface can show a simple multi item
	// response (e.g. both a display text and a card), but can't show
	// response items from a previous response.
	//   "FULL_HISTORY" - The surface can show complex multi item responses
	// (e.g. display text, card, display text) as well as a history of
	// previous responses.
	ResponseDisplayFormat string `json:"responseDisplayFormat,omitempty"`

	// SupportsMultiResponse: If true, the client supports receiving
	// multiple responses. See go/multiple-response-in-media-use-cases for
	// more details.
	SupportsMultiResponse bool `json:"supportsMultiResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExecutionCapabilities") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExecutionCapabilities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSurfaceProperties) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSurfaceProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSurfacePropertiesExecutionCapabilities: Describes the
// capabilities that are related to the execution of client ops on the
// device.
type AssistantApiSurfacePropertiesExecutionCapabilities struct {
	// SupportsClientOpPreloading: Completes the preloading ie., sets up the
	// stage for the execution of client ops on the device while the
	// previous conv delta is being executed. Refer to go/preload-convdelta
	// for more information.
	SupportsClientOpPreloading bool `json:"supportsClientOpPreloading,omitempty"`

	// SupportsNonFinalizedResponses: A value of true indicates that the
	// client supports streaming of non-finalized responses by use of
	// ClientExecutionParams.response_stream_id. and
	// ClientExecutionParams.to_be_finalized.
	SupportsNonFinalizedResponses bool `json:"supportsNonFinalizedResponses,omitempty"`

	// SupportsNonMaterializedInteractions: If true, the client supports
	// receiving non-materialized interactions
	// (go/as-streaming-protocol-nm).
	SupportsNonMaterializedInteractions bool `json:"supportsNonMaterializedInteractions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportsClientOpPreloading") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SupportsClientOpPreloading") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSurfacePropertiesExecutionCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSurfacePropertiesExecutionCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSystemNotificationRestrictions: Restrictions related to
// system-level notifications.
type AssistantApiSystemNotificationRestrictions struct {
	CategoryState []*AssistantApiSystemNotificationRestrictionsNotificationCategoryState `json:"categoryState,omitempty"`

	ChannelState []*AssistantApiSystemNotificationRestrictionsNotificationChannelState `json:"channelState,omitempty"`

	// NotificationCapabilities: Specifies whether the surface is able to
	// display notifications.
	//
	// Possible values:
	//   "NO_NOTIFICATION_CAPABILITY" - The surface is not able to display
	// notifications.
	//   "NOTIFICATIONS_DISABLED" - The notifications are disabled on the
	// surface.
	//   "NOTIFICATIONS_ENABLED" - The notifications are enabled.
	NotificationCapabilities string `json:"notificationCapabilities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryState") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryState") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSystemNotificationRestrictions) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSystemNotificationRestrictions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSystemNotificationRestrictionsNotificationCategoryState:
// Notification channels state for the new server driven channels.
type AssistantApiSystemNotificationRestrictionsNotificationCategoryState struct {
	// CategoryId: Notification channel type.
	CategoryId int64 `json:"categoryId,omitempty"`

	// Disabled: Weather the notifications on this channel are disabled.
	Disabled bool `json:"disabled,omitempty"`

	// Possible values:
	//   "NONE"
	//   "ASSISTANT_CATEGORY_SETTING" - The category was turned off in
	// Assistant Notification Settings.
	//   "ASSISTANT_OVERALL_SETTING" - All notifications for Assistant was
	// turned off in settings.
	//   "OS_APP_DISABLED" - All notifications for the Assistant (GSA) app
	// was turned off.
	//   "OS_CHANNEL_GROUP_DISABLED" - Notifications for the channel group
	// was turned off.
	//   "OS_CHANNEL_DISABLED" - Notifications for the channel was turned
	// off.
	DisabledReason string `json:"disabledReason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSystemNotificationRestrictionsNotificationCategoryState) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSystemNotificationRestrictionsNotificationCategoryState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiSystemNotificationRestrictionsNotificationChannelState:
// Notification channels state.
type AssistantApiSystemNotificationRestrictionsNotificationChannelState struct {
	// ChannelType: Notification channel type.
	//
	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "TYPE_OPA_PROACTIVE"
	//   "TYPE_OPA_HANDOFF"
	//   "TYPE_OPA_MISC"
	//   "TYPE_OPA_RECOMMENDATIONS"
	//   "TYPE_OPA_PRODUCT_UPDATES"
	//   "TYPE_OPA_THIRD_PARTY"
	ChannelType string `json:"channelType,omitempty"`

	// Enabled: Whether the notifications on this channel are enabled.
	Enabled bool `json:"enabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChannelType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiSystemNotificationRestrictionsNotificationChannelState) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiSystemNotificationRestrictionsNotificationChannelState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiThirdPartyActionConfig: 3P Action Metadata. Next ID: 3
type AssistantApiThirdPartyActionConfig struct {
	// DeviceActionCapability: DeviceActionCapability from
	// DeviceModelPackage.
	DeviceActionCapability *AssistantDevicesPlatformProtoDeviceActionCapability `json:"deviceActionCapability,omitempty"`

	// ProjectConfigs: List of Action project capabilities.
	ProjectConfigs []*AssistantApiThirdPartyActionConfigProjectConfig `json:"projectConfigs,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceActionCapability") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceActionCapability")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiThirdPartyActionConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiThirdPartyActionConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiThirdPartyActionConfigProjectConfig: Metadata for
// ActionPackage. Device Actions are disabled by default unless
// explicitly enabled for the device here, see
// go/3p-device-actions-v2-design.
type AssistantApiThirdPartyActionConfigProjectConfig struct {
	// ProjectId: Google cloud project id for which the Action Package or
	// Device Model is registered.
	ProjectId string `json:"projectId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProjectId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProjectId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiThirdPartyActionConfigProjectConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiThirdPartyActionConfigProjectConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiThirdPartyCapabilities struct {
	// DataSharingRestrictions: Restrictions for the device to share any
	// data with third party apps. See details in go/atv-dsc.
	//
	// Possible values:
	//   "DEFAULT_NO_DATA_SHARING_RESTRICTION" - User has accepted to share
	// the data with third party apps. The device has no data sharing
	// restrictions.
	//   "NO_SHARING_ALLOWED_WITH_THIRD_PARTY" - User has declined to share
	// the data with third party apps.
	//   "SHARING_STATUS_NOT_SET" - User hasn't made a choice on whether to
	// share data with third party apps.
	//   "NO_SHARING_ALLOWED_WITH_THIRD_PARTY_FROM_OOBE" - User has declined
	// to share the data with third party apps during OOBE flow. With this
	// state, the user should see the data sharing consent compact screen.
	// See cetails in http://shortn/_JsLg0OeEJj.
	DataSharingRestrictions string `json:"dataSharingRestrictions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DataSharingRestrictions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataSharingRestrictions")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiThirdPartyCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiThirdPartyCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiTimeOfDay: A civil time relative to a timezone.
// IMPORTANT: The definition of TimeOfDay proto is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead.
type AssistantApiTimeOfDay struct {
	// Hour: The hour, in 0...23.
	Hour int64 `json:"hour,omitempty"`

	// Minute: The minute, in 0...59.
	Minute int64 `json:"minute,omitempty"`

	// Nanosecond: The fraction of seconds in nanoseconds, in 0..999999999.
	Nanosecond int64 `json:"nanosecond,omitempty"`

	// Second: The second, in 0...59. Leap seconds are not supported.
	Second int64 `json:"second,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hour") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hour") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiTimeOfDay) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiTimeOfDay
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiTimeZone: A time zone. Conceptually, a time zone is a set
// of rules associated with a location that describes a UTC offset and
// how it changes over time (e.g. Daylight Saving Time). The offset is
// used to compute the local date and time. IMPORTANT: The definition of
// TimeZone enum is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead.
type AssistantApiTimeZone struct {
	// IanaId: Time zone in IANA format, e.g. America/Los_Angeles for USA
	// Pacific Time.
	IanaId string `json:"ianaId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IanaId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IanaId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiTimeZone) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiTimeZone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantApiTimestamp: An absolute point in time independent of
// timezone or calendar, based on the proto3 Timestamp
// (//google/protobuf/timestamp.proto). IMPORTANT: The definition of
// Timestamp proto is being moved to
// //assistant/api/core_types/governed/datetime_type.proto. All existing
// references will be updated to point to the new location. If you are
// adding a reference, use the new one instead. NOTE: THIS IS NO LONGER
// RECOMMENDED TO BE USED. It was originally defined separately from
// google.protobuf.Timestamp due to incompatibility with proto2 syntax.
// The incompatibility issues have since been resolved and so the
// Google-wide standard representation of google.protobuf.Timestamp
// should be preferred. In fact, google.protobuf.* protos in general are
// now recommended to be used in new APIs.
type AssistantApiTimestamp struct {
	// Nanos: Non-negative fractions of a second at nanosecond resolution.
	Nanos int64 `json:"nanos,omitempty"`

	// Seconds: Seconds of UTC time since the Unix epoch.
	Seconds int64 `json:"seconds,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Nanos") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Nanos") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiTimestamp) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiTimestamp
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiTransactionFeaturesSupport struct {
	// VoicePinSuppressed: If true, setting this boolean means the device
	// should not support voice PIN. For example, although the phone
	// supports both voice and PIN pad, but we don't want users using voice.
	// https://docs.google.com/document/d/1M8iJQX3GuxGZGeidS8Gl4KJt3LuBWAIlolPlW10DkxU/edit#heading=h.8ovvdd3i2thv
	VoicePinSuppressed bool `json:"voicePinSuppressed,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VoicePinSuppressed")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VoicePinSuppressed") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiTransactionFeaturesSupport) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiTransactionFeaturesSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantApiVolumeProperties struct {
	// DefaultVolumePercentage: The volume percentages for spelled out
	// values.
	DefaultVolumePercentage int64 `json:"defaultVolumePercentage,omitempty"`

	HighVolumePercentage int64 `json:"highVolumePercentage,omitempty"`

	// LevelStepSize: The number of levels to move for a step.
	LevelStepSize float64 `json:"levelStepSize,omitempty"`

	LowVolumePercentage int64 `json:"lowVolumePercentage,omitempty"`

	// MaximumVolumeLevel: The max number of volume levels the client
	// supports.
	MaximumVolumeLevel int64 `json:"maximumVolumeLevel,omitempty"`

	MediumVolumePercentage int64 `json:"mediumVolumePercentage,omitempty"`

	VeryHighVolumePercentage int64 `json:"veryHighVolumePercentage,omitempty"`

	VeryLowVolumePercentage int64 `json:"veryLowVolumePercentage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DefaultVolumePercentage") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DefaultVolumePercentage")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantApiVolumeProperties) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantApiVolumeProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantApiVolumeProperties) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantApiVolumeProperties
	var s1 struct {
		LevelStepSize gensupport.JSONFloat64 `json:"levelStepSize"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LevelStepSize = float64(s1.LevelStepSize)
	return nil
}

// AssistantDeviceTargetingDeviceTargetingError: The information
// associated with an error while selecting the target device. Next ID:
// 2
type AssistantDeviceTargetingDeviceTargetingError struct {
	// Possible values:
	//   "UNKNOWN_ERROR"
	//   "NO_DEVICE_IN_SAME_STRUCTURE" - Error about when there's no
	// qualified devices in the same home graph structure as the local
	// device.
	//   "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION" - Error about when there's
	// no qualified devices in the same network or location as the local
	// device.
	//   "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION" - Error about
	// when there's no qualified devices in the same home graph structure or
	// network or location as the local device.
	//   "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED" - Error
	// about when no qualified device was found that matched the following
	// conditions: 1) Both local device and target device are in the same
	// home graph structure. 2) The distance to target device is unknown
	// (i.e. either local device or target device is homeless) and target
	// device is owned by the user. 3) If local device and target device are
	// in different structures, only allowed when the query explicitly
	// mentioned device name.
	//   "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when
	// no qualified device satisfies the device capability requirement.
	//   "NO_DEVICE_MATCHED_DEVICE_ANNOTATION" - Error of no qualified
	// devices matched requirements from device annotation.
	//   "MULTI_TARGET_DEVICE_NOT_SUPPORTED" - Error of not supporting
	// targeting multiple devices.
	//   "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED" - Error of no device left
	// after local device is excluded within inclusiveness filter.
	//   "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE" - Error of unable to target
	// only local device within inclusiveness filter.
	//   "NO_DEVICE_MATCHED_REQUIRED_TRAITS" - Error of no qualified devices
	// matched the required smart home traits.
	//   "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE" - Error of no qualified
	// devices matched the required smart home device types.
	//   "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE" - Error of no qualified
	// devices in the mentioned structure or in the same structure as the
	// local device.
	//   "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT" - Error of no device
	// satisfying playback requirements.
	//   "STRUCT_DISAMBIG_NOT_SUPPORTED" - Error when structure
	// disambiguation is not supported in the config. When config is
	// supported (both structure_disambiguation_supported and
	// multi_target_supported are set to true), the library would return
	// structures for disambiguation.
	//   "ROOM_DISAMBIG_NOT_SUPPORTED" - Error when room disambiguation is
	// not supported in the config. When config is supported (both
	// room_disambiguation_supported and multi_target_supported are set to
	// true), the library would return rooms for disambiguation.
	//   "UNRECOGNIZED_DEVICE_NAME" - Error when the device mentioned in the
	// query is not recognized. In other words, we can't find a device which
	// matched the device mentioned in the query.
	//   "NO_LINKED_REMOTE_DEVICES" - Used when user requests to target on a
	// remote device and there are no remote devices linked.
	//   "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to
	// target on a remote video device and there are no remote video devices
	// linked.
	//   "NO_SAFE_DEVICE_WITH_SCREEN" - Error when there is no safe screen
	// device. For example, requesting screen-requiring content from Auto
	// surface.
	//   "ALL_QUALIFIED_DEVICES_OFFLINE" - Error when all qualified devices
	// are offline.
	//   "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target
	// a device which is in a different structure and is not allowed. For
	// example, if user doesn't own the structure. See
	// go/on-multi-user-access-transitivity for more details.
	//   "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a
	// device with certain provider but no device can satisfies provider
	// requirement.
	//   "MISSING_LOCAL_DEVICE_SETTING" - AvailableDevice device setting of
	// local device is missing.
	//   "NO_DEVICE_HAS_REQUIRED_APP" - Required app is not installed
	//   "HYBRID_DEVICE_NOT_QUALIFIED" - All remote hybrid devices fail the
	// propertries requirement specific (lock/unlock, etc) for hybrid
	// devices (such as Tangor).
	//   "NO_NEARBY_DEVICES" - No nearby hearing devices
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDeviceTargetingDeviceTargetingError) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDeviceTargetingDeviceTargetingError
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoAlarmCapability: Capability with regard
// to support of alarms by the client.
type AssistantDevicesPlatformProtoAlarmCapability struct {
	// MaxSupportedAlarms: Maximum number of alarms that can be created on
	// the client. Zero or unset indicates no maximum limit.
	MaxSupportedAlarms int64 `json:"maxSupportedAlarms,omitempty"`

	// RestrictAlarmsToNextDay: Whether the client restricts alarms to ring
	// within the next 24 hours.
	RestrictAlarmsToNextDay bool `json:"restrictAlarmsToNextDay,omitempty"`

	// SupportsStopAction: Whether the client supports the STOP alarm
	// action. If this is false, stop actions will be represented by the
	// MUTATE action, and the device may need to check alarm state to
	// determine if there's a firing alarm that needs to be dismissed.
	SupportsStopAction bool `json:"supportsStopAction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MaxSupportedAlarms")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MaxSupportedAlarms") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoAlarmCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoAlarmCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoArgSpec struct {
	IntValueSpec *AssistantDevicesPlatformProtoIntValueSpec `json:"intValueSpec,omitempty"`

	OptionValueSpec *AssistantDevicesPlatformProtoOptionValueSpec `json:"optionValueSpec,omitempty"`

	// Possible values:
	//   "TYPE_UNSPECIFIED" - A type must be specified.
	//   "BOOL"
	//   "INTEGER" - The arg value type is integer. The value can be any
	// integer unless int_value_spec is provided below.
	//   "OPTION" - The arg value is from list of options. The valid options
	// are specified from optional_value_spec below.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntValueSpec") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntValueSpec") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoArgSpec) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoArgSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoCallCallCapability struct {
}

type AssistantDevicesPlatformProtoClientReconnectCapability struct {
}

// AssistantDevicesPlatformProtoCloudCapability: States the cloud
// capabilities of the device, i.e. the endpoint(s) to use for cloud
// execution of Actions or Registration.
type AssistantDevicesPlatformProtoCloudCapability struct {
	// CloudEndpoints: The list of CloudEndpoints supported by this Device
	// Model. Note that each should have a unique |name|. If any cloud
	// endpoints are provided here, then the first one in the list will be
	// used by default for all Cloud Execution. An Intent may override the
	// default by providing an |execution_config|.
	CloudEndpoints []*AssistantDevicesPlatformProtoCloudEndpoint `json:"cloudEndpoints,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CloudEndpoints") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudEndpoints") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoCloudCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoCloudCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoCloudEndpoint: A cloud endpoints
// associates with this device, it can be used for query parsing, or
// cloud execution.
type AssistantDevicesPlatformProtoCloudEndpoint struct {
	// Name: The name for this cloud endpoint. It's unique per Locale. This
	// is not an API resource name. Ex: sample-nlu-endpoint
	Name string `json:"name,omitempty"`

	// Scopes: The list of scopes to be provided in the OAuth2 token. They
	// must be a subset of the scopes registered in the Account Linking
	// flow, or the request will fail. If the client itself provides the
	// token, then this field is ignored.
	Scopes []string `json:"scopes,omitempty"`

	// Url: The URL for this endpoint, it must start with https.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoCloudEndpoint) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoCloudEndpoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoDeviceActionCapability: This capability
// represents device action needed capability. Next ID: 10
type AssistantDevicesPlatformProtoDeviceActionCapability struct {
	// AssistantDeviceInRoomOptOut: Integrate your device with Google's
	// Smart Home solution by putting your device into Google's Home Graph,
	// a database that stores and provides contextual data about the home
	// and its devices. For example, Home Graph can store the concept of a
	// living room that contains multiple types of devices, when you say
	// "turn on the light" to a device, if you have light in the living
	// room, that light will be turned on.
	AssistantDeviceInRoomOptOut bool `json:"assistantDeviceInRoomOptOut,omitempty"`

	// BuiltInIntentMode: Specifies behavior for built-in device actions for
	// this device model. If not specified, defaults to
	// ENABLE_CONFIGURED_INTENTS_ONLY.
	//
	// Possible values:
	//   "INTENT_MODE_UNSPECIFIED"
	//   "ENABLE_ALL" - All intents are enabled, regardless of whether the
	// intent is registered in the `intents` field.
	//   "ENABLE_ALL_AUTO_ACTIONS" - All Auto device actions are enabled,
	// regardless of whether the intent is registered in the `intents`
	// field. Only use it for Auto device type.
	//   "ENABLE_CONFIGURED_INTENTS_ONLY" - Only the intents registered in
	// the `intents` field will be enabled.
	//   "PUNT_FOR_UNCONFIGURED_INTENTS" - Only the intents registered in
	// the `intents` field will be enabled. Additionally, read an error
	// message when the unconfigured intents are invoked.
	BuiltInIntentMode string `json:"builtInIntentMode,omitempty"`

	// CustomIntentMode: Specifies which custom device actions should be
	// enabled for this device model. This will only affect the behavior of
	// intents corresponding to those from the Action Package of this
	// project. If not specified, defaults to ENABLE_ALL.
	//
	// Possible values:
	//   "INTENT_MODE_UNSPECIFIED"
	//   "ENABLE_ALL" - All intents are enabled, regardless of whether the
	// intent is registered in the `intents` field.
	//   "ENABLE_ALL_AUTO_ACTIONS" - All Auto device actions are enabled,
	// regardless of whether the intent is registered in the `intents`
	// field. Only use it for Auto device type.
	//   "ENABLE_CONFIGURED_INTENTS_ONLY" - Only the intents registered in
	// the `intents` field will be enabled.
	//   "PUNT_FOR_UNCONFIGURED_INTENTS" - Only the intents registered in
	// the `intents` field will be enabled. Additionally, read an error
	// message when the unconfigured intents are invoked.
	CustomIntentMode string `json:"customIntentMode,omitempty"`

	// DefaultExecutionConfig: Default instructions for routing of any
	// Intent. The data here could be overridden for specific Intents if
	// provided directly in the 'intents' field.
	DefaultExecutionConfig *AssistantDevicesPlatformProtoExecutionConfig `json:"defaultExecutionConfig,omitempty"`

	// InlinedActionCapability: Specifies capabilities for device actions
	// that are inlined in the google.assistant.embedded.v1.DeviceAction
	// message.
	InlinedActionCapability *AssistantDevicesPlatformProtoInlinedActionCapability `json:"inlinedActionCapability,omitempty"`

	// Intents: Intent configurations. Built-in and custom intents may be
	// configured here. Note that built-in intents will always behave with
	// IntentMode of ENABLE_CONFIGURED_INTENTS_ONLY. The IntentMode for
	// custom intents can be changed using the custom_intent_mode. To
	// configure an intent, list it here with its intent name, e.g.
	// "MY_CUSTOM_INTENT",
	// "google.assistant.car.model.capabilities.AC_TEMPERATURE".
	Intents []*AssistantDevicesPlatformProtoIntent `json:"intents,omitempty"`

	// ProvidedData: Provided data which augments the device action
	// capabilities. Some built-in intents may require additional
	// configuration to be provided. One example could be the list of
	// channels available for the `action.intent.SelectChannel` intent.
	ProvidedData []*AssistantDevicesPlatformProtoProvidedData `json:"providedData,omitempty"`

	// Traits: List of built-in traits such as "action.devices.traits.OnOff"
	// See java/com/google/home/graph/service/config/protoconf.pi As of Nov.
	// 2017, we also support custom traits for EAP users. We'll eventually
	// disable custom traits once custom actions are in place.
	Traits []string `json:"traits,omitempty"`

	// UnderstandingConfig: Specifies the format how Google routes queries
	// to 3P cloud. By default, this field is unset, all partners should get
	// shallow NLU. This is needed *ONLY* for specific partners for strong
	// business reasons.
	UnderstandingConfig *AssistantDevicesPlatformProtoUnderstandingConfig `json:"understandingConfig,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AssistantDeviceInRoomOptOut") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AssistantDeviceInRoomOptOut") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoDeviceActionCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoDeviceActionCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoDeviceModifySettingCapability struct {
	ClientOpProperty *AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty `json:"clientOpProperty,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientOpProperty") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientOpProperty") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoDeviceModifySettingCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoDeviceModifySettingCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoDeviceTakePhotoCapability struct {
}

// AssistantDevicesPlatformProtoExecutionConfig: Specifies the routing
// capabilities of the Intent. It will apply only when the Intent is
// triggered. Next ID: 8
type AssistantDevicesPlatformProtoExecutionConfig struct {
	// CloudEndpointName: Instructions for performing a cloud execution
	// request for the Intent when the execution_type is set to CLOUD. If
	// non-empty, then the device execution would be routed to the
	// CloudEndpoint specified by this name. The Account Linking exchange
	// may be performed to fetch the OAuth access token, and the access
	// token will be included in the HTTP header.
	CloudEndpointName string `json:"cloudEndpointName,omitempty"`

	// CloudIntentTranslationDisabled: If this field is set, then the
	// Syndication cloud call will be disabled for this intent. Note this
	// only applies if any Syndication cloud endpoint is associated with the
	// Device Model, otherwise setting this field does nothing. By default,
	// all Intents that are enabled and supported by the Syndication API
	// will be routed through the Syndication cloud endpoint if it's
	// provided.
	CloudIntentTranslationDisabled bool `json:"cloudIntentTranslationDisabled,omitempty"`

	// IntentCommandFormat: Specifies the intent command format for this
	// Action. For example, in order to launch an Android intent instead of
	// receiving the device action payload on the client, then this field
	// can be set with
	// "intent:/#Intent;...;my_extra={$.params.channels[0].channelCode};end"
	// The parameter "{$.params.channels[0].channelCode}" is in JSON path
	// format, and will be replaced with the content from the original
	// device action payload. Thus, with # JSON "execution": [ { "command":
	// "action.devices.commands.SelectChannel", "params": { "channels": [{
	// "channelName": "exampleChannel", "channelCode": "1-1" }] } } ] as the
	// original action result, then the final result would look like
	// "intent:/#Intent;...;my_extra=\"1-1\";end"
	IntentCommandFormat string `json:"intentCommandFormat,omitempty"`

	// LocalDisabled: If this field is set, then local execution capability
	// is disabled for all matching intents.
	LocalDisabled bool `json:"localDisabled,omitempty"`

	// LocalExecutionType: Specifies how to execute this Action when it is
	// invoked locally (from the same device.)
	//
	// Possible values:
	//   "DEFAULT" - Use the default mechanism (route requests directly to
	// the device via the regular channel.)
	//   "CLOUD" - Route all execution requests to cloud.
	LocalExecutionType string `json:"localExecutionType,omitempty"`

	// RemoteDisabled: If this field is set, then remote execution
	// capability is disabled for all matching intents.
	RemoteDisabled bool `json:"remoteDisabled,omitempty"`

	// RemoteExecutionType: Specifies how to execute this Action when it is
	// invoked remotely (from a different device.)
	//
	// Possible values:
	//   "DEFAULT" - Use the default mechanism (route requests directly to
	// the device via the regular channel.)
	//   "CLOUD" - Route all execution requests to cloud.
	RemoteExecutionType string `json:"remoteExecutionType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CloudEndpointName")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudEndpointName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoExecutionConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoExecutionConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoInlinedActionCapability struct {
	// Alarm: Specifies capabilities for handling on-device alarms. The
	// presence of this field, even if empty, implies that the device
	// supports alarms.
	Alarm *AssistantDevicesPlatformProtoAlarmCapability `json:"alarm,omitempty"`

	// ResponseLimits: Specifies the size limits on responses. If message is
	// not defined then no limits exist.
	ResponseLimits *AssistantDevicesPlatformProtoResponseLimits `json:"responseLimits,omitempty"`

	// SupportSdkExecute: Whether this device model package support
	// sdk.EXECUTE client_op (a.k.a action.devices.EXECUTE intent), which
	// will be filled into
	// google.assistant.embedded.v1.DeviceAction.device_request_json. It is
	// default to true (and not public), since all 3P will depends on the
	// device_request_json. Only internal projects like Edoras will set this
	// to false.
	SupportSdkExecute bool `json:"supportSdkExecute,omitempty"`

	// SupportedDeviceOps: Specifies capabilities for handling
	// assistant.embedded.v1.DeviceOp.
	SupportedDeviceOps *AssistantDevicesPlatformProtoSupportedDeviceOps `json:"supportedDeviceOps,omitempty"`

	// SupportsMultiResponse: Specifies whether server can send a series of
	// responses for a single query. Example: Routines where multiple
	// actions to be executed one after another.
	SupportsMultiResponse bool `json:"supportsMultiResponse,omitempty"`

	// Timer: Specifies capabilities for handling on-device timers. The
	// presence of this field, even if empty, implies that the device
	// supports timers.
	Timer *AssistantDevicesPlatformProtoTimerCapability `json:"timer,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alarm") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alarm") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoInlinedActionCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoInlinedActionCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoIntValueSpec struct {
	MaxValue int64 `json:"maxValue,omitempty,string"`

	MinValue int64 `json:"minValue,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "MaxValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MaxValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoIntValueSpec) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoIntValueSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoIntent: An intent configures the
// behavior of a device action for this device. Next ID: 7
type AssistantDevicesPlatformProtoIntent struct {
	// ArgSpecs: List of arguments associated this intent. Each of which
	// depends a template for the expected argument.
	ArgSpecs map[string]AssistantDevicesPlatformProtoArgSpec `json:"argSpecs,omitempty"`

	// ExecutionConfig: Instructions for the routing of this Intent.
	ExecutionConfig *AssistantDevicesPlatformProtoExecutionConfig `json:"executionConfig,omitempty"`

	// Name: The name of the intent.
	Name string `json:"name,omitempty"`

	// ProvidedDataNames: List of provided data names used by this intent.
	// Note that some built-in intents will not function properly without
	// provided data, such as `action.intent.SwitchChannel` or
	// `action.intent.AppSelector`.
	ProvidedDataNames []string `json:"providedDataNames,omitempty"`

	// SecurityConfig: Security configuration for this Intent.
	SecurityConfig *AssistantDevicesPlatformProtoSecurityConfig `json:"securityConfig,omitempty"`

	// TriggerConditions: The conditions which must be met by the device
	// before executing this Intent. More than one can be provided, in which
	// case the conditions operate with the "AND" operator, i.e. the first
	// condition which is failed will be used to restrict the execution of
	// this Intent.
	TriggerConditions []*AssistantDevicesPlatformProtoTriggerCondition `json:"triggerConditions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArgSpecs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArgSpecs") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoIntent) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoIntent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoInternalCapability: Capabilities that
// may only be set internally. Only internal callers (i.e. Googlers or
// Google owned projects) will be able to set these, thanks to
// go/assistant-device-model-package-ownership.
type AssistantDevicesPlatformProtoInternalCapability struct {
	// AllowedAssistantSdkAuthProjectIds: When using the Assistant SDK
	// (Embedded Assistant API), the project id used to authenticate the
	// gRPC request is checked and must match against the project id of the
	// Device Model. We will additionally allow the project ids listed in
	// the device model here to be let through. See
	// https://docs.google.com/document/d/1InAczpQJs6LCH1l--2yy67JM9hsBJbiL57fusnL3A8A
	AllowedAssistantSdkAuthProjectIds []string `json:"allowedAssistantSdkAuthProjectIds,omitempty"`

	// AppCapabilitiesFromDeviceInstallApps: Load the
	// assistant.api.AppCapabilities from DEVICE_INSTALLED_APP footprint
	// corpus. See go/edoras-geller.
	AppCapabilitiesFromDeviceInstallApps bool `json:"appCapabilitiesFromDeviceInstallApps,omitempty"`

	// CloudDeviceActionEndpoint: Uses this endpoint for device action
	// fulfillment when there's no endpoint in syndication_metadata. 1p
	// surfaces/devices such as telephone can enable this for its cloud
	// action fulfillment without enabling the whole syndication experience.
	CloudDeviceActionEndpoint *AssistantDevicesPlatformProtoCloudEndpoint `json:"cloudDeviceActionEndpoint,omitempty"`

	// DeviceActionsEligibleForHighConfidence: Signals that the model will
	// have updated ranking behavior as described in
	// https://docs.google.com/document/d/1SN_AgadRr_cdIrFe-qgRbIX2J1sOE7lcRXAvM1GUPoU.
	DeviceActionsEligibleForHighConfidence bool `json:"deviceActionsEligibleForHighConfidence,omitempty"`

	// ForceSignIn: Make Google sign-in mandatory for using Google Assistant
	// on the device. (This bit is initially added for Samsung TV.)
	ForceSignIn bool `json:"forceSignIn,omitempty"`

	// ForceThirdPartyDeviceIdForDeviceLookup: When looking up device (for
	// example for disclosure consent check), then always use the third
	// party device id for lookup instead of any other device id which would
	// normally have higher precedence, such as cast_device_id.
	ForceThirdPartyDeviceIdForDeviceLookup bool `json:"forceThirdPartyDeviceIdForDeviceLookup,omitempty"`

	// ForceTransactionsAuthentication: Adds "transactions.AUTHENTICATION"
	// for car automation probers. Since the probers run as Assistant SDK
	// requests, voice match always fails for car automation requests, so we
	// add this client op as a hack to allow probers to appear as personal
	// devices and bypass voice match. See b/137221645.
	ForceTransactionsAuthentication bool `json:"forceTransactionsAuthentication,omitempty"`

	// HasCustomSearchResultsRendering: Signals that this device can
	// "render" raw search results even with no screen (e.g., using a text
	// reader). If this is true, fallback search results can be returned as
	// a custom device action in a SearchResults message.
	// http://google3/assistant/embedded/proto_translation/utils/proto/search_results.proto
	HasCustomSearchResultsRendering bool `json:"hasCustomSearchResultsRendering,omitempty"`

	// OverrideProjectIdForDeviceLookup: When looking up device (for example
	// for disclosure consent check), use this project id as part of the
	// primary key for the device lookup (i.e. instead of the
	// device_config.agent_id.) The precedence is as follows: 1) this field,
	// if set for the device's device model 2) device_config.agent_id 3)
	// device_model.project_id
	OverrideProjectIdForDeviceLookup string `json:"overrideProjectIdForDeviceLookup,omitempty"`

	StadiaAssistantConfig *AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig `json:"stadiaAssistantConfig,omitempty"`

	// TelephoneAttribution: Telephone server is able to send attribution to
	// user feature phone. See go/telephone-attribution.
	TelephoneAttribution bool `json:"telephoneAttribution,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowedAssistantSdkAuthProjectIds") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AllowedAssistantSdkAuthProjectIds") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoInternalCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoInternalCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig:
// The StadiaAssistantConfig. This field should only be set if the
// device model is a Stadia.
type AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig struct {
	// Possible values:
	//   "UNSPECIFIED" - Platform unspecified.
	//   "CHROMECAST" - Platform is Chromecast.
	//   "WEB_BROWSER" - Platform is web browser.
	StadiaPlatform string `json:"stadiaPlatform,omitempty"`

	// ForceSendFields is a list of field names (e.g. "StadiaPlatform") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StadiaPlatform") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoMediaNextCapability struct {
}

type AssistantDevicesPlatformProtoMediaPauseCapability struct {
}

type AssistantDevicesPlatformProtoMediaPlayMediaCapability struct {
}

type AssistantDevicesPlatformProtoMediaPreviousCapability struct {
}

type AssistantDevicesPlatformProtoMediaResumeCapability struct {
}

type AssistantDevicesPlatformProtoMediaStopCapability struct {
}

type AssistantDevicesPlatformProtoOptionValueSpec struct {
	Values []string `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoOptionValueSpec) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoOptionValueSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoProvidedData: Provided data which
// augments the device action capabilities. Some built-in intents may
// require additional configuration to be provided. One example could be
// the list of channels available for the `action.intent.SelectChannel`
// intent.
type AssistantDevicesPlatformProtoProvidedData struct {
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoProvidedData) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoProvidedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoProviderOpenCapability struct {
	ClientOpProperty *AssistantApiClientOpPropertiesProviderOpenClientOpProperty `json:"clientOpProperty,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientOpProperty") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientOpProperty") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoProviderOpenCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoProviderOpenCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoResponseLimits: Specifies the size
// limits on responses receivable by the client.
type AssistantDevicesPlatformProtoResponseLimits struct {
	// MaxAssistResponseSizeBytes: Max size in bytes of the total serialized
	// AssistResponse receivable by the client. If response exceeds this
	// max, response may be modified by the server.
	MaxAssistResponseSizeBytes int64 `json:"maxAssistResponseSizeBytes,omitempty"`

	// MaxDisplayLinesBytes: Maximum size in bytes (not characters) of text
	// the display can handle (which may be different from how much the
	// display can show at a time due to scrolling).
	MaxDisplayLinesBytes int64 `json:"maxDisplayLinesBytes,omitempty"`

	// MaxSuggestionChipBytes: Maximum size in bytes (not characters) for
	// each suggestion chip.
	MaxSuggestionChipBytes int64 `json:"maxSuggestionChipBytes,omitempty"`

	// MaxSuggestionChips: Maximum number of suggestion chips the device can
	// handle to display.
	MaxSuggestionChips int64 `json:"maxSuggestionChips,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MaxAssistResponseSizeBytes") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "MaxAssistResponseSizeBytes") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoResponseLimits) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoResponseLimits
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoSecurityConfig: Encapsulates security
// configuration for a single intent of a device model.
type AssistantDevicesPlatformProtoSecurityConfig struct {
	// AuthMechanismForRemoteRequests: Specifies auth mechanism to be used
	// upon remote request for device action.
	//
	// Possible values:
	//   "NONE" - Indicates that auth is not required.
	//   "ENABLED" - Indicates that auth is required. Auth mechanism used is
	// determined automatically at query time, based on various factors such
	// as device type, user settings, etc.
	//   "FINGERPRINT_OR_PASSWORD" - Use fingerprint, with fallback to
	// Google account password if fingerprint capabilities are not available
	// on personal device. Note: explicit configuration of specific auth
	// mechanism is being deprecated.
	//   "PIN" - Prompt for pin, sent to cloud for validation. Note:
	// explicit configuration of specific auth mechanism is being
	// deprecated.
	AuthMechanismForRemoteRequests string `json:"authMechanismForRemoteRequests,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AuthMechanismForRemoteRequests") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AuthMechanismForRemoteRequests") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoSecurityConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoSecurityConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantDevicesPlatformProtoSendChatMessageCapability struct {
}

// AssistantDevicesPlatformProtoSupportedDeviceOps: This message will
// specify supports for fields in |assistant.embedded.v1.DeviceOp|, for
// a device model package. See go/easi-client-op2 for more info.
type AssistantDevicesPlatformProtoSupportedDeviceOps struct {
	// CallCall: |call_call| specifies the support for the call.CALL
	// clientop, and the corresponding call_call field in
	// assistant.embedded.v1.DeviceOp.
	CallCall *AssistantDevicesPlatformProtoCallCallCapability `json:"callCall,omitempty"`

	// ClientReconnect: |client_reconnect| indicates support for
	// client.RECONNECT using assistant.embedded.v1.DeviceOp. There is an
	// alternative API/capability for client.RECONNECT specified in
	// RoutineCapability.supports_reconnect. Client should choose between
	// this and RoutineCapability but not both.
	ClientReconnect *AssistantDevicesPlatformProtoClientReconnectCapability `json:"clientReconnect,omitempty"`

	// DeviceModifySetting: |device_modify_setting| specifies the support
	// for device.MODIFY_SETTING client_op, and the corresponding
	// device_modify_setting field in assistant.embedded.v1.DeviceOp.
	DeviceModifySetting *AssistantDevicesPlatformProtoDeviceModifySettingCapability `json:"deviceModifySetting,omitempty"`

	// DeviceTakePhoto: [device_take_photo] specifies the support for the
	// device.TAKE_PHOTO clientop, and the corresponding device_take_photo
	// field in assistant.embedded.v1.DeviceOp.
	DeviceTakePhoto *AssistantDevicesPlatformProtoDeviceTakePhotoCapability `json:"deviceTakePhoto,omitempty"`

	MediaNext *AssistantDevicesPlatformProtoMediaNextCapability `json:"mediaNext,omitempty"`

	MediaPause *AssistantDevicesPlatformProtoMediaPauseCapability `json:"mediaPause,omitempty"`

	MediaPlayMedia *AssistantDevicesPlatformProtoMediaPlayMediaCapability `json:"mediaPlayMedia,omitempty"`

	MediaPrevious *AssistantDevicesPlatformProtoMediaPreviousCapability `json:"mediaPrevious,omitempty"`

	MediaResume *AssistantDevicesPlatformProtoMediaResumeCapability `json:"mediaResume,omitempty"`

	MediaStop *AssistantDevicesPlatformProtoMediaStopCapability `json:"mediaStop,omitempty"`

	// ProviderOpen: |provider_open| specifies the support for provider.OPEN
	// client_op, and the corresponding provider_open field in
	// assistant.embedded.v1.DeviceOp.
	ProviderOpen *AssistantDevicesPlatformProtoProviderOpenCapability `json:"providerOpen,omitempty"`

	// SendChatMessage: |send_chat_message| specifies the support for the
	// chat_message.SEND clientop, and the corresponding send_chat_message
	// field in assistant.embedded.v1.DeviceOp.
	SendChatMessage *AssistantDevicesPlatformProtoSendChatMessageCapability `json:"sendChatMessage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallCall") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallCall") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoSupportedDeviceOps) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoSupportedDeviceOps
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoTimerCapability: Capability with regard
// to support of timers by the client.
type AssistantDevicesPlatformProtoTimerCapability struct {
	// MaxSupportedExtendedTimerDuration: Maximum extended timer duration
	// supported by the client. The extended timer duration is the total
	// start-to-finish duration after an AddTimeToTimer operation. E.g. if a
	// user sets a timer for 30 minutes, and later adds 10 minutes, the
	// extended duration is 40 minutes. Zero or unset indicates no maximum
	// limit.
	MaxSupportedExtendedTimerDuration *AssistantApiDuration `json:"maxSupportedExtendedTimerDuration,omitempty"`

	// MaxSupportedTimerDuration: Maximum timer duration supported by the
	// client. Zero or unset indicates no maximum limit.
	MaxSupportedTimerDuration *AssistantApiDuration `json:"maxSupportedTimerDuration,omitempty"`

	// MaxSupportedTimers: Maximum number of timers that can be created on
	// the client. Zero or unset indicates no maximum limit.
	MaxSupportedTimers int64 `json:"maxSupportedTimers,omitempty"`

	// SupportsMutateAction: Whether the client supports the MUTATE timer
	// action. If this is false, mutate operations may be handled by sending
	// a pair of REMOVE and CREATE timer actions to replace the existing
	// timer instead of mutating it.
	SupportsMutateAction bool `json:"supportsMutateAction,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MaxSupportedExtendedTimerDuration") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "MaxSupportedExtendedTimerDuration") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoTimerCapability) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoTimerCapability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoTriggerCondition: A TriggerCondition is
// described as a set of states which must be met by the device. It also
// includes instructions to the Assistant on what kind of response to
// execute when the condition is not met.
type AssistantDevicesPlatformProtoTriggerCondition struct {
	// RequiredStateValues: The map of state keys along with their values
	// which must be returned by the device, for example to start the
	// dishwasher you may require states: {"door": "CLOSED",
	// "detergent_status": "READY"}.
	RequiredStateValues map[string]AssistantDevicesPlatformProtoArgSpec `json:"requiredStateValues,omitempty"`

	// SimpleTts: A simple TTS to play.
	SimpleTts string `json:"simpleTts,omitempty"`

	// Status: Refers to a defined ConditionalResult keyed by its status. It
	// could be a built-in or custom ConditionalResult for this Intent.
	// Note: the states provided by the device MUST contain all of the
	// states required by the ConditionalResult.
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequiredStateValues")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequiredStateValues") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoTriggerCondition) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoTriggerCondition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantDevicesPlatformProtoUnderstandingConfig: Specifies the NLU
// level that Google performs, which determines the request format sent
// to the 3P cloud.
type AssistantDevicesPlatformProtoUnderstandingConfig struct {
	// NluLevel: Specifies the NLU level for the intent.
	//
	// Possible values:
	//   "DEFAULT_SHALLOW_NLU" - Default value: Shallow NLU, the cloud
	// request contains a structured intent including the command (e.g.
	// "action.devices.commands.SelectChannel"), the unparsed description
	// (e.g. "Tom Cruise action movies"), the target device and the target
	// application.
	//   "NO_NLU" - No NLU, the cloud request contains the transcribed query
	// (raw query or rewritten query based on previous conversation).
	//   "DEEP_NLU" - Deep NLU, the cloud request specifies a structured
	// description of the media the user wants to act upon. E.g.: for query
	// "Play an action movie with Tom Cruise", the structured description
	// would be: "parsedMediaDescription": { "mediaType": "MOVIE", "genre":
	// { "name": "action", "externalId": { "tmsId": "tmsIdForActionGenre" },
	// }, "actor": { "name": "Tom Cruise", "externalId": { "tmsId":
	// "tmsRootIdForTomCruise", }, }, },
	NluLevel string `json:"nluLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NluLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NluLevel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantDevicesPlatformProtoUnderstandingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantDevicesPlatformProtoUnderstandingConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerAssistantInteractionFeatures struct {
	TimeDecayed14dHalfLife float64 `json:"timeDecayed14dHalfLife,omitempty"`

	// TimeDecayed1dHalfLife: Frequency features.
	TimeDecayed1dHalfLife float64 `json:"timeDecayed1dHalfLife,omitempty"`

	TimeDecayed7dHalfLife float64 `json:"timeDecayed7dHalfLife,omitempty"`

	TimeDecayedAccepted14dHalfLife float64 `json:"timeDecayedAccepted14dHalfLife,omitempty"`

	TimeDecayedAuis14dHalfLife float64 `json:"timeDecayedAuis14dHalfLife,omitempty"`

	TimeDecayedCanceled14dHalfLife float64 `json:"timeDecayedCanceled14dHalfLife,omitempty"`

	TimeDecayedDeclined14dHalfLife float64 `json:"timeDecayedDeclined14dHalfLife,omitempty"`

	TimeSinceLastButOneCanceledActionSecs float64 `json:"timeSinceLastButOneCanceledActionSecs,omitempty"`

	TimeSinceLastButOneCompletedActionSecs float64 `json:"timeSinceLastButOneCompletedActionSecs,omitempty"`

	TimeSinceLastButTwoCanceledActionSecs float64 `json:"timeSinceLastButTwoCanceledActionSecs,omitempty"`

	TimeSinceLastButTwoCompletedActionSecs float64 `json:"timeSinceLastButTwoCompletedActionSecs,omitempty"`

	TimeSinceLastCanceledActionSecs float64 `json:"timeSinceLastCanceledActionSecs,omitempty"`

	// TimeSinceLastCompletedActionSecs: Recency features.
	TimeSinceLastCompletedActionSecs float64 `json:"timeSinceLastCompletedActionSecs,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "TimeDecayed14dHalfLife") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TimeDecayed14dHalfLife")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerAssistantInteractionFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerAssistantInteractionFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantGroundingRankerAssistantInteractionFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantGroundingRankerAssistantInteractionFeatures
	var s1 struct {
		TimeDecayed14dHalfLife                 gensupport.JSONFloat64 `json:"timeDecayed14dHalfLife"`
		TimeDecayed1dHalfLife                  gensupport.JSONFloat64 `json:"timeDecayed1dHalfLife"`
		TimeDecayed7dHalfLife                  gensupport.JSONFloat64 `json:"timeDecayed7dHalfLife"`
		TimeDecayedAccepted14dHalfLife         gensupport.JSONFloat64 `json:"timeDecayedAccepted14dHalfLife"`
		TimeDecayedAuis14dHalfLife             gensupport.JSONFloat64 `json:"timeDecayedAuis14dHalfLife"`
		TimeDecayedCanceled14dHalfLife         gensupport.JSONFloat64 `json:"timeDecayedCanceled14dHalfLife"`
		TimeDecayedDeclined14dHalfLife         gensupport.JSONFloat64 `json:"timeDecayedDeclined14dHalfLife"`
		TimeSinceLastButOneCanceledActionSecs  gensupport.JSONFloat64 `json:"timeSinceLastButOneCanceledActionSecs"`
		TimeSinceLastButOneCompletedActionSecs gensupport.JSONFloat64 `json:"timeSinceLastButOneCompletedActionSecs"`
		TimeSinceLastButTwoCanceledActionSecs  gensupport.JSONFloat64 `json:"timeSinceLastButTwoCanceledActionSecs"`
		TimeSinceLastButTwoCompletedActionSecs gensupport.JSONFloat64 `json:"timeSinceLastButTwoCompletedActionSecs"`
		TimeSinceLastCanceledActionSecs        gensupport.JSONFloat64 `json:"timeSinceLastCanceledActionSecs"`
		TimeSinceLastCompletedActionSecs       gensupport.JSONFloat64 `json:"timeSinceLastCompletedActionSecs"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.TimeDecayed14dHalfLife = float64(s1.TimeDecayed14dHalfLife)
	s.TimeDecayed1dHalfLife = float64(s1.TimeDecayed1dHalfLife)
	s.TimeDecayed7dHalfLife = float64(s1.TimeDecayed7dHalfLife)
	s.TimeDecayedAccepted14dHalfLife = float64(s1.TimeDecayedAccepted14dHalfLife)
	s.TimeDecayedAuis14dHalfLife = float64(s1.TimeDecayedAuis14dHalfLife)
	s.TimeDecayedCanceled14dHalfLife = float64(s1.TimeDecayedCanceled14dHalfLife)
	s.TimeDecayedDeclined14dHalfLife = float64(s1.TimeDecayedDeclined14dHalfLife)
	s.TimeSinceLastButOneCanceledActionSecs = float64(s1.TimeSinceLastButOneCanceledActionSecs)
	s.TimeSinceLastButOneCompletedActionSecs = float64(s1.TimeSinceLastButOneCompletedActionSecs)
	s.TimeSinceLastButTwoCanceledActionSecs = float64(s1.TimeSinceLastButTwoCanceledActionSecs)
	s.TimeSinceLastButTwoCompletedActionSecs = float64(s1.TimeSinceLastButTwoCompletedActionSecs)
	s.TimeSinceLastCanceledActionSecs = float64(s1.TimeSinceLastCanceledActionSecs)
	s.TimeSinceLastCompletedActionSecs = float64(s1.TimeSinceLastCompletedActionSecs)
	return nil
}

// AssistantGroundingRankerContactGroundingProviderFeatures: Features to
// be passed from Contact GP to HGR. Next ID: 13
type AssistantGroundingRankerContactGroundingProviderFeatures struct {
	// ConceptId: Concept id for relationships in English, e.g. "Mother" for
	// all non-English locales. It's only populated for source =
	// RELATIONSHIP.
	ConceptId string `json:"conceptId,omitempty"`

	// Possible values:
	//   "FOCUS_CONTACT" - Contacts from Focus
	//   "DEVICE_CONTACT" - Contacts from device, see go/device-content
	//   "GMAIL_INFERENCE" - Contacts inferred from Gmail
	//   "S3_DECORATOR" - Contacts from S3 decorator
	//   "RELATIONSHIP" - Whitelisted relationships no matter if user has
	// such contact, see go/sls-personal_relationship_names_and_aliases.
	//   "VANITY" - Vanity nicknames or user's own profile name.
	//   "SIGNED_OUT_DEVICE" - Signed out device contact names
	//   "SHARED_CONTACT" - Contacts shared from other users. See
	// go/multi-user-shared-contact.
	//   "FAMILY_MEMBER" - People in the user's family group in
	// http://families.google.com who are not contacts.
	//   "SHARED_DEVICE_USER" - People who share a device with the user who
	// are not contacts.
	//   "ON_DEVICE_CONTACT_LOOKUP" - Contacts from on device lookup during
	// contact fulfillment.
	ContactSource string `json:"contactSource,omitempty"`

	// IsRelationshipFromAnnotation: Whether the query is a relationship
	// query based on the annotation source.
	IsRelationshipFromAnnotation bool `json:"isRelationshipFromAnnotation,omitempty"`

	// IsRelationshipFromSource: Whether the contact has relationship in the
	// contact metadata.
	IsRelationshipFromSource bool `json:"isRelationshipFromSource,omitempty"`

	// IsSingleCandidate: Whether only populates a single candidate.
	IsSingleCandidate bool `json:"isSingleCandidate,omitempty"`

	// IsStarred: Whether the contact is starred contact.
	IsStarred bool `json:"isStarred,omitempty"`

	// Possible values:
	//   "UNSPECIFIED"
	//   "GIVEN_NAME" - Contact's given name, or first word in name, or last
	// word if query is in CJK.
	//   "FAMILY_NAME" - Contact's family name, or last word in name, or
	// first word if query is in CJK.
	//   "FULL_NAME" - Contact's display name, or given+family, or
	// family+given if query is in CJK. Contact's middle name is optional.
	//   "NICKNAME" - Query span matches contact's nickname.
	//   "OTHER" - Not used yet.
	//   "INITIAL_WITH_FAMILY_NAME" - Either or both of first/middle
	// initials along with family name.
	//   "EMAIL_USERNAME" - Email username, controlled by
	// FocusNameParams.annotate_email_username.
	//   "VANITY_NICKNAME" - Vanity nicknames like "myself", data is at
	// //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.t
	// xt
	//   "GIVEN_NAME_ALIAS" - Contact's given name is a common name alias of
	// query span, e.g. query [Bob] may match contact with given name
	// "Robert".
	//   "FULL_NAME_ALIAS" - Contact's given name is a common name alias of
	// first word in query span, while remaining parts fully matched.
	//   "HOMOPHONE_GIVEN_NAME" - Homophone name match of given name, or
	// last word. Only for CJK query.
	//   "HOMOPHONE_FAMILY_NAME" - Homophone name match of family name, or
	// first word. Only for CJK query.
	//   "HOMOPHONE_FULL_NAME" - Homophone name match of full name, or
	// family+given. Only for CJK query.
	//   "HOMOPHONE_NICKNAME" - Homophone name match of nickname. Only for
	// CJK query.
	//   "GIVEN_MIDDLE_NAME" - Contact's given name + middle name. Only for
	// contacts with 3 words.
	//   "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL" - Contact's given name along
	// with last name initial. Only support non-CJKT contact name.
	//   "EMAIL_OF_FAMILY_MEMBER" - This type indicates we find a match of
	// the user's family member - as defined by families.google.com - by
	// matching the email full address. Controlled by
	// FocusNameParams.annotate_email_full_address.
	MatchedNameType string `json:"matchedNameType,omitempty"`

	// NumAlternateNameFromFuzzyContactMatch: Number of alternate contact
	// names from fuzzy contact match. (Not suggest using it since it can
	// change due to retrieval iteration)
	NumAlternateNameFromFuzzyContactMatch float64 `json:"numAlternateNameFromFuzzyContactMatch,omitempty"`

	// NumAlternateNamesFromS3: Number of alternate contact names from
	// S3_HYPOTHESES. (Not suggest using it since it can change due to
	// retrieval iteration)
	NumAlternateNamesFromS3 float64 `json:"numAlternateNamesFromS3,omitempty"`

	// NumAlternativeNamesFromInterpretation: Number of alternate contact
	// names from interpretation. (Not suggest using it since it can change
	// due to retrieval iteration)
	NumAlternativeNamesFromInterpretation float64 `json:"numAlternativeNamesFromInterpretation,omitempty"`

	// NumCandidates: Number of contacts populated by the contact Grounding
	// Provider. (Not suggest using it since it can change due to retrieval
	// iteration)
	NumCandidates float64 `json:"numCandidates,omitempty"`

	// Possible values:
	//   "NONE"
	//   "S3_HYPOTHESES" - Alternate name from S3 recognition topN
	// hypothesis.
	//   "GENIE_QUERY_ALTERNATIVES" - Alternate name from Genie query
	// alternatives.
	//   "NAME_CORRECTION_LOG" - Alternate name from contact correction
	// history.
	//   "FUZZY_CONTACT_MATCH" - Fuzzy match with user's contacts.
	//   "NEURAL_CONTACT_MATCH" - Neural match. See
	// go/phonetic-contact-match.
	//   "NEURAL_CONTACT_MATCH_DARK_LAUNCH" - The dark launch for a neural
	// match. We found a match, but we ignore it for serving and just log
	// it.
	RecognitionAlternateSource string `json:"recognitionAlternateSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConceptId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConceptId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerContactGroundingProviderFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerContactGroundingProviderFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantGroundingRankerContactGroundingProviderFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantGroundingRankerContactGroundingProviderFeatures
	var s1 struct {
		NumAlternateNameFromFuzzyContactMatch gensupport.JSONFloat64 `json:"numAlternateNameFromFuzzyContactMatch"`
		NumAlternateNamesFromS3               gensupport.JSONFloat64 `json:"numAlternateNamesFromS3"`
		NumAlternativeNamesFromInterpretation gensupport.JSONFloat64 `json:"numAlternativeNamesFromInterpretation"`
		NumCandidates                         gensupport.JSONFloat64 `json:"numCandidates"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NumAlternateNameFromFuzzyContactMatch = float64(s1.NumAlternateNameFromFuzzyContactMatch)
	s.NumAlternateNamesFromS3 = float64(s1.NumAlternateNamesFromS3)
	s.NumAlternativeNamesFromInterpretation = float64(s1.NumAlternativeNamesFromInterpretation)
	s.NumCandidates = float64(s1.NumCandidates)
	return nil
}

// AssistantGroundingRankerDeviceContactAffinityFeatures: Device contact
// affinity from android call logs.
type AssistantGroundingRankerDeviceContactAffinityFeatures struct {
	AggregateAffinity float64 `json:"aggregateAffinity,omitempty"`

	CallAffinity float64 `json:"callAffinity,omitempty"`

	MessageAffinity float64 `json:"messageAffinity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregateAffinity")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregateAffinity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerDeviceContactAffinityFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerDeviceContactAffinityFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantGroundingRankerDeviceContactAffinityFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantGroundingRankerDeviceContactAffinityFeatures
	var s1 struct {
		AggregateAffinity gensupport.JSONFloat64 `json:"aggregateAffinity"`
		CallAffinity      gensupport.JSONFloat64 `json:"callAffinity"`
		MessageAffinity   gensupport.JSONFloat64 `json:"messageAffinity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AggregateAffinity = float64(s1.AggregateAffinity)
	s.CallAffinity = float64(s1.CallAffinity)
	s.MessageAffinity = float64(s1.MessageAffinity)
	return nil
}

// AssistantGroundingRankerGroundingProviderFeatures: Next ID: 4
type AssistantGroundingRankerGroundingProviderFeatures struct {
	ContactGroundingProviderFeatures *AssistantGroundingRankerContactGroundingProviderFeatures `json:"contactGroundingProviderFeatures,omitempty"`

	MediaGroundingProviderFeatures *AssistantGroundingRankerMediaGroundingProviderFeatures `json:"mediaGroundingProviderFeatures,omitempty"`

	ProviderGroundingProviderFeatures *AssistantGroundingRankerProviderGroundingProviderFeatures `json:"providerGroundingProviderFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ContactGroundingProviderFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ContactGroundingProviderFeatures") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerGroundingProviderFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerGroundingProviderFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerLaaFeatures struct {
	BindingSet *AssistantGroundingRankerLaaFeaturesBindingSet `json:"bindingSet,omitempty"`

	CommunicationEndpoint *AssistantGroundingRankerLaaFeaturesCommunicationEndpoint `json:"communicationEndpoint,omitempty"`

	Contact *AssistantGroundingRankerLaaFeaturesContact `json:"contact,omitempty"`

	Provider *AssistantGroundingRankerLaaFeaturesProvider `json:"provider,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BindingSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BindingSet") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerLaaFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerLaaFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerLaaFeaturesBindingSet struct {
	AssistantInteractionFeatures *AssistantGroundingRankerAssistantInteractionFeatures `json:"assistantInteractionFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerLaaFeaturesBindingSet) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerLaaFeaturesBindingSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerLaaFeaturesCommunicationEndpoint struct {
	AssistantInteractionFeatures *AssistantGroundingRankerAssistantInteractionFeatures `json:"assistantInteractionFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerLaaFeaturesCommunicationEndpoint) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerLaaFeaturesCommunicationEndpoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerLaaFeaturesContact struct {
	AssistantInteractionFeatures *AssistantGroundingRankerAssistantInteractionFeatures `json:"assistantInteractionFeatures,omitempty"`

	DeviceContactAffinityFeatures *AssistantGroundingRankerDeviceContactAffinityFeatures `json:"deviceContactAffinityFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerLaaFeaturesContact) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerLaaFeaturesContact
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantGroundingRankerLaaFeaturesProvider struct {
	AssistantInteractionFeatures *AssistantGroundingRankerAssistantInteractionFeatures `json:"assistantInteractionFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AssistantInteractionFeatures") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerLaaFeaturesProvider) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerLaaFeaturesProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantGroundingRankerMediaGroundingProviderFeatures: Features to
// be passed from Media GP to HGR. Next ID: 6
type AssistantGroundingRankerMediaGroundingProviderFeatures struct {
	// IsCastVideo: Whether the candidate is YouTube CAST_VIDEO candidate.
	// CAST_VIDEO is a deeplink platform. This signal will be used to
	// promote YouTube Music screenful candidates with CAST_VIDEO platform
	// for free users because free users cannot get exact entities in
	// screenless response and can get exact entities with ads in screenful
	// response.
	IsCastVideo bool `json:"isCastVideo,omitempty"`

	// IsSeedRadio: True if the media deeplink has tag SEED_RADIO.
	IsSeedRadio bool `json:"isSeedRadio,omitempty"`

	// IsSeedRadioRequest: True if the user requests seed radio.
	IsSeedRadioRequest bool `json:"isSeedRadioRequest,omitempty"`

	// MscRate: MSC(Media Short Click) rate. MSC rate = total number of MSC
	// events / total number of MSC candidates The event is considered as
	// MSC candidate if the event is a media seeking query(excluding
	// follow-ons) and the media result is successfully fulfilled. The event
	// is MSC event if any of the following is in the following queries
	// within 30 secs: FOLLOWED_BY_DUPLICATE
	// FOLLOWED_BY_ADD_OR_DELETE_MANUAL_REFINEMENT FOLLOWED_BY_SAME_VERTICAL
	// (MEDIA) FOLLOWED_BY_STOP More details: go/media-ranking,
	// go/billboard-navboost, go/magma-music-actions-efrac
	MscRate float64 `json:"mscRate,omitempty"`

	// ScubedPSaiMusic: Scubed predicted SAI value (pSAI) for music
	// populated by a regression model that incorporates a BERT model signal
	// as well as other Scubed signals.
	ScubedPSaiMusic float64 `json:"scubedPSaiMusic,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsCastVideo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsCastVideo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerMediaGroundingProviderFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerMediaGroundingProviderFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantGroundingRankerMediaGroundingProviderFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantGroundingRankerMediaGroundingProviderFeatures
	var s1 struct {
		MscRate         gensupport.JSONFloat64 `json:"mscRate"`
		ScubedPSaiMusic gensupport.JSONFloat64 `json:"scubedPSaiMusic"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MscRate = float64(s1.MscRate)
	s.ScubedPSaiMusic = float64(s1.ScubedPSaiMusic)
	return nil
}

// AssistantGroundingRankerProviderGroundingProviderFeatures: Features
// to be extracted from Provider GP for ranking in HGR. Next ID: 2
type AssistantGroundingRankerProviderGroundingProviderFeatures struct {
	// PslScore: Provider quality score in the range [0,1] that can be used
	// for ranking providers. Incorporates both policy rules and quality
	// considerations.
	PslScore float64 `json:"pslScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PslScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PslScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantGroundingRankerProviderGroundingProviderFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantGroundingRankerProviderGroundingProviderFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantGroundingRankerProviderGroundingProviderFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantGroundingRankerProviderGroundingProviderFeatures
	var s1 struct {
		PslScore gensupport.JSONFloat64 `json:"pslScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PslScore = float64(s1.PslScore)
	return nil
}

type AssistantLogsAllMediaStreamLog struct {
	// Streams: All active media streams while the user issues the query.
	Streams []*AssistantLogsMediaStreamLog `json:"streams,omitempty"`

	// TargetStream: The stream selected by stream transfer logic to be
	// transferred to another device. It will be empty for other features.
	// Target_stream is different from target_device since target_stream
	// could have multiple devices.
	TargetStream *AssistantLogsMediaStreamLog `json:"targetStream,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Streams") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Streams") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsAllMediaStreamLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsAllMediaStreamLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsAmbiguousTargetDeviceLog: This message logs details on
// ambiguous device targeting logic. 1. It first takes a list of
// ambiguous devices 2. Then applies two filters: structure filter and
// playability filter. 3. If more than one device remains, it tiggers
// DeviceSelectionDialog to let the user pick one device.
type AssistantLogsAmbiguousTargetDeviceLog struct {
	// AmbiguousDeviceIndex: Device index of the initial ambiguous devices.
	// The device index in this message is consistent with the device index
	// in DeviceInfoLog. It would be used to track more detailed information
	// of a device if needed.
	AmbiguousDeviceIndex []int64 `json:"ambiguousDeviceIndex,omitempty"`

	// DevicesAfterPromoters: DeviceInfo for devices after the filters and
	// promoters. - When device targeting is only configured for single
	// target, these are ambiguous devices that would have been the output
	// of Lumos. Downstream may perform extra check before disambiguation
	// dialog. For example, Media Initiation checks playability for devices.
	// The output here is before the check. - When configured for
	// multi-target, these are just the target devices. For privacy
	// consideration, we may only log device id field inside.
	DevicesAfterPromoters []*AssistantLogsDeviceInfoLog `json:"devicesAfterPromoters,omitempty"`

	// FinalTargetDevice: the final targeted device selected by playability
	// filter or DeviceSelectionDialog
	FinalTargetDevice *AssistantLogsDeviceInfoLog `json:"finalTargetDevice,omitempty"`

	// PlayabilityFilteredDevicesIndex: Device index of the devices after
	// playability filter
	PlayabilityFilteredDevicesIndex []int64 `json:"playabilityFilteredDevicesIndex,omitempty"`

	// PuntInfoLog: When there is no qualified devices after playability
	// check, it would populate punt_info below. If all devices are filtered
	// out for the same reason, there would only be one item. Otherwise,
	// there will be multiple items.
	PuntInfoLog []*AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog `json:"puntInfoLog,omitempty"`

	// StructureFilteredDeviceIndex: Device index of the devices after
	// structure filter
	StructureFilteredDeviceIndex []int64 `json:"structureFilteredDeviceIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AmbiguousDeviceIndex") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmbiguousDeviceIndex") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsAmbiguousTargetDeviceLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsAmbiguousTargetDeviceLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog: PuntInfoLog is used
// to log why devices get filtered out during media content playability
// check. It contains media excuse, provider mid and also index of
// devices filtered by them.
type AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog struct {
	// DeviceIndex: Index of devices that have the same punt info during
	// playability check, i.e. same media_excuse and provider_mid.
	DeviceIndex []int64 `json:"deviceIndex,omitempty"`

	// MediaExcuse: Excuse for media action triggering. See:
	// assistant/verticals/media/proto/media_excuse.proto.
	MediaExcuse int64 `json:"mediaExcuse,omitempty"`

	// ProviderMid: Provider id that the excuse belongs to. This is the KG
	// MID of the provider, e.g., "/m/09jcvs" for Youtube.
	ProviderMid string `json:"providerMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsCommunicationDeviceContactInfoLog: This is the log
// version of apps.people.oz.external.mergedpeopleapi.DeviceContactInfo
// Next ID: 2
type AssistantLogsCommunicationDeviceContactInfoLog struct {
	// RawContactInfo: This list provides account information from the raw
	// contact which is the source of this field.
	RawContactInfo []*AssistantLogsCommunicationRawDeviceContactInfoLog `json:"rawContactInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawContactInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawContactInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationDeviceContactInfoLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationDeviceContactInfoLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsCommunicationFuzzyNgramMatchLog: This is the log version
// of fuzzy ngram match results that's used for generating the best
// fuzzy match. Next ID: 3
type AssistantLogsCommunicationFuzzyNgramMatchLog struct {
	RelativeCost float64 `json:"relativeCost,omitempty"`

	// Possible values:
	//   "NONE"
	//   "EDIT_DISTANCE"
	//   "GENIE_PLEXICON_DISTANCE"
	//   "GENIE_ALTERNATIVE_RECOGNITION"
	//   "JAPANESE_NAME_TRANSLITERATOR"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RelativeCost") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RelativeCost") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationFuzzyNgramMatchLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationFuzzyNgramMatchLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantLogsCommunicationFuzzyNgramMatchLog) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantLogsCommunicationFuzzyNgramMatchLog
	var s1 struct {
		RelativeCost gensupport.JSONFloat64 `json:"relativeCost"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RelativeCost = float64(s1.RelativeCost)
	return nil
}

// AssistantLogsCommunicationGoogleAccountProvenance: From
// google3/quality/qrewrite/proto/account_provenance.proto;l=14 We need
// to copy this as the above proto has Enum field which is not
// compatible between proto2 and proto3. go/proto2-versus-proto3#enums
type AssistantLogsCommunicationGoogleAccountProvenance struct {
	Email string `json:"email,omitempty"`

	GaiaId int64 `json:"gaiaId,omitempty,string"`

	IsDasherAccount bool `json:"isDasherAccount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationGoogleAccountProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationGoogleAccountProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsCommunicationPersonMetadataLog: This is the log version
// of apps.people.oz.external.mergedpeopleapi.PersonMetadata Next ID: 2
type AssistantLogsCommunicationPersonMetadataLog struct {
	DeviceContactInfo []*AssistantLogsCommunicationDeviceContactInfoLog `json:"deviceContactInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceContactInfo")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceContactInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationPersonMetadataLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationPersonMetadataLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsCommunicationPersonalContactDataLog: Contact meta data.
// Next ID: 30
type AssistantLogsCommunicationPersonalContactDataLog struct {
	// AccountProvenance: Google AccountProvenance of the contact.
	AccountProvenance *AssistantLogsCommunicationGoogleAccountProvenance `json:"accountProvenance,omitempty"`

	// CommonNameAliasConfidence: Populated if matched_name_type is
	// GIVEN_NAME_ALIAS or FULL_NAME_ALIAS.
	CommonNameAliasConfidence float64 `json:"commonNameAliasConfidence,omitempty"`

	// ConceptId: Concept id for relationships in English, e.g. "Mother" for
	// all non-English locales. It's only populated for source =
	// RELATIONSHIP.
	ConceptId string `json:"conceptId,omitempty"`

	// DeviceContactAttributes: Integer value corresponding to
	// DeviceContactExtraMetadata.Attribute enum.
	// http://google3/social/graph/wire/proto/merged_person.proto?l=933&rcl=320308954
	DeviceContactAttributes []int64 `json:"deviceContactAttributes,omitempty"`

	// EmailIdCount: # emails stored for the contact.
	EmailIdCount int64 `json:"emailIdCount,omitempty"`

	// FuzzyNgramMatch: Populate only if ContactRecognitionAlternate.Source
	// is 'FUZZY_CONTACT_MATCH'.
	FuzzyNgramMatch []*AssistantLogsCommunicationFuzzyNgramMatchLog `json:"fuzzyNgramMatch,omitempty"`

	// GaiaId: Contact owner's gaia id from
	// cs/symbol::symbol:quality_qrewrite.PersonalContactData.shared_contact_
	// owner_gaia_id. Only populated for is_shared = true and non sign-out
	// mode and user is not the owner of the contact(shared contact from
	// other user).
	GaiaId int64 `json:"gaiaId,omitempty,string"`

	// IsContactFromSecondaryAccount: Boolean value indicating whether
	// selected contact is from different account than the logged in
	// account.
	IsContactFromSecondaryAccount bool `json:"isContactFromSecondaryAccount,omitempty"`

	// IsShared: If this is a shared contact. This is true in 2 cases: -
	// User is calling their own contacts that have been marked as shared. -
	// User is calling shared contacts from some other user's contact list.
	IsShared bool `json:"isShared,omitempty"`

	// IsTransliteratedMatch: Indicate the contact matches the
	// transliterated query.
	IsTransliteratedMatch bool `json:"isTransliteratedMatch,omitempty"`

	// IsVanityContact: True if the contact is a vanity contact(has email =
	// user's email address).
	IsVanityContact bool `json:"isVanityContact,omitempty"`

	// IsVisibleToGuestsRelationship: If the lookup was done using
	// relationship which is visible to guests. This value will only be set
	// if lookup was done using relationship. E.g. user has a guest
	// relationship (doctor) -> (John) And user says "call doctor", then
	// this value will be true.
	IsVisibleToGuestsRelationship bool `json:"isVisibleToGuestsRelationship,omitempty"`

	// MatchedNameType: The matched name type of a contact candidate.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "GIVEN_NAME" - Contact's given name, or first word in name, or last
	// word if query is in CJK.
	//   "FAMILY_NAME" - Contact's family name, or last word in name, or
	// first word if query is in CJK.
	//   "FULL_NAME" - Contact's display name, or given+family, or
	// family+given if query is in CJK. Contact's middle name is optional.
	//   "NICKNAME" - Query span matches contact's nickname.
	//   "OTHER" - Not used yet.
	//   "INITIAL_WITH_FAMILY_NAME" - Either or both of first/middle
	// initials along with family name.
	//   "EMAIL_USERNAME" - Email username, controlled by
	// FocusNameParams.annotate_email_username.
	//   "VANITY_NICKNAME" - Vanity nicknames like "myself", data is at
	// //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.t
	// xt
	//   "GIVEN_NAME_ALIAS" - Contact's given name is a common name alias of
	// query span, e.g. query [Bob] may match contact with given name
	// "Robert".
	//   "FULL_NAME_ALIAS" - Contact's given name is a common name alias of
	// first word in query span, while remaining parts fully matched.
	//   "HOMOPHONE_GIVEN_NAME" - Homophone name match of given name, or
	// last word. Only for CJK query.
	//   "HOMOPHONE_FAMILY_NAME" - Homophone name match of family name, or
	// first word. Only for CJK query.
	//   "HOMOPHONE_FULL_NAME" - Homophone name match of full name, or
	// family+given. Only for CJK query.
	//   "HOMOPHONE_NICKNAME" - Homophone name match of nickname. Only for
	// CJK query.
	//   "GIVEN_MIDDLE_NAME" - Contact's given name + middle name. Only for
	// contacts with 3 words.
	//   "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL" - Contact's given name along
	// with last name initial. Only support non-CJKT contact name.
	//   "EMAIL_OF_FAMILY_MEMBER" - This type indicates we find a match of
	// the user's family member - as defined by families.google.com - by
	// matching the email full address. Controlled by
	// FocusNameParams.annotate_email_full_address.
	MatchedNameType string `json:"matchedNameType,omitempty"`

	// MatchedRecognitionAlternateName: Alternate recognition term which was
	// used to match this contact.
	MatchedRecognitionAlternateName string `json:"matchedRecognitionAlternateName,omitempty"`

	// MatchedStarlightLookupName: Ngram matched by starlight lookup for
	// fuzzy matching in fulfillment. We need this to analyze how many
	// contacts are returned by starlight lookup that is not matched by
	// fuzzy matching. For example, "Komal Dear" is matched to "Komal Dr" by
	// fuzzy match. When doing starlight lookup, "Komal" and "Dr" will be
	// looked up separately. So "Dr xxx" will also be returned. We want to
	// see how often this happens.
	MatchedStarlightLookupName []string `json:"matchedStarlightLookupName,omitempty"`

	// Metadata: PersonMetadata of the selected contact.
	Metadata *AssistantLogsCommunicationPersonMetadataLog `json:"metadata,omitempty"`

	// NameMatchedContactIndex: The indices of the contact in
	// |candidate_contact| whose name matches the |selected_contact_data|.
	// |candidate_contact|:
	// http://google3/logs/proto/assistant/contact.proto?l=111&rcl=306283376
	// |selected_contact_data|:
	// http://google3/logs/proto/assistant/contact.proto?l=108&rcl=306283376
	NameMatchedContactIndex []int64 `json:"nameMatchedContactIndex,omitempty"`

	// OriginalQueryName: The original name in the query as transcribed by
	// ASR.
	OriginalQueryName string `json:"originalQueryName,omitempty"`

	// Phone: Information regarding the phone endpoints of the selected
	// contact. Currently it is only logged for selected candidate.
	Phone []*AssistantLogsCommunicationPhoneLog `json:"phone,omitempty"`

	// PhoneNumberCount: # phone_numbers stored for the contact.
	PhoneNumberCount int64 `json:"phoneNumberCount,omitempty"`

	// PkgReferenceType: Encodes if pkg_person was resolved via a name or
	// relationship reference.
	//
	// Possible values:
	//   "UNKNOWN_PKG_REFERENCE_TYPE"
	//   "PKG_NAME_REFERENCE" - Ann [Charlie]
	//   "PKG_RELATIONSHIP_REFERENCE" - my family dad my sister's kids
	PkgReferenceType string `json:"pkgReferenceType,omitempty"`

	// RecognitionAlternateScore: Populate only if
	// ContactRecognitionAlternate.Source is not NONE.
	RecognitionAlternateScore float64 `json:"recognitionAlternateScore,omitempty"`

	// RecognitionAlternateSource: Recognition alternative source type. If
	// not none, then it indicates the personal contact data is alternative
	// and how the alternative is fulfilled.
	//
	// Possible values:
	//   "NONE"
	//   "S3_HYPOTHESES" - Alternate name from S3 recognition topN
	// hypothesis.
	//   "GENIE_QUERY_ALTERNATIVES" - Alternate name from Genie query
	// alternatives.
	//   "NAME_CORRECTION_LOG" - Alternate name from contact correction
	// history.
	//   "FUZZY_CONTACT_MATCH" - Fuzzy match with user's contacts.
	//   "NEURAL_CONTACT_MATCH" - Neural match. See
	// go/phonetic-contact-match.
	//   "NEURAL_CONTACT_MATCH_DARK_LAUNCH" - The dark launch for a neural
	// match. We found a match, but we ignore it for serving and just log
	// it.
	RecognitionAlternateSource string `json:"recognitionAlternateSource,omitempty"`

	// RelationshipMemoryCount: The number of resolved relationship names
	// and contact pointers from Assistant Memory.
	RelationshipMemoryCount int64 `json:"relationshipMemoryCount,omitempty"`

	// SelectedPhone: Information regarding the selected phone endpoint.
	// Currently it is only logged for selected candidate.
	SelectedPhone *AssistantLogsCommunicationPhoneLog `json:"selectedPhone,omitempty"`

	// ShortcutContactInfo: Shortcut information of the contact.
	ShortcutContactInfo *MajelContactInformationShortcutInformation `json:"shortcutContactInfo,omitempty"`

	// Source: The contact source of a contact candidate.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "FOCUS_CONTACT" - Contacts from Focus
	//   "DEVICE_CONTACT" - Contacts from device, see go/device-content
	//   "GMAIL_INFERENCE" - Contacts inferred from Gmail
	//   "S3_DECORATOR" - Contacts from S3 decorator
	//   "RELATIONSHIP" - Whitelisted relationships no matter if user has
	// such contact, see go/sls-personal_relationship_names_and_aliases.
	//   "VANITY" - Vanity nicknames or user's own profile name.
	//   "SIGNED_OUT_DEVICE" - Signed out device contact names
	//   "SHARED_CONTACT" - Contacts shared from other users. See
	// go/multi-user-shared-contact.
	//   "FAMILY_MEMBER" - People in the user's family group in
	// http://families.google.com who are not contacts.
	//   "SHARED_DEVICE_USER" - People who share a device with the user who
	// are not contacts.
	//   "ON_DEVICE_CONTACT_LOOKUP" - Contacts from on device lookup during
	// contact fulfillment.
	Source string `json:"source,omitempty"`

	// SystemContactGroupId: Integer value corresponding to
	// SystemContactGroup enum.
	// http://google3/social/graph/wire/proto/merged_person.proto?l=3151&rcl=320308954
	SystemContactGroupId []int64 `json:"systemContactGroupId,omitempty"`

	// WhatsappPhoneNumberCount: DEPRECATED. Use phone instead. Used before
	// 2020-01-13. Number of phone numbers annotated with Whatsapp.
	WhatsappPhoneNumberCount int64 `json:"whatsappPhoneNumberCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountProvenance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountProvenance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationPersonalContactDataLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationPersonalContactDataLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantLogsCommunicationPersonalContactDataLog) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantLogsCommunicationPersonalContactDataLog
	var s1 struct {
		CommonNameAliasConfidence gensupport.JSONFloat64 `json:"commonNameAliasConfidence"`
		RecognitionAlternateScore gensupport.JSONFloat64 `json:"recognitionAlternateScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CommonNameAliasConfidence = float64(s1.CommonNameAliasConfidence)
	s.RecognitionAlternateScore = float64(s1.RecognitionAlternateScore)
	return nil
}

// AssistantLogsCommunicationPhoneLog: This is the log version of
// apps.people.oz.external.mergedpeopleapi.Phone proto. Next ID: 3
type AssistantLogsCommunicationPhoneLog struct {
	// RawDeviceContactInfo: This list provides account information from the
	// raw contact which is the source of this field.
	RawDeviceContactInfo []*AssistantLogsCommunicationRawDeviceContactInfoLog `json:"rawDeviceContactInfo,omitempty"`

	// Type: Label for phone number in the Contacts app. It can have
	// standard values provided by the app e.g. MOBILE, HOME, WORK etc, but
	// users are allowed to modify. So essentially it becomes user content.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "RawDeviceContactInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawDeviceContactInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationPhoneLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationPhoneLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsCommunicationRawDeviceContactInfoLog: This is the log
// version of
// apps.people.oz.external.mergedpeopleapi.RawDeviceContactInfo proto.
// Next ID: 3
type AssistantLogsCommunicationRawDeviceContactInfoLog struct {
	// AccountType: Account type of raw contact, e.g. "com.google" or
	// "com.linkedin.android".
	AccountType string `json:"accountType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsCommunicationRawDeviceContactInfoLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsCommunicationRawDeviceContactInfoLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDefaultDeviceLog: Log device info of default speaker and
// tv
type AssistantLogsDefaultDeviceLog struct {
	DefaultSpeaker *AssistantLogsDeviceInfoLog `json:"defaultSpeaker,omitempty"`

	DefaultTv *AssistantLogsDeviceInfoLog `json:"defaultTv,omitempty"`

	SourceDeviceId string `json:"sourceDeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DefaultSpeaker") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DefaultSpeaker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDefaultDeviceLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDefaultDeviceLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantLogsDefaultDevicesLog struct {
	LocalDefaultDevices *AssistantLogsDefaultDeviceLog `json:"localDefaultDevices,omitempty"`

	// NearbyDefaultDevices: Default settings of nearby devices.
	NearbyDefaultDevices []*AssistantLogsDefaultDeviceLog `json:"nearbyDefaultDevices,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalDefaultDevices")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalDefaultDevices") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDefaultDevicesLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDefaultDevicesLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceAnnotationLog: Device annotation mention from
// query
type AssistantLogsDeviceAnnotationLog struct {
	// RawTextFromQuery: The raw text mentioning a device from the query,
	// such as "any tv".
	RawTextFromQuery string `json:"rawTextFromQuery,omitempty"`

	// Type: The annotation type mentioned in the query.
	//
	// Possible values:
	//   "NO_DEVICE_ANNOTATION" - No device is mentioned in the query.
	//   "DEVICE_ID_ANNOTATION" - Annotation specifying a device linked to
	// user's account
	//   "DEVICE_TYPE_ANNOTATION" - Annotation specifying a general device,
	// such as speaker, TV, etc.
	//   "DEVICE_TEXT_ANNOTATION" - Annotation with text. It could be random
	// text, such as "dummy thing".
	Type string `json:"type,omitempty"`

	// UserDefinedName: The matched device name set by the user, such as
	// "big screen tv".
	UserDefinedName string `json:"userDefinedName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawTextFromQuery") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceAnnotationLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceAnnotationLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceInfoLog: The information related to the device.
type AssistantLogsDeviceInfoLog struct {
	// ArbitrationDeviceId: Device identifier string for the current device
	// used in the arbitration service.
	ArbitrationDeviceId string `json:"arbitrationDeviceId,omitempty"`

	// Possible values:
	//   "UNKNOWN_CONNECTIVITY"
	//   "ONLINE_STATE"
	//   "OFFLINE_STATE"
	Connectivity string `json:"connectivity,omitempty"`

	// DeviceId: The identification of the device. DeviceId
	// (go/as-device-id) has multiple fields. To consloidate it to a single
	// to make dremel easier, we use the string obtained by calling
	// go/get-device-id.
	DeviceId string `json:"deviceId,omitempty"`

	// DeviceIdLog: The identification of the device. The logging version of
	// the full DeviceId.
	DeviceIdLog *AssistantLogsSettingsDeviceIdLog `json:"deviceIdLog,omitempty"`

	// DeviceIndex: We index linked devices and log these index to avoid
	// logging device_id. device_index should always be a positive number or
	// -1. -1 means this device is not in homegraph.
	DeviceIndex int64 `json:"deviceIndex,omitempty"`

	// DeviceModelId: This is the device_model_id field in device_settings
	// proto. It has the same value for the same type of devices. e.g.
	// Sonos.Sonos One.S13
	DeviceModelId string `json:"deviceModelId,omitempty"`

	// Distance:
	// LINT.ThenChange(//depot/google3/assistant/context/proto/device_arbitra
	// tion.proto:EstimatedRelativeDistance)
	//
	// Possible values:
	//   "UNKNOWN_DISTANCE"
	//   "CLOSEST"
	//   "EQUALLY_CLOSE"
	//   "FURTHER"
	Distance string `json:"distance,omitempty"`

	// EliminatingLumosProcessor: The lumos processor which eliminated this
	// device, if applicable
	//
	// Possible values:
	//   "UNKNOWN_LUMOS_PROCESSOR"
	//   "CAPABILITIES_FILTER" - filters
	//   "DEVICE_ANNOTATION_FILTER"
	//   "DEVICE_CONNECTIVITY_FILTER"
	//   "LOCAL_DEVICE_INCLUSIVENESS_FILTER"
	//   "LOCATION_FILTER"
	//   "MEDIA_PLAYBACK_FILTER"
	//   "SAFETY_FILTER"
	//   "TRAITS_FILTER"
	//   "DEVICE_TYPE_FILTER"
	//   "APP_FILTER"
	//   "HYBRID_DEVICE_PROPERTIES_FILTER"
	//   "NEARBY_DEVICE_FILTER"
	//   "DEFAULT_MEDIA_OUTPUT_PROMOTER" - promoters
	//   "DEVICE_GROUP_PROMOTER"
	//   "LOCAL_DEVICE_PROMOTER"
	//   "LOCATION_PROMOTER"
	//   "MEDIA_FOCUS_PROMOTER"
	//   "MEDIA_PLAYBACK_PROMOTER"
	//   "SAME_NAME_DEVICE_PROMOTER"
	//   "PHONE_TARGETING_PROMOTER"
	//   "TRAITS_PROMOTER"
	//   "DEVICE_TYPE_PROMOTER"
	EliminatingLumosProcessor string `json:"eliminatingLumosProcessor,omitempty"`

	IsRemote bool `json:"isRemote,omitempty"`

	// IsTethered: This flag indicates this is a non-local device that is
	// tethered to local/originating device. Tethered device is a special
	// case of is_remote and typically used in wearable scenarios. This is
	// always false for local device and when it is true, it implies
	// is_remote is also true.
	IsTethered bool `json:"isTethered,omitempty"`

	MediaCapabilities *AssistantLogsMediaCapabilities `json:"mediaCapabilities,omitempty"`

	// Possible values:
	//   "UNKNOWN_DEVICE_TYPE"
	//   "ASSISTANT"
	//   "HOME_AUTOMATION"
	//   "CAST"
	//   "CAST_GROUP"
	//   "QUARTZ" - Quartz in AGSA
	//   "QUARTZ_IOS" - Quartz in iOPA
	//   "CLOUD_AUTO" - Non-assistant Auto devices from Cloud.
	// go/cloud-registration-api-changes
	MediaDeviceType string `json:"mediaDeviceType,omitempty"`

	// Name: User defined device name
	Name string `json:"name,omitempty"`

	// Sessions: This field should be populated only when there is at least
	// one session on this device.
	Sessions []*AssistantLogsDeviceMediaSessionLog `json:"sessions,omitempty"`

	// SurfaceType: This field should be populated only when the device is
	// an Assistant device.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "ANDROID_ALLO"
	//   "ANDROID_AUTO" - Deprecated (never used). Use OPA_ANDROID_AUTO
	// instead.
	//   "ANDROID_THINGS_CUBE" - Assistant on small screen stationary
	// device.
	//   "ANDROID_THINGS_JASPER"
	//   "ANDROID_TV"
	//   "ANDROID_TV_KIDS"
	//   "ANDROID_WEAR"
	//   "AR_GLASSES" - Assistant on AR Glasses with both visual and audio
	// experiences. Ask ar-assistant@ for details.
	//   "ASSISTANT_SDK" - For Assistant SDK gRPC client.
	//   "AUDIOWEAR"
	//   "BUBBLE_CHARACTERS_IOS" - go/assistant-lamda-overview-characters
	//   "CAPABILITY_BASED_SURFACE" - Surface for capability based testing.
	//   "CHROMECAST_ASSISTANT" - For chrome cast assistant web app.
	//   "CHROMECAST_MANHATTAN" - For chrome cast with assistant + screen
	// (e.g., Google Nest Hub).
	//   "CHROMECAST_SEARCH"
	//   "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g.
	// executing time
	//   "COMPANION_SCREEN" - scheduled routines: go/routine-cloud-ex For
	// Quartz.
	//   "DYNAMITE_WEB"
	//   "ENSEMBLE"
	//   "EYESFREE_AGSA" - Deprecated. Please use OPA_ANDROID_SCREENLESS.
	//   "EYESFREE_GMM"
	//   "GBOARD" - For Gboard app
	//   "GLASS"
	//   "GOOGLE_HOME"
	//   "HANGOUTS_CHATBOT"
	//   "IOS_ALLO"
	//   "IOS_GSA"
	//   "IOS_WEAR"
	//   "LIBASSISTANT" - For standalone libassistant devices.
	//   "LINE_CHATBOT" - LINE 3P messaging app
	//   "MULTIMODAL_AGSA" - Deprecated.
	//   "NON_ASSISTANT_SURFACE" - Surfaces that do not speak to the
	// Assistant, i.e. web HQ
	//   "OPA_AGSA" - Assistant on Android phones accessed through the
	// Google App (velvet). This represents neither all of the assistant on
	// android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the
	// assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS,
	// OPA_AGSA_CHROME_OS, etc.).
	//   "OPA_AGSA_CHROME_OS" - Deprecated. Please use OPA_CROS.
	//   "OPA_ANDROID_AUTO"
	//   "OPA_ANDROID_LITE" - This is OPA on Android Go (not part of AGSA)
	//   "OPA_ANDROID_SCREENLESS" - Assistant on Nexus with screen
	// off/locked. Use go/bisto device to trigger.
	//   "OPA_ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode
	// (go/titan-hubmode-surface). This is OPA Android first party Smart
	// Display devices. The UI experience is built on Opal (Gallium and
	// Flutter) and native Android.
	//   "OPA_ANDROID_TABLET" - Assistant on Android tablet
	//   "OPA_CROS" - Assistant on native Chrome OS (go/croissant).
	//   "OPA_GACS" - For assistant on GACS devices (go/gacs-dd). Google
	// Assistant Conversation Service (GACS) defines intents the device
	// accepts. This surface serves the intents in the assistant response.
	//   "OPA_IOS"
	//   "OPA_IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use
	// go/bisto device to trigger.
	//   "OPA_KAIOS" - Assistant on KaiOS. go/kaiosama
	//   "OPA_MOBILE_WEB" - Assistant on Mobile Web. go/opa-spidey
	//   "RTOS_PHONE" - Assistant on low-cost RTOS phones (go/conceRTOS).
	//   "SMS_CHATBOT"
	//   "TELEGRAM_CHATBOT" - Telegram 3P messaging app
	//   "TELEPHONE_ASSISTANT" - Assistant on a phone call (go/telephone).
	//   "VERILY_ONDUO"
	//   "YOUTUBE_APP" - A Youtube app.
	//   "AGSA_BISTO_FOR_EVAL" - Eval-only surfaces. These surfaces are not
	// real surfaces. They are only used in intermediate steps of eval query
	// and request generation: 1. Eval samplers (OPA query sampler and
	// Cannery sampler) checks logs and temporarily assigns these surface
	// types to the logs, to put Bisto, Lockhart Mic, ... queries in the
	// correct query pools. 2. Request builders uses these surface types to
	// determine how TaskRequest for Bisto, Lockhart Mic, ... should be
	// built, like whether some user user agent should be used, whether some
	// entry source should be set. The surface types in the generated
	// TaskRequest is still the production surface types, like
	// OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android
	// eval. Will be merged with OPA_ANDROID_SCREENLESS in the future.
	//   "COGSWORTH_FOR_EVAL"
	//   "LOCKHART_MIC_FOR_EVAL"
	//   "OPA_ANDROID_AUTO_EMBEDDED_FAKE" - OPA_ANDROID_AUTO has another
	// sub-surface (embedded) that differs in the reported capabilities,
	// client-ops, flags but uses the same surface_type string of
	// OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests
	// and evals for this embedded surface. Deprecated as of Feb 2019.
	// Please use "OPA_ANDROID_AUTO_EMBEDDED" client type for tests and
	// eval. See go/client-onboarding for more details.
	// https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32&rcl=247481455
	//   "SPARK" - Unlaunched new surface prototype, ask spark-eng@.
	//   "WALLE" - Wall-E is an Area120 Project building assistant powered
	// robots. The surface is an extended joplin which have same
	// capabilities as a google home adding custom robot features. Currently
	// in active development. Please reach out walle-software@ or bingxin@
	// for questions. For details see go/walle-as-pipeline-1-pager.
	//   "UNIT_TESTING" - Surface used for unit-testing purposes. Unit-tests
	// might still require the existence of a "valid" SurfaceType to succeed
	// (eg. initialization of the CapabilityBuilder, proto matching, etc.).
	// With the move away from SurfaceType checks, a generic "TESTING"
	// SurfaceType can be used for such tests without affecting the test
	// behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not
	// have any capabilities or ResponseType tied to it. It should only be
	// used for unit-tests and should not be exposed in the ASDebugger.
	SurfaceType string `json:"surfaceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArbitrationDeviceId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArbitrationDeviceId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceInfoLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceInfoLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceMediaSessionLog: Log about the media session on a
// device.
type AssistantLogsDeviceMediaSessionLog struct {
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "SINGLE_DEVICE_SESSION"
	//   "STATIC_GROUP_SESSION" - Media session is playing on a device group
	// set by users.
	//   "DYNAMIC_GROUP_SESSION" - Media session is playing on a temporary
	// device group requested in query.
	MediaSessionType string `json:"mediaSessionType,omitempty"`

	// MediaType: The type of the media session. If provider does not report
	// this field, we ## compute it by mapping provider type to media type.
	// Here is the mapping: |ProviderType |MediaItemMetadata.Type|
	// |-------------------------------------- |MUSIC |TRACK | |VIDEO |VIDEO
	// | |LIVE_TV |TV_CHANNEL | |AUDIOBOOK |AUDIO_BOOK | |PODCAST
	// |PODCAST_EPISODE | ## |LIVE_STREAMING|VIDEO |
	//
	// Possible values:
	//   "UNKNOWN"
	//   "TRACK"
	//   "ALBUM"
	//   "ARTIST"
	//   "PLAYLIST"
	//   "EPISODE"
	//   "MOVIE"
	//   "PHOTO"
	//   "TV_SHOW_EPISODE"
	//   "MUSIC_GENRE"
	//   "MUSIC_STATION"
	//   "AUDIO_BOOK"
	//   "CHAPTER"
	//   "RADIO_STATION"
	//   "MUSIC_MIX"
	//   "SPORTS_EVENT"
	//   "TV_CHANNEL"
	//   "VIDEO"
	//   "YOUTUBE_CHANNEL"
	//   "YOUTUBE_VIDEO_PLAYLIST"
	//   "TV_SHOW" - Representing a TV show which contains multiple TV
	// seasons.
	//   "NEWS"
	//   "NARRATED_WEB"
	//   "NEWS_CALL_TO_ACTION" - Repesents a Call To Action media item. See
	// go/newsplayer-outro-gnews. Current use case is to ask users to
	// continue their news journey in the Google News app / web app. Future
	// cases could include asking users to adjust their news settings.
	//   "AUDIO_STORY" - Representing a short audio story. go/tmas-design
	//   "PODCAST_SERIES" - Represent different kinds of podcast content
	//   "PODCAST_EPISODE"
	MediaType string `json:"mediaType,omitempty"`

	// PlaybackState: The playback states of the session.
	//
	// Possible values:
	//   "UNKNOWN_STATE"
	//   "STOPPED" - State indicating this item is currently stopped.
	//   "PAUSED" - State indicating this item is currently paused.
	//   "PLAYING" - State indicating this item is currently playing.
	//   "FAST_FORWARDING" - State indicating this item is currently fast
	// forwarding.
	//   "REWINDING" - State indicating this item is currently rewinding.
	//   "BUFFERING" - State indicating this item is currently buffering and
	// will begin playing when enough data has buffered.
	//   "ERROR" - State indicating this item is currently in an error
	// state. The error message should also be set when entering this state.
	//   "CONNECTING" - State indicating the class doing playback is
	// currently connecting to a new destination. Depending on the
	// implementation you may return to the previous state when the
	// connection finishes or enter STATE_NONE. If the connection failed
	// STATE_ERROR should be used.
	//   "SKIPPING_TO_PREVIOUS" - State indicating the player is currently
	// skipping to the previous item.
	//   "SKIPPING_TO_NEXT" - State indicating the player is currently
	// skipping to the next item.
	//   "SKIPPING_TO_QUEUE_ITEM" - State indicating the player is currently
	// skipping to a specific item in the queue.
	PlaybackState string `json:"playbackState,omitempty"`

	// ProviderMid: The KG mid of the media provider.
	ProviderMid string `json:"providerMid,omitempty"`

	// Possible values:
	//   "UNKNOWN_COMMAND"
	//   "PLAY_FROM_SEARCH" - Requests that the app start playback for a
	// specific search query.
	//   "PLAY_FROM_URI" - Requests that the app start playback for a
	// specific uri.
	//   "SEND_CUSTOM_ACTION" - Send a custom string action to the provide
	// (go/media-controller-gsa).
	//   "SKIP_TO_NEXT" - Skip to the next item in the play queue.
	//   "SKIP_TO_PREVIOUS" - Skip to the previous item in the play queue.
	//   "PLAY" - Requests that the player start its playback at its current
	// position.
	//   "PAUSE" - Requests that the player pause its playback and stay at
	// its current position.
	//   "STOP" - Requests that the player stop its playback.
	//   "SET_RATING" - Rate the current content.
	//   "SEEK_TO" - Move to a new location in the media stream.
	//   "SHUFFLE" - Requests that the app shuffle the currently loaded
	// content.
	//   "REWIND" - Rewind the current content.
	//   "FAST_FORWARD" - Fast forward the current content.
	//   "SKIP_TO_QUEUE_ITEM" - Play an item with a specific id in the play
	// queue.
	//   "SET_REPEAT_MODE" - Set repeat mode for current content.
	//   "SET_CAPTIONING_ENABLED" - Enable or disable the closed caption for
	// the current content.
	SupportedTransportControl []string `json:"supportedTransportControl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceMediaSessionLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceMediaSessionLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceSelectionLog: Contains information logged in
// target device selection. See go/improve-device-targeting-logging for
// details. Next Id: 22
type AssistantLogsDeviceSelectionLog struct {
	// AllDefaultDevices: Default settings of all nearby devices Deprecated,
	// use default_devices_log instead.
	AllDefaultDevices []*AssistantLogsDefaultDeviceLog `json:"allDefaultDevices,omitempty"`

	// AllMediaStreamLog: Logs all active media sessions.
	AllMediaStreamLog *AssistantLogsAllMediaStreamLog `json:"allMediaStreamLog,omitempty"`

	// CounterfactualDeviceSelectionLog: DeviceSelectionLog for
	// counterfactual logging.
	CounterfactualDeviceSelectionLog *AssistantLogsDeviceSelectionLog `json:"counterfactualDeviceSelectionLog,omitempty"`

	// DefaultDevices: Include default tv and default speaker Deprecated,
	// use all_default_devices below.
	DefaultDevices *AssistantLogsDefaultDeviceLog `json:"defaultDevices,omitempty"`

	DefaultDevicesLog *AssistantLogsDefaultDevicesLog `json:"defaultDevicesLog,omitempty"`

	// DevicesStr: Temporaray field for debugging ANDROID_AUTO
	// multi_target_devices punt. This will be removed once we identify the
	// root cause.
	DevicesStr []string `json:"devicesStr,omitempty"`

	InputErrorLog []*AssistantLogsInputErrorLog `json:"inputErrorLog,omitempty"`

	// LocalDevice: Now we just log the media sessions on local device
	// Deprecated, use NearbyDevicesLog::LocalDevice instead.
	LocalDevice *AssistantLogsDeviceInfoLog `json:"localDevice,omitempty"`

	// LogDataSource: Indicates which library populated the
	// device_selection_log for this query.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MEDIA_FOCUS_SELECTOR" - Indicates the logs is populated by Media
	// Focus Selector.
	//   "LUMOS_DEVICE_TARGETING_LIBRARY" - Indicates the logs is populated
	// by Lumos Device Targeting Library.
	LogDataSource string `json:"logDataSource,omitempty"`

	// MediaFocus: The Media Focus information. This field should be
	// populated only when there is a Media Focus. Deprecated, use
	// media_focuses below instead.
	MediaFocus *AssistantLogsMediaFocusInfoLog `json:"mediaFocus,omitempty"`

	// MediaFocusesLog: Media focuses on all devices.
	MediaFocusesLog *AssistantLogsMediaFocusesLog `json:"mediaFocusesLog,omitempty"`

	// NearbyDevicesLog: All nearby devices and local device.
	NearbyDevicesLog *AssistantLogsNearbyDevicesLog `json:"nearbyDevicesLog,omitempty"`

	// QueryAnnotation: This should log the query annotation features found
	// in the device, such as the device annotation, the room annotation,
	// and the structure annotation from the query.
	QueryAnnotation *AssistantLogsQueryAnnotationLog `json:"queryAnnotation,omitempty"`

	// SelectionResult: The result of device selection.
	SelectionResult *AssistantLogsDeviceSelectionResultLog `json:"selectionResult,omitempty"`

	TestCodes []*AssistantLogsDeviceTargetingTestCode `json:"testCodes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllDefaultDevices")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllDefaultDevices") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceSelectionLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceSelectionLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceSelectionResultLog: Log the selection result. Next
// ID: 11
type AssistantLogsDeviceSelectionResultLog struct {
	// AmbiguousTargetDevices: Deprecated, please use qualified_devices.
	AmbiguousTargetDevices *AssistantLogsAmbiguousTargetDeviceLog `json:"ambiguousTargetDevices,omitempty"`

	DeviceSelectionDecisionSummary *AssistantLogsMediaDeviceSelectionDecisionSummary `json:"deviceSelectionDecisionSummary,omitempty"`

	// Possible values:
	//   "UNKNOWN_ERROR"
	//   "NO_DEVICE_IN_SAME_STRUCTURE" - Error about when there's no
	// qualified devices in the same home graph structure as the local
	// device.
	//   "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION" - Error about when there's
	// no qualified devices in the same network or location as the local
	// device.
	//   "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION" - Error about
	// when there's no qualified devices in the same home graph structure or
	// network or location as the local device.
	//   "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED" - Error
	// about when no qualified device was found that matched the following
	// conditions: 1) Both local device and target device are in the same
	// home graph structure. 2) The distance to target device is unknown
	// (i.e. either local device or target device is homeless) and target
	// device is owned by the user. 3) If local device and target device are
	// in different structures, only allowed when the query explicitly
	// mentioned device name.
	//   "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when
	// no qualified device satisfies the device capability requirement.
	//   "NO_DEVICE_MATCHED_DEVICE_ANNOTATION" - Error of no qualified
	// devices matched requirements from device annotation.
	//   "MULTI_TARGET_DEVICE_NOT_SUPPORTED" - Error of not supporting
	// targeting multiple devices.
	//   "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED" - Error of no device left
	// after local device is excluded within inclusiveness filter.
	//   "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE" - Error of unable to target
	// only local device within inclusiveness filter.
	//   "NO_DEVICE_MATCHED_REQUIRED_TRAITS" - Error of no qualified devices
	// matched the required smart home traits.
	//   "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE" - Error of no qualified
	// devices matched the required smart home device types.
	//   "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE" - Error of no qualified
	// devices in the mentioned structure or in the same structure as the
	// local device.
	//   "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT" - Error of no device
	// satisfying playback requirements.
	//   "STRUCT_DISAMBIG_NOT_SUPPORTED" - Error when structure
	// disambiguation is not supported in the config. When config is
	// supported (both structure_disambiguation_supported and
	// multi_target_supported are set to true), the library would return
	// structures for disambiguation.
	//   "ROOM_DISAMBIG_NOT_SUPPORTED" - Error when room disambiguation is
	// not supported in the config. When config is supported (both
	// room_disambiguation_supported and multi_target_supported are set to
	// true), the library would return rooms for disambiguation.
	//   "UNRECOGNIZED_DEVICE_NAME" - Error when the device mentioned in the
	// query is not recognized. In other words, we can't find a device which
	// matched the device mentioned in the query.
	//   "NO_LINKED_REMOTE_DEVICES" - Used when user requests to target on a
	// remote device and there are no remote devices linked.
	//   "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to
	// target on a remote video device and there are no remote video devices
	// linked.
	//   "NO_SAFE_DEVICE_WITH_SCREEN" - Error when there is no safe screen
	// device. For example, requesting screen-requiring content from Auto
	// surface.
	//   "ALL_QUALIFIED_DEVICES_OFFLINE" - Error when all qualified devices
	// are offline.
	//   "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target
	// a device which is in a different structure and is not allowed. For
	// example, if user doesn't own the structure. See
	// go/on-multi-user-access-transitivity for more details.
	//   "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a
	// device with certain provider but no device can satisfies provider
	// requirement.
	//   "MISSING_LOCAL_DEVICE_SETTING" - AvailableDevice device setting of
	// local device is missing.
	//   "NO_DEVICE_HAS_REQUIRED_APP" - Required app is not installed
	//   "HYBRID_DEVICE_NOT_QUALIFIED" - All remote hybrid devices fail the
	// propertries requirement specific (lock/unlock, etc) for hybrid
	// devices (such as Tangor).
	//   "NO_NEARBY_DEVICES" - No nearby hearing devices
	DeviceTargetingErrorType string `json:"deviceTargetingErrorType,omitempty"`

	// FinalLumosStage: The class name for the final filter/promoter used by
	// Lumos for device targeting. This filter or promoter runs for all
	// users, and contains no data specific to the individual user.
	FinalLumosStage string `json:"finalLumosStage,omitempty"`

	// LowConfidenceTargetDevice:
	// //////////////////////////////////////////////////////////////////////
	// //// Ambiguous Results: the library failed to select the final target
	// device(s) but it narrows down to a set of devices which are all valid
	// target device candidates. The client needs to do further
	// disambiguation, e.g., giving a dialog or having costomized logic. The
	// low confidence target device means the library falied to select the
	// target device but it picked two devices for the client to do
	// disambiguation.
	LowConfidenceTargetDevice *AssistantLogsLowConfidenceTargetDeviceLog `json:"lowConfidenceTargetDevice,omitempty"`

	// MediaFocusSelectionErrorType:
	// //////////////////////////////////////////////////////////////////////
	// //// This field log the error while selecting target device in
	// media_focus_selector.
	//
	// Possible values:
	//   "UNKNOWN_ERROR" - Used when the type of error is not known
	// explicitly.
	//   "FOUND_MULTIPLE_DEVICES" - Used when there are multiple devices
	// satisfying the constraints.
	//   "REQUESTED_DEVICE_HAS_NO_SCREEN" - Used when the user requested to
	// play a content on device without screen and focus selection has the
	// (unsatisfied) REQUIRES_SCREEN restriction. Note that this is error is
	// used if device is recognized, and otherwise UNRECOGNIZED_DEVICE or
	// UNRECOGNIZED_VIDEO_DEVICE will be used.
	//   "NO_LINKED_REMOTE_DEVICES" - Used when user requests to play on a
	// remote device and there are no linked devices.
	//   "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to play
	// on a remote video device and there are no linked video devices.
	//   "UNRECOGNIZED_DEVICE_NAME" - Used when requested device with the
	// given name in the annotation can not be recognized, that is user
	// requested to play on a device that is not found in linked devices. If
	// device is unrecognized and focus selection has the (unsatisfied)
	// REQUIRES_SCREEN or type of unrecognized device is video then more
	// specific UNRECOGNIZED_VIDEO_DEVICE_NAME is used.
	//   "UNRECOGNIZED_VIDEO_DEVICE_NAME" - Used when requested device with
	// the given name in the annotation can not be recognized and focus
	// selection has the (unsatisfied) REQUIRES_SCREEN or type of
	// unrecognized device is video.
	//   "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a
	// device with certain provider but no device can satisfies provider
	// requirement.
	//   "MULTIPLE_DEVICES_MEET_PROVIDER_REQUIREMENT" - Used when user
	// requests a device with certain provider but more than one device can
	// satisfies the provider requirement.
	//   "REMOTE_CLOUD_CASTING_NOT_ALLOWED" - Used when requested device
	// does not allow remote cloud casting.
	//   "NO_SAFE_DEVICE_WITH_SCREEN" - Used when there is no safe screen
	// device. For ex: requesting screen-requiring content from Auto
	// surface.
	//   "NO_DEVICE_MEETS_PLAYBACK_REQUIREMENT" - Used when user requests a
	// device with certain playback but no device can satisfies playback
	// requirement.
	//   "MULTIPLE_DEVICES_MEET_PLAYBACK_REQUIREMENT" - Used when user
	// requests a device with certain playback but more than one device can
	// satisfies playback requirement.
	//   "NO_VALID_DEVICE_IN_REQUESTED_ROOM" - Used when user requests a
	// device to be in a particular room but none of the devices in that
	// room satisfies all requirements.
	//   "NO_DEVICE_FOUND_IN_REQUESTED_ROOM" - Used when user requests a
	// room but no device is found in that room.
	//   "MULTIPLE_DEVICES_FOUND_IN_REQUESTED_ROOM" - Used when user
	// requests a room and there are multiple devices in that room are
	// eligible to selected.
	//   "ALL_QUALIFIED_DEVICES_IN_DIFFERENT_STRUCTURE" - Used when all
	// qualified devices are not in the same structure as the primary
	// device.
	//   "QUALIFIED_DEVICE_OFFLINE"
	//   "ALL_QUALIFIED_DEVICES_OFFLINE" - When all qualified devices are
	// offline.
	//   "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target
	// a device which is in a different structure and is not allowed. For
	// example, if user doesn't own the structure. See
	// go/on-multi-user-access-transitivity for more details.
	//   "NO_DEVICE_MEETS_STADIA_GAMING_CAPABILITY" - When all devices do
	// not qualify for stadia support.
	//   "MEDIA_STATES_MISSING" - Used when any critical media state is
	// missing so the selection decision cannot be made. See
	// go/partial-states-in-targeting-library for more details.
	//   "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when
	// no qualified device satisfies the device capability requirement.
	//   "HYBRID_DEVICE_NOT_QUALIFIED" - All remote hybrid devices fail the
	// propertries requirement specific (lock/unlock, etc) for hybrid
	// devices (such as Tangor).
	MediaFocusSelectionErrorType string `json:"mediaFocusSelectionErrorType,omitempty"`

	// ProcessorInfo: The log for each stage of Lumos, showing the number of
	// eliminated devices from each processor.
	ProcessorInfo []*AssistantLogsLumosProcessorInfo `json:"processorInfo,omitempty"`

	// QualifiedDevices: We will apply several filters and dialogs to select
	// a target device if media_focus_selector fail to select one. This
	// field should log the devices left after each filter or dialog. It
	// also log the detailed info of the final target device.
	QualifiedDevices *AssistantLogsAmbiguousTargetDeviceLog `json:"qualifiedDevices,omitempty"`

	// SingleTargetDevice:
	// //////////////////////////////////////////////////////////////////////
	// //// Unambiguous Results: the library successfully selected the final
	// target device(s) and no further disambiguation is needed. Deprecated,
	// please use target_device.
	SingleTargetDevice *AssistantLogsDeviceInfoLog `json:"singleTargetDevice,omitempty"`

	TargetDevice *AssistantLogsTargetDeviceLog `json:"targetDevice,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AmbiguousTargetDevices") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmbiguousTargetDevices")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceSelectionResultLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceSelectionResultLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsDeviceTargetingTestCode: Test code is used to track
// special events happening in Device Targeting Library. Next Id: 2
type AssistantLogsDeviceTargetingTestCode struct {
	// Possible values:
	//   "UNKNOWN"
	//   "IGNORE_NESTED_DEVICE_MENTION_WITH_ID" - Used to track the case
	// when the nested DeviceMention with id is ignored inside a
	// RoomMention. See: b/184750168 and go/mixed-room-and-device-mention
	//   "INCOMPLETE_LOCAL_AUTO_SETTINGS_FOUND" - Used to track if there is
	// incomplete or bad local android auto settings passed to Lumos.
	//   "FINAL_RESULT_RESOLVED_BY_NEARBY_DEVICE" - Used to track if the
	// final result is resolved by using nearby device.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsDeviceTargetingTestCode) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsDeviceTargetingTestCode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantLogsInputErrorLog struct {
	ErrorCode int64 `json:"errorCode,omitempty"`

	// Possible values:
	//   "ERROR_UNKNOWN"
	//   "ERROR_DEVICE_PROPERTIES"
	//   "ERROR_HOME_GRAPH"
	//   "ERROR_CAPABILITIES_ACROSS_DEVICES"
	ErrorType string `json:"errorType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ErrorCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ErrorCode") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsInputErrorLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsInputErrorLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsLowConfidenceTargetDeviceLog: Represents the case where
// there is a target device with low confidence so that the library
// didn't directly target it. Instead, the library returns the low
// confidence target device and the fallback device for the client to
// decide to either trigger a dialog to disambiguate or select one of
// them based on extra business logic. Next ID: 3
type AssistantLogsLowConfidenceTargetDeviceLog struct {
	// FallbackDeviceLog: The fallback device.
	FallbackDeviceLog *AssistantLogsDeviceInfoLog `json:"fallbackDeviceLog,omitempty"`

	// LowConfTargetDeviceLog: The selected low confidence focus device.
	LowConfTargetDeviceLog *AssistantLogsDeviceInfoLog `json:"lowConfTargetDeviceLog,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FallbackDeviceLog")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FallbackDeviceLog") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsLowConfidenceTargetDeviceLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsLowConfidenceTargetDeviceLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantLogsLumosProcessorInfo struct {
	// DevicesAfterRun: Number of candidate devices after this stage is run.
	DevicesAfterRun int64 `json:"devicesAfterRun,omitempty"`

	// DevicesBeforeRun: Number of candidate devices before this stage is
	// run.
	DevicesBeforeRun int64 `json:"devicesBeforeRun,omitempty"`

	// ProcessorName: Name of the processor for this stage.
	//
	// Possible values:
	//   "UNKNOWN_LUMOS_PROCESSOR"
	//   "CAPABILITIES_FILTER" - filters
	//   "DEVICE_ANNOTATION_FILTER"
	//   "DEVICE_CONNECTIVITY_FILTER"
	//   "LOCAL_DEVICE_INCLUSIVENESS_FILTER"
	//   "LOCATION_FILTER"
	//   "MEDIA_PLAYBACK_FILTER"
	//   "SAFETY_FILTER"
	//   "TRAITS_FILTER"
	//   "DEVICE_TYPE_FILTER"
	//   "APP_FILTER"
	//   "HYBRID_DEVICE_PROPERTIES_FILTER"
	//   "NEARBY_DEVICE_FILTER"
	//   "DEFAULT_MEDIA_OUTPUT_PROMOTER" - promoters
	//   "DEVICE_GROUP_PROMOTER"
	//   "LOCAL_DEVICE_PROMOTER"
	//   "LOCATION_PROMOTER"
	//   "MEDIA_FOCUS_PROMOTER"
	//   "MEDIA_PLAYBACK_PROMOTER"
	//   "SAME_NAME_DEVICE_PROMOTER"
	//   "PHONE_TARGETING_PROMOTER"
	//   "TRAITS_PROMOTER"
	//   "DEVICE_TYPE_PROMOTER"
	ProcessorName string `json:"processorName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DevicesAfterRun") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DevicesAfterRun") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsLumosProcessorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsLumosProcessorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantLogsMediaCapabilities struct {
	CanReceiveRemoteAction bool `json:"canReceiveRemoteAction,omitempty"`

	HasScreen bool `json:"hasScreen,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CanReceiveRemoteAction") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanReceiveRemoteAction")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsMediaCapabilities) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsMediaCapabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsMediaDeviceSelectionDecisionSummary: A summary of the
// reasons that we chose a certain target device.
type AssistantLogsMediaDeviceSelectionDecisionSummary struct {
	// Possible values:
	//   "UNKNOWN_PRIORITY"
	//   "SINGLE_QUALIFIED_SESSION_PREFERRED" - If there is only one media
	// session, it is selected by default.
	//   "FOCUS_SESSION_PREFERRED" - A media session with focus was
	// preferred over other media sessions.
	//   "FOCUS_DEVICE_SESSION_PREFERRED" - A media session on a device with
	// focus was preferred over other media sessions.
	//   "LOCAL_DEVICE_SESSION_PREFERRED" - A media session on a local
	// device was chosen.
	//   "PLAYING_DEVICE_STATE_PREFERRED"
	//   "BUFFERING_DEVICE_STATE_PREFERRED" - A device in the BUFFERING
	// state was preferred over other devices.
	//   "PAUSED_DEVICE_STATE_PREFERRED" - A device in the PAUSED state was
	// preferred over other devices.
	//   "STOPPED_DEVICE_STATE_PREFERRED" - A device in the STOPPED state
	// was preferred over other devices.
	DeviceSelectionPreferenceUsed string `json:"deviceSelectionPreferenceUsed,omitempty"`

	// Possible values:
	//   "UNKNOWN_REASON"
	//   "SYNDICATION_DEVICE_TARGETED" - For syndication devices (3P TV), we
	// sometimes prefer syndication devices over any other remote device,
	// since the query comes from a linked remote.
	//   "AUTO_DEVICE_TARGETED" - Auto surfaces can never cast to remote
	// devices for safety reasons, so we force the local auto device if auto
	// is the surface.
	//   "QUERY_DEVICE_ANNOTATION_TARGETED" - A device explicitly mentioned
	// in the query was targeted.
	//   "SINGLE_QUALIFIED_DEVICE_TARGETED" - Only one device was qualified.
	//   "CAST_GROUP_TARGETED" - We target a cast group only if all the
	// qualified devices are in the same media session. This happens before
	// applying any of the below filters.
	//   "MEDIA_SESSION_TARGETED" - Media sessions are targeted when session
	// targeting is enabled, supported, a session exists with more than one
	// device, and a session outranks all other sessions. The rankings are
	// the keys below.
	//   "FOCUS_DEVICE_TARGETED" - A device with media focus was targeted.
	//   "DEFAULT_DEVICE_TARGETED" - A default device was targeted.
	//   "LOCAL_DEVICE_TARGETED" - The local device was targeted.
	//   "DEVICE_IN_SAME_ROOM_TARGETED" - A device in the same room was
	// targeted.
	//   "AMBIGUOUS_DEVICES_TARGETED" - An ambiguous device result including
	// multiple devices was targeted.
	//   "LOCAL_GROUP_RETARGETED" - When local device is playing as a group,
	// we retarget to the group if local device doesn't have focus. See
	// go/group-targeting for the details.
	//   "FOCUS_OF_CLOSE_DEVICE_TARGETED" - ==== Sandstone related
	// DeviceSelectionReason ==== Entries below refer to other devices that
	// are close by. Details at: go/sandstone-lumos. The media focus device
	// of an equally close device was targeted.
	//   "DEFAULT_OF_CLOSE_DEVICE_TARGETED" - The default target of an
	// equally close device was targeted.
	//   "SINGLE_QUALIFIED_CLOSE_DEVICE_TARGETED" - Only one device out of
	// the ones that are equally close was qualified.
	//   "DEVICE_IN_CLOSE_ROOM_TARGETED" - A device in the same room as an
	// equally close device was targeted.
	//   "TETHERED_DEVICE_TARGETED" - Sometimes wearable device (e.g.,
	// smartwatch) is tethered to a phone. This value indicates the tethered
	// phone was targeted in these scenarios. This is related but slightly
	// different from other remote targeting cases due to the strong
	// binding/association between local (i.e., watch) and tethered device
	// (i.e., phone). go/rohan-media-tethered-design
	DeviceSelectionReason string `json:"deviceSelectionReason,omitempty"`

	// Possible values:
	//   "NONE"
	//   "BETTER_MATCH_DEVICE_WITH_HUMAN_FRIENDLY_NAME_FOUND" - A better
	// match device was found and targeted.
	//   "LOCAL_DEVICE_IMPLICITLY_MENTIONED" - A local device was implicitly
	// mentioned in the query, like "on you".
	//   "USED_LOOSE_PLAYBACK_STATE_REQUIREMENTS" - There were no devices
	// which satisfy the playback states requirements, so the playback
	// states requirements were removed and we tried again.
	//   "QUERY_3P_DEVICE_ANNOTATION_IGNORED_REQUIREMENTS" - A 3P device
	// annotated from the query was targeted. We ignore requirements
	// sometimes for 3p devices.
	MiscSelectionSignal []string `json:"miscSelectionSignal,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceSelectionPreferenceUsed") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DeviceSelectionPreferenceUsed") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsMediaDeviceSelectionDecisionSummary) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsMediaDeviceSelectionDecisionSummary
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsMediaFocusInfoLog: The information related to Media
// Focus. TODO(b/138952173) Deprecate MediaFocusState in
// logs/proto/majel_gws/media_action_triggering_info.proto and
// assistant/verticals/media/proto/target_device_info.proto
type AssistantLogsMediaFocusInfoLog struct {
	// CurrentFocusDurationSec: How long the device is in focus so far
	CurrentFocusDurationSec int64 `json:"currentFocusDurationSec,omitempty"`

	// DialogTriggered: TODO(b/134944092) Log MediaFocusDialogTrigger Enum
	// in focus_status.
	DialogTriggered bool `json:"dialogTriggered,omitempty"`

	// FocusDevice:
	// LINT.ThenChange(//depot/google3/logs/proto/majel_gws/media_action_trig
	// gering_info.proto) The focus device.
	FocusDevice *AssistantLogsDeviceInfoLog `json:"focusDevice,omitempty"`

	// MediaFocusState: The media focus state at the time of the request.
	//
	// Possible values:
	//   "NO_FOCUS" - There is no focus device available or the focus
	// expired.
	//   "RECENT_FOCUS" - Media Focus V1. The focus is valid and it is
	// within the media_focus_dialog_threshold.
	//   "STALE_FOCUS" - The focus is valid however it is over the
	// media_focus_dialog_threshold and might require confirmation from user
	// (dialog) before proceeding to use focus device.
	//   "HARD_FOCUS" - Media Focus V2 The focus is valid and there is a
	// playing session on focus device.
	//   "SOFT_FOCUS" - The focus is valid however there is no playing
	// session on focus device and might require confirmation from user
	// (dialog) before proceeding to use focus device.
	MediaFocusState string `json:"mediaFocusState,omitempty"`

	// SourceDeviceId: The source device of media focus.
	SourceDeviceId string `json:"sourceDeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CurrentFocusDurationSec") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CurrentFocusDurationSec")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsMediaFocusInfoLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsMediaFocusInfoLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsMediaFocusesLog: Following are the MDA compatible
// loggings for media focus, default settings and nearby devices.
type AssistantLogsMediaFocusesLog struct {
	DialogTriggered bool `json:"dialogTriggered,omitempty"`

	LocalMediaFocus *AssistantLogsMediaFocusInfoLog `json:"localMediaFocus,omitempty"`

	// MediaFocuses: Deprecated, use nearby_media_focuses instead.
	MediaFocuses []*AssistantLogsMediaFocusInfoLog `json:"mediaFocuses,omitempty"`

	// NearbyMediaFocuses: MediaFouces found on nearby devices.
	NearbyMediaFocuses []*AssistantLogsMediaFocusInfoLog `json:"nearbyMediaFocuses,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DialogTriggered") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DialogTriggered") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsMediaFocusesLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsMediaFocusesLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsMediaStreamLog: Media stream is composed of a media
// session and one or more devices which are hosting (playing) the
// session. Usually, a session is only hosted by one devcie. However,
// with cast group or stream transfer/expansion, a session could be
// hosted by multiple devices, which are playing the same session
// simultaneously.
type AssistantLogsMediaStreamLog struct {
	// DeviceIndex: The device index in this message is consistent with the
	// device index in DeviceInfoLog. This field refers to the devices that
	// hosting the session.
	DeviceIndex []int64 `json:"deviceIndex,omitempty"`

	Session *AssistantLogsDeviceMediaSessionLog `json:"session,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsMediaStreamLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsMediaStreamLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantLogsNearbyDevicesLog struct {
	// DeviceArbitrationCreationTimestampMs: The timestamp that
	// DeviceArbitration is created in milliseconds.
	DeviceArbitrationCreationTimestampMs int64 `json:"deviceArbitrationCreationTimestampMs,omitempty,string"`

	EliminatedByFurtherDistance int64 `json:"eliminatedByFurtherDistance,omitempty"`

	EliminatedByLocalClosest int64 `json:"eliminatedByLocalClosest,omitempty"`

	EliminatedByUnknownDifferentRoom int64 `json:"eliminatedByUnknownDifferentRoom,omitempty"`

	EliminatedByUnregisteredDevice int64 `json:"eliminatedByUnregisteredDevice,omitempty"`

	LocalDevice *AssistantLogsDeviceInfoLog `json:"localDevice,omitempty"`

	NearbyDevices []*AssistantLogsDeviceInfoLog `json:"nearbyDevices,omitempty"`

	NumClosestDevices int64 `json:"numClosestDevices,omitempty"`

	NumEquallyCloseDevices int64 `json:"numEquallyCloseDevices,omitempty"`

	NumFurtherDevices int64 `json:"numFurtherDevices,omitempty"`

	NumHearingDevices int64 `json:"numHearingDevices,omitempty"`

	NumUnknownDistanceDevices int64 `json:"numUnknownDistanceDevices,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceArbitrationCreationTimestampMs") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DeviceArbitrationCreationTimestampMs") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsNearbyDevicesLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsNearbyDevicesLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsProviderAnnotationLog: Provider annotation annotated
// from the query.
type AssistantLogsProviderAnnotationLog struct {
	PackageNames []string `json:"packageNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PackageNames") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PackageNames") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsProviderAnnotationLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsProviderAnnotationLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsQueryAnnotationLog: Log about the query requirements
type AssistantLogsQueryAnnotationLog struct {
	// DeviceAnnotation: Deprecated, please use room_annotations.
	DeviceAnnotation *AssistantLogsDeviceAnnotationLog `json:"deviceAnnotation,omitempty"`

	// DeviceAnnotations: Log the device annotations mentioned in the query.
	DeviceAnnotations []*AssistantLogsDeviceAnnotationLog `json:"deviceAnnotations,omitempty"`

	// ProviderAnnotation: Log the provider annotations annotated from the
	// query.
	ProviderAnnotation *AssistantLogsProviderAnnotationLog `json:"providerAnnotation,omitempty"`

	// RoomAnnotation: TODO(b/171250187) Deprecates the optional
	// RoomAnnotationLog and DeviceAnnotationLog. Deprecated, please use
	// device_annotations.
	RoomAnnotation *AssistantLogsRoomAnnotationLog `json:"roomAnnotation,omitempty"`

	// RoomAnnotations: Log the room annotations mentioned in the query.
	RoomAnnotations []*AssistantLogsRoomAnnotationLog `json:"roomAnnotations,omitempty"`

	// StructureAnnotations: Log the structure annotations mentioned in the
	// query.
	StructureAnnotations []*AssistantLogsStructureAnnotationLog `json:"structureAnnotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceAnnotation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceAnnotation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsQueryAnnotationLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsQueryAnnotationLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsReminderLog: Annotate a single reminder instance.
type AssistantLogsReminderLog struct {
	// CreatedSecondsAgo: The reminder is created N seconds ago. This helps
	// tracking how the user issues follow-up actions after reminder is
	// created. For example, whether the user likes to issues another [show
	// reminders] query right after reminder is created?
	CreatedSecondsAgo int64 `json:"createdSecondsAgo,omitempty,string"`

	// RetrievedRankingClass: If the reminder is retrieved by a ranking
	// class (see go/opa-reminders-ranker), this will be populated with the
	// class info. Refer to
	// assistant.productivity.ReminderRankingClass.RankingType. Since that
	// proto is in proto2 format, we can only wire by int type.
	RetrievedRankingClass int64 `json:"retrievedRankingClass,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CreatedSecondsAgo")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreatedSecondsAgo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsReminderLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsReminderLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsRoomAnnotationLog: Room annotation mentioned in query.
type AssistantLogsRoomAnnotationLog struct {
	// RawTextFromQuery: The raw text mentioning a room from the query, such
	// as "my living room".
	RawTextFromQuery string `json:"rawTextFromQuery,omitempty"`

	// RoomCount: The number of rooms annotated, if there are multiple
	// structures. They are guaranteed to have the same text_from_query and
	// name due to exact matching.
	RoomCount int64 `json:"roomCount,omitempty"`

	// Type: The annotation type mentioned in the query.
	//
	// Possible values:
	//   "NO_ROOM_ANNOTATION" - No room is mentioned in the query.
	//   "ROOM_ID_ANNOTATION" - Annotation specifying a room set up by
	// users.
	//   "ROOM_TYPE_ANNOTATION" - Annotation specifying a general room type,
	// such as bedroom.
	//   "ROOM_TEXT_ANNOTATION" - Annotation with text. It could be random
	// text, such as "my room", "all rooms".
	Type string `json:"type,omitempty"`

	UserDefinedName string `json:"userDefinedName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawTextFromQuery") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsRoomAnnotationLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsRoomAnnotationLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsSettingsDeviceIdLog: The logging-version of DeviceId
// proto, which identifies a device. This mirrors
// cs/google3/assistant/api/core_types/device_type.proto?q=symbol:DeviceI
// d Next ID: 6
type AssistantLogsSettingsDeviceIdLog struct {
	// AgsaClientInstanceId: The client_instance_id on devices with GSA. See
	// 'client_instance_field' in go/androidids.
	AgsaClientInstanceId string `json:"agsaClientInstanceId,omitempty"`

	// CanonicalDeviceId: A unique device ID for Assistant devices as
	// proposed by go/ocelot-team.
	CanonicalDeviceId string `json:"canonicalDeviceId,omitempty"`

	// CastDeviceId: If set, indicates that the device is a cast device, and
	// contains the UUID of the cast device. Corresponds to the device_id
	// field of the CastDevice proto.
	CastDeviceId string `json:"castDeviceId,omitempty"`

	// ClientInstanceId: DUSI (go/dusi) is used as the identifier here. This
	// identifier is unique to the user and device. This will help identify
	// which device or application the user's request originated from. This
	// is not to be confused with the client_instance_id that android
	// devices provide. This is currently used by surfaces that use the
	// assistant-legacy-nexus and assistant-legacy-clockwork pipelines. DUSI
	// is created and set in S3. This field is only filled for GAIA
	// requests.
	ClientInstanceId string `json:"clientInstanceId,omitempty"`

	// HomeGraphDeviceId: The unique device ID for HomeGraph devices. This
	// is the HomeGraph ID, created when the device is registered into
	// HomeGraph. It is immutable for the same device unless it is
	// completely deleted and recreated. See go/home-graph for details. }
	HomeGraphDeviceId string `json:"homeGraphDeviceId,omitempty"`

	// LibassistantDeviceId: The unique ID for libassistant based devices.
	LibassistantDeviceId string `json:"libassistantDeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AgsaClientInstanceId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgsaClientInstanceId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsSettingsDeviceIdLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsSettingsDeviceIdLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsStructureAnnotationLog: Structure annotation mentioned
// in query.
type AssistantLogsStructureAnnotationLog struct {
	// RawTextFromQuery: The raw text mentioning a structure from the query,
	// such as "my house".
	RawTextFromQuery string `json:"rawTextFromQuery,omitempty"`

	// Type: The annotation type mentioned in the query.
	//
	// Possible values:
	//   "NO_STRUCTURE_ANNOTATION" - No structure is mentioned in the query.
	//   "STRUCTURE_ID_ANNOTATION" - Annotation specifying a structure set
	// up by users.
	//   "STRUCTURE_TEXT_ANNOTATION" - Annotation with text. It could be
	// random text, such as "this house".
	Type string `json:"type,omitempty"`

	UserDefinedName string `json:"userDefinedName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawTextFromQuery") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsStructureAnnotationLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsStructureAnnotationLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantLogsTargetDeviceLog: Represents the case where the library
// successfully selects the target device. It could be one or multiple
// devices. Next ID: 4
type AssistantLogsTargetDeviceLog struct {
	Devices []*AssistantLogsDeviceInfoLog `json:"devices,omitempty"`

	// Possible values:
	//   "UNKNOWN_REASON"
	//   "LOCAL_FALLBACK"
	//   "MANUAL_DEFINED_REASON"
	//   "SINGLE_NEARBY_DEVICE"
	//   "PERSONAL_RESPONSE_BIT_OPTOUT_ON_LOCKED_PHONE"
	LowConfidenceReason string `json:"lowConfidenceReason,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "LOW_CONFIDENCE"
	//   "HIGH_CONFIDENCE"
	ResultConfidenceLevel string `json:"resultConfidenceLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Devices") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Devices") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantLogsTargetDeviceLog) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantLogsTargetDeviceLog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantPrefulfillmentRankerPrefulfillmentSignals: Signals to be
// used by the Prefulfillment Ranker. Derived from the ParsingSignals
// and GroundingSignals carried by the FunctionCall. LINT.IfChange Next
// ID: 39
type AssistantPrefulfillmentRankerPrefulfillmentSignals struct {
	// BindingSetAuis: Assistant User Interaction Score for binding set.
	BindingSetAuis float64 `json:"bindingSetAuis,omitempty"`

	// BindingSetPauis: Pauis score for the binding set
	BindingSetPauis float64 `json:"bindingSetPauis,omitempty"`

	// CalibratedParsingScore: A parsing score that is independently
	// calibrated by each parser/IG.
	CalibratedParsingScore float64 `json:"calibratedParsingScore,omitempty"`

	// DeepMediaDominant: Whether the intent is dominant according to NSP
	// deep-media.
	DeepMediaDominant bool `json:"deepMediaDominant,omitempty"`

	// Dominant: Indicates interpretation dominance predicted by KScorer
	Dominant bool `json:"dominant,omitempty"`

	// EffectiveArgSpanLength: The total effective length of the spans for
	// the arguments used to construct the parse. May include vertical
	// specific adjustments. Eg: For the query [delete my 7 p.m. alarm
	// called chicken] and intent
	// Delete_alarm(alarm_object=RD(category=AlarmObject( label="chicken",
	// trigger_time_datetime=<< 7 PM >>))), the effective argument span is
	// "7 p.m." + "chicken" (total length of 13).
	EffectiveArgSpanLength float64 `json:"effectiveArgSpanLength,omitempty"`

	// FulfillableDominantMedia: Whether this is a fulfillable, dominant
	// Media intent.
	FulfillableDominantMedia bool `json:"fulfillableDominantMedia,omitempty"`

	// GroundabilityScore: Grounding Signals. Score indicating how grounded
	// the intent is, populated by the Grounding Box.
	GroundabilityScore float64 `json:"groundabilityScore,omitempty"`

	// GroundingProviderFeatures: Grounding Provider related ranking
	// features, including general Grounding Provider ranking
	// features(shared among multiple GPs) and specific Grounding Provider
	// ranking features(provided by a specific GP).
	GroundingProviderFeatures *AssistantGroundingRankerGroundingProviderFeatures `json:"groundingProviderFeatures,omitempty"`

	// InQueryMaxEffectiveArgSpanLength: This is a cross-intent feature
	// which is calculated by iterating all intent candidates. This feature
	// should be populated in post-IG stage (before GB).
	InQueryMaxEffectiveArgSpanLength float64 `json:"inQueryMaxEffectiveArgSpanLength,omitempty"`

	// IntentName: intent_name is used by PFR ensemble model. See
	// go/pfr_ha_launch_doc
	IntentName string `json:"intentName,omitempty"`

	// IntentNameAuisScore: QUS intent-based ranking signals. Assistant User
	// Interaction Score which is aggregated using intent name.
	IntentNameAuisScore float64 `json:"intentNameAuisScore,omitempty"`

	// IntentNameAuisScoreExp: Assistant User Interaction Score which is
	// aggregated using intent name from exp laelaps.
	IntentNameAuisScoreExp float64 `json:"intentNameAuisScoreExp,omitempty"`

	// IsFeasible: Feasibility of fulfilling the binding set. Eg: For
	// PlayMedia, this is equivalent to playability. More details:
	// go/hgr-feasibility-feature.
	IsFeasible bool `json:"isFeasible,omitempty"`

	// KscorerRank: The rank order of the interpretation as determined by
	// kscorer. The kscorer-determined dominant interpretation, if any, gets
	// a rank of 0. The remaining N interpretations get a rank of 1 through
	// N.
	KscorerRank int64 `json:"kscorerRank,omitempty"`

	// LaaFeatures: Learn and adapt(go/laa) related features. Design doc:
	// go/laa-profile-signal-for-grounding.
	LaaFeatures *AssistantGroundingRankerLaaFeatures `json:"laaFeatures,omitempty"`

	// MaskCandidateLevelFeatures: This feature is always false / no-op in
	// serving time. In training time, this feature may be set true on
	// specific examples for weighted training where when this signal is
	// true, only cross-intent level features are used for training and
	// other candidate level features are masked (set as missing).
	MaskCandidateLevelFeatures bool `json:"maskCandidateLevelFeatures,omitempty"`

	// MaxHgrScoreAcrossBindingSets: The maximum score assigned by the
	// Horizontal Grounding Ranker (HGR) across all of the intent's binding
	// sets.
	MaxHgrScoreAcrossBindingSets float64 `json:"maxHgrScoreAcrossBindingSets,omitempty"`

	// NumAlternativeHypothesis: Number of alternative hypotheses from
	// speech recognition(S3).
	NumAlternativeHypothesis float64 `json:"numAlternativeHypothesis,omitempty"`

	// NumConstraints: Sum of the number of constraints used by the
	// Grounding Box to ground each variable.
	NumConstraints float64 `json:"numConstraints,omitempty"`

	// NumConstraintsSatisfied: Sum of the number of constraints satisfied
	// for each variable. Depending on the match score for a constraint,
	// this number can be fractional and is in the range [0,
	// num_constraints]. Populated by the Grounding Box.
	NumConstraintsSatisfied float64 `json:"numConstraintsSatisfied,omitempty"`

	// NumGroundableArgs: Number of groundable arguments the intent has,
	// populated by the Grounding Box.
	NumGroundableArgs float64 `json:"numGroundableArgs,omitempty"`

	// NumGroundedArgs: Number of grounded arguments the intent has,
	// populated by the Grounding Box.
	NumGroundedArgs float64 `json:"numGroundedArgs,omitempty"`

	// NumVariables: Signals as proposed in go/improved-grounding-signals.
	// Number of arguments, possibly nested, that the Grounding Box tried to
	// ground.
	NumVariables float64 `json:"numVariables,omitempty"`

	// NumVariablesGrounded: Number of arguments, possibly nested, that the
	// Grounding Box was able to ground. This includes ambiguously grounded
	// arguments.
	NumVariablesGrounded float64 `json:"numVariablesGrounded,omitempty"`

	// Pq2tVsAssistantIbstCosine: Cosine similarity between predicted
	// query-to-term model and assistant intent-type-based salient terms.
	// This is intended to be only used for ACE ranking and only populated
	// for assistant traffic.
	Pq2tVsAssistantIbstCosine float64 `json:"pq2tVsAssistantIbstCosine,omitempty"`

	// Pq2tVsIbstCosine: Cosine similarity between predicted query-to-term
	// model and intent-type-based salient terms. This is intended to be
	// used as a backoff to pq2t_vs_qibst_cosine if it is missing.
	Pq2tVsIbstCosine float64 `json:"pq2tVsIbstCosine,omitempty"`

	// PredictedIntentConfidence: Intent confidence predicted by the
	// AssistantVerticalClassifier QRewrite servlet.
	PredictedIntentConfidence float64 `json:"predictedIntentConfidence,omitempty"`

	// SearchDispatch: The determination made by the SearchDispatchingConfig
	// as to whether and how this interpretation should be dispatched to
	// Search.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "NONE"
	//   "BRIDGE_API"
	//   "FULFILL_INTENT"
	//   "EMIT_ONLY"
	//   "COUNTERFACTUAL_LOG_ONLY" - These rules are no-ops wrt.
	// dispatching. The only effect they produce is the logging of the
	// associated |counterfactual_events|.
	//   "CAPACITY_ACCOUNTING" - These rules only consume capacity
	// constraints, but are not dispatched. This way the rules can be used
	// for the suppression for intents lower in the list.
	SearchDispatch string `json:"searchDispatch,omitempty"`

	// TopHypothesisConfidence: Average of per-word confidence for top
	// speech recognition hypothesis. The value is from
	// RecognizerHypothesisLog:
	// http://google3/logs/proto/speech/service/recognizer_log.proto?l=848&rcl=281400256
	TopHypothesisConfidence float64 `json:"topHypothesisConfidence,omitempty"`

	// VerticalConfidenceScore: Horizontal feature that stores information
	// about confidence scores for each resolution within the binding set.
	VerticalConfidenceScore float64 `json:"verticalConfidenceScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BindingSetAuis") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BindingSetAuis") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantPrefulfillmentRankerPrefulfillmentSignals) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantPrefulfillmentRankerPrefulfillmentSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantPrefulfillmentRankerPrefulfillmentSignals) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantPrefulfillmentRankerPrefulfillmentSignals
	var s1 struct {
		BindingSetAuis                   gensupport.JSONFloat64 `json:"bindingSetAuis"`
		BindingSetPauis                  gensupport.JSONFloat64 `json:"bindingSetPauis"`
		CalibratedParsingScore           gensupport.JSONFloat64 `json:"calibratedParsingScore"`
		EffectiveArgSpanLength           gensupport.JSONFloat64 `json:"effectiveArgSpanLength"`
		GroundabilityScore               gensupport.JSONFloat64 `json:"groundabilityScore"`
		InQueryMaxEffectiveArgSpanLength gensupport.JSONFloat64 `json:"inQueryMaxEffectiveArgSpanLength"`
		IntentNameAuisScore              gensupport.JSONFloat64 `json:"intentNameAuisScore"`
		IntentNameAuisScoreExp           gensupport.JSONFloat64 `json:"intentNameAuisScoreExp"`
		MaxHgrScoreAcrossBindingSets     gensupport.JSONFloat64 `json:"maxHgrScoreAcrossBindingSets"`
		NumAlternativeHypothesis         gensupport.JSONFloat64 `json:"numAlternativeHypothesis"`
		NumConstraints                   gensupport.JSONFloat64 `json:"numConstraints"`
		NumConstraintsSatisfied          gensupport.JSONFloat64 `json:"numConstraintsSatisfied"`
		NumGroundableArgs                gensupport.JSONFloat64 `json:"numGroundableArgs"`
		NumGroundedArgs                  gensupport.JSONFloat64 `json:"numGroundedArgs"`
		NumVariables                     gensupport.JSONFloat64 `json:"numVariables"`
		NumVariablesGrounded             gensupport.JSONFloat64 `json:"numVariablesGrounded"`
		Pq2tVsAssistantIbstCosine        gensupport.JSONFloat64 `json:"pq2tVsAssistantIbstCosine"`
		Pq2tVsIbstCosine                 gensupport.JSONFloat64 `json:"pq2tVsIbstCosine"`
		PredictedIntentConfidence        gensupport.JSONFloat64 `json:"predictedIntentConfidence"`
		TopHypothesisConfidence          gensupport.JSONFloat64 `json:"topHypothesisConfidence"`
		VerticalConfidenceScore          gensupport.JSONFloat64 `json:"verticalConfidenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BindingSetAuis = float64(s1.BindingSetAuis)
	s.BindingSetPauis = float64(s1.BindingSetPauis)
	s.CalibratedParsingScore = float64(s1.CalibratedParsingScore)
	s.EffectiveArgSpanLength = float64(s1.EffectiveArgSpanLength)
	s.GroundabilityScore = float64(s1.GroundabilityScore)
	s.InQueryMaxEffectiveArgSpanLength = float64(s1.InQueryMaxEffectiveArgSpanLength)
	s.IntentNameAuisScore = float64(s1.IntentNameAuisScore)
	s.IntentNameAuisScoreExp = float64(s1.IntentNameAuisScoreExp)
	s.MaxHgrScoreAcrossBindingSets = float64(s1.MaxHgrScoreAcrossBindingSets)
	s.NumAlternativeHypothesis = float64(s1.NumAlternativeHypothesis)
	s.NumConstraints = float64(s1.NumConstraints)
	s.NumConstraintsSatisfied = float64(s1.NumConstraintsSatisfied)
	s.NumGroundableArgs = float64(s1.NumGroundableArgs)
	s.NumGroundedArgs = float64(s1.NumGroundedArgs)
	s.NumVariables = float64(s1.NumVariables)
	s.NumVariablesGrounded = float64(s1.NumVariablesGrounded)
	s.Pq2tVsAssistantIbstCosine = float64(s1.Pq2tVsAssistantIbstCosine)
	s.Pq2tVsIbstCosine = float64(s1.Pq2tVsIbstCosine)
	s.PredictedIntentConfidence = float64(s1.PredictedIntentConfidence)
	s.TopHypothesisConfidence = float64(s1.TopHypothesisConfidence)
	s.VerticalConfidenceScore = float64(s1.VerticalConfidenceScore)
	return nil
}

// AssistantProductivityListItem: A message to represent an item in a
// list. Just a basic string for now, but extensible for the future.
type AssistantProductivityListItem struct {
	// Name: [REQUIRED] The name of the list item.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantProductivityListItem) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantProductivityListItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantRemindersAttachment: Proto descrbing an attachment to an
// Assistant Reminder. If the attachment has different behavior on
// different surfaces (e.g., deeplinks), there will be multiple
// attachments attach to the Reminder. Each of them will specify the
// surface type and the corresponding deeplink.
type AssistantRemindersAttachment struct {
	// Id: REQUIRED. An unique identifier for the attachment. We have a plan
	// to index this field, so it's marked as REQUIRED. Chat with
	// opa-reminders-eng@ if you have a use case without an attachment ID.
	Id string `json:"id,omitempty"`

	Link *AssistantRemindersAttachmentLink `json:"link,omitempty"`

	// SurfaceType: REQUIRED. Surface types this attachment should be shown.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "ANDROID_PHONE"
	SurfaceType []string `json:"surfaceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantRemindersAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantRemindersAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantRemindersAttachmentLink struct {
	// LinkUrl: REQUIRED. The link to surface to frontends (e.g., Hubpage,
	// notifications.) This could also be a surface-specific deeplink (be
	// sure to set `surface_type` accordingly.)
	LinkUrl string `json:"linkUrl,omitempty"`

	// NotificationText: REQUIRED. The text for the notification link
	// button. Note: We cannot take nlp_generation.TemplateData yet due to
	// cyclic dependency. The plan is to cut dependency from TemplateData to
	// quality.actions.Reminder.
	NotificationText *AssistantRemindersNlgTemplateKey `json:"notificationText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LinkUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LinkUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantRemindersAttachmentLink) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantRemindersAttachmentLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantRemindersMemoryPayload: Since this is stored in BE, any
// update on this proto needs LGTM by ARIS storage owner
type AssistantRemindersMemoryPayload struct {
	// HasReferencedEntityAtCreation: Whether the reminder created has a
	// referenced_entity attached to it or not(go/hub-memory-payload). Since
	// we plan to set this in Assistant reminder creation path flow, in case
	// later the referenced_entity is removed from the reminder, then this
	// bit might still remain true. Also in case referenced_entity is later
	// added to reminder(for example when referenced_entity is attached by
	// Server), then also this bit might remain false. This bit will be used
	// to *guess* if the user has a memory-enabled AGSA, thus we'll surface
	// the "open memory" button on hubpage. This check is not perfect, as
	// the user might have other phones with older AGSA, so this is just a
	// *best guess*. This field won't be stored in Memory backend, and will
	// not be populated back when retrieving reminders.
	HasReferencedEntityAtCreation bool `json:"hasReferencedEntityAtCreation,omitempty"`

	// RecordId: Id of record that is associated with Reminder. This will be
	// set for all Assistant reminders created after the first launch of the
	// Reminder Memory integration, see go/reminders-memory for more
	// details. Also, this might apply to all other types of reminders.
	RecordId string `json:"recordId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HasReferencedEntityAtCreation") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "HasReferencedEntityAtCreation") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantRemindersMemoryPayload) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantRemindersMemoryPayload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantRemindersNlgTemplateKey: Equivalent to
// nlp_generation.TemplateKey. We cannot use nlp_generation.TemplateKey
// message directly becasue that proto is defined in a relatively large
// proto and has other dependencies, which will increase the size
// unnecessary and might hit many limitations (e.g., 5MiB limitation for
// Spanner type environment.).
type AssistantRemindersNlgTemplateKey struct {
	// MessageSet: REQUIRED.
	MessageSet string `json:"messageSet,omitempty"`

	// TemplateName: REQUIRED.
	TemplateName string `json:"templateName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MessageSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MessageSet") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantRemindersNlgTemplateKey) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantRemindersNlgTemplateKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantTeleportTeleportNicknameSignals struct {
	// HasLocationInterpretation: Whether the nickname could also refer to a
	// location. For example, "walmart", "starbucks".
	HasLocationInterpretation bool `json:"hasLocationInterpretation,omitempty"`

	// InstallInfo: Indicates whether the user has the app installed.
	//
	// Possible values:
	//   "INSTALLATION_INFORMATION_UNAVAILABLE" - The annotator was not
	// aware of installed apps, or the resource is not an app.
	//   "IS_INSTALLED_APP" - The resource is an app, and the annotator had
	// the information that it is installed.
	//   "IS_NOT_INSTALLED_APP" - The resource is an app, and the annotator
	// had the information that it is not installed.
	InstallInfo string `json:"installInfo,omitempty"`

	// IsGeneric: True when the name is generic, i.e when it could refer to
	// multiple packages from different developrs. For example, "mail" is
	// considered a generic name (since it can refer to "gmail", "yahoo
	// mail" etc.) but "facebook" although could refer to both "facebook"
	// and "facebook lite" is not considered generic (both packages are from
	// the same third party).
	IsGeneric bool `json:"isGeneric,omitempty"`

	// NicknameTier: The tier of the nickname.
	//
	// Possible values:
	//   "UNKNOWN" - Default value for unknown tier.
	//   "UNRESTRICTED" - Nicknames that always refer to the respective
	// application or url. For example, "facebook" always refers to the
	// Facebook app / homepage.
	//   "INTENT_REQUIRED" - Nicknames that refer to the app/url when the
	// intent is to execute an action on the app/url. For example, "most
	// wanted" refers to the "Need for Speed Most Wanted" app, only if the
	// user asks, for example, to open the app - "open most wanted".
	//   "APP_PHRASE_REQUIRED" - Nicknames that refer to the app/url when
	// the app/url restriction is explicit. For example, "banking" is a
	// nickname for the "Bank of America Mobile Banking" app, only if user
	// explicitly states they are referring to the app - "banking app",
	// "open banking application".
	NicknameTier string `json:"nicknameTier,omitempty"`

	// Possible values:
	//   "DEFAULT"
	//   "GELLER"
	//   "DEVICE_CAPABILITIES" - These annotations are generated on the fly
	// (server-side), and are not matched by SE Muppet using the
	// offline-generated corpus.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HasLocationInterpretation") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "HasLocationInterpretation") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantTeleportTeleportNicknameSignals) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantTeleportTeleportNicknameSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsCommonContactMatchSignal: Neural contact match
// signals.
type AssistantVerticalsCommonContactMatchSignal struct {
	// MatchScore: Neural contact match similarity score.
	MatchScore float64 `json:"matchScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MatchScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsCommonContactMatchSignal) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsCommonContactMatchSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AssistantVerticalsCommonContactMatchSignal) UnmarshalJSON(data []byte) error {
	type NoMethod AssistantVerticalsCommonContactMatchSignal
	var s1 struct {
		MatchScore gensupport.JSONFloat64 `json:"matchScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MatchScore = float64(s1.MatchScore)
	return nil
}

// AssistantVerticalsHomeautomationProtoActionProjectConfig: Metadata
// for Actions-on-Google configuration.
type AssistantVerticalsHomeautomationProtoActionProjectConfig struct {
	// ContextId: Actions-on-Google action context ID. See
	// go/sdm-hospitality-design.
	ContextId string `json:"contextId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContextId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContextId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoActionProjectConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoActionProjectConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoAgentDeviceId: An agent + device
// pair that uniquely identifies a device.
type AssistantVerticalsHomeautomationProtoAgentDeviceId struct {
	// AgentId: The agent's ID. Generally it is the agent's Google pantheon
	// project id.
	AgentId string `json:"agentId,omitempty"`

	// DeviceId: Device ID defined by the agent.
	DeviceId string `json:"deviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoAgentDeviceId) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoAgentDeviceId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoAgentInformation:
// AgentInformation represents the details needed to support both 1P and
// 3P partnerships for Home Automation. Next ID: 7
type AssistantVerticalsHomeautomationProtoAgentInformation struct {
	// Possible values:
	//   "OPEN_AUTH_DEFAULT" - Device uses 3p path with token
	// authentication. This is the default value used when a different
	// authentication type is not specified.
	//   "NEST_AUTH_PROXY" - Device uses 1p Nest path (eg: Olive) with gaia
	// credential authentication.
	AuthType string `json:"authType,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "CLOUD_SYNC" - Device is created through HA2 SyncDevices flow, are
	// HA2 cloud agent devices. ultravox is a cloud agent as well as surface
	// device and it's using Sync flow.
	//   "ASSISTANT_SETTING_OOBE" - Device created through Assistant Setting
	// at OOBE time, they're things that are mastered within google
	// internally.
	//   "LOCAL_SYNC" - Device is created through the local device platform
	// to HGS sync flow. These devices are not necessarily mastered in a 3P
	// cloud - they are locally detected by an assistant device and then
	// synced to HGS directly. See go/aogh-dd.
	//   "CHIP_SYNC" - Device created through local CHIP provision and sync
	// up. Chip synced devices can be the same devices as the devices synced
	// from cloud, and the sync and de-dup logic can be very complicated.
	DeviceSource string `json:"deviceSource,omitempty"`

	// Possible values:
	//   "HARPOON_DEFAULT" - Execute through Harpoon call. This is the
	// default value used when the execution_path is not specified.
	//   "STUBBY" - Execute through stubby RPC call.
	ExecutionPath string `json:"executionPath,omitempty"`

	// Id: Unique Agent ID which maps to a specific Agent. Not using Agent
	// Name here as it may change over time.
	Id string `json:"id,omitempty"`

	// Key: Agent's foreign key that uniquely identifies a user's device.
	Key string `json:"key,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuthType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoAgentInformation) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoAgentInformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoAttribute: Protos representing
// device or structure attributes. See go/hgs-attributes-protos. Only
// protos approved and formalized by assistant/HG team should be added
// here.
type AssistantVerticalsHomeautomationProtoAttribute struct {
	StructureBasedRoutine *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine `json:"structureBasedRoutine,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "StructureBasedRoutine") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StructureBasedRoutine") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoAttributes:
// LINT.IfChange(proto_attributes)
type AssistantVerticalsHomeautomationProtoAttributes struct {
	AttributeProtos []*AssistantVerticalsHomeautomationProtoAttribute `json:"attributeProtos,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeProtos") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeProtos") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoAttributes) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoAttributes
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoCommonEventTrigger:
// LINT.IfChange(proto_event_trigger) Next id: 5
type AssistantVerticalsHomeautomationProtoCommonEventTrigger struct {
	Enabled bool `json:"enabled,omitempty"`

	// EventTriggerPayload: Detailed settings for the event trigger; unset
	// if not applicable.
	EventTriggerPayload googleapi.RawMessage `json:"eventTriggerPayload,omitempty"`

	// EventTriggerType: Different event type may have different settings.
	// For example: * SCHEDULED will have event_trigger_payload of
	// cs/symbol:assistant.verticals.voice_shortcut.proto.Schedule *
	// LOCATION will have event_trigger_payload of
	// cs/symbol:assistant.verticals.voice_shortcut.proto.LocationTriggerEven
	// t
	//
	// Possible values:
	//   "UNKNOWN"
	//   "SCHEDULED"
	//   "LOCATION"
	//   "DEVICE_CONTROL" - For Routine triggered by Home Intelligence
	// Service (IQS) based on DEVICE_STATE_CHANGE. NOTE: This trigger is
	// currently handled by IQS team go/iqs-hhr.
	//   "DEVICE_SENSES" - For Routine triggered by Home Intelligence
	// Service (IQS) based on DEVICE_SENSOR_SIGNAL. NOTE: This trigger is
	// currently handled by IQS team go/iqs-hhr.
	EventTriggerType string `json:"eventTriggerType,omitempty"`

	// TriggerSource: Unique identifier for the EventTrigger, e.g.
	// SCHEDULED_ROUTINES. See the enum values of
	// cs/symbol:WorkflowTriggerInput.TriggerSource
	TriggerSource int64 `json:"triggerSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoCommonEventTrigger) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoCommonEventTrigger
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine:
// Routines team stores the core Structure Based Routine data as the
// payload. We will add specific metadata on a per-need basis.
// LINT.IfChange(proto_structure_based_routine) Next id: 12 These two
// forms of payload are equivalent data in different formats and both
// will be stored in Home Graph. 1. The internal format will fan out to
// the DynamicEntity Footprints for read in Settings flow and Execution.
// 2. The UI format will be stripped out upon replication to
// DynamicEntity Footprints due to its redundancy and the Footprints
// data size limit, i.e. DE Footprints will only contain the internal
// format.
type AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine struct {
	// Enabled: Whether this Routine is enabled or not. If false, then this
	// Routine can't be triggered by Voice.
	Enabled bool `json:"enabled,omitempty"`

	// GooglePreconfigWorkflowId: The unique identifier for a class of
	// workflows. For example: * "sbr_001" => Away * "sbr_002" => Home *
	// "category_template" => CUSTOM
	GooglePreconfigWorkflowId string `json:"googlePreconfigWorkflowId,omitempty"`

	Language string `json:"language,omitempty"`

	// Payload: Internal format payload primarily for Routines team use.
	Payload googleapi.RawMessage `json:"payload,omitempty"`

	// SecurityLevel: The security level of the Structure Based Routine as
	// determined by the most security-sensitive task.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "ALLOW_UNVERIFIED"
	//   "ALLOW_VERIFIED"
	SecurityLevel string `json:"securityLevel,omitempty"`

	Shared bool `json:"shared,omitempty"`

	StoragePayload googleapi.RawMessage `json:"storagePayload,omitempty"`

	StructureId string `json:"structureId,omitempty"`

	// Triggers: Voice or event triggers.
	Triggers []*AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger `json:"triggers,omitempty"`

	// Possible values:
	//   "UNDEFINED"
	//   "CURATED"
	//   "ALARM"
	//   "CUSTOM"
	//   "CUSTOM_SCRIPT" - SCHEDULED = 3 [deprecated = true];
	Type string `json:"type,omitempty"`

	// UiPayload: UI format payload primarily for external team use.
	UiPayload googleapi.RawMessage `json:"uiPayload,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Enabled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Enabled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigge
// r: Next id: 3
type AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger struct {
	EventTrigger *AssistantVerticalsHomeautomationProtoCommonEventTrigger `json:"eventTrigger,omitempty"`

	VoiceTrigger *AssistantVerticalsHomeautomationProtoCommonVoiceTrigger `json:"voiceTrigger,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EventTrigger") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EventTrigger") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoCommonVoiceTrigger:
// LINT.IfChange(proto_voice_trigger) Next id: 2
type AssistantVerticalsHomeautomationProtoCommonVoiceTrigger struct {
	Query string `json:"query,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Query") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Query") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoCommonVoiceTrigger) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoCommonVoiceTrigger
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoConciergeFeatures: The Concierge
// features a structure is eligible for. See {@link
// home.graph.common.ConciergeFeatures}.
type AssistantVerticalsHomeautomationProtoConciergeFeatures struct {
	// Possible values:
	//   "UNKNOWN_PRODUCT_FEATURE" - LINT.IfChange
	//   "E911" -
	// LINT.ThenChange(//depot/google3/home/graph/proto/common/enums.proto)
	ConciergeProductFeatures []string `json:"conciergeProductFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ConciergeProductFeatures") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConciergeProductFeatures")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoConciergeFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoConciergeFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo:
// Next ID: 5
type AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo struct {
	// AnnotatedSpanDevice: The query span for device mention.
	AnnotatedSpanDevice string `json:"annotatedSpanDevice,omitempty"`

	// AnnotatedSpanRoom: The query span for room mention.
	AnnotatedSpanRoom string `json:"annotatedSpanRoom,omitempty"`

	// AnnotatedSpanStructure: The query span for structure mention.
	AnnotatedSpanStructure string `json:"annotatedSpanStructure,omitempty"`

	// ProcessedMentionedSpan: This field is from
	// query_info.processed_mentioned_span in DTO.
	ProcessedMentionedSpan string `json:"processedMentionedSpan,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotatedSpanDevice")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotatedSpanDevice") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoHomeAutomationDevice: Next ID: 9
type AssistantVerticalsHomeautomationProtoHomeAutomationDevice struct {
	// DeviceSelectionLog: the next 3 fields are for Lumos output (DTO) that
	// needs to be propagated to the Fulfilment through the
	// HomeAutomationDevice proto.
	DeviceSelectionLog *AssistantLogsDeviceSelectionLog `json:"deviceSelectionLog,omitempty"`

	DtoError *AssistantDeviceTargetingDeviceTargetingError `json:"dtoError,omitempty"`

	// DtoQueryInfo: This field is from query_info in DTO.
	DtoQueryInfo *AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo `json:"dtoQueryInfo,omitempty"`

	// HomeautomationMetadata: Device meta data.
	HomeautomationMetadata *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData `json:"homeautomationMetadata,omitempty"`

	// List: list of HomeAutomationDeviceItem. After migration completes, we
	// will mark the above 4 field as deprecated and only use this field.
	List []*AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem `json:"list,omitempty"`

	// MatchedItemKey: Corresponding to casse matched_item CustomTypeItem
	// key.
	MatchedItemKey string `json:"matchedItemKey,omitempty"`

	// MatchedItemRawvalue: Corresponding to casse Argument raw_value.
	MatchedItemRawvalue string `json:"matchedItemRawvalue,omitempty"`

	// MatchedItemValue: Corresponding to casse matched_item CustomTypeItem
	// value.
	MatchedItemValue []string `json:"matchedItemValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceSelectionLog")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceSelectionLog") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoHomeAutomationDevice) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationDevice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem struct {
	// HomeautomationMetadata: Device meta data.
	HomeautomationMetadata *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData `json:"homeautomationMetadata,omitempty"`

	// MatchedItemKey: Corresponding to casse matched_item CustomTypeItem
	// key.
	MatchedItemKey string `json:"matchedItemKey,omitempty"`

	// MatchedItemRawvalue: Corresponding to casse Argument raw_value.
	MatchedItemRawvalue string `json:"matchedItemRawvalue,omitempty"`

	// MatchedItemValue: Corresponding to casse matched_item CustomTypeItem
	// value.
	MatchedItemValue []string `json:"matchedItemValue,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HomeautomationMetadata") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HomeautomationMetadata")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoHomeAutomationMetaData: Next ID:
// 43
type AssistantVerticalsHomeautomationProtoHomeAutomationMetaData struct {
	// ActionProjectConfigs: Custom actions that this item supports.
	ActionProjectConfigs []*AssistantVerticalsHomeautomationProtoActionProjectConfig `json:"actionProjectConfigs,omitempty"`

	// AgentInformation: Agent details.
	AgentInformation *AssistantVerticalsHomeautomationProtoAgentInformation `json:"agentInformation,omitempty"`

	// AssistantDeviceId: Device ID that matches the ID passed from the
	// device to discourse_context when a user issues a query to an
	// Assistant-enabled device that is registered with Cast (via CCS (see
	// go/castservers)), or some other service.
	AssistantDeviceId string `json:"assistantDeviceId,omitempty"`

	// Attributes: Attributes data as provided from SYNC. This gets used in
	// mutation and execution and in some potential cases, in biasing.
	Attributes googleapi.RawMessage `json:"attributes,omitempty"`

	// CreatorGaiaId: See Device.creator_gaia_ids in
	// //home/graph/proto/service/types.proto. If empty, the GAIA ID from
	// the request EUC is assumed to be the creator. We only need at most
	// one creator_gaia_id.
	CreatorGaiaId int64 `json:"creatorGaiaId,omitempty,string"`

	// DerivedType: Any types that are not the given item type, but derived
	// later. For example, if an item has type action.devices.types.OUTLET
	// but is named "floor lamp" we can derive that it also has type
	// action.devices.types.LIGHT. Also considered along with |type| when
	// triggering type-based actions.
	DerivedType []string `json:"derivedType,omitempty"`

	// DeviceModelId: See note in home_graph.proto; loaded into DE now to
	// avoid having to double-read assistant settings records as per
	// go/smarthome-removing-assistant-settings
	DeviceModelId string `json:"deviceModelId,omitempty"`

	// GcmExecutionAddress: GCM address for cloud execution across google
	// cloud messaging rather than 3p cloud; for future use.
	GcmExecutionAddress string `json:"gcmExecutionAddress,omitempty"`

	// GroupIds: List of parent group IDs, if the device is added to one or
	// multiple device groups (see go/home-groups). Will be consumed by
	// Smart Home APIs and (in the future) Assistant CTF to populate the
	// group member list of device groups.
	GroupIds []string `json:"groupIds,omitempty"`

	// HashValue: The hash value from go/de-consistency-check
	HashValue string `json:"hashValue,omitempty"`

	// LanscanOptedIn: Whether local home platform should discover new
	// devices via LAN for the structure.
	LanscanOptedIn bool `json:"lanscanOptedIn,omitempty"`

	// ModelName: Model name from HomeGraph, populated from
	// model_manifest.model_name. See b/200087451.
	ModelName string `json:"modelName,omitempty"`

	// NotificationEnabledByUser: Indicates whether notifications have been
	// enabled by a user and will be announced for this device. This is set
	// by the user within the Google app settings, and Google will announce
	// the device notification only if both notification_supported_by_agent
	// and notification_enabled_by_user are true.
	NotificationEnabledByUser bool `json:"notificationEnabledByUser,omitempty"`

	// NotificationSupportedByAgent: Indicates whether the device is capable
	// of sending notifications. This field will be set by the agent
	// (partner) on an incoming SYNC. If a device is not capable of
	// generating notifications, the partner should set this flag to false.
	// If a partner is not capable of calling ReportStateAndNotification to
	// send notifications to Google, the partner should set this flag to
	// false. If there is a user setting in the partner app to enable
	// notifications and it is turned off, the partner should set this flag
	// to false.
	NotificationSupportedByAgent bool `json:"notificationSupportedByAgent,omitempty"`

	// OpaqueCustomData: Store custom data for agent calls here. This will
	// likely be short-lived -- we will replace this with calls to HGS.
	// (Note: This may end up not temporary if we only need it for a couple
	// partners -- more efficient to have it on a few users than require HGS
	// reads for all users.
	OpaqueCustomData string `json:"opaqueCustomData,omitempty"`

	// OperationalNodeId: Operational CHIP Node ID that combines the fabric
	// ID and node id in format of . (Hex format without 0x prefix, for
	// example, 0F001234FA67AA39.1234ABCD1111DDDD).
	OperationalNodeId string `json:"operationalNodeId,omitempty"`

	// OtherDeviceIds: Other agent id + foreign id pairs associated with the
	// device. This can be used to represent a group of devices (e.g. Sonos'
	// bonded zone) as a single device, or a device that comes in through
	// different sync flows (e.g. Newman with a Nest camera).
	OtherDeviceIds []*AssistantVerticalsHomeautomationProtoAgentDeviceId `json:"otherDeviceIds,omitempty"`

	// OtherDeviceSources: Additional device sources. This can be the result
	// of the device being merged with other devices with a different
	// source.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "CLOUD_SYNC" - Device is created through HA2 SyncDevices flow, are
	// HA2 cloud agent devices. ultravox is a cloud agent as well as surface
	// device and it's using Sync flow.
	//   "ASSISTANT_SETTING_OOBE" - Device created through Assistant Setting
	// at OOBE time, they're things that are mastered within google
	// internally.
	//   "LOCAL_SYNC" - Device is created through the local device platform
	// to HGS sync flow. These devices are not necessarily mastered in a 3P
	// cloud - they are locally detected by an assistant device and then
	// synced to HGS directly. See go/aogh-dd.
	//   "CHIP_SYNC" - Device created through local CHIP provision and sync
	// up. Chip synced devices can be the same devices as the devices synced
	// from cloud, and the sync and de-dup logic can be very complicated.
	OtherDeviceSources []string `json:"otherDeviceSources,omitempty"`

	// ParentNode: LINT.IfChange(home_graph_single_parent) At the moment, we
	// just have a single string. In future this will expand with additional
	// metadata from client or cloud execution data store. In today's 'tree'
	// HomeGraph each object has a single parent. In the future this may
	// have a mesh for complex cases -- zones, doors, etc -- so we make this
	// a repeated element today.
	// LINT.ThenChange(//depot/google3/assistant/assistant_server/settings/us
	// er_defined_actions/footprints/footprint_accessor.cc:home_graph_single_
	// parent)
	ParentNode []string `json:"parentNode,omitempty"`

	// ParentType: The type of the parent. Currently only set for devices,
	// to distinguish between structure and room parents. Items currently
	// have only one parent, and entries after the first parent_type are
	// ignored.
	//
	// Possible values:
	//   "UNKNOWN_ITEM_TYPE"
	//   "DEVICE"
	//   "ROOM"
	//   "PLACE"
	//   "GROUP"
	//   "SCENE"
	//   "STRUCTURE"
	ParentType []string `json:"parentType,omitempty"`

	// PersonalizedNicknames: User-given nicknames for an entity (e.g. "My
	// house"). These nicknames are unique to the gaia user. Nickname in
	// DeviceInfo is per-entity level nickname, while personalized_nicknames
	// is per-user per-entity.
	PersonalizedNicknames []string `json:"personalizedNicknames,omitempty"`

	// PhysicalLocation: Stores the location for the STRUCTURE type.
	PhysicalLocation *AssistantVerticalsHomeautomationProtoPhysicalLocation `json:"physicalLocation,omitempty"`

	// Plural: We use this to determine if the synonyms matched in the aqua
	// interpretation is plural. Then we will return disambiguate dialog or
	// execute commands with all the targets.
	Plural []string `json:"plural,omitempty"`

	// PrimaryName: Which of the values was the original, user-provided name
	// -- or our disambiguated, cleaned-up version of it. This is what we
	// use in TTS when we need to identify an object that wasn't just spoken
	// uniquely by the user -- in disambiguation dialogue, or in response to
	// a collective interrogative (e.g. "what lights are on in the
	// kitchen?")
	PrimaryName string `json:"primaryName,omitempty"`

	// RoleInformation: User's role information for this device. This will
	// be used in Home Automation server to decide if user has authority to
	// fulfill its request.
	RoleInformation *AssistantVerticalsHomeautomationProtoRoleInformation `json:"roleInformation,omitempty"`

	// RoutableViaGcm: Only present for a target device. Indicates this
	// target device is reachable by a local (AoGH) path via an AoGH device.
	RoutableViaGcm bool `json:"routableViaGcm,omitempty"`

	// SaftDocument: SAFT Document with linguistic annotations for the
	// primary device name.
	SaftDocument *NlpSaftDocument `json:"saftDocument,omitempty"`

	// SmartDeviceManagementData: Data needed for SDM (fleet management).
	// See go/enterprise-id-in-assistant.
	SmartDeviceManagementData *AssistantVerticalsHomeautomationProtoSmartDeviceManagementData `json:"smartDeviceManagementData,omitempty"`

	// SmartHomeFeatures: SmartHome feature flags that may be enabled
	// per-item.
	SmartHomeFeatures *AssistantVerticalsHomeautomationProtoSmartHomeFeatures `json:"smartHomeFeatures,omitempty"`

	// SupportedStructureFeatures: The features that are available for a
	// structure. Will only be populated if the item_type == STRUCTURE.
	SupportedStructureFeatures *AssistantVerticalsHomeautomationProtoSupportedStructureFeatures `json:"supportedStructureFeatures,omitempty"`

	// SupportedTraitsByAgent: Map from agent ID to supported traits. Some
	// devices (e.g. Newman) have multiple agents, with each agent being
	// associated with a specific set of traits. This could alternatively
	// have been formatted as map as {trait, agent} pairs instead of the
	// {agent, list of trait} pairs, but we retain this format to be
	// consistent with HomeGraph's representation. In practice, a trait
	// should only be paired with a single agent (i.e. we should not have
	// two agents with the same trait in their value list). This field is
	// optional and should only be provided if the item has multiple agents.
	SupportedTraitsByAgent map[string]AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits `json:"supportedTraitsByAgent,omitempty"`

	// SupportsDirectResponse: This device supports direct response -- if
	// the device itself is issuing the query (which means it's also an
	// assistant surface) we can return its payload directly rather than via
	// cloud.
	SupportsDirectResponse bool `json:"supportsDirectResponse,omitempty"`

	// TargetDeviceSignalStrengths: Only present for an AoGH device. HGS
	// Device ID of a target device and the signal strength (RSSI in dB,
	// higher is better) between that target device and the AoGH device. If
	// this map is empty, there are no target devices reachable by this AoGH
	// device.
	TargetDeviceSignalStrengths map[string]string `json:"targetDeviceSignalStrengths,omitempty"`

	// TdssUpdateTimestamp: The timestamp at which the TDSS map was last
	// updated. This information is used to help determine which hub would
	// be preferred if multiple hubs report the same reach-ability for a
	// device.
	TdssUpdateTimestamp string `json:"tdssUpdateTimestamp,omitempty"`

	// TraitRoutingHints: For SHED devices, some traits can only be executed
	// on 3P cloud, e.g. "action.devices.traits.MediaInitiation",
	// "action.devices.traits.Channel" go/shed-per-trait-routing
	TraitRoutingHints []*HomeGraphCommonTraitRoutingHints `json:"traitRoutingHints,omitempty"`

	// TraitRoutingTable: Map from traits to routing table. Metadata
	// includes preferred execution path per trait and, when Matter is
	// preferred, which endpoint should be used for the trait.
	TraitRoutingTable map[string]HomeGraphCommonRoutingTable `json:"traitRoutingTable,omitempty"`

	// TraitToAttributeProtos: Map of trait to a proto representing the
	// attribute. This is different from the attributes field above which is
	// represented as a struct. The attributes here are represented as
	// protos and will require specific support per trait.
	TraitToAttributeProtos map[string]AssistantVerticalsHomeautomationProtoAttributes `json:"traitToAttributeProtos,omitempty"`

	// Type: The item type, such as "action.devices.types.VACUUM" - to be
	// used in triggering type-based actions, e.g. "start vacuuming":
	// go/smarthome-type-based-actions.
	Type string `json:"type,omitempty"`

	// UserDefinedDeviceType: The priority order of speech targeting: 1.
	// user_defined_device_type 2. derived_device_type 3. device_type
	UserDefinedDeviceType string `json:"userDefinedDeviceType,omitempty"`

	// VoiceMatchRequired: Set to which level of voice match is needed. Enum
	// based on string input from the partner in json sync. Values accepted:
	// "none" (but in this case partners won't set it), "owner" [requires
	// matching one of the creator gaia IDs], or "member" [any recognized
	// voice 'enrolled' on the device]. This may expand; only "owner" is in
	// use for first partner, Tile.
	//
	// Possible values:
	//   "ANY" - Also default, and existing behavior == "none" in text
	//   "OWNER" - Must match an actual creator_gaia_id on device
	//   "MEMBER" - Any member of the surface / structure interacting
	VoiceMatchRequired string `json:"voiceMatchRequired,omitempty"`

	// WillReportState: This device will report state; we can query realtime
	// state from local HGS rather than slow QUERY intent to the 3p cloud.
	WillReportState bool `json:"willReportState,omitempty"`

	// ZoneNameSaftDocument: SAFT Document with linguistic annotations for
	// the zone name, if applicable.
	ZoneNameSaftDocument *NlpSaftDocument `json:"zoneNameSaftDocument,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ActionProjectConfigs") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionProjectConfigs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationMetaData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits struct {
	Traits []string `json:"traits,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Traits") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Traits") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantVerticalsHomeautomationProtoPhysicalLocation struct {
	Address string `json:"address,omitempty"`

	GeoLocation *GoogleTypeLatLng `json:"geoLocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Address") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Address") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoPhysicalLocation) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoPhysicalLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoRoleInformation: Represents the
// user’s role such as assistant only or manager for a device. Design
// doc:
// https://docs.google.com/document/d/1c1hnauEbBfDkywO3GZkI8ejHP765l2tLspmPgckEe2Y/
type AssistantVerticalsHomeautomationProtoRoleInformation struct {
	// IamCheckRequired: When true, role_type will be ignored, Nest IAM RPC
	// will called to check authority.
	IamCheckRequired bool `json:"iamCheckRequired,omitempty"`

	// Possible values:
	//   "UNDEFINED"
	//   "ASSISTANT_ONLY"
	//   "CAST_LEGACY_LINKED"
	//   "MANAGER"
	RoleType string `json:"roleType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IamCheckRequired") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IamCheckRequired") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoRoleInformation) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoRoleInformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type AssistantVerticalsHomeautomationProtoSmartDeviceManagementData struct {
	// EnterpriseId: The enterprise that owns the structure. E.g. Disney,
	// Dream Hotel, etc. This is used for log/analytics purpose. For privacy
	// reasons, we log at enterprise level instead of structure level.
	EnterpriseId string `json:"enterpriseId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EnterpriseId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EnterpriseId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoSmartDeviceManagementData) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoSmartDeviceManagementData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoSmartHomeFeatures: SmartHome
// feature flags that may be enabled per-item. LINT.IfChange
type AssistantVerticalsHomeautomationProtoSmartHomeFeatures struct {
	// CircadianLightingEnabled: Flag indicating whether the background
	// Circadian Lighting effect is enabled for a particular light
	// (go/circadian-lighting-e2e).
	CircadianLightingEnabled bool `json:"circadianLightingEnabled,omitempty"`

	// EnergySavingsEnabled: Flag indicating whether automatic Energy
	// Savings are enabled for this item.
	EnergySavingsEnabled bool `json:"energySavingsEnabled,omitempty"`

	// GentleWakeupEnabled: Flag indicating whether Gentle Wake Up is
	// enabled for this item (go/sleep-wake-design).
	GentleWakeupEnabled bool `json:"gentleWakeupEnabled,omitempty"`

	// HomeAwayOverMatterEnabled: Flag indicating whether the user has
	// enabled / disabled sending Home/Away status updates to the device
	// through the Google custom IntelligenceEvents Matter cluster.
	// (go/google-clusters-design)
	HomeAwayOverMatterEnabled bool `json:"homeAwayOverMatterEnabled,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CircadianLightingEnabled") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CircadianLightingEnabled")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoSmartHomeFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoSmartHomeFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AssistantVerticalsHomeautomationProtoSupportedStructureFeatures: The
// features a structure supports.
type AssistantVerticalsHomeautomationProtoSupportedStructureFeatures struct {
	ConciergeFeatures *AssistantVerticalsHomeautomationProtoConciergeFeatures `json:"conciergeFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConciergeFeatures")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConciergeFeatures") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *AssistantVerticalsHomeautomationProtoSupportedStructureFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod AssistantVerticalsHomeautomationProtoSupportedStructureFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AttentionalEntitiesMentionProperties: Represents the properties of a
// mention. Next ID: 13
type AttentionalEntitiesMentionProperties struct {
	// DeviceId: The unique device on which the mention occurred. For
	// example, if the user has two Google Home devices, this indicates
	// which of the two was used.
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// EventId: ID of the event that resulted in this entity mention. For
	// user and system turn AEs, this is taken from the
	// ConversationSnapshotId of the snapshot containing this mention. For
	// client AEs, this is empty. This can be used to join back this
	// particular mention to the specific "turn" in which this mention took
	// place.
	EventId *EventIdMessage `json:"eventId,omitempty"`

	// FactoidScore: If this mention corresponds to a WebAnswer, then this
	// defines the score associated with that answer.
	FactoidScore float64 `json:"factoidScore,omitempty"`

	// ListEntryInfo: If present, this entity was mentioned as part of a
	// larger list.
	ListEntryInfo *AttentionalEntitiesMentionPropertiesListEntryInfo `json:"listEntryInfo,omitempty"`

	// Recency: Estimates the recency of the mention. This is internally
	// computed at runtime on a turn-by-turn basis.
	//
	// Possible values:
	//   "RECENCY_UNSPECIFIED"
	//   "MOST_RECENT_TURN" - Corresponds to a mention from the most recent
	// user-driven interaction. For example, this label would be applied to
	// both mentions of "Barack Obama" in the following interaction: USER:
	// How tall is Obama? GOOGLE: Barack Obama is six feet one inch tall.
	// NOTE: This is currently only applicable to mentions that have a
	// source of User or System.
	Recency string `json:"recency,omitempty"`

	// Role: The semantic role that the entity was used in.
	Role *AttentionalEntitiesSemanticRoleId `json:"role,omitempty"`

	// Salience: How salient this mention is. This field will only be set if
	// the mention is derived from a SearchAnswerValue. See
	// go/webresultsdata-as-aes for more details.
	//
	// Possible values:
	//   "UNKNOWN_SALIENCE" - Any mention that is not derived from a
	// SearchAnswerValue will not have a Salience.
	//   "PRIMARY" - This mention corresponds to the primary entity in the
	// response. For example, if the query is "who was the 44th President of
	// the US", then the entity for "Barack Obama" would be marked as
	// PRIMARY. Note that there may more than one PRIMARY entity in a
	// response if a list of values is displayed (e.g. "Stephen King
	// books").
	//   "METADATA" - This mention corresponds to metadata associated with
	// the answer. For the US President query mentioned above, something
	// like the inauguration date could be considered as METADATA. If it is
	// difficult to identify a PRIMARY entity, then all entities may be
	// marked as METADATA.
	Salience string `json:"salience,omitempty"`

	// Source: Contains metadata about the source of the mention.
	Source *AttentionalEntitiesMentionPropertiesSource `json:"source,omitempty"`

	// SpatialProperties: If present, properties of visual mentions (e.g.,
	// how they are displayed to the user, visibility, etc.).
	SpatialProperties *AttentionalEntitiesSpatialProperties `json:"spatialProperties,omitempty"`

	// SurfaceForm: Details about how this mention was presented.
	SurfaceForm *AttentionalEntitiesSurfaceForm `json:"surfaceForm,omitempty"`

	// Timestamp: Unix timestamp noting (approximately) when this mention
	// occurred. We do not guarantee that the time will correspond precisely
	// to when the user uttered/heard a response. If mentions within a
	// single turn have *different* timestamps, they should accurately
	// reflect the order in which the mentions occurred. If that order is
	// unknown, they should all have the same timestamp.
	Timestamp string `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesMentionProperties) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesMentionProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *AttentionalEntitiesMentionProperties) UnmarshalJSON(data []byte) error {
	type NoMethod AttentionalEntitiesMentionProperties
	var s1 struct {
		FactoidScore gensupport.JSONFloat64 `json:"factoidScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FactoidScore = float64(s1.FactoidScore)
	return nil
}

// AttentionalEntitiesMentionPropertiesListEntryInfo: Contains
// information about how an entity was presented as part of a list.
type AttentionalEntitiesMentionPropertiesListEntryInfo struct {
	// Index: The index of the entity presented to the user. NOTE: Indexing
	// starts from 0.
	Index int64 `json:"index,omitempty,string"`

	// LexicalGroundingsId: A string which uniquely identifies the list item
	// this entity represents in the list. For example, consider the
	// "OrderPizza" intent with the "size" slot: U: I want to order a pizza
	// A: Sure. What size do you want: large, medium, or small? U: Gigantic
	// The lexical_groundings_id can be "large" to identify the large item
	// in the list. This lexical_groundings_id together with the semantic
	// role fields (i.e., role.intent_id & role.role_id) can be used to
	// match the nlp_semantic_parsing::LexicalGroundings::ValueTermType to
	// utilize lexical grounding for i18n of static list selection items.
	// Note that this field only needs to be populated when developers
	// expect to provide lexical groundings for the list item this entity
	// represents. Effectively, this field will be populated when this
	// entity is published by ListPresentationFrame and the
	// ::quality::dialog_manager::IntentStageSignals::FieldCandidate.lexical_
	// groundings_id field is populated. See go/lpf-i18nv2 &
	// go/taskstate-ae-sync for more details.
	LexicalGroundingsId string `json:"lexicalGroundingsId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesMentionPropertiesListEntryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesMentionPropertiesListEntryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AttentionalEntitiesMentionPropertiesSource: The agent or system from
// which the mention was derived. Each mention corresponds to a single
// source.
type AttentionalEntitiesMentionPropertiesSource struct {
	Client *AttentionalEntitiesMentionPropertiesSourceClient `json:"client,omitempty"`

	System *AttentionalEntitiesMentionPropertiesSourceSystem `json:"system,omitempty"`

	User *AttentionalEntitiesMentionPropertiesSourceUser `json:"user,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Client") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Client") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesMentionPropertiesSource) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesMentionPropertiesSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AttentionalEntitiesMentionPropertiesSourceClient: The client provided
// this entity. Currently, this exclusively corresponds to an entity
// that was circulated by the client. See go/on-device-aes for more
// details.
type AttentionalEntitiesMentionPropertiesSourceClient struct {
}

// AttentionalEntitiesMentionPropertiesSourceSystem: The Assistant
// mentioned this entity. This corresponds to entities annotated during
// fulfillment. More specifically, these entities are typically provided
// by developers either via a Monastery frame or an InteractionBuilder.
type AttentionalEntitiesMentionPropertiesSourceSystem struct {
}

// AttentionalEntitiesMentionPropertiesSourceUser: The user mentioned
// this entity. It was extracted from a previous winning intent
// (IntentQuery or IntentUpdate). Such entities are computed at runtime
// from the interpretation history without any developer intervention.
type AttentionalEntitiesMentionPropertiesSourceUser struct {
}

// AttentionalEntitiesSemanticRoleId: Uniquely identifies a semantic
// role. When this role corresponds to a slot in a registered user
// intent (see go/assistant-intent-catalog), then the SemanticRoleId
// maps precisely onto that slot in the intent catalog. However, not all
// semantic roles corresponds to such user intent slots.
type AttentionalEntitiesSemanticRoleId struct {
	// IntentId: Semantic roles will be defined locally, within the context
	// of a single task/feature. The |intent_id| is a unique identifier for
	// such a local cluster. In most cases, this should be exactly the same
	// as the name of the intent used for TaskState (see
	// go/assistant-intent-catalog). In cases where the intent isn't
	// well-defined, this can be an arbitrary, feature-defined identifier.
	IntentId string `json:"intentId,omitempty"`

	// RoleId: Identifier for a semantic role, unique within the namespace
	// of |intent_id|. When this role corresponds to a slot in the intent,
	// the |role_id| should be equal to the name of that argument. For
	// example, consider an entry in the intent catalog: core_intent { id {
	// id: "BookARide" } slot { name: "provider" type { string_type { } } }
	// slot { name: "num_riders" type { number_type { } } } } Then, the
	// |role_id| would be "provider" or "num_riders" when referring to one
	// of these slots. NOTE: when responding to the user, the Assistant may
	// actually make use of other roles such as "ETA" or "driver" that are
	// not part of the intent declaration. These should still be assigned
	// consistent semantic roles. For example, a dialog with the Shopping
	// feature: User: Where can I buy XYZ? Google: [Best Buy in Sunnyvale]
	// has [XYZ] in stock. User: Great! Give me directions. In this case,
	// both "Best Buy" and "XYZ" would be pushed to attentional entities.
	// Best Buy, in this case, may not be an argument in the
	// ShoppingItemStockInquiry intent, but should still have a consistent
	// |role_id| such as "possessing_business".
	RoleId string `json:"roleId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesSemanticRoleId) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesSemanticRoleId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AttentionalEntitiesSpatialProperties: Properties of visual mentions
// (e.g., how they are displayed to the user, visibility, etc.).
type AttentionalEntitiesSpatialProperties struct {
	// Possible values:
	//   "UNKNOWN_VISIBILITY"
	//   "VISIBLE"
	//   "HIDDEN"
	Visibility string `json:"visibility,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Visibility") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Visibility") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesSpatialProperties) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesSpatialProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// AttentionalEntitiesSurfaceForm: How the entity was presented in this
// mention at a surface level. For example, "President Barack Obama" or
// "Barack Obama" or "he" might all be reasonable surface forms for the
// MID /m/02mjmr.
type AttentionalEntitiesSurfaceForm struct {
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *AttentionalEntitiesSurfaceForm) MarshalJSON() ([]byte, error) {
	type NoMethod AttentionalEntitiesSurfaceForm
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BiasingPerDocData: This data is expected to appear in approximately 2
// out of every 1,000 documents with an average of 2 fields per
// document. Rough order of size is in the hundreds of kilobytes per
// Mustang shard.
type BiasingPerDocData struct {
	Biasingfield []*BiasingPerDocDataBiasingField `json:"biasingfield,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Biasingfield") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Biasingfield") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BiasingPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod BiasingPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BiasingPerDocData2: A replacement for BiasingPerDocData that is more
// efficient wrt size in the index.
type BiasingPerDocData2 struct {
	BiasingField []*BiasingPerDocData2BiasingField `json:"biasingField,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BiasingField") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BiasingField") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BiasingPerDocData2) MarshalJSON() ([]byte, error) {
	type NoMethod BiasingPerDocData2
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type BiasingPerDocData2BiasingField struct {
	// CompressedName: A fingerprint of the actual name of the field.
	CompressedName int64 `json:"compressedName,omitempty"`

	// Value: The value, under various representations to get maximum
	// compression. Exactly one of them is guaranteed to be filled. value as
	// a double.
	Value float64 `json:"value,omitempty"`

	// ValueFloat: a floating value, represented as an integer by converting
	// using floating_value * 1000. Useable for all floating values that
	// need 3 digits of precision, and are small enough.
	ValueFloat int64 `json:"valueFloat,omitempty"`

	// ValueInt: value as an int32. When the value is encode-able as an
	// integer.
	ValueInt int64 `json:"valueInt,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CompressedName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompressedName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *BiasingPerDocData2BiasingField) MarshalJSON() ([]byte, error) {
	type NoMethod BiasingPerDocData2BiasingField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *BiasingPerDocData2BiasingField) UnmarshalJSON(data []byte) error {
	type NoMethod BiasingPerDocData2BiasingField
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// BiasingPerDocDataBiasingField: Metadata fields on which we can bias
// (sort) search results independently from the normal ranking using a
// ScoreAdjuster
type BiasingPerDocDataBiasingField struct {
	// Name: Fingerprint of the attribute name (no need to keep long field
	// names)
	Name uint64 `json:"Name,omitempty,string"`

	// Value: Biasing value translated into a double for uniform comparison
	Value float64 `json:"Value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BiasingPerDocDataBiasingField) MarshalJSON() ([]byte, error) {
	type NoMethod BiasingPerDocDataBiasingField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *BiasingPerDocDataBiasingField) UnmarshalJSON(data []byte) error {
	type NoMethod BiasingPerDocDataBiasingField
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"Value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// BlobstoreBlobRef: A BlobRef is used to refer to a blob in BlobStore.
// Clients may only manipulate blobs through BlobRefs. BlobRefs should
// not be sent in the clear outside of Google (for example, encoded in
// URLs, stored in a client cookie, or referred to in Javascript); for
// efficiency, the IDs expose internal details of the blobstore (such as
// machine IPs or cluster names). If clients need to store BlobRefs
// outside of Google, they must encrypt the BlobRef securely or use an
// alternative insecure identifier with an id->BlobRef mapping inside
// our network.
type BlobstoreBlobRef struct {
	BlobID string `json:"BlobID,omitempty"`

	Options int64 `json:"Options,omitempty,string"`

	RefID string `json:"RefID,omitempty"`

	ShardBin int64 `json:"ShardBin,omitempty"`

	// Size: Size of the complete blob, in bytes.
	Size int64 `json:"Size,omitempty,string"`

	// SourceV2BlobID: The ID of the V2 blob this blob has
	SourceV2BlobID string `json:"SourceV2BlobID,omitempty"`

	// V2ReadBlobToken: Deprecated.
	V2ReadBlobToken string `json:"V2ReadBlobToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlobID") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlobID") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlobstoreBlobRef) MarshalJSON() ([]byte, error) {
	type NoMethod BlobstoreBlobRef
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BlogPerDocData: Additional data for Blog/Posts
type BlogPerDocData struct {
	// BlogurlFp: used for blogurl crowding.
	BlogurlFp uint64 `json:"blogurlFp,omitempty,string"`

	// ClientSpamminess: This score captures how spammy the client is that
	// the micropost was created with. The higher the score the worse.
	ClientSpamminess int64 `json:"clientSpamminess,omitempty"`

	// ConvTree: For the threaded conversation view. Only populated in docs
	// with provider type SYNTHETIC_CONVERSATION_DOC.
	ConvTree *BlogsearchConversationTree `json:"convTree,omitempty"`

	CopycatScore int64 `json:"copycatScore,omitempty"`

	DocQualityScore int64 `json:"docQualityScore,omitempty"`

	// IsSyntacticReshare: A syntactic reshare is a document that is *
	// created from an original and shared with friends and * we detect this
	// resharing property by syntactically parsing the doc. . For example, a
	// retweet is an example of a syntactic_reshare because we can detect
	// that it's a reshare by grepping for "RT @".
	IsSyntacticReshare bool `json:"isSyntacticReshare,omitempty"`

	// MicroblogQualityExptData: Experimental data for quality experiments.
	// This will NOT be populated in prod, but we will use this for
	// experiments.
	MicroblogQualityExptData *Proto2BridgeMessageSet `json:"microblogQualityExptData,omitempty"`

	// NumMentions: For replies/reshares. num_mentions = number of times the
	// pattern @foo appears in the document.
	NumMentions int64 `json:"numMentions,omitempty"`

	Outlinks []*BlogPerDocDataOutlinks `json:"outlinks,omitempty"`

	// PostContentFingerprint: The fingerprint for the body text of the
	// microblog post. It is copied from
	// MicroBlogPost.post_content_fingerprint.
	PostContentFingerprint int64 `json:"postContentFingerprint,omitempty"`

	QualityScore int64 `json:"qualityScore,omitempty"`

	// SpamScore: Blog scoring signals.
	SpamScore int64 `json:"spamScore,omitempty"`

	UniversalWhitelisted bool `json:"universalWhitelisted,omitempty"`

	// UserQualityScore: User and doc quality scores for updates (aka
	// microposts).
	UserQualityScore int64 `json:"userQualityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlogurlFp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlogurlFp") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlogPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod BlogPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BlogPerDocDataOutlinks: Resolved url and site spamscore for outlinks
// in updates (aka microposts).
type BlogPerDocDataOutlinks struct {
	// AggregationFp: Representative id for an equivalence class of URLs.
	// E.g. http://youtube.com/watch?v=12 and
	// http://youtube.com/watch?v=12&feature=related have the same
	// aggregation id since they're effectively the same webpage
	AggregationFp uint64 `json:"aggregationFp,omitempty,string"`

	ResolvedUrl string `json:"resolvedUrl,omitempty"`

	SiteSpamScore int64 `json:"siteSpamScore,omitempty"`

	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregationFp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregationFp") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlogPerDocDataOutlinks) MarshalJSON() ([]byte, error) {
	type NoMethod BlogPerDocDataOutlinks
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type BlogsearchConversationNode struct {
	// AuthorName: The username of the author of the microblog post
	// represented by this node.
	AuthorName string `json:"authorName,omitempty"`

	// Children: A list of docids of child nodes.
	Children []string `json:"children,omitempty"`

	// Date: The creation date of the doc.
	Date int64 `json:"date,omitempty,string"`

	// Docid: Docid of the microblog post represented by this node.
	Docid string `json:"docid,omitempty"`

	// Parent: The docid of the parent node. The root of the tree will leave
	// this empty.
	Parent string `json:"parent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuthorName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthorName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlogsearchConversationNode) MarshalJSON() ([]byte, error) {
	type NoMethod BlogsearchConversationNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type BlogsearchConversationTree struct {
	// ConvId: The id of this conversation.
	ConvId string `json:"convId,omitempty"`

	// Nodes: The nodes in this conversation. No particular order is
	// assumed.
	Nodes []*BlogsearchConversationNode `json:"nodes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConvId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConvId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlogsearchConversationTree) MarshalJSON() ([]byte, error) {
	type NoMethod BlogsearchConversationTree
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BlueGingerClientVisibleProtoBlueGingerSupportedServices: Information
// to indicate BG availability for businesses. This message is filled
// from Topic Server and stored in the GSR in Superroot.
type BlueGingerClientVisibleProtoBlueGingerSupportedServices struct {
	// Modules: List of supported modules for a business.
	Modules []*BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule `json:"modules,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Modules") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Modules") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlueGingerClientVisibleProtoBlueGingerSupportedServices) MarshalJSON() ([]byte, error) {
	type NoMethod BlueGingerClientVisibleProtoBlueGingerSupportedServices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule struct {
	// Name: Module name, e.g. hairdresser_reservation. from
	// quality/views/extraction/kcube/bg/modules/modules.bzl.
	Name string `json:"name,omitempty"`

	// Services: Services of this module that are supported by the business,
	// e.g. haircuts.
	Services []string `json:"services,omitempty"`

	// Possible values:
	//   "UNKNOWN_USE_CASE" - // Data extraction:
	//   "OPENING_HOURS" - Opening hours extraction, triggered internally
	// without an end-user in the loop. The trigger might be a user-edit,
	// but the user is not being updated about the extraction results.
	//   "ON_DEMAND_OPENING_HOURS" - On-demand opening hours extraction,
	// i.e. requests are issued by an end-user who is also notified about
	// the results of the task.
	//   "GEO_DATA_EXTRACTION"
	//   "OPERATING_MODE_EXTRACTION"
	//   "RESTAURANT_RESERVATION"
	//   "MASSAGE_RESERVATION"
	//   "HAIRDRESSER_RESERVATION" - See go/bg-hdr-2019.
	//   "NAIL_SALON_RESERVATION"
	//   "RUNNING_LATE" - See go/duplex-running-late.
	//   "FOOD_ORDERING" - See go/duplex-fo-pilot.
	//   "LOCAL_INVENTORY_CHECK" - Local Inventory Checks (go/duplex-dove).
	//   "ON_DEMAND_LOCAL_INVENTORY" - On-Demand Local Inventory
	// (go/duplex-li-on-demand).
	//   "WAITLIST"
	//   "CHECK_WAIT" - Check wait: go/duplex-check-wait-time
	//   "CHEFBOT" - Chefbot (go/duplexify-cooking-goals).
	//   "ADS_CALL_CENTER_AUTHENTICATION"
	//   "PLAYSTORE" - Play Store user authentication. See
	// http://doc/16tApXKX1cc23AIuhIhPCWVkm1qkcajx2pHMkxW6kMAs
	//   "TAKING_RESTAURANT_RESERVATIONS" - Taking restaurant reservations
	// on behalf of a restaurant. i.e. getting calls from clients who want
	// to make a reservation, and trying to match their request with the
	// restaurant's schedule.
	//   "CALL_CENTER_DEMO"
	//   "ASSISTED_CALL_DEMO"
	//   "BUSINESS_OPT_IN"
	//   "CALLJOY_PILOT"
	//   "ASSISTANT_REMINDERS_DEMO"
	//   "HAPPY_BIRTHDAY"
	//   "ASSISTED_IVR"
	//   "DUPLEX_FOR_BUSINESS_PILOT" - Duplex for Business Pilot:
	// go/duplex-voice-pilot
	//   "SAY_THE_SAME_THING" - Say The Same Thing game bot.
	//   "COVID_FAQ" - Bot for answering FAQ about COVID-19
	// (go/bg-covid-faq).
	//   "VANCOUVER"
	//   "MEENAPLEX" - go/meenaplex-dd
	//   "REMOVED_USE_CASE_6" - Was: ON_DEMAND_OPENING_HOURS.
	//   "SEMI_DELEGATED_CALLING" - UC ID for testing ideas around a partial
	// call delegation bot.
	//   "HARDWARE_SETUP" - UC ID for hardware setup prototype
	//   "DUMDA_BOT" - Experimental use case for a form of Meena+Duplex.
	//   "SMART_REPLY" - Personal Call Assist.
	//   "DUPLEX_ZERO" - Duplex Zero Bot.
	//   "SPAM_FILTER" - Spam filter bot.
	//   "TEXT" - Text extraction bot.
	//   "IVR_CRAWLING" - IVR crawling bot.
	//   "VOICEMAIL" - Voicemail bot.
	//   "INBOUND_SMB" - Duplex for Business - Inbound SMB bot.
	//   "CCAI_DEMO" - Duplex for Business - Demo for the CCAI integration.
	//   "DIALOGFLOW_DELEGATION" - Duplex for Business - Dialogflow
	// delegation module for CCAI integration.
	//   "AD_LEAD_VERIFICATION" - Duplex for Business - ad lead verification
	// module for GLS integration.
	//   "GET_HUMAN" - Get Human bot.
	UseCase string `json:"useCase,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule) MarshalJSON() ([]byte, error) {
	type NoMethod BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BookCitationPerDocData: Per-doc data for the web page about the cited
// book Approximate size is on average ~10bytes
type BookCitationPerDocData struct {
	// BookId: the book id for the main citation
	BookId int64 `json:"bookId,omitempty,string"`

	// DiscretizedCitationScore: the discretized citation score for the main
	// book. we map the raw score 1.0-20.0 to 0 - 127
	DiscretizedCitationScore int64 `json:"discretizedCitationScore,omitempty"`

	// Previewable: Is there a preview or excerpt of the book on this
	// document?
	Previewable bool `json:"previewable,omitempty"`

	// SecondBookId: book id for the second citation if we can't separate
	// the two top citations (they are too close).
	SecondBookId int64 `json:"secondBookId,omitempty,string"`

	// SecondDiscretizedCitationScore: the discretized score for the second
	// citation
	SecondDiscretizedCitationScore int64 `json:"secondDiscretizedCitationScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BookId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BookId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BookCitationPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod BookCitationPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// BusinessHours: We divide up a week into individual open intervals. If
// any are present then they must be arranged in strictly increasing
// order, with non-empty spaces between successive intervals, and all
// times between 0 and 604800, the number of seconds in a week.
type BusinessHours struct {
	Dayopen int64 `json:"dayopen,omitempty"`

	Interval []*BusinessHoursInterval `json:"interval,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dayopen") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dayopen") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BusinessHours) MarshalJSON() ([]byte, error) {
	type NoMethod BusinessHours
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type BusinessHoursInterval struct {
	// End: The interval ends at the start of this second
	End int64 `json:"end,omitempty"`

	// Start: Time in seconds since Midnight-Monday-Morn
	Start int64 `json:"start,omitempty"`

	// ForceSendFields is a list of field names (e.g. "End") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "End") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *BusinessHoursInterval) MarshalJSON() ([]byte, error) {
	type NoMethod BusinessHoursInterval
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ChatBotPlatformBotSendToken: Token to be exposed and stored by the
// bot
type ChatBotPlatformBotSendToken struct {
	// ExpiryTimeMicros: Time since epoch (micros) that this will expire
	ExpiryTimeMicros int64 `json:"expiryTimeMicros,omitempty,string"`

	// SendToken: Encrypted InternalSendToken
	SendToken string `json:"sendToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExpiryTimeMicros") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExpiryTimeMicros") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ChatBotPlatformBotSendToken) MarshalJSON() ([]byte, error) {
	type NoMethod ChatBotPlatformBotSendToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ChatBotPlatformFireballId struct {
	// Id: When used as a user ID, it's the phone number of the sender. When
	// used as a session ID: For group conversation, it is the group ID. For
	// 1 to 1, it is the receiver or sender phone number. For 1 to bot, it
	// is the receiver phone number or empty.
	Id *GoogleInternalCommunicationsInstantmessagingV1Id `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ChatBotPlatformFireballId) MarshalJSON() ([]byte, error) {
	type NoMethod ChatBotPlatformFireballId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ClassifierPornAggregatedUrlPornScores: Per-URL porn scores for the
// URLs associated with the corresponding image.
type ClassifierPornAggregatedUrlPornScores struct {
	AverageUrlPornScore float64 `json:"averageUrlPornScore,omitempty"`

	UrlCount int64 `json:"urlCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AverageUrlPornScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageUrlPornScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornAggregatedUrlPornScores) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornAggregatedUrlPornScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornAggregatedUrlPornScores) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornAggregatedUrlPornScores
	var s1 struct {
		AverageUrlPornScore gensupport.JSONFloat64 `json:"averageUrlPornScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageUrlPornScore = float64(s1.AverageUrlPornScore)
	return nil
}

// ClassifierPornClassifierData: Next ID: 6
type ClassifierPornClassifierData struct {
	Classification []*ClassifierPornClassifierDataClassification `json:"classification,omitempty"`

	// ImageBasedDetectionDone: Records whether the image linker is run
	// already. This is only used for Alexandria but NOT for Segindexer.
	ImageBasedDetectionDone bool `json:"imageBasedDetectionDone,omitempty"`

	Timestamp int64 `json:"timestamp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Classification") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Classification") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornClassifierData) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornClassifierData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ClassifierPornClassifierDataClassification struct {
	Label string `json:"label,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornClassifierDataClassification) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornClassifierDataClassification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornClassifierDataClassification) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornClassifierDataClassification
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ClassifierPornDocumentData: Next ID: 3
type ClassifierPornDocumentData struct {
	Classifierdata *ClassifierPornClassifierData `json:"classifierdata,omitempty"`

	Sitedata *ClassifierPornSiteData `json:"sitedata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Classifierdata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Classifierdata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornDocumentData) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornDocumentData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ClassifierPornQueryClassifierOutput: Generic output for one vertical.
type ClassifierPornQueryClassifierOutput struct {
	// CsaiClassification: This field is only filled for the CSAI vertical.
	//
	// Possible values:
	//   "NOT_PROTECTED" - Contract: (STRONGLY_PROTECTED & PROTECTED) ==
	// PROTECTED
	//   "PROTECTED"
	//   "STRONGLY_PROTECTED"
	CsaiClassification string `json:"csaiClassification,omitempty"`

	// CsaiRegexpHighConfidenceClassification: DO NOT USE: This field is
	// temporary and should be used only for the CSAI Onebox. This field is
	// the result of the regular expression classifier alone as opposed to a
	// combination with Seti classifier as in csai_classification field.
	//
	// Possible values:
	//   "NOT_PROTECTED" - Contract: (STRONGLY_PROTECTED & PROTECTED) ==
	// PROTECTED
	//   "PROTECTED"
	//   "STRONGLY_PROTECTED"
	CsaiRegexpHighConfidenceClassification string `json:"csaiRegexpHighConfidenceClassification,omitempty"`

	// Debug: Human-readable debug information about the classification.
	// This field is only set if output_debug is set in the classification
	// input.
	Debug string `json:"debug,omitempty"`

	// IsPositive: The bit that shows if this classifier outputs positive
	// classification for the input query. Set by thresholding with a
	// recommended threshold.
	IsPositive bool `json:"isPositive,omitempty"`

	// Score: The score that the classifier assigned to the input query.
	// This is filled by all verticals.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CsaiClassification")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CsaiClassification") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornQueryClassifierOutput) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornQueryClassifierOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornQueryClassifierOutput) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornQueryClassifierOutput
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ClassifierPornQueryMultiLabelClassifierOutput: Multi-label
// classification output. It contains the output for each vertical. The
// output for some verticals can be empty, in case that vertical is not
// supported by the classifier or if the set of verticals was restricted
// using MultiLabelClassifierInput.verticals.
type ClassifierPornQueryMultiLabelClassifierOutput struct {
	Csai *ClassifierPornQueryClassifierOutput `json:"csai,omitempty"`

	Fringe *ClassifierPornQueryClassifierOutput `json:"fringe,omitempty"`

	Medical *ClassifierPornQueryClassifierOutput `json:"medical,omitempty"`

	Offensive *ClassifierPornQueryClassifierOutput `json:"offensive,omitempty"`

	Porn *ClassifierPornQueryClassifierOutput `json:"porn,omitempty"`

	Spoof *ClassifierPornQueryClassifierOutput `json:"spoof,omitempty"`

	Violence *ClassifierPornQueryClassifierOutput `json:"violence,omitempty"`

	Vulgar *ClassifierPornQueryClassifierOutput `json:"vulgar,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Csai") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Csai") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornQueryMultiLabelClassifierOutput) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornQueryMultiLabelClassifierOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ClassifierPornQueryStats: QuerySats contains the information about
// the queries that users typed to search for this image.
type ClassifierPornQueryStats struct {
	// QueryTextPornScore: A query text porn score for the queries which
	// have clicks to the image: query_text_porn_score := sum(clicks(query)
	// * text_porn_score(query)) / sum(clicks(query))
	QueryTextPornScore float64 `json:"queryTextPornScore,omitempty"`

	TotalClicks float64 `json:"totalClicks,omitempty"`

	// ForceSendFields is a list of field names (e.g. "QueryTextPornScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QueryTextPornScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornQueryStats) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornQueryStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornQueryStats) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornQueryStats
	var s1 struct {
		QueryTextPornScore gensupport.JSONFloat64 `json:"queryTextPornScore"`
		TotalClicks        gensupport.JSONFloat64 `json:"totalClicks"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QueryTextPornScore = float64(s1.QueryTextPornScore)
	s.TotalClicks = float64(s1.TotalClicks)
	return nil
}

// ClassifierPornReferrerCounts: ReferrerCounts stores how many
// referrers an images has and how many of them were classified as porn
// and as adult/softporn respectively. Note that a referrer is usually a
// landing page, but as of March 2011 this also includes referrers which
// an image can 'inherit' by propagating counts from near duplicate
// images.
type ClassifierPornReferrerCounts struct {
	Adult int64 `json:"adult,omitempty"`

	// Porn: Number of referrers which are classified as porn and as adult.
	Porn int64 `json:"porn,omitempty"`

	// Total: Total number of referrers.
	Total int64 `json:"total,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Adult") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Adult") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornReferrerCounts) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornReferrerCounts
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ClassifierPornSiteData: Next ID: 52
type ClassifierPornSiteData struct {
	// AvgPedoPageScore: The average pedo page score for the site.
	AvgPedoPageScore float64 `json:"avgPedoPageScore,omitempty"`

	FinalPedoSiteScore float64 `json:"finalPedoSiteScore,omitempty"`

	// NumberOfPages: The number of pages that were used to compute the
	// scores and ratios.
	NumberOfPages uint64 `json:"numberOfPages,omitempty,string"`

	// NumberOfPedoPages: The number of pages with pedo restrict.
	NumberOfPedoPages uint64 `json:"numberOfPedoPages,omitempty,string"`

	// Site: Sitechunk used to compute the signals. The field is present
	// only for data created after December 2022.
	Site string `json:"site,omitempty"`

	// SitePornRatio: The ratio of porn/softporn of the site this page
	// belongs to.
	SitePornRatio float64 `json:"sitePornRatio,omitempty"`

	SiteSoftpornRatio float64 `json:"siteSoftpornRatio,omitempty"`

	Versionedscore []*ClassifierPornSiteDataVersionedScore `json:"versionedscore,omitempty"`

	ViolenceStats *ClassifierPornSiteViolenceStats `json:"violenceStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvgPedoPageScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvgPedoPageScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornSiteData) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornSiteData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornSiteData) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornSiteData
	var s1 struct {
		AvgPedoPageScore   gensupport.JSONFloat64 `json:"avgPedoPageScore"`
		FinalPedoSiteScore gensupport.JSONFloat64 `json:"finalPedoSiteScore"`
		SitePornRatio      gensupport.JSONFloat64 `json:"sitePornRatio"`
		SiteSoftpornRatio  gensupport.JSONFloat64 `json:"siteSoftpornRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AvgPedoPageScore = float64(s1.AvgPedoPageScore)
	s.FinalPedoSiteScore = float64(s1.FinalPedoSiteScore)
	s.SitePornRatio = float64(s1.SitePornRatio)
	s.SiteSoftpornRatio = float64(s1.SiteSoftpornRatio)
	return nil
}

// ClassifierPornSiteDataVersionedScore: The site porn score of the site
// to which the page of interest belongs to. Multiple versions are kept
// across large changes for some time. The Version-4 score is the
// average Universal Page Probability of all the site's pages, and will
// come with populated verticals4_score and site_rule (if any rule
// fires) fields. When using this score it is recommended to subscribe
// to the following mailing list: g/safesearch-announce.
type ClassifierPornSiteDataVersionedScore struct {
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "HIGH_PORN_FRACTION_RULE"
	//   "DEPRECATED_USER_GENERATED_CONTENT_RULE"
	//   "DEPRECATED_SITES_WITH_IGNORED_SCORES_LIST"
	SiteRule []string `json:"siteRule,omitempty"`

	Version int64 `json:"version,omitempty"`

	// Verticals4Score: Please talk to safesearch@ before relying on any of
	// these internal fields:
	Verticals4Score float64 `json:"verticals4Score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornSiteDataVersionedScore) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornSiteDataVersionedScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornSiteDataVersionedScore) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornSiteDataVersionedScore
	var s1 struct {
		Score           gensupport.JSONFloat64 `json:"score"`
		Verticals4Score gensupport.JSONFloat64 `json:"verticals4Score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	s.Verticals4Score = float64(s1.Verticals4Score)
	return nil
}

// ClassifierPornSiteViolenceStats: Next ID: 6
type ClassifierPornSiteViolenceStats struct {
	MeanFinalViolenceScore float64 `json:"meanFinalViolenceScore,omitempty"`

	NumberOfImages uint64 `json:"numberOfImages,omitempty,string"`

	NumberOfVideos uint64 `json:"numberOfVideos,omitempty,string"`

	VideoViolenceScore float64 `json:"videoViolenceScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MeanFinalViolenceScore") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MeanFinalViolenceScore")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ClassifierPornSiteViolenceStats) MarshalJSON() ([]byte, error) {
	type NoMethod ClassifierPornSiteViolenceStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ClassifierPornSiteViolenceStats) UnmarshalJSON(data []byte) error {
	type NoMethod ClassifierPornSiteViolenceStats
	var s1 struct {
		MeanFinalViolenceScore gensupport.JSONFloat64 `json:"meanFinalViolenceScore"`
		VideoViolenceScore     gensupport.JSONFloat64 `json:"videoViolenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MeanFinalViolenceScore = float64(s1.MeanFinalViolenceScore)
	s.VideoViolenceScore = float64(s1.VideoViolenceScore)
	return nil
}

// CommerceDatastoreDeepTag: The basic message that contains a single
// decision output of go/deeptagger.
type CommerceDatastoreDeepTag struct {
	// Confidence: The confidence of the tag, encoded to 14 bits (range [0,
	// 16383]). Due to modeling details, a large number of tags become
	// trustworthy with confidence greater than 0.001, so two bytes of
	// precision are required.
	Confidence int64 `json:"confidence,omitempty"`

	// Tag: A Deep Tag enum in uint32 form.
	Tag int64 `json:"tag,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CommerceDatastoreDeepTag) MarshalJSON() ([]byte, error) {
	type NoMethod CommerceDatastoreDeepTag
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CommerceDatastoreImageDeepTags: Image-level deep tags: essentially
// equivalent to the proto above but containing tags that are computed
// at the image level. These image signals are maintained by the Visual
// Shopping team (visual-shopping@). *** If you do use the signals,
// please add an entry in go/ShoppingImageAttributeClients to be
// notified for model upgrade. *** We recommend our clients against
// using the raw confidence value directly. Instead, the clients should
// use the library, cs/ads/shopping/visual/deeptags/public/single_tag.h
// and cs/ads/shopping/visual/deeptags/public/single_scored_tag.h to
// specify an operating point in terms of precision or recall. See the
// following code example:
// http://google3/shopping/visual/explore_looks/looks_offline_pipeline.cc?l=268&rcl=304165166
// *** `model_outputs` is a repeated field. Please check `version` to
// get the model you desire to use, instead of indexing the
// model_outputs directly e.g. model_outputs(0). We will remove the old
// versions in the future and this will lead to incorrect model. ***
// Models: As of Q2 2020, we have two models running within Shopping:
// model one only has the overlay tag, which we are deprecating, and
// model two has the tags specified in go/VisualShoppingImageAttributes.
type CommerceDatastoreImageDeepTags struct {
	// ModelOutputs: The set of outputs for a series of model versions. The
	// size of this field should not extend beyond 4 at any time: two
	// versions for slow-update track dependencies, and two versions for
	// fast-update track dependencies.
	ModelOutputs []*CommerceDatastoreImageDeepTagsModelOutput `json:"modelOutputs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ModelOutputs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ModelOutputs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CommerceDatastoreImageDeepTags) MarshalJSON() ([]byte, error) {
	type NoMethod CommerceDatastoreImageDeepTags
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type CommerceDatastoreImageDeepTagsModelOutput struct {
	BackgroundType *CommerceDatastoreDeepTag `json:"backgroundType,omitempty"`

	Collage *CommerceDatastoreDeepTag `json:"collage,omitempty"`

	// Cropping: We are looking to deploy a model for the Ads team to
	// identify images with bad cropping. The model will be for Ads only and
	// we will not populate the cropping field in CDS.
	Cropping *CommerceDatastoreDeepTag `json:"cropping,omitempty"`

	ModelType *CommerceDatastoreDeepTag `json:"modelType,omitempty"`

	// Nfs: Tag corresponds to the shopping non-family safe (nfs) image
	// signal.
	Nfs *CommerceDatastoreDeepTag `json:"nfs,omitempty"`

	ObjectCount *CommerceDatastoreDeepTag `json:"objectCount,omitempty"`

	// Overlay: Tag corresponding to unwanted text overlay (watermarks,
	// logos, promotional elements, artifacts, etc).
	Overlay *CommerceDatastoreDeepTag `json:"overlay,omitempty"`

	Selfie *CommerceDatastoreDeepTag `json:"selfie,omitempty"`

	// TextOverlay: Tag corresponding to the text overlay classifier
	// (watermarks, logos, promotional elements, artifacts, etc).
	TextOverlay []*CommerceDatastoreDeepTag `json:"textOverlay,omitempty"`

	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BackgroundType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BackgroundType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CommerceDatastoreImageDeepTagsModelOutput) MarshalJSON() ([]byte, error) {
	type NoMethod CommerceDatastoreImageDeepTagsModelOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDoc: Protocol record used for collecting together all
// information about a document. Please consult go/dj-explorer for two
// basic questions about `CompositeDoc`: - Where should I look up
// certain information (e.g: pagerank, language)? - What does each field
// in CompositeDoc mean and who should I contact if I have questions? To
// add a new field into CompositeDoc, or change existing field's size
// significantly, please file a ticket at go/dj-new-field, fill in
// necessary information and get approved by docjoin-access@ team. Next
// id: 191
type CompositeDoc struct {
	// ContentChecksum96: Visible content checksum as computed by
	// repository::parsehandler::checksum::Checksum96bitsParseHandler. The
	// value is a Fprint96 in "key format" (i.e., by Fprint96::AsKey()).
	ContentChecksum96 string `json:"ContentChecksum96,omitempty"`

	// AccessRequirements: Contains necessary information to enforce row
	// level Docjoin access control.
	AccessRequirements *IndexingPrivacyAccessAccessRequirements `json:"accessRequirements,omitempty"`

	Additionalchecksums *CompositeDocAdditionalChecksums `json:"additionalchecksums,omitempty"`

	Alternatename []*CompositeDocAlternateName `json:"alternatename,omitempty"`

	AnchorStats *IndexingDocjoinerAnchorStatistics `json:"anchorStats,omitempty"`

	Anchors *Anchors `json:"anchors,omitempty"`

	// BadSslCertificate: This field is present iff the page has a bad SSL
	// certificate itself or in its redirect chain.
	BadSslCertificate *IndexingBadSSLCertificate `json:"badSslCertificate,omitempty"`

	CseId []*QualityProseCSEUrlInfo `json:"cseId,omitempty"`

	// CsePagerankCutoff: URL should only be selected for CSE Index if it's
	// pagerank is higher than cse_pagerank_cutoff.
	CsePagerankCutoff int64 `json:"csePagerankCutoff,omitempty"`

	// DataVersion: Contains the tracking version of various data fields in
	// CompositeDoc.
	DataVersion *IndexingDocjoinerDataVersion `json:"dataVersion,omitempty"`

	Doc *GDocumentBase `json:"doc,omitempty"`

	// DocAttachments: A generic container to hold document annotations and
	// signals. For a full list of extensions live today, see go/wde.
	DocAttachments *Proto2BridgeMessageSet `json:"docAttachments,omitempty"`

	// DocImages: Info about "selected" images associated with the document
	// for which we (already) have ImageData. For each image URL, some fixed
	// number of documents are selected as web referrers for the image URL,
	// and within those selected documents, we say the image is "selected".
	// Within the remaining documents, we say the image is "rejected". Note
	// that this distinction is slightly different from selected for
	// indexing. Only images within doc_images where
	// is_indexed_by_imagesearch is true will be selected for indexing. You
	// can find the rejected images at
	// composite_doc.doc_attachments().get(). You can find images that are
	// selected, but for which we have no ImageData (yet) at
	// composite_doc.image_indexing_info().selected_not_indexed_image_link()
	DocImages []*ImageData `json:"docImages,omitempty"`

	// DocVideos: Info about videos embedded in the document.
	DocVideos []*ImageRepositoryVideoProperties `json:"docVideos,omitempty"`

	// DocinfoPassthroughAttachments: This message set is used for data
	// pushed into the index using the signals framework that is never to be
	// used in Mustang or TG Continuum scoring/snippeting code. Any protocol
	// buffer stored in this message set is automatically returned in a
	// docinfo response - it ends up in the "info" message set in the
	// WWWSnippetResponse, so it can be used in post-doc twiddlers and for
	// display in GWS with no code changes in Mustang or Teragoogle.
	DocinfoPassthroughAttachments *Proto2BridgeMessageSet `json:"docinfoPassthroughAttachments,omitempty"`

	// EmbeddedContentInfo: Data produced by the embedded-content system.
	// This is a thin message, containing only embedded_links_info data for
	// the embedder and JavaScript/CSS embedded links (the embedded-content
	// bigtable also contains snapshots, compressed document trees and all
	// embedded link types). Provided using the index signal API.
	EmbeddedContentInfo *IndexingEmbeddedContentEmbeddedContentInfo `json:"embeddedContentInfo,omitempty"`

	Extradup []*CompositeDocExtraDup `json:"extradup,omitempty"`

	Forwardingdup []*CompositeDocForwardingDup `json:"forwardingdup,omitempty"`

	Includedcontent []*CompositeDocIncludedContent `json:"includedcontent,omitempty"`

	// IndexingIntermediate: Serialized indexing intermediate data.
	IndexingIntermediate string `json:"indexingIntermediate,omitempty"`

	Indexinginfo *CompositeDocIndexingInfo `json:"indexinginfo,omitempty"`

	// LabelData: This field associates a document to particular labels and
	// assigns confidence values to them.
	LabelData *QualityLabelsGoogleLabelData `json:"labelData,omitempty"`

	Liveexperimentinfo *CompositeDocLiveExperimentInfo `json:"liveexperimentinfo,omitempty"`

	Localinfo *LocalWWWInfo `json:"localinfo,omitempty"`

	// LocalizedAlternateName: Localized alternate names are similar to
	// alternate names, except that it is associated with a language
	// different from its canonical. This is the subset of
	// webmaster-provided localized alternate names being in the dup cluster
	// of this document. Used during serving for swapping in the URL based
	// on regional and language preferences of the user.
	LocalizedAlternateName []*IndexingConverterLocalizedAlternateName `json:"localizedAlternateName,omitempty"`

	Localizedvariations *CompositeDocLocalizedVariations `json:"localizedvariations,omitempty"`

	// PartialUpdateInfo: Only present in partial cdocs.
	PartialUpdateInfo *CompositeDocPartialUpdateInfo `json:"partialUpdateInfo,omitempty"`

	PerDocData *PerDocData `json:"perDocData,omitempty"`

	// Porninfo: Porn related data used for image and web search porn
	// classification as well as for diagnostics purposes.
	Porninfo *ClassifierPornDocumentData `json:"porninfo,omitempty"`

	Properties *DocProperties `json:"properties,omitempty"`

	// Ptoken: Contains information necessary to perform policy decision on
	// the usage of the data assosiated with this cdoc.
	Ptoken *PtokenPToken `json:"ptoken,omitempty"`

	Qualitysignals *CompositeDocQualitySignals `json:"qualitysignals,omitempty"`

	// Registrationinfo: Information about the most recent creation and
	// expiration of this domain. It's extracted from domainedge signal.
	Registrationinfo *RegistrationInfo `json:"registrationinfo,omitempty"`

	// RichcontentData: If present, indicates that some content was
	// inserted, deleted, or replaced in the document's content (in
	// CompositeDoc::doc::Content::Representation), and stores information
	// about what was inserted, deleted, or replaced.
	RichcontentData *IndexingConverterRichContentData `json:"richcontentData,omitempty"`

	// Richsnippet: rich snippet extracted from the content of a document.
	Richsnippet *RichsnippetsPageMap `json:"richsnippet,omitempty"`

	Robotsinfolist *CompositeDocRobotsInfoList `json:"robotsinfolist,omitempty"`

	// ScaledIndyRank: to copy to per-doc
	ScaledIndyRank int64 `json:"scaledIndyRank,omitempty"`

	// Sitemap: Sitelinks: a collection of interesting links a user might be
	// interested in, given they are interested in this document. WARNING:
	// this is different from the crawler Sitemaps (see SitemapsSignals in
	// the attachments).
	Sitemap *Sitemap `json:"sitemap,omitempty"`

	// StorageRowTimestampMicros: Row timestamp in CDoc storage.
	StorageRowTimestampMicros int64 `json:"storageRowTimestampMicros,omitempty,string"`

	// Possible values:
	//   "LTG_CANDIDATE" - ltg-candidate is a label for docs whose selection
	// decision is deferred to ltg by Alexandria. It does not correspond to
	// any serving corpus.
	//   "NOSUBINDEX"
	//   "BASE"
	//   "CSEINDEX_EXTENDED" - Custom Search Engine extended corpus to catch
	// all CSE urls not indexed in unified zeppelin or higher tiers.
	//   "DAILY"
	//   "TIMBIT_PROTECTED" - timbit_protected is a label for keeping docs
	// from dropping out of base, i.e., all timbit protected docs belong to
	// base/basextended.
	//   "LANDFILL1" - Generic corpora used in Oscar.
	//   "LANDFILL2"
	//   "LANDFILL3"
	//   "LANDFILL_BLOGSEARCH" - Blogsearch special purpose corpus for
	// Oscar.
	//   "LANDFILL_SOCIAL" - Social special purpose corpus for Oscar.
	//   "INSTANT"
	//   "UNIFIED_LANDFILL" - One big landfill index for Union.
	//   "BLOGSEARCH_DYNAMIC_ASSIMILATED" - Alexandria version of Blogsearch
	// Assimilated.
	//   "BLOGSEARCH_EXTENDED" - Blogsearch corpus for all docs not indexed
	// in unified zeppelin or higher.
	//   "MOFFETT" - Moffett corpus for all docs indexed in base and unified
	// zeppelin.
	//   "UNSELECTED_DOCUMENTS" - Unselected documents corpus used for
	// index-selection eval tools.
	//   "AQUARIUS" - Aquarius corpus which is used to hold all app-only
	// documents. go/aquarius
	//   "WEBSEARCH_FRESH" - Corpus corresponding to serving corpus
	// websearch_fresh.
	//   "WEBSEARCH1" - Corpus corresponding to serving corpus websearch_1.
	//   "WEBSEARCH2" - Corpus corresponding to serving corpus websearch_2.
	//   "WEBSEARCH3" - Corpus corresponding to serving corpus websearch_3.
	//   "UNIFIED_ZEPPELIN_HIGH_QUALITY" - Top quality documents in unified
	// zeppelin
	//   "ASIANREGIONAL" - Deprecated corpora.
	//   "EMEAREGIONAL"
	//   "CSEINDEX"
	//   "BASEREGIONAL"
	//   "BLACKHOLE"
	//   "XBASE"
	//   "FRESHBASE"
	//   "XASIANREGIONAL"
	//   "XEMEAREGIONAL"
	//   "XBASEREGIONAL"
	//   "BLIMPIE"
	//   "BLIMPIEPP"
	//   "GOODYEAR"
	//   "GOODYEARPP"
	//   "QUASAR"
	//   "ZEPPELIN1"
	//   "ZEPPELIN2"
	//   "ZEPPELIN3"
	//   "ZEPPELIN_STAGING"
	//   "PULSAR"
	//   "TIMBIT"
	//   "LANDFILL_CSE"
	//   "UNIFIED_ZEPPELIN"
	Subindexid []string `json:"subindexid,omitempty"`

	SyntacticDate *QualityTimebasedSyntacticDate `json:"syntacticDate,omitempty"`

	// Url: WARNING!!! "url" field in CompositeDoc is optional, and is
	// usually missing: e.g., Docjoin CompositeDoc's don't have
	// CompositeDoc::url. has_url() checking is often useful. So don't rely
	// on CompositeDoc::url unless you're sure otherwise. Usually you want
	// to use CompositeDoc::doc::url instead.
	Url string `json:"url,omitempty"`

	// Urldate: Date in the url extracted by
	// quality/snippets/urldate/date-in-url.cc This is given as midnight GMT
	// on the date in question.
	Urldate int64 `json:"urldate,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ContentChecksum96")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentChecksum96") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDoc) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDoc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocAdditionalChecksums: Additional checksums of the
// document.
type CompositeDocAdditionalChecksums struct {
	// NoTransientChecksum96: Same as ContentChecksum96 but without
	// transient boilerplate.
	NoTransientChecksum96 string `json:"NoTransientChecksum96,omitempty"`

	// SimHash: Deprecated. Use simhash_v2 and simhash_v2_significance
	// instead.
	SimHash uint64 `json:"SimHash,omitempty,string"`

	SimHashIsTrusted bool `json:"SimHashIsTrusted,omitempty"`

	// SimhashV2: Simhash-v2 is generated by SimHashParseHandler, designed
	// as a complete replacement of simhash-v1 (a.k.a. the original simhash
	// above) from ApproxDupsParseHandler. Simhash-v2 uses a revised
	// algorithm so that it is expected to work better in most cases than
	// simhash-v1. They coexist in current transition period, then
	// simhash-v1 will be retired.
	SimhashV2 uint64 `json:"simhashV2,omitempty,string"`

	// SimhashV2Significance: Simhash-v2-significance is used to describe
	// the confidence about the corresponding simhash-v2 value. It is
	// defined as the average absolute difference from zero of all internal
	// state components when finalizing a simhash-v2 value in
	// HashMultiSetDotCauchy. We used to compare the significance against
	// some pre-defined threshold (default: 20) to get a boolean value
	// "trusted_simhash_v2". However, it is possible that this field is
	// missing while "simhash_v2" is present, in such case (1) Use
	// "SimHashIsTrusted" instead if it is present, AND/OR (2) Assume
	// "simhash_v2" is trusted if its value is non-zero.
	SimhashV2Significance float64 `json:"simhashV2Significance,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NoTransientChecksum96") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NoTransientChecksum96") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocAdditionalChecksums) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocAdditionalChecksums
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CompositeDocAdditionalChecksums) UnmarshalJSON(data []byte) error {
	type NoMethod CompositeDocAdditionalChecksums
	var s1 struct {
		SimhashV2Significance gensupport.JSONFloat64 `json:"simhashV2Significance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SimhashV2Significance = float64(s1.SimhashV2Significance)
	return nil
}

// CompositeDocAlternateName: Alternate names are some urls that we
// would like to associate with documents in addition to canonicals.
// Sometimes we may want to serve these alternatenames instead of
// canonicals. Alternames in CompositeDoc should come from WebMirror
// pipeline.
type CompositeDocAlternateName struct {
	Url string `json:"Url,omitempty"`

	// UrlEncoding: See webutil/urlencoding
	UrlEncoding int64 `json:"UrlEncoding,omitempty"`

	// EcnFp: Fp96 of webmirror equivalence class as of last time this was
	// exported.
	EcnFp string `json:"ecnFp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Url") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Url") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocAlternateName) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocAlternateName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocExtraDup: The top non-forwarding dups of the canonical
// url.
type CompositeDocExtraDup struct {
	// EcnFp: Fp96 of webmirror equivalence class as of last time this was
	// exported.
	EcnFp string `json:"ecnFp,omitempty"`

	// Url: The url of the non-forwarding dup.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EcnFp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EcnFp") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocExtraDup) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocExtraDup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocForwardingDup: The top forwarding dups of the canonical
// url. (note: it may actually include some dups that are NOT used for
// forwarding data but for making "info:" complete)
type CompositeDocForwardingDup struct {
	// Ecn: The name of the url's webmirror equivalence class.
	Ecn string `json:"ecn,omitempty"`

	EcnFp string `json:"ecnFp,omitempty"`

	// Purposes: The purpose(s) of the forwarding dup indicating if it is
	// used for forwarding signal/anchors generally, or only for forwarding
	// some specific signal (e.g. navboost), or for some other purposes
	// (e.g., not for forwarding any data but for making "info:" complete).
	// See indexing/dups/public/dups.h for more details.
	Purposes int64 `json:"purposes,omitempty"`

	// RawPagerank: Raw pagerank of the url.
	RawPagerank int64 `json:"rawPagerank,omitempty"`

	// Repid: The webmirror repid of the forwarding dup.
	Repid string `json:"repid,omitempty"`

	// Url: The url of the forwarding dup.
	Url string `json:"url,omitempty"`

	// Urlencoding: The encoding of the url (see webutil/urlencoding for
	// details).
	Urlencoding int64 `json:"urlencoding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Ecn") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Ecn") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocForwardingDup) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocForwardingDup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type CompositeDocIncludedContent struct {
	// SourceTypeBitfield: Indicate how this content came to be included.
	// Legal values are constructed by bitwise-OR-ing values from the
	// included_content::SourceType enum. Default SourceTypeBitfield =
	// included_content::INCLUDED_FRAME
	SourceTypeBitfield int64 `json:"SourceTypeBitfield,omitempty,string"`

	IncludedDoc *GDocumentBase `json:"includedDoc,omitempty"`

	LinkUrl string `json:"linkUrl,omitempty"`

	PerDocData *PerDocData `json:"perDocData,omitempty"`

	Properties *DocProperties `json:"properties,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceTypeBitfield")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceTypeBitfield") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocIncludedContent) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocIncludedContent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocIndexingInfo: Contains information *mostly* used within
// indexing (e.g. not used for building the production serving shards).
// Most of this data is generated only in Alexandria, however there are
// exceptions.
type CompositeDocIndexingInfo struct {
	// CdocBuildInfo: To hold extra info for building a final cdoc from raw
	// cdoc and goldmine annotations.
	CdocBuildInfo *IndexingDocjoinerCDocBuildInfo `json:"cdocBuildInfo,omitempty"`

	// ContentProtected: Whether current page is under content protection,
	// i.e. a page has been crawled as an error page, but we preserve its
	// last known good content and keep its crawl_status as
	// converter.CrawlStatus::CONTENT.
	ContentProtected bool `json:"contentProtected,omitempty"`

	// ConvertToRobotedReason: If set, indicates that the crawl status was
	// converted to ROBOTED for the reason specified by the enum value in
	// converter.RobotedReasons.ConvertToRobotedReasons. See
	// indexing/converter/proto/converter.proto for details. If unset, then
	// the document was not converted to roboted, and if the document crawl
	// status is ROBOTED, then the document is disallowed (at least to
	// Google) in robots.txt.
	ConvertToRobotedReason int64 `json:"convertToRobotedReason,omitempty"`

	// CrawlStatus: One of the enum values in converter.CrawlStatus.State
	// (see indexing/converter/proto/converter.proto for details). Default
	// is converter.CrawlStatus::CONTENT. The document is roboted if the
	// value is converter.CrawlStatus::ROBOTED.
	CrawlStatus int64 `json:"crawlStatus,omitempty"`

	// Possible values:
	//   "DEMOTION_TYPE_NONE"
	//   "DEMOTION_TYPE_BADURLS_DEMOTE"
	DemotionTags []string `json:"demotionTags,omitempty"`

	// ErrorType: One of the enum values in converter.ErrorPageType (see
	// indexing/converter/proto/error-page-detector-enum.proto for detail).
	// Default is converter::ERROR_PAGE_NONE.
	ErrorType int64 `json:"errorType,omitempty"`

	// Possible values:
	//   "WEB" - DEPRECATED
	//   "REALTIME"
	//   "CSE"
	//   "CSE_PREMIUM"
	//   "BUSTER_IMAGES"
	//   "NEWS"
	//   "VIDEO"
	//   "YOUTUBE"
	//   "WEB_INSTANT"
	//   "WEB_DAILY"
	//   "CACHE_COLON" - A table with just the bodysource attachment
	FreshdocsCorpora []string `json:"freshdocsCorpora,omitempty"`

	// Hostid: The host id of the document. Used chiefly to determine
	// whether the document is part of a parked domain.
	Hostid uint64 `json:"hostid,omitempty,string"`

	// IeIdentifier: A short descriptive string to help identify the IE
	// application or setup where this CDoc is generated. For example:
	// websearch_m3 This field is for debuggability purposes.
	IeIdentifier string `json:"ieIdentifier,omitempty"`

	// ImageIndexingInfo: Indexing info about images (i.e. image links
	// missing image data, etc).
	ImageIndexingInfo *ImageSearchImageIndexingInfo `json:"imageIndexingInfo,omitempty"`

	// IndexingTs: The timestamp (the time since the Epoch, in microseconds)
	// when the docjoin is exported from indexing. The main purpose of this
	// field is to identify different versions of the same document.
	IndexingTs int64 `json:"indexingTs,omitempty,string"`

	// IsSiblingDeletion: Page is deleted when indexing choice flips between
	// different corpora (e.g. desktop, mobile, archive, scholar, etc.) for
	// the same URL. It's only set for deletion cdocs. Downstreams using URL
	// as key should ignore the current deletion if the field is set.
	IsSiblingDeletion bool `json:"isSiblingDeletion,omitempty"`

	// NoLongerCanonicalTimestamp: If set, the timestamp in microseconds
	// when the URL stopped being canonical. This should never be set for
	// exported canonical documents. This field is used by dups during
	// canonical flip, and by webmain when doc selection switched between
	// desktop and mobile. Union respects this timestamp to prevent old doc
	// being deleted until the new doc is picked up
	NoLongerCanonicalTimestamp int64 `json:"noLongerCanonicalTimestamp,omitempty,string"`

	// NormalizedClickScore: This score is calculated by re-mapping the back
	// onto the partition's score distribution, such that the score
	// represents the score of the equivalently ranked organically-selected
	// document.
	NormalizedClickScore float64 `json:"normalizedClickScore,omitempty"`

	// RawNavboost: The raw navboost count for the canonical url without
	// aggregating the navboost from dup urls. This field is used when
	// building forwarding map.
	RawNavboost int64 `json:"rawNavboost,omitempty"`

	// RowTimestamp: The timestamp (the time since the Epoch, in
	// microseconds) to represent doc version, which is used in the
	// downstream processing after Raffia. If it's not set, indexing_ts will
	// be used as row_timestamp. The timestamp is generally set by
	// reprocessing to set slightly newer indexing_ts such that the system
	// can respect the reprocessed version to overwrite old data in storage.
	RowTimestamp int64 `json:"rowTimestamp,omitempty,string"`

	// SelectionTierRank: Selection tier rank is a language normalized score
	// ranging from 0-1 over the serving tier (Base, Zeppelins, Landfills)
	// for this document.
	SelectionTierRank float64 `json:"selectionTierRank,omitempty"`

	// TracingId: The tracing ids is to label the version of url for url
	// status tracking. This repeated field will carry at most 10 tracing
	// id. See more details in go/rich-tracing-design There will be less
	// than 2% base+uz cdocs carrying this field. The major sources of
	// tracing ids include: * Indexing API pushed urls * Index Metrics
	// sampling urls The tracing ids will be written into cdocs by Webmain
	// Ramifier. The consumer of the tracing ids is Union serving
	// notification collector see more at go/serving-notification-from-union
	TracingId []string `json:"tracingId,omitempty"`

	// UrlChangerate: Changerate information for this doc (see
	// crawler/changerate/changerate.proto for details).
	UrlChangerate *CrawlerChangerateUrlChangerate `json:"urlChangerate,omitempty"`

	// UrlHistory: Url change history for this doc (see
	// crawler/changerate/changerate.proto for details). Note if a doc has
	// more than 20 changes, we only keep the last 20 changes here to avoid
	// adding to much data in its docjoin.
	UrlHistory *CrawlerChangerateUrlHistory `json:"urlHistory,omitempty"`

	// UrlPatternSignals: UrlPatternSignals for this doc, used to compute
	// document score in LTG (see
	// indexing/signal_aggregator/proto/signal-aggregator.proto for
	// details).
	UrlPatternSignals *IndexingSignalAggregatorUrlPatternSignals `json:"urlPatternSignals,omitempty"`

	// VideoIndexingInfo: Indexing info about videos.
	VideoIndexingInfo *ImageRepositoryVideoIndexingInfo `json:"videoIndexingInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CdocBuildInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CdocBuildInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocIndexingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocIndexingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CompositeDocIndexingInfo) UnmarshalJSON(data []byte) error {
	type NoMethod CompositeDocIndexingInfo
	var s1 struct {
		NormalizedClickScore gensupport.JSONFloat64 `json:"normalizedClickScore"`
		SelectionTierRank    gensupport.JSONFloat64 `json:"selectionTierRank"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NormalizedClickScore = float64(s1.NormalizedClickScore)
	s.SelectionTierRank = float64(s1.SelectionTierRank)
	return nil
}

// CompositeDocLiveExperimentInfo: Contains information needed for
// end-to-end live experiments. For a cdoc generated by production
// pipeline, it includes experiment IDs that have selected current
// document. For a cdoc generated by experiment pipeline, it includes
// current experiment ID.
type CompositeDocLiveExperimentInfo struct {
	// PerLiveExperimentInfo: List of necessary information for each live
	// experiments.
	PerLiveExperimentInfo []*CompositeDocLiveExperimentInfoPerLiveExperimentInfo `json:"perLiveExperimentInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PerLiveExperimentInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PerLiveExperimentInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocLiveExperimentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocLiveExperimentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocLiveExperimentInfoPerLiveExperimentInfo: Contains
// information for a live experiment.
type CompositeDocLiveExperimentInfoPerLiveExperimentInfo struct {
	// ExperimentId: ID of a live experiment.
	ExperimentId string `json:"experimentId,omitempty"`

	// PartialCdoc: Partial CDoc for a live experiment.
	PartialCdoc *CompositeDoc `json:"partialCdoc,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExperimentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExperimentId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocLiveExperimentInfoPerLiveExperimentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocLiveExperimentInfoPerLiveExperimentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type CompositeDocLocalizedVariations struct {
	// DupsComputedAlternateNames: A subset of computed variations, only the
	// members which are dups to the main url. Used during serving for
	// swapping in the URL based on regional and language preferences of the
	// user.
	DupsComputedAlternateNames []*IndexingDupsComputedLocalizedAlternateNamesLocaleEntry `json:"dupsComputedAlternateNames,omitempty"`

	// WebmasterAlternateNames: All localized alternate names provided by
	// the webmaster (canonical and dups, indexed and not-indexed). Used on
	// the ranking side for swapping out results based on the webmaster
	// preference.
	WebmasterAlternateNames []*IndexingConverterLocalizedAlternateName `json:"webmasterAlternateNames,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DupsComputedAlternateNames") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DupsComputedAlternateNames") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocLocalizedVariations) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocLocalizedVariations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocPartialUpdateInfo: Contains information about the partial
// updates present in a partial CompositeDoc.
type CompositeDocPartialUpdateInfo struct {
	// GoldmineAnnotatorNames: List of goldmine annotator updates present in
	// the enclosing partial cdoc.
	GoldmineAnnotatorNames []string `json:"goldmineAnnotatorNames,omitempty"`

	// ImagesSignalNames: List of images signal updates present in the
	// enclosing partial cdoc. Images signal name for a images signal is the
	// unique name for the signal according to SignalSpec.
	ImagesSignalNames []string `json:"imagesSignalNames,omitempty"`

	// LastFullIndexingInfo: Contains last full indexing information for
	// partial updates.
	LastFullIndexingInfo []*CompositeDocPartialUpdateInfoLastFullIndexingInfo `json:"lastFullIndexingInfo,omitempty"`

	// ShouldLookupDocjoinsTier: Which tier we should do cdoc lookup to
	// merge partial cdocs. This uses the integer value of
	// indexing.selection.CorpusId. NOT intended for other usage.
	ShouldLookupDocjoinsTier int64 `json:"shouldLookupDocjoinsTier,omitempty"`

	// SignalNames: List of signal updates present in the enclosing partial
	// cdoc. Signal name for a signal is unique name for the signal
	// according to SignalSpec.
	SignalNames []string `json:"signalNames,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GoldmineAnnotatorNames") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GoldmineAnnotatorNames")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocPartialUpdateInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocPartialUpdateInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocPartialUpdateInfoLastFullIndexingInfo: Last full indexing
// information for the partial CDoc.
type CompositeDocPartialUpdateInfoLastFullIndexingInfo struct {
	// Corpus: The corpus of last full updates.
	//
	// Possible values:
	//   "RAFFIA_WEBSEARCH" - Base Raffia corpora
	//   "RAFFIA_FASTPATH_DAILY" - Fastpath Raffia corpora
	//   "RAFFIA_FASTPATH_INSTANT"
	Corpus string `json:"corpus,omitempty"`

	// LastFullIndexingTsMicros: Last full update indexing timestamp in
	// microseconds.
	LastFullIndexingTsMicros int64 `json:"lastFullIndexingTsMicros,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Corpus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Corpus") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocPartialUpdateInfoLastFullIndexingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocPartialUpdateInfoLastFullIndexingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocQualitySignals: Note: This is a misleading name as of
// 2022/10/14. The field is still set and has meaningful data, but no
// longer holds quality signals. All the data are freshness-related and
// they're not particularly sensitive.
type CompositeDocQualitySignals struct {
	// LastSignificantUpdate: Contains a date used for the "Date Last
	// Modified" toolbelt restrict mode. Note: this date is a combined date
	// and is different from the pure shingle-based signal stored in
	// contentage.last_significant_update field.
	LastSignificantUpdate *QualityTimebasedLastSignificantUpdate `json:"lastSignificantUpdate,omitempty"`

	OldnessInfo *QualityTimebasedOldnessInfo `json:"oldnessInfo,omitempty"`

	Pagetype *QualityTimebasedPageType `json:"pagetype,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LastSignificantUpdate") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastSignificantUpdate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocQualitySignals) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocQualitySignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompositeDocRobotsInfoList: List of robots info parsed for the
// user-agents other than the default used to crawl this page.
type CompositeDocRobotsInfoList struct {
	NewsRobotsInfo *IndexingConverterRobotsInfo `json:"newsRobotsInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NewsRobotsInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NewsRobotsInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompositeDocRobotsInfoList) MarshalJSON() ([]byte, error) {
	type NoMethod CompositeDocRobotsInfoList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CompressedQualitySignals: A message containing per doc signals that
// are compressed and included in Mustang and TeraGoogle. For
// TeraGoogle, this message is included in perdocdata which means it can
// be used in preliminary scoring. CAREFUL: For TeraGoogle, this data
// resides in very limited serving memory (Flash storage) for a huge
// number of documents. Next id: 40
type CompressedQualitySignals struct {
	// AnchorMismatchDemotion: anchor_mismatch_demotion: converted from
	// QualityBoost.mismatched.boost.
	AnchorMismatchDemotion int64 `json:"anchorMismatchDemotion,omitempty"`

	// AuthorityPromotion: authority promotion: converted from
	// QualityBoost.authority.boost
	AuthorityPromotion int64 `json:"authorityPromotion,omitempty"`

	// BabyPandaDemotion: baby_panda_demotion: converted from
	// QualityBoost.rendered.boost.
	BabyPandaDemotion int64 `json:"babyPandaDemotion,omitempty"`

	// BabyPandaV2Demotion: New BabyPanda demotion, applied on top of Panda.
	// This is meant to replace |baby_panda_demotion|.
	BabyPandaV2Demotion int64 `json:"babyPandaV2Demotion,omitempty"`

	// CrapsAbsoluteHostSignals: Impressions, unsquashed, host level, not to
	// be used with compressed ratios. Not to be used in Pattern Data.
	CrapsAbsoluteHostSignals int64 `json:"crapsAbsoluteHostSignals,omitempty"`

	CrapsNewHostSignals uint64 `json:"crapsNewHostSignals,omitempty,string"`

	CrapsNewPatternSignals uint64 `json:"crapsNewPatternSignals,omitempty,string"`

	// CrapsNewUrlSignals: For craps_[url|pattern]_signals, please avoid
	// accessing these fields directly, even in minor ways like checking
	// has_craps_*. Instead, please use methods from
	// quality/navboost/craps/craps-lossy-compression.h or talk to
	// dice-team.
	CrapsNewUrlSignals uint64 `json:"crapsNewUrlSignals,omitempty,string"`

	CrapsUnscaledIpPriorBadFraction int64 `json:"crapsUnscaledIpPriorBadFraction,omitempty"`

	// ExactMatchDomainDemotion: Page quality signals converted from fields
	// in proto QualityBoost in quality/q2/proto/quality-boost.proto. To
	// save indexing space, we convert the float values in [0, 1] to
	// integers in range [0, 1023] (use 10 bits).
	// exact_match_domain_demotion: converted from QualityBoost.emd.boost.
	ExactMatchDomainDemotion int64 `json:"exactMatchDomainDemotion,omitempty"`

	// ExperimentalNsrTeamData: This field is *not* propagated to shards,
	// but it's populated at serving time by go/web-signal-joins (see
	// b/207344056). See go/0DayLEs for details. This is only meant to be
	// used during LEs, it should *not* be used for launches.
	ExperimentalNsrTeamData *QualityNsrExperimentalNsrTeamData `json:"experimentalNsrTeamData,omitempty"`

	// ExperimentalNsrTeamWsjData: This field is *not* propagated to shards,
	// but it's populated at serving time by go/web-signal-joins (see
	// b/207344056). See go/0DayLEs for details. This is only meant to be
	// used during LEs, it should *not* be used for launches.
	ExperimentalNsrTeamWsjData []*QualityNsrExperimentalNsrTeamWSJData `json:"experimentalNsrTeamWsjData,omitempty"`

	// ExperimentalQstarDeltaSignal: This field is *not* propagated to
	// shards. It is meant to be populated at serving time using one of the
	// versions present in the `experimental_nsr_team_wsj_data` field above
	// (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate
	// it; see
	// http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto).
	// The purpose of this field is to be read by an experimental Q*
	// component, in order to quickly run LEs with new delta components. See
	// go/0DayLEs for details.
	ExperimentalQstarDeltaSignal float64 `json:"experimentalQstarDeltaSignal,omitempty"`

	// ExperimentalQstarSignal: This field is *not* propagated to shards. It
	// is meant to be populated at serving time using one of the versions
	// present in the `experimental_nsr_team_wsj_data` field above (using
	// the `ExperimentalNsrTeamDataOverridesParams` opti to populate it; see
	// http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto).
	// The purpose of this field is to be read by an experimental Q*
	// component, in order to quickly run LEs with new components. See
	// go/0DayLEs for details.
	ExperimentalQstarSignal float64 `json:"experimentalQstarSignal,omitempty"`

	// ExperimentalQstarSiteSignal: This field is *not* propagated to
	// shards. It is meant to be populated at serving time using one of the
	// versions present in the `experimental_nsr_team_wsj_data` field above
	// (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate
	// it; see
	// http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto).
	// The purpose of this field is to be read by an experimental Q*
	// component, in order to quickly run LEs with new site components. See
	// go/0DayLEs for details.
	ExperimentalQstarSiteSignal float64 `json:"experimentalQstarSiteSignal,omitempty"`

	// LowQuality: S2V low quality score: converted from
	// quality_nsr.NsrData, applied in Qstar. See
	// quality_nsr::util::ConvertNsrDataToLowQuality.
	LowQuality int64 `json:"lowQuality,omitempty"`

	// NavDemotion: nav_demotion: converted from
	// QualityBoost.nav_demoted.boost.
	NavDemotion int64 `json:"navDemotion,omitempty"`

	// NsrConfidence: NSR confidence score: converted from
	// quality_nsr.NsrData.
	NsrConfidence int64 `json:"nsrConfidence,omitempty"`

	// NsrOverrideBid: NSR override bid, used in Q* for emergency overrides.
	NsrOverrideBid float64 `json:"nsrOverrideBid,omitempty"`

	// NsrVersionedData: Versioned NSR score to be used in continuous
	// evaluation of the upcoming NSR version and assess quality impact on
	// various slices.
	NsrVersionedData []*NSRVersionedItem `json:"nsrVersionedData,omitempty"`

	// PairwiseqScoringData: PairwiseQ data for QTJ. This field is *not*
	// propagated to shards, but is populated at serving time by
	// go/web-signal-joins. See b/175762140
	PairwiseqScoringData *PairwiseQScoringData `json:"pairwiseqScoringData,omitempty"`

	// PairwiseqVersionedData: Versioned PairwiseQ score to be used in
	// continuous evaluation of the upcoming PairwiseQ versions and assess
	// quality impact on various slices.
	PairwiseqVersionedData []*PairwiseQVersionedItem `json:"pairwiseqVersionedData,omitempty"`

	// PandaDemotion: This is the encoding of Panda fields in the proto
	// SiteQualityFeatures in quality/q2/proto/site_quality_features.proto.
	// The encoding/decoding is performed using functions from
	// quality_coati::coati_util.
	PandaDemotion int64 `json:"pandaDemotion,omitempty"`

	// PqData: Encoded page-level PQ signals.
	PqData int64 `json:"pqData,omitempty"`

	// PqDataProto: Stripped page-level signals, not present in the encoded
	// field 'pq_data'.
	PqDataProto *QualityNsrPQData `json:"pqDataProto,omitempty"`

	ProductReviewPDemotePage int64 `json:"productReviewPDemotePage,omitempty"`

	// ProductReviewPDemoteSite: Product review demotion/promotion
	// confidences. (Times 1000 and floored)
	ProductReviewPDemoteSite int64 `json:"productReviewPDemoteSite,omitempty"`

	ProductReviewPPromotePage int64 `json:"productReviewPPromotePage,omitempty"`

	ProductReviewPPromoteSite int64 `json:"productReviewPPromoteSite,omitempty"`

	// Scamness: Scam model score. Used as one of the web page quality qstar
	// signals. Value range from 0 to 1023.
	Scamness int64 `json:"scamness,omitempty"`

	// SerpDemotion: serp demotion: applied in Qstar.
	SerpDemotion int64 `json:"serpDemotion,omitempty"`

	// SiteAuthority: site_authority: converted from
	// quality_nsr.SiteAuthority, applied in Qstar.
	SiteAuthority int64 `json:"siteAuthority,omitempty"`

	// TopicEmbeddingsVersionedData: Versioned TopicEmbeddings data to be
	// populated later into superroot / used directly in scorers.
	TopicEmbeddingsVersionedData []*QualityAuthorityTopicEmbeddingsVersionedItem `json:"topicEmbeddingsVersionedData,omitempty"`

	// UnauthoritativeScore: Unauthoritative score. Used as one of the web
	// page quality qstar signals.
	UnauthoritativeScore int64 `json:"unauthoritativeScore,omitempty"`

	// VlqNsr: NSR for low-quality videos, converted from
	// quality_nsr.NsrData.vlq_nsr.
	VlqNsr int64 `json:"vlqNsr,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnchorMismatchDemotion") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorMismatchDemotion")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CompressedQualitySignals) MarshalJSON() ([]byte, error) {
	type NoMethod CompressedQualitySignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CompressedQualitySignals) UnmarshalJSON(data []byte) error {
	type NoMethod CompressedQualitySignals
	var s1 struct {
		ExperimentalQstarDeltaSignal gensupport.JSONFloat64 `json:"experimentalQstarDeltaSignal"`
		ExperimentalQstarSignal      gensupport.JSONFloat64 `json:"experimentalQstarSignal"`
		ExperimentalQstarSiteSignal  gensupport.JSONFloat64 `json:"experimentalQstarSiteSignal"`
		NsrOverrideBid               gensupport.JSONFloat64 `json:"nsrOverrideBid"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ExperimentalQstarDeltaSignal = float64(s1.ExperimentalQstarDeltaSignal)
	s.ExperimentalQstarSignal = float64(s1.ExperimentalQstarSignal)
	s.ExperimentalQstarSiteSignal = float64(s1.ExperimentalQstarSiteSignal)
	s.NsrOverrideBid = float64(s1.NsrOverrideBid)
	return nil
}

// ContentAttributions: The following protobuf is used to store an
// attribution from one page to (usually) one other page, giving credit
// for the content. This information is used during ranking to promote
// the attributed page. This protobuf is copied from a
// quality_contra::SelectedAttribution. See
// //quality/contra/authorship/attribution and
// https://qwiki.corp.google.com/display/Q/ContentTrackingContentAttribution.
type ContentAttributions struct {
	// FreshdocsOutgoing: Selected outgoing attributions extracted on
	// FreshDocs.
	FreshdocsOutgoing []*ContentAttributionsOutgoingAttribution `json:"freshdocsOutgoing,omitempty"`

	// OfflineOutgoing: Selected outgoing attributions extracted via offline
	// MR jobs.
	OfflineOutgoing []*ContentAttributionsOutgoingAttribution `json:"offlineOutgoing,omitempty"`

	// OnlineOutgoing: Selected outgoing attributions extracted online on
	// Alexandria.
	OnlineOutgoing []*ContentAttributionsOutgoingAttribution `json:"onlineOutgoing,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FreshdocsOutgoing")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FreshdocsOutgoing") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ContentAttributions) MarshalJSON() ([]byte, error) {
	type NoMethod ContentAttributions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ContentAttributionsOutgoingAttribution: This is a copy of
// quality_contra::SelectedAttribution::SelectedInfo. The url is
// converted to docid and other fields are copied directly.
type ContentAttributionsOutgoingAttribution struct {
	// Possible values:
	//   "PAGE_LINK_TO" - Direct link to page in question.
	//   "SITE_LINK_TO" - Link to the site of the page in question: Example:
	// "<a href="http://cnn.com>" or "source: cnn.com" for the page
	// "http://cnn.com/news/13"
	//   "SITE_OTHER_PAGE_LINK_TO" - Link to some *other* page on the site
	// of the page in question: Example: "<a href="http://cnn.com/news/14>"
	// for the page "http://cnn.com/news/13"
	//   "ORG_OTHER_SITE_LINK_TO" - Direct link to some *site* with the same
	// OrgName. Example: "<a href="http://cnn.co.uk/>" for the page
	// "http://cnn.com/news/13"
	//   "ORG_OTHER_PAGE_LINK_TO" - Link to some page on a site with the
	// same OrgName. Example: "<a href="http://cnn.co.uk/schmoo/14>" for the
	// page "http://cnn.com/news/13"
	//   "SITE_SCORE_BASED" - Fake link which is created based on site
	// scores to propagate offline clustering data.
	//   "LOW_CONFIDENCE_LINK_TO" - Link with low confidence score. Is used
	// for online clustering only.
	//   "ANCHOR_ATTRIBUTION_TO" - Anchor to page in question.
	//   "SITE_NAME_MENTION" - A mention of the site name in the text.
	//   "SITE_NAME_MENTION_KEYWORDED" - A mention of the site name with
	// citation keyword in front of it.
	//   "EVIDENCE_TYPE_END"
	BestEvidenceType string `json:"bestEvidenceType,omitempty"`

	Docid uint64 `json:"docid,omitempty,string"`

	Properties int64 `json:"properties,omitempty"`

	UsableForClustering bool `json:"usableForClustering,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BestEvidenceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BestEvidenceType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ContentAttributionsOutgoingAttribution) MarshalJSON() ([]byte, error) {
	type NoMethod ContentAttributionsOutgoingAttribution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ContentAwareCropsIndexing struct {
	// MustangBytes: Compact representation for Mustang storage. See
	// image/search/utils/packed_crops.h for details on the packing format.
	MustangBytes string `json:"mustangBytes,omitempty"`

	MustangBytesVersion int64 `json:"mustangBytesVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MustangBytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MustangBytes") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ContentAwareCropsIndexing) MarshalJSON() ([]byte, error) {
	type NoMethod ContentAwareCropsIndexing
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleyLexicalMetadata: Contains lexical metadata for a given
// reference. For example, this proto will be used to store
// locale-specific Lexical mids for contact relationships (e.g.
// /g/11gv0vypg4 is the mid for mother in english and /g/11gmy_gv87 is
// for mother in french) as an extension to
// QRefAnnotation::other_metadata, when available.
type CopleyLexicalMetadata struct {
	// CanonicalLexicalMid: Mid for an entity that has lexical data (a
	// LexiconEntry). See
	// https://g3doc.corp.google.com/nlp/generation/g3doc/lexical_data.md
	// for for more information about lexical data. This is the canonical
	// mid for this entity (eg. it would be for "mother" in EN even if user
	// referred to "mom").
	CanonicalLexicalMid string `json:"canonicalLexicalMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalLexicalMid")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalLexicalMid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleyLexicalMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod CopleyLexicalMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleyPersonalReference: Represents a reference made by a user that
// refers to some personal entity.
type CopleyPersonalReference struct {
	// PersonalReferenceType: The manner in which the entity was referenced
	// (e.g. "my hotel", "the airport").
	//
	// Possible values:
	//   "PERSONAL_UNKNOWN_REFERENCE"
	//   "PERSONAL_HOTEL_REFERENCE"
	//   "PERSONAL_HOTEL_BOOKING_AGENT_REFERENCE"
	//   "PERSONAL_RESTAURANT_REFERENCE"
	//   "PERSONAL_RESTAURANT_BOOKING_AGENT_REFERENCE"
	//   "PERSONAL_PARKING_REFERENCE"
	//   "PERSONAL_FLIGHT_REFERENCE"
	//   "PERSONAL_GENERIC_SOCIAL_EVENT_REFERENCE"
	//   "PERSONAL_CONCERT_REFERENCE"
	//   "PERSONAL_SPORTS_REFERENCE"
	//   "PERSONAL_MOVIE_REFERENCE"
	//   "PERSONAL_TOUR_REFERENCE"
	//   "PERSONAL_HOME_REFERENCE"
	//   "PERSONAL_WORK_REFERENCE"
	//   "PERSONAL_MAPS_ALIAS_REFERENCE"
	//   "PERSONAL_CONTACT_REFERENCE"
	//   "PERSONAL_CONTACT_PERSON_REFERENCE"
	//   "PERSONAL_CONTACT_LOCATION_REFERENCE"
	//   "PERSONAL_FAMILY_MEMBER_REFERENCE"
	//   "PERSONAL_CONTACT_BIRTHDAY_REFERENCE"
	//   "PERSONAL_CONTACT_ADDRESS_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_PERSON_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_LOCATION_REFERENCE"
	//   "PERSONAL_MEMORABLE_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_ANNIVERSARY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_PAYDAY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_WEDDING_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_BIRTHDAY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_EXAM_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_MATHEXAM_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_OILCHANGE_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_GRADUATION_DATE_REFERENCE"
	PersonalReferenceType string `json:"personalReferenceType,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PersonalReferenceType") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PersonalReferenceType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleyPersonalReference) MarshalJSON() ([]byte, error) {
	type NoMethod CopleyPersonalReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleyPersonalReferenceMetadata: General message used to store
// metadata about references to personal entities, even if those
// entities cannot be resolved.
type CopleyPersonalReferenceMetadata struct {
	// ReferenceScore: The strength of the personal reference. For example
	// "my flight" may receive a high reference_score, whereas "the airport"
	// may receive a low score.
	ReferenceScore float64 `json:"referenceScore,omitempty"`

	// References: A list of all references made. Empty if no personal
	// references exist. Multiple references can be present when multiple
	// references were made in a single query, or the type of reference was
	// ambiguous.
	References []*CopleyPersonalReference `json:"references,omitempty"`

	// SubreferenceMetadata: Subreference metadata for all compound
	// references on this span.
	SubreferenceMetadata *CopleySubreferenceMetadata `json:"subreferenceMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ReferenceScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ReferenceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleyPersonalReferenceMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod CopleyPersonalReferenceMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CopleyPersonalReferenceMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod CopleyPersonalReferenceMetadata
	var s1 struct {
		ReferenceScore gensupport.JSONFloat64 `json:"referenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ReferenceScore = float64(s1.ReferenceScore)
	return nil
}

type CopleySourceTypeList struct {
	SourceTypeMetadata []*CopleySourceTypeMetadata `json:"sourceTypeMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceTypeMetadata")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceTypeMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleySourceTypeList) MarshalJSON() ([]byte, error) {
	type NoMethod CopleySourceTypeList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleySourceTypeMetadata: Contains the source and type information
// related to a personal entity, for example if it's an hotel or a
// restaurant (type) and if it comes from gmail, calendar, etc.
// (source). Next ID: 13
type CopleySourceTypeMetadata struct {
	// ContactAnnotationId: Annotation ID of a contact annotation, e.g. a
	// relationship set via Assistant. This ID is generated by People Write
	// Server. It is used to delete Contact Annotations via People API.
	ContactAnnotationId string `json:"contactAnnotationId,omitempty"`

	DisplayableName string `json:"displayableName,omitempty"`

	// EmailIdentifier: Only used if personal_data_provenance ==
	// PERSONAL_SOURCE_GMAIL. Used to create a link to the source email in
	// the form:
	// mail.google.com/mail/u/0/?extsrc=sync&client=h&plid={email_identifier}
	EmailIdentifier string `json:"emailIdentifier,omitempty"`

	// EventId: Populated for some footprints data sources; uniquely
	// identifies the footprint that generated the personal data that this
	// provenance is attached to.
	EventId *EventIdMessage `json:"eventId,omitempty"`

	LocalDiscoverySettingsMetadata *PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata `json:"localDiscoverySettingsMetadata,omitempty"`

	// Possible values:
	//   "PERSONAL_SOURCE_UNKNOWN"
	//   "PERSONAL_SOURCE_GMAIL"
	//   "PERSONAL_SOURCE_CALENDAR"
	//   "PERSONAL_SOURCE_MAPS_ALIAS"
	//   "PERSONAL_SOURCE_FOCUS" - A subset of the user's Focus and device
	// contacts from Starlight. As of 11/2020, this subset includes: starred
	// contacts, relationships, and contacts with attributes (birthday,
	// address, etc.) set via Assistant. Only requests Starlight's base
	// model.
	//   "PERSONAL_SOURCE_FOCUS_CONSISTENT" - Same as PERSONAL_SOURCE_FOCUS,
	// but additionally includes photos labels (face clusters, albums,
	// locations) from Starlight. Requires Starlight's fresh model
	// (go/starlight-freshness) for more consistent results. Use with
	// caution: May fail to return any data if the fresh model is not loaded
	// in time.
	//   "PERSONAL_SOURCE_FOCUS_TOP_N_CONTACTS" - User's top n(~200)
	// contacts returned by Starlight. Starlight uses various signals and
	// sources to prepare a list of top n contacts for a given user.
	//   "PERSONAL_SOURCE_ASSISTANT_CONTACT_AFFINITY" - User's contact
	// affinities read from Footprint's assistant_contact_affinity corpus.
	//   "PERSONAL_SOURCE_ASSISTANT_MEMORY"
	//   "PERSONAL_SOURCE_PWS"
	//   "PERSONAL_SOURCE_HOUSEHOLD"
	//   "PERSONAL_SOURCE_HULK_PLACES"
	//   "PERSONAL_SOURCE_FOCUS_OWNER"
	//   "PERSONAL_SOURCE_WHITEPAGES"
	//   "PERSONAL_SOURCE_ASSISTANT_DEVICES" - Reads from the
	// ASSISTANT_DEVICE_SETTINGS
	//   "PERSONAL_SOURCE_TEACH_LEARN"
	//   "PERSONAL_SOURCE_GELLER_ANSWERS"
	//   "PERSONAL_SOURCE_LAMS_SETTINGS"
	//   "PERSONAL_SOURCE_GAIA"
	//   "PERSONAL_SOURCE_XTALK"
	//   "PERSONAL_SOURCE_MOVIE_DIALOG"
	//   "PERSONAL_SOURCE_MEDIA_HABITUAL_CACHE"
	//   "PERSONAL_SOURCE_PERSONAL_TOPICSERVER"
	//   "PERSONAL_SOURCE_PHOTO_LABELS" - The user's photo labels from
	// Starlight.
	//   "PERSONAL_SOURCE_PEOPLE_API" - The current user's data from the
	// people API. This includes the user's profile image.
	//   "PERSONAL_SOURCE_CONTEXT_API"
	//   "PERSONAL_SOURCE_MUSIC_PREFERRED_PROVIDER"
	//   "PERSONAL_SOURCE_STASH"
	//   "PERSONAL_SOURCE_SMART_HOME_DEVICES" - The user's SmartHome devices
	// from AutomationService. This includes user's devices, rooms and
	// structures.
	//   "PERSONAL_SOURCE_DEVICE_STATES" - The user's devices states from
	// DeviceStatesService. For example, if the device is playing music and
	// the name of the music if it is.
	//   "PERSONAL_SOURCE_HANDBAG_PERSONALIZED_WEBREF_ENTITIES" -
	// Personalized WebRef entity mids synced down to device (go/handbag).
	//   "PERSONAL_GRAPH_PEOPLE_SIGNAL_POST_PROCESSING" - For triples
	// produced by postprocessing signals for people entities.
	//   "PERSONAL_SOURCE_PERSONALIZED_PRONUNCIATIONS"
	//   "PERSONAL_SOURCE_DEVICE_INSTALLED_APPS" - The names of the user's
	// installed apps on their Android phone.
	//   "PERSONAL_SOURCE_CONTACT_AGGREGATED_DATA"
	//   "PERSONAL_SOURCE_DYNAMIC_ENTITY_INDEX" - For triples directly
	// served from Footprints Corpus DYNAMIC_ENTITY_INDEX. These are often
	// smart home devices.
	//   "PERSONAL_SOURCE_STADIA"
	//   "PERSONAL_SOURCE_COMMUNAL_GROUP"
	//   "PERSONAL_SOURCE_LOCATION_SHARING"
	//   "PERSONAL_SOURCE_MAPS_SEARCH"
	//   "PERSONAL_SOURCE_MEDIA_USER_CONTEXT_INFO"
	//   "PERSONAL_SOURCE_MEDIA_USER_ENTITIES"
	//   "PERSONAL_SOURCE_DEVICE_SIGNED_IN_ACCOUNTS"
	//   "PERSONAL_SOURCE_ASSISTANT_USER_PROFILES"
	PersonalDataProvenance string `json:"personalDataProvenance,omitempty"`

	// Possible values:
	//   "PERSONAL_UNKNOWN"
	//   "PERSONAL_HOTEL"
	//   "PERSONAL_RESTAURANT"
	//   "PERSONAL_PARKING"
	//   "PERSONAL_FLIGHT"
	//   "PERSONAL_SOCIAL_EVENT"
	//   "PERSONAL_MAPS_ALIAS"
	//   "PERSONAL_CONTACT"
	//   "PERSONAL_PROFILE"
	//   "PERSONAL_BILL"
	//   "PERSONAL_CAR_RENTAL"
	//   "PERSONAL_GENERIC_EVENT"
	//   "PERSONAL_TRAIN"
	//   "PERSONAL_BUS"
	//   "PERSONAL_TAXI"
	//   "PERSONAL_FERRY"
	//   "PERSONAL_PHONE_NUMBER"
	//   "PERSONAL_DEVICE"
	//   "PERSONAL_PREFERENCE"
	//   "PERSONAL_DIETARY_RESTRICTION"
	//   "PERSONAL_MEDIA_HABITUAL_CACHE"
	//   "PERSONAL_NEWS_PREFERENCE"
	//   "PERSONAL_FAVORITE"
	//   "PERSONAL_GAMER_CONTACT"
	PersonalDataType string `json:"personalDataType,omitempty"`

	// Possible values:
	//   "PROVENANCE_CATEGORY_UNKNOWN"
	//   "CORE_APPS_DATA"
	ProvenanceCategory []string `json:"provenanceCategory,omitempty"`

	// Sensitivity: Sensitivity applying to this copley annotation.
	Sensitivity *KnowledgeAnswersSensitivitySensitivity `json:"sensitivity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactAnnotationId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactAnnotationId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleySourceTypeMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod CopleySourceTypeMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleySubreferenceMetadata: Represents the most compound resolved
// entities and most nested unresolved references for a span. Useful for
// punting.
type CopleySubreferenceMetadata struct {
	// MostCompoundResolvedEntities: Resolved entities are sorted from
	// highest resolution score to lowest.
	MostCompoundResolvedEntities []*CopleySubreferenceResolution `json:"mostCompoundResolvedEntities,omitempty"`

	// MostNestedUnresolvedReference: This is a merged representation of the
	// compound reference having the most_compound_resolved_entities as an
	// argument.
	MostNestedUnresolvedReference *CopleySubreferenceReference `json:"mostNestedUnresolvedReference,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MostCompoundResolvedEntities") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "MostCompoundResolvedEntities") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CopleySubreferenceMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod CopleySubreferenceMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CopleySubreferenceReference: Represents a reference that may be part
// of a larger compound reference. For example, "my brother's birthday"
// will have a subreference that may have references for "my brother".
type CopleySubreferenceReference struct {
	// PersonalReferenceTypes: Type of reference. There may be multiple for
	// a single reference (e.g. relationship and contact).
	//
	// Possible values:
	//   "PERSONAL_UNKNOWN_REFERENCE"
	//   "PERSONAL_HOTEL_REFERENCE"
	//   "PERSONAL_HOTEL_BOOKING_AGENT_REFERENCE"
	//   "PERSONAL_RESTAURANT_REFERENCE"
	//   "PERSONAL_RESTAURANT_BOOKING_AGENT_REFERENCE"
	//   "PERSONAL_PARKING_REFERENCE"
	//   "PERSONAL_FLIGHT_REFERENCE"
	//   "PERSONAL_GENERIC_SOCIAL_EVENT_REFERENCE"
	//   "PERSONAL_CONCERT_REFERENCE"
	//   "PERSONAL_SPORTS_REFERENCE"
	//   "PERSONAL_MOVIE_REFERENCE"
	//   "PERSONAL_TOUR_REFERENCE"
	//   "PERSONAL_HOME_REFERENCE"
	//   "PERSONAL_WORK_REFERENCE"
	//   "PERSONAL_MAPS_ALIAS_REFERENCE"
	//   "PERSONAL_CONTACT_REFERENCE"
	//   "PERSONAL_CONTACT_PERSON_REFERENCE"
	//   "PERSONAL_CONTACT_LOCATION_REFERENCE"
	//   "PERSONAL_FAMILY_MEMBER_REFERENCE"
	//   "PERSONAL_CONTACT_BIRTHDAY_REFERENCE"
	//   "PERSONAL_CONTACT_ADDRESS_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_PERSON_REFERENCE"
	//   "PERSONAL_RELATIONSHIP_LOCATION_REFERENCE"
	//   "PERSONAL_MEMORABLE_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_ANNIVERSARY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_PAYDAY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_WEDDING_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_BIRTHDAY_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_EXAM_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_MATHEXAM_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_OILCHANGE_DATE_REFERENCE"
	//   "PERSONAL_MEMORY_GRADUATION_DATE_REFERENCE"
	PersonalReferenceTypes []string `json:"personalReferenceTypes,omitempty"`

	// ReferenceScore: Highest reference score for any references merged in
	// this span.
	ReferenceScore float64 `json:"referenceScore,omitempty"`

	// RelationshipLexicalInfo: Only set for unresolved relationship
	// references and can be used to get the canonical word for the
	// relationship (e.g. "mother") in TTS.
	RelationshipLexicalInfo *CopleyLexicalMetadata `json:"relationshipLexicalInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PersonalReferenceTypes") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PersonalReferenceTypes")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CopleySubreferenceReference) MarshalJSON() ([]byte, error) {
	type NoMethod CopleySubreferenceReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CopleySubreferenceReference) UnmarshalJSON(data []byte) error {
	type NoMethod CopleySubreferenceReference
	var s1 struct {
		ReferenceScore gensupport.JSONFloat64 `json:"referenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ReferenceScore = float64(s1.ReferenceScore)
	return nil
}

// CopleySubreferenceResolution: Represents a resolution that may be
// part of a larger compound reference. For example, "my brother's
// birthday" will have a subreference that may have resolutions for "my
// brother".
type CopleySubreferenceResolution struct {
	// Mid: Can be used with PKG Service for looking up metadata about this
	// entity at fulfillment/GenX time.
	Mid string `json:"mid,omitempty"`

	// Name: Name of the entity represented by this resolution.
	Name string `json:"name,omitempty"`

	// ResolutionScore: A resolution score of 0 indicates that it did not
	// resolve to a real entity.
	ResolutionScore float64 `json:"resolutionScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CopleySubreferenceResolution) MarshalJSON() ([]byte, error) {
	type NoMethod CopleySubreferenceResolution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CopleySubreferenceResolution) UnmarshalJSON(data []byte) error {
	type NoMethod CopleySubreferenceResolution
	var s1 struct {
		ResolutionScore gensupport.JSONFloat64 `json:"resolutionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ResolutionScore = float64(s1.ResolutionScore)
	return nil
}

type CorpusSelectionInfo struct {
	// Possible values:
	//   "UNKNOWN"
	//   "LENS"
	Corpus string `json:"corpus,omitempty"`

	// CorpusScore: Corpus specific score for an image
	CorpusScore float64 `json:"corpusScore,omitempty"`

	// IsSelectedForIndexing: Whether an image was selected for indexing.
	IsSelectedForIndexing bool `json:"isSelectedForIndexing,omitempty"`

	// ReferrerDocid: Set of referrers indexed with the image.
	ReferrerDocid googleapi.Uint64s `json:"referrerDocid,omitempty"`

	// ReferrerUrls: Set of referrer urls indexed with the image.
	ReferrerUrls []string `json:"referrerUrls,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Corpus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Corpus") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CorpusSelectionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CorpusSelectionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CorpusSelectionInfo) UnmarshalJSON(data []byte) error {
	type NoMethod CorpusSelectionInfo
	var s1 struct {
		CorpusScore gensupport.JSONFloat64 `json:"corpusScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CorpusScore = float64(s1.CorpusScore)
	return nil
}

type CountryClickDistribution struct {
	// Confidence: To store confidence in the distribution in cases when
	// total is not set.
	Confidence float64 `json:"confidence,omitempty"`

	Item []*CountryClickDistributionItem `json:"item,omitempty"`

	// Total: To store total clicks on this page/domain.
	Total float64 `json:"total,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryClickDistribution) MarshalJSON() ([]byte, error) {
	type NoMethod CountryClickDistribution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountryClickDistribution) UnmarshalJSON(data []byte) error {
	type NoMethod CountryClickDistribution
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		Total      gensupport.JSONFloat64 `json:"total"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.Total = float64(s1.Total)
	return nil
}

type CountryClickDistributionItem struct {
	DoubleValue float64 `json:"doubleValue,omitempty"`

	Name string `json:"name,omitempty"`

	Value int64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DoubleValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DoubleValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryClickDistributionItem) MarshalJSON() ([]byte, error) {
	type NoMethod CountryClickDistributionItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountryClickDistributionItem) UnmarshalJSON(data []byte) error {
	type NoMethod CountryClickDistributionItem
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	return nil
}

// CountryCountryAttachment: If you add new fields to this message, do
// not use any tag value less than the "Next free tag" below. The lower
// tag values might be missing in this file, but they were used in past
// for some field, so cannot be used again. Next free tag: 44
type CountryCountryAttachment struct {
	// ClickDistribution: Store weighted click distribution for page level
	// country-id classification.
	ClickDistribution *CountryClickDistribution `json:"clickDistribution,omitempty"`

	// CountryidFromUgc: Is true if the country attachment was computed
	// through the UGC pipeline.
	CountryidFromUgc bool `json:"countryidFromUgc,omitempty"`

	// Debug: A non critical field to store debug info for a country
	// attachment. Used in experiments and for debugging.
	Debug string `json:"debug,omitempty"`

	// DebugSourceUrl: Set to the signal source URLs when merging country
	// signals in Alexandria during sitemoves. Essentially if sites A and B
	// move to C, and we merge A and B's signal to C, in the
	// countryattachment signal C will have URL A and B as source_url. Only
	// used for debugging and it doesn't show up in docjoins.
	DebugSourceUrl []string `json:"debugSourceUrl,omitempty"`

	// DocumentLocationSource: Specifies the origin of `geo_locations`.
	// Right now, it can either come from deprecated Docloc system or the
	// new Brainloc system when Docloc doesn't have sufficient evidence.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "DOCLOC"
	//   "BRAINLOC"
	//   "LOGLOC"
	DocumentLocationSource string `json:"documentLocationSource,omitempty"`

	ExistNextLevel bool `json:"existNextLevel,omitempty"`

	// FromLanguageFallback: Booleans to keep track of where the country-id
	// of the page came from. These are used for debugging and/or unittests,
	// and cleared in production.
	FromLanguageFallback bool `json:"fromLanguageFallback,omitempty"`

	FromRestricts bool `json:"fromRestricts,omitempty"`

	FromSgDomains bool `json:"fromSgDomains,omitempty"`

	FromTld bool `json:"fromTld,omitempty"`

	FromUgc bool `json:"fromUgc,omitempty"`

	FromUrlPattern bool `json:"fromUrlPattern,omitempty"`

	FromWmx bool `json:"fromWmx,omitempty"`

	// GeoLocations: New MetroID: Now called GeoLocations since the
	// locations could be sublocalities, cities or states. GeoLocations are
	// always more fine grained than country. TODO (jayeshv): Once new
	// MetroID/GeoLocations is launched everywhere, deleted old MetroID
	// related fields.
	GeoLocations *CountryGeoLocations `json:"geoLocations,omitempty"`

	Global bool `json:"global,omitempty"`

	// IsValidForCountryRestrict: Set to true if the local_countries field
	// can be used for country restricts as well.
	IsValidForCountryRestrict bool `json:"isValidForCountryRestrict,omitempty"`

	// LocalCountries: two-letter(lower-case) countrycode, e.g. us countries
	// that is local to
	LocalCountries []string `json:"localCountries,omitempty"`

	// LocalCountryCodes: Fields that actually store the country id in
	// docjoins. The format of this data is defined in
	// //i18n/identifiers/stableinternalregionconverter.cc. Converter
	// defined there can be used to convert it to RegionCode format.
	LocalCountryCodes []int64 `json:"localCountryCodes,omitempty"`

	// MetroIdList: Metro locations: list of NavBoost feature V2 associated
	// with a doc, along with the enclosing province. Metro locations with
	// new tags.
	MetroIdList []*CountryMetroNBFeature `json:"metroIdList,omitempty"`

	// MetroLocationId: Metro level data. metro_location_id stores geotokens
	// for metro restricts.
	MetroLocationId []string `json:"metroLocationId,omitempty"`

	// MetroNavboost: Metro navboost: list of (NavBoost feature V2, navboost
	// float) pairs.
	MetroNavboost []*CountryMetroNBFeature `json:"metroNavboost,omitempty"`

	ProvinceGeotokenList []*CountryProvinceGeotoken `json:"provinceGeotokenList,omitempty"`

	// RelatedCountries: two-letter(lower-case) countrycode, e.g. us
	// countries that is related to, but not local to
	RelatedCountries []string `json:"relatedCountries,omitempty"`

	RelatedCountryCodes []int64 `json:"relatedCountryCodes,omitempty"`

	// RestrictCountries: List of two-letter(lower-case) countrycodes(e.g.
	// us) valid for restricts. Typically cloned out of local_countries if
	// is_valid_for_country_restrict is set to true.
	RestrictCountries []string `json:"restrictCountries,omitempty"`

	// SalientCountries: [Experimental]: Top salient countries for a doc. If
	// a country can not be found on this field it can be considered that
	// this doc is not relevant to it.
	SalientCountries []*CountrySalientCountry `json:"salientCountries,omitempty"`

	SalientCountrySet *QualitySalientCountriesSalientCountrySet `json:"salientCountrySet,omitempty"`

	// Sitename: Domain name of keys in filtering metro reducer class, used
	// only by the intermediate mapreduces to produce filtered data.
	Sitename string `json:"sitename,omitempty"`

	// SuperGlobal: Super global pages get lesser demotion than global
	// pages. A document can only be either global or super_global but not
	// both.
	SuperGlobal bool `json:"superGlobal,omitempty"`

	UrlPatternBasedCountry int64 `json:"urlPatternBasedCountry,omitempty"`

	// UrlPatternBasedLanguage: Language and country extracted using the URL
	// pattern map.
	UrlPatternBasedLanguage int64 `json:"urlPatternBasedLanguage,omitempty"`

	// UserVisibleCountryFromLogs: This is used to store the visible country
	// id computed from logs data
	UserVisibleCountryFromLogs string `json:"userVisibleCountryFromLogs,omitempty"`

	// UserVisibleLocalCountry: This is the country id we show to users on
	// the result page. This is kept different from country demotion country
	// id because we dont want to expose our backoff and url based detection
	// algorithm - also we want to be ultra conservative in showing this.
	UserVisibleLocalCountry int64 `json:"userVisibleLocalCountry,omitempty"`

	// WeightAboveIdealForLocalness: If result is global, store weight above
	// ideal, as a confidence signal. Used in query localness, cleared in
	// production CountryAttachment.
	WeightAboveIdealForLocalness float64 `json:"weightAboveIdealForLocalness,omitempty"`

	// WmxCountry: Country specified for a web-site through webmaster
	// console.
	WmxCountry string `json:"wmxCountry,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClickDistribution")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClickDistribution") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CountryCountryAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod CountryCountryAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountryCountryAttachment) UnmarshalJSON(data []byte) error {
	type NoMethod CountryCountryAttachment
	var s1 struct {
		WeightAboveIdealForLocalness gensupport.JSONFloat64 `json:"weightAboveIdealForLocalness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.WeightAboveIdealForLocalness = float64(s1.WeightAboveIdealForLocalness)
	return nil
}

// CountryGeoLocation: Stores one location and all meta-data associated
// with that location.
type CountryGeoLocation struct {
	// ClickRadius50Percent: The radius (in miles) around the assigned
	// location that the document gets 50% of its clicks.
	ClickRadius50Percent int64 `json:"clickRadius50Percent,omitempty"`

	// Confidence: Confidence on the location. Ranges in [0.0, 1.0]. Cleared
	// during index creation.
	Confidence float64 `json:"confidence,omitempty"`

	// ConfidencePercent: Confidence mapped to [0, 100]. Converted to
	// integer for efficient storage. Populated during index creation.
	ConfidencePercent int64 `json:"confidencePercent,omitempty"`

	// InternalId: Used for compressed docloc data. In compressed data,
	// instead of location_info, only an integer ID for that LocationInfo is
	// stored. A separate lookup table is used to get full LocationInfo from
	// the internal ID.
	InternalId int64 `json:"internalId,omitempty"`

	LocationInfo *CountryLocationInfo `json:"locationInfo,omitempty"`

	// PropagatedFromASubpage: True if this location is assigned to one of
	// the subpages, and not to the page itself. If the total number of
	// locations assigned to all the subpages of a page is small (usually up
	// to 5), then that page also gets assigned those locations, and this
	// flag is set for those locations.
	PropagatedFromASubpage bool `json:"propagatedFromASubpage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClickRadius50Percent") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClickRadius50Percent") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CountryGeoLocation) MarshalJSON() ([]byte, error) {
	type NoMethod CountryGeoLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountryGeoLocation) UnmarshalJSON(data []byte) error {
	type NoMethod CountryGeoLocation
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// CountryGeoLocations: List of locations assigned to a document.
type CountryGeoLocations struct {
	GeoLocation []*CountryGeoLocation `json:"geoLocation,omitempty"`

	// IsNonLocationSpecific: This will be set to true for documents which
	// receive several clicks but are not assigned any location because the
	// click distribution is flat. Typical examples are global sites like
	// facebook.com, chains like walmart.com, informational sites like
	// wikipedia.org etc. This flag is not propagated to deeper pages since
	// this signal is meant to indicate that a website or a part of website
	// is conclusively non-local, so propagating this information to deeper
	// pages does not make sense. If this flag is set, then the only
	// possible geo_location will be the ones which are
	// propagated_from_a_subpage.
	IsNonLocationSpecific bool `json:"isNonLocationSpecific,omitempty"`

	// PropagationDepthFromParent: Depth of the URL from it's nearest parent
	// in GeoLocation data. Webpages inherhit locations from their parent
	// pages. For example, if foo.com/a is assigned location L1, and
	// foo.com/a/b is not assigned any location, then http://www.foo.com/a/b
	// inherits location L1 from it's nearest parent foo.com/a in
	// GeoLocation data. This attribute is the distance from the nearest
	// parent which is present in GeoLocation data. In this particular case,
	// it will be 1.
	PropagationDepthFromParent int64 `json:"propagationDepthFromParent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GeoLocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GeoLocation") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryGeoLocations) MarshalJSON() ([]byte, error) {
	type NoMethod CountryGeoLocations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CountryLocationInfo: This represents one location.
type CountryLocationInfo struct {
	// Center: The latitude and longitude of the conceptual center of the
	// location. For cities, this would be the center of the downtown, or
	// maybe the location of city hall. For states and countries it might be
	// the capital city. But there are no guarantees and this may be any
	// random point inside the location.
	Center *GeostorePointProto `json:"center,omitempty"`

	City string `json:"city,omitempty"`

	// Country: Human readable name hierarchy. Only the relevant fields will
	// be present. For example for city GeoLocations, sub_locality field
	// will not be present. Cleared during index creation.
	Country string `json:"country,omitempty"`

	County string `json:"county,omitempty"`

	// EnclosingStateFeatureId: Oyster feature ID of the enclosing state.
	// Cleared during index creation.
	EnclosingStateFeatureId *GeostoreFeatureIdProto `json:"enclosingStateFeatureId,omitempty"`

	// FeatureId: Oyster feature ID of the location. Cleared during index
	// creation.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	State string `json:"state,omitempty"`

	// StateIdFprint: 32 bit fingerprint of the feature id of the state of
	// this location. For cities and sub-localities it will be the enclosing
	// state. For state locations, it will be fingerprint of the feture-id
	// of the location itself. Populated during index creation.
	StateIdFprint int64 `json:"stateIdFprint,omitempty"`

	SubLocality string `json:"subLocality,omitempty"`

	// Type: Type of the location (sub-locality, city, state etc).
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_TRANSPORTATION" - ABSTRACT
	//   "TYPE_ROUTE" - A route is any section of road (or rails, etc.) that
	// has a name. This includes city streets as well as highways. Road
	// segments can belong to multiple routes (e.g. El Camino, CA-82).
	//   "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE" - DEPRECATED
	//   "TYPE_HIGHWAY" - ABSTRACT
	//   "TYPE_HIGHWAY_1"
	//   "TYPE_HIGHWAY_2"
	//   "TYPE_HIGHWAY_3"
	//   "TYPE_HIGHWAY_4"
	//   "TYPE_HIGHWAY_5"
	//   "TYPE_HIGHWAY_6"
	//   "TYPE_HIGHWAY_7"
	//   "TYPE_HIGHWAY_8"
	//   "TYPE_HIGHWAY_9"
	//   "TYPE_BICYCLE_ROUTE" - A designated bicycle route, whose segments
	// may consist of any combination of bicycle paths, bicycle lanes, or
	// city streets.
	//   "TYPE_TRAIL" - A designated trail, which may consist of paved
	// walkways, dirt paths, fire road, streets or highways, etc.
	//   "TYPE_SEGMENT" - ABSTRACT
	//   "TYPE_ROAD"
	//   "TYPE_RAILWAY" - Railroads use several different incompatible track
	// types.
	//   "TYPE_STANDARD_TRACK"
	//   "TYPE_JR_TRACK"
	//   "TYPE_NARROW_TRACK"
	//   "TYPE_MONORAIL_TRACK"
	//   "TYPE_SUBWAY_TRACK"
	//   "TYPE_LIGHT_RAIL_TRACK"
	//   "TYPE_BROAD_TRACK"
	//   "TYPE_HIGH_SPEED_RAIL"
	//   "TYPE_TROLLEY_TRACK" - Tracks for streetcars, cable-cars, etc.
	// Ferries are services that are part of the road network but are not
	// roads. They typically involve fares and scheduled departure times.
	//   "TYPE_FERRY" - ABSTRACT
	//   "TYPE_FERRY_BOAT" - The vast majority of ferries are ferry boats.
	//   "TYPE_FERRY_TRAIN" - Also called a "car transport", a ferry train
	// is a rail service that carries passengers and their vehicles across
	// undrivable terrain. The Channel Tunnel ("Chunnel") is the most famous
	// example, but they are also common in the Alps where they connect
	// neighboring valleys otherwise separated by impassable mountains.
	//   "TYPE_VIRTUAL_SEGMENT" - Any plausible 1-dimensional path through a
	// 2+ dimensional space, for the purposes of making graph-search-based
	// routing possible. Such segments can be used to model paths through
	// parking lots, squares, floors of buildings and other areas.
	//   "TYPE_INTERSECTION" - An intersection consists of a collection of
	// segments that terminate at the same location. This is topological
	// definition: it may not match what a typical user would think of as an
	// "intersection". See TYPE_INTERSECTION_GROUP, below, for more
	// information. Each segment terminating at an intersection has an
	// "endpoint type" that specifies how that segment is terminated: stop
	// sign, yield sign, three-way light, etc.
	//   "TYPE_TRANSIT" - ABSTRACT
	//   "TYPE_TRANSIT_STATION" - DEPRECATED
	//   "TYPE_BUS_STATION" - DEPRECATED
	//   "TYPE_TRAMWAY_STATION" - DEPRECATED
	//   "TYPE_TRAIN_STATION" - DEPRECATED
	//   "TYPE_SUBWAY_STATION" - DEPRECATED
	//   "TYPE_FERRY_TERMINAL" - DEPRECATED
	//   "TYPE_AIRPORT" - DEPRECATED
	//   "TYPE_AIRPORT_CIVIL" - DEPRECATED
	//   "TYPE_AIRPORT_MILITARY" - DEPRECATED
	//   "TYPE_AIRPORT_MIXED" - DEPRECATED
	//   "TYPE_HELIPORT" - DEPRECATED
	//   "TYPE_SEAPLANE_BASE" - DEPRECATED
	//   "TYPE_AIRSTRIP" - DEPRECATED
	//   "TYPE_CABLE_CAR_STATION" - DEPRECATED
	//   "TYPE_GONDOLA_LIFT_STATION" - DEPRECATED
	//   "TYPE_FUNICULAR_STATION" - DEPRECATED
	//   "TYPE_SPECIAL_STATION" - DEPRECATED
	//   "TYPE_HORSE_CARRIAGE_STATION" - DEPRECATED
	//   "TYPE_MONORAIL_STATION" - DEPRECATED
	//   "TYPE_SEAPORT" - DEPRECATED
	//   "TYPE_TRANSIT_STOP" - DEPRECATED
	//   "TYPE_TRANSIT_TRIP" - DEPRECATED
	//   "TYPE_TRANSIT_DEPARTURE" - DEPRECATED
	//   "TYPE_TRANSIT_LEG" - DEPRECATED
	//   "TYPE_TRANSIT_LINE" - A transit line is a collection of transit
	// legs, associated with some invariant properties of the trips that run
	// over the legs. See also transitline.proto
	//   "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE" - TYPE_TRANSIT_AGENCY was
	// moved to 0xC91. This deprecated enum value still exists for debugging
	// purposes only.
	//   "TYPE_TRANSIT_TRANSFER" - DEPRECATED
	//   "TYPE_SEGMENT_PATH" - ABSTRACT
	//   "TYPE_ROAD_SIGN" - Road sign features have names, point geometry,
	// etc. They also have segment_path data (see below) which lists the
	// segments that refer to the sign. See segment.proto for the reference
	// from the segment to the road sign.
	//   "TYPE_INTERSECTION_GROUP" - Our TYPE_INTERSECTION feature, above,
	// models the point where one or more segments terminate. This is
	// topological definition: it may not match what a typical user would
	// think of as an "intersection". Consider the intersections where
	// Hayes, Market, Larkin, and 9th Street meet near (37.77765,
	// -122.41638) in San Francisco. Most people would probably consider
	// this a single feature, even though we model it as four separate
	// TYPE_INTERSECTION features. This TYPE_INTERSECTION_GROUP is used to
	// model the user's concept of a complex intersection.
	//   "TYPE_PATHWAY" - RESERVED
	//   "TYPE_RESTRICTION_GROUP" - A restriction group describes a set of
	// segment restrictions that belong together and have a name or an
	// associated event. See also restriction_group.proto
	//   "TYPE_TOLL_CLUSTER" - A toll cluster is either a single point on a
	// segment (represented as a point at the end of the segment that has
	// ENDPOINT_TOLL_BOOTH set) or a group of points on various road
	// segments in MapFacts that represents one or more lanes passing
	// through a toll fixture that all go to the same routing destination.
	// Each toll cluster should have at most a single price per payment
	// method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has
	// different prices for multiple routing destinations, drivers need to
	// be in the correct lane before passing through the toll fixture and
	// hence such a fixture is represented by multiple toll clusters. A toll
	// cluster does not necessarily represent a real-world entity, e.g. a
	// particular plaza/structure as perceived by humans. This is because a
	// plaza can be represented by more than one toll cluster. We require
	// toll clusters to have names, but they might be non-unique. For
	// example, a plaza might be represented by multiple toll clusters that
	// may have the same plaza name. For further details, please see
	// go/toll-cluster-schema.
	//   "TYPE_POLITICAL" - ABSTRACT
	//   "TYPE_COUNTRY"
	//   "TYPE_ADMINISTRATIVE_AREA" - ABSTRACT
	//   "TYPE_ADMINISTRATIVE_AREA1"
	//   "TYPE_US_STATE" - DEPRECATED
	//   "TYPE_GB_COUNTRY" - DEPRECATED
	//   "TYPE_JP_TODOUFUKEN" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA2"
	//   "TYPE_GB_FORMER_POSTAL_COUNTY" - DEPRECATED
	//   "TYPE_GB_TRADITIONAL_COUNTY" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA3"
	//   "TYPE_ADMINISTRATIVE_AREA4"
	//   "TYPE_ADMINISTRATIVE_AREA5"
	//   "TYPE_ADMINISTRATIVE_AREA6"
	//   "TYPE_ADMINISTRATIVE_AREA7"
	//   "TYPE_ADMINISTRATIVE_AREA8"
	//   "TYPE_ADMINISTRATIVE_AREA9"
	//   "TYPE_COLLOQUIAL_AREA" - e.g. Silicon Valley
	//   "TYPE_RESERVATION" - A reservation is a region collectively held or
	// governed by indigenous people and officially recognized by the
	// country’s government at the federal or state level. A reservation
	// may be fully contained within an administrative feature or partially
	// contained within two or more. These regions are referred to by
	// different categorical names depending on country and even by state,
	// including but not limited to: “Indian Reservations”, “Indian
	// Reserves”, “Land Claim Settlement Lands”, “Indian Lands”,
	// “Treaty Lands”, “Indigenous Territories”, etc. A reservation
	// is not a historic indigenous territory boundary or a region which has
	// applied for land rights but has not yet received official
	// recognition.
	//   "TYPE_LOCALITY"
	//   "TYPE_GB_POST_TOWN" - DEPRECATED
	//   "TYPE_JP_GUN" - DEPRECATED
	//   "TYPE_JP_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_JP_SUB_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_COLLOQUIAL_CITY" - An entity widely considered to be a city,
	// that may itself be made up of smaller political entities, some of
	// which are cities/towns/villages themselves. For example, the
	// colloquial view of Sydney, Australia actually comprises many smaller
	// cities, but is regarded as a city itself. This type is not suitable
	// for modeling official metro-/micropolitan or other statistical areas.
	//   "TYPE_SUBLOCALITY" - ABSTRACT
	//   "TYPE_US_BOROUGH" - DEPRECATED
	//   "TYPE_GB_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_OOAZA" - DEPRECATED
	//   "TYPE_JP_KOAZA" - DEPRECATED
	//   "TYPE_JP_GAIKU" - DEPRECATED
	//   "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_CHIBAN" - DEPRECATED
	//   "TYPE_JP_EDABAN" - DEPRECATED
	//   "TYPE_SUBLOCALITY1"
	//   "TYPE_SUBLOCALITY2"
	//   "TYPE_SUBLOCALITY3"
	//   "TYPE_SUBLOCALITY4"
	//   "TYPE_SUBLOCALITY5"
	//   "TYPE_NEIGHBORHOOD"
	//   "TYPE_CONSTITUENCY"
	//   "TYPE_DESIGNATED_MARKET_AREA" - Designated Market Areas (or DMAs)
	// are used by marketing and ratings companies (such as the Nielsen
	// Media Research company) to describe geographical regions (such as the
	// greater New York metropolitan area) that are covered by a set of
	// television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In
	// the United States, DMAs should have a DMA numeric ID name, tagged
	// with the FLAG_DESIGNATED_MARKET_AREA_ID flag.
	//   "TYPE_SCHOOL_DISTRICT"
	//   "TYPE_LAND_PARCEL"
	//   "TYPE_DISPUTED_AREA" - Eventually we'll have more data for disputed
	// areas (e.g., who makes claims on the area, who has de facto control,
	// etc.). For the moment, we just define a type so we can simply mark
	// areas as disputed.
	//   "TYPE_POLICE_JURISDICTION" - Boundaries representing the
	// jurisdiction of a particular police station.
	//   "TYPE_STATISTICAL_AREA" - An area used for aggregating statistical
	// data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a
	// third nibble so we can add an abstract parent above it later if need
	// be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as
	// TYPE_STATISTICAL_AREA1).
	//   "TYPE_CONSTITUENCY_FUTURE" - DEPRECATED
	//   "TYPE_PARK" - DEPRECATED
	//   "TYPE_GOLF_COURSE" - DEPRECATED
	//   "TYPE_LOCAL_PARK" - DEPRECATED
	//   "TYPE_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_MONUMENT" - DEPRECATED
	//   "TYPE_NATIONAL_FOREST" - DEPRECATED
	//   "TYPE_PROVINCIAL_PARK" - DEPRECATED
	//   "TYPE_PROVINCIAL_FOREST" - DEPRECATED
	//   "TYPE_CAMPGROUNDS" - DEPRECATED
	//   "TYPE_HIKING_AREA" - DEPRECATED
	//   "TYPE_BUSINESS" - DEPRECATED
	//   "TYPE_GOVERNMENT" - DEPRECATED
	//   "TYPE_BORDER_CROSSING" - DEPRECATED
	//   "TYPE_CITY_HALL" - DEPRECATED
	//   "TYPE_COURTHOUSE" - DEPRECATED
	//   "TYPE_EMBASSY" - DEPRECATED
	//   "TYPE_LIBRARY" - DEPRECATED
	//   "TYPE_SCHOOL" - DEPRECATED
	//   "TYPE_UNIVERSITY" - DEPRECATED
	//   "TYPE_EMERGENCY" - DEPRECATED
	//   "TYPE_HOSPITAL" - DEPRECATED
	//   "TYPE_PHARMACY" - DEPRECATED
	//   "TYPE_POLICE" - DEPRECATED
	//   "TYPE_FIRE" - DEPRECATED
	//   "TYPE_DOCTOR" - DEPRECATED
	//   "TYPE_DENTIST" - DEPRECATED
	//   "TYPE_VETERINARIAN" - DEPRECATED
	//   "TYPE_TRAVEL_SERVICE" - DEPRECATED
	//   "TYPE_LODGING" - DEPRECATED
	//   "TYPE_RESTAURANT" - DEPRECATED
	//   "TYPE_GAS_STATION" - DEPRECATED
	//   "TYPE_PARKING" - DEPRECATED
	//   "TYPE_POST_OFFICE" - DEPRECATED
	//   "TYPE_REST_AREA" - DEPRECATED
	//   "TYPE_CASH_MACHINE" - DEPRECATED
	//   "TYPE_CAR_RENTAL" - DEPRECATED
	//   "TYPE_CAR_REPAIR" - DEPRECATED
	//   "TYPE_SHOPPING" - DEPRECATED
	//   "TYPE_GROCERY" - DEPRECATED
	//   "TYPE_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_ECO_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_BIRD_WATCHING" - DEPRECATED
	//   "TYPE_FISHING" - DEPRECATED
	//   "TYPE_HUNTING" - DEPRECATED
	//   "TYPE_NATURE_RESERVE" - DEPRECATED
	//   "TYPE_TEMPLE" - DEPRECATED
	//   "TYPE_CHURCH" - DEPRECATED
	//   "TYPE_GURUDWARA" - DEPRECATED
	//   "TYPE_HINDU_TEMPLE" - DEPRECATED
	//   "TYPE_MOSQUE" - DEPRECATED
	//   "TYPE_SYNAGOGUE" - DEPRECATED
	//   "TYPE_STADIUM" - DEPRECATED
	//   "TYPE_BAR" - DEPRECATED
	//   "TYPE_MOVIE_RENTAL" - DEPRECATED
	//   "TYPE_COFFEE" - DEPRECATED
	//   "TYPE_GOLF" - DEPRECATED
	//   "TYPE_BANK" - DEPRECATED
	//   "TYPE_DOODLE" - DEPRECATED
	//   "TYPE_GROUNDS" - DEPRECATED
	//   "TYPE_AIRPORT_GROUNDS" - DEPRECATED
	//   "TYPE_BUILDING_GROUNDS" - DEPRECATED
	//   "TYPE_CEMETERY" - DEPRECATED
	//   "TYPE_HOSPITAL_GROUNDS" - DEPRECATED
	//   "TYPE_INDUSTRIAL" - DEPRECATED
	//   "TYPE_MILITARY" - DEPRECATED
	//   "TYPE_SHOPPING_CENTER" - DEPRECATED
	//   "TYPE_SPORTS_COMPLEX" - DEPRECATED
	//   "TYPE_UNIVERSITY_GROUNDS" - DEPRECATED
	//   "TYPE_DEPRECATED_TARMAC" - DEPRECATED
	//   "TYPE_ENCLOSED_TRAFFIC_AREA" - DEPRECATED
	//   "TYPE_PARKING_LOT" - DEPRECATED
	//   "TYPE_PARKING_GARAGE" - DEPRECATED
	//   "TYPE_OFF_ROAD_AREA" - DEPRECATED
	//   "TYPE_BORDER" - A line representing the boundary between two
	// features. See border.proto for details.
	//   "TYPE_BUILDING" - DEPRECATED
	//   "TYPE_GEOCODED_ADDRESS" - An association of a point with an
	// address, with no other information.
	//   "TYPE_NATURAL_FEATURE" - ABSTRACT
	//   "TYPE_TERRAIN" - Expanses of land that share common surface
	// attributes. These areas would look more or less uniform from a high
	// altitude.
	//   "TYPE_SAND"
	//   "TYPE_BEACH"
	//   "TYPE_DUNE"
	//   "TYPE_ROCKY"
	//   "TYPE_ICE"
	//   "TYPE_GLACIER"
	//   "TYPE_BUILT_UP_AREA" - Terrain that looks populated.
	//   "TYPE_VEGETATION" - Terrain that is covered in vegetation.
	//   "TYPE_SHRUBBERY"
	//   "TYPE_WOODS"
	//   "TYPE_AGRICULTURAL"
	//   "TYPE_GRASSLAND"
	//   "TYPE_TUNDRA"
	//   "TYPE_DESERT"
	//   "TYPE_SALT_FLAT" - A flat expanse of salt left by the evaporation
	// of a body of salt water.
	//   "TYPE_WATER" - Features can be TYPE_WATER if we don't have enough
	// information to properly type the body of water. TYPE_WATER is also
	// used as the type for child features that compose a TYPE_RIVER
	// feature.
	//   "TYPE_OCEAN" - One of the large salt-water bodies that covers most
	// of the globe.
	//   "TYPE_BAY" - An ocean subdivision formed by a coastal indentation.
	// Includes coves and gulfs.
	//   "TYPE_BIGHT" - An open body of water formed by a slight coastal
	// indentation.
	//   "TYPE_LAGOON"
	//   "TYPE_SEA" - An ocean subdivision more or less confined by land and
	// islands.
	//   "TYPE_STRAIT" - A long narrow ocean subdivision. Includes sounds.
	//   "TYPE_INLET"
	//   "TYPE_FJORD"
	//   "TYPE_LAKE" - An inland body of standing water.
	//   "TYPE_SEASONAL_LAKE" - A lake that dries up part of the year.
	//   "TYPE_RESERVOIR" - An artificial body of water, possibly created by
	// a dam, often used for irrigation or house use.
	//   "TYPE_POND"
	//   "TYPE_RIVER" - An inland body of moving water, or parts associated
	// with it in which there is little or no current (backwater).
	//   "TYPE_RAPIDS"
	//   "TYPE_DISTRIBUTARY" - A branch which flows away from the main
	// river. Includes deltas.
	//   "TYPE_CONFLUENCE" - A place where two or more rivers join.
	//   "TYPE_WATERFALL"
	//   "TYPE_SPRING" - A place where ground water flows naturally out of
	// the ground.
	//   "TYPE_GEYSER"
	//   "TYPE_HOT_SPRING"
	//   "TYPE_SEASONAL_RIVER" - A river that dries up part of the year.
	//   "TYPE_WADI" - A dry riverbed that occasionally receives
	// flashfloods.
	//   "TYPE_ESTUARY" - A place at the end of a river where fresh and salt
	// water mix. Includes tidal creeks and limans.
	//   "TYPE_WETLAND" - Land that is usually flooded. Includes bogs,
	// marshes, flats, moors, and swamps.
	//   "TYPE_WATER_NAVIGATION"
	//   "TYPE_FORD" - A shallow place where water may be waded through.
	//   "TYPE_CANAL" - A narrow passage used by boats. Normally artificial.
	//   "TYPE_HARBOR" - A deep place near a shore where ships commonly drop
	// anchor.
	//   "TYPE_CHANNEL" - A deep part in a body of water that is suitable
	// for navigation. Includes narrows.
	//   "TYPE_REEF" - Rocks, coral, sandbars, or other features beneath the
	// surface of the water that pose a hazard to passing ships. Includes
	// shoals.
	//   "TYPE_REEF_FLAT" - A relatively shallow zone of the back reef
	// located closest to the shore, that may be exposed at low tide.
	//   "TYPE_REEF_GROWTH" - A small section of rocks, coral, sandbars, or
	// other features beneath the surface of the water that forms part of a
	// reef.
	//   "TYPE_REEF_EXTENT" - The full extent of the reef complex.
	//   "TYPE_REEF_ROCK_SUBMERGED" - A submerged rock in the water.
	//   "TYPE_IRRIGATION" - Man-made (and sometimes natural) channels used
	// to move water. This type was used for both dam structures and water
	// that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for
	// dam structures and TYPE_RESERVOIR for water.
	//   "TYPE_DAM" - DEPRECATED
	//   "TYPE_DRINKING_WATER"
	//   "TYPE_CURRENT" - Includes overfalls.
	//   "TYPE_WATERING_HOLE" - A natural depression filled with water where
	// animals come to drink.
	//   "TYPE_TECTONIC" - ABSTRACT This type is incorrectly under
	// TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now
	// fixed. See TYPE_WATERING_HOLE for the replacement.
	//   "TYPE_WATERING_HOLE_DEPRECATED" - DEPRECATED
	//   "TYPE_VOLCANO"
	//   "TYPE_LAVA_FIELD"
	//   "TYPE_FISSURE"
	//   "TYPE_FAULT"
	//   "TYPE_LAND_MASS"
	//   "TYPE_CONTINENT"
	//   "TYPE_ISLAND"
	//   "TYPE_ATOLL"
	//   "TYPE_OCEAN_ROCK_EXPOSED" - An exposed rock in the water.
	//   "TYPE_CAY" - A small, low-elevation, sandy island formed on the
	// surface of coral reefs
	//   "TYPE_PENINSULA" - A stretch of land projecting into water.
	// Includes capes and spits.
	//   "TYPE_ISTHMUS" - A strip of land connecting two larger land masses,
	// such as continents.
	//   "TYPE_ELEVATED" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_PEAK" - Elevations that have a distinctive peak.
	//   "TYPE_NUNATAK" - A peak or ridge of a mountain that extends through
	// a glacier.
	//   "TYPE_SPUR" - A subsidiary peak of a mountain.
	//   "TYPE_PASS" - A route over an otherwise difficult to traverse
	// feature. Includes saddle.
	//   "TYPE_PLATEAU" - Elevations that are flat on top. Includes mesas
	// and buttes.
	//   "TYPE_RIDGE" - A ridge is a geographical feature consisting of a
	// chain of mountains or hills that form a continuous elevated crest
	// with a single ridgeline for some distance.
	//   "TYPE_RAVINE" - Steep declines usually carved by erosion. Includes
	// valleys, canyons, ditches, and gorges.
	//   "TYPE_CRATER" - Depressions causes by impact, explosion, and
	// sometimes sink-holes.
	//   "TYPE_KARST" - Topography formed on limestone and gypsum by
	// dissolution with sinkholes, caves, etc.
	//   "TYPE_CLIFF" - A vertical or nearly vertical slope. Includes
	// escarpments.
	//   "TYPE_VISTA" - An elevated place that is notable for having a good
	// view. Raster digital elevation data. This is not a type to be used by
	// providers or consumed by clients.
	//   "TYPE_DIGITAL_ELEVATION_MODEL" - RESERVED
	//   "TYPE_UPLAND" - Land along streams higher than the alluvial plain
	// or stream terrace.
	//   "TYPE_TERRACE"
	//   "TYPE_SLOPE" - Land not so steep as a cliff, but changing
	// elevation. Includes slides.
	//   "TYPE_CONTOUR_LINE" - All the points on the polygon are at the same
	// elevation.
	//   "TYPE_PAN" - A near-level shallow, natural depression or basin,
	// usually containing an intermittent lake, pond, or pool.
	//   "TYPE_UNSTABLE_HILLSIDE"
	//   "TYPE_MOUNTAIN_RANGE" - A series of mountains or hills ranged in a
	// line and connected by high ground. Mountain ranges usually consist of
	// many smaller ridges. For example, the Himalayas, the Andes. the Alps,
	// etc.
	//   "TYPE_UNDERSEA" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_SUBMARINE_SEAMOUNT" - includes peaks, ranges, and spurs
	//   "TYPE_SUBMARINE_RIDGE"
	//   "TYPE_SUBMARINE_GAP" - includes saddles
	//   "TYPE_SUBMARINE_PLATEAU"
	//   "TYPE_SUBMARINE_DEEP"
	//   "TYPE_SUBMARINE_VALLEY" - includes trenches and troughs
	//   "TYPE_SUBMARINE_BASIN"
	//   "TYPE_SUBMARINE_SLOPE"
	//   "TYPE_SUBMARINE_CLIFF"
	//   "TYPE_SUBMARINE_PLAIN"
	//   "TYPE_SUBMARINE_FRACTURE_ZONE"
	//   "TYPE_CAVE" - Don't use 0xA7. Use 8 bits for additional types under
	// TYPE_NATURAL_FEATURE, so we don't run out of space. The following are
	// miscellaneous natural features that don't fit any of the categories
	// above.
	//   "TYPE_ROCK"
	//   "TYPE_ARCHIPELAGO" - A feature representing a group or chain of
	// islands.
	//   "TYPE_POSTAL" - ABSTRACT
	//   "TYPE_POSTAL_CODE" - This is the type for postal codes which are
	// complete and independent enough that there should be a feature for
	// them (e.g. US 5-digit ZIP codes). For even more detailed suffixes
	// that further subdivide a postal code (such as the +4 component in US
	// ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX
	// address component. When a range or set of postal codes share the same
	// geographical area, e.g. because a precise subdivision does not exist
	// or this subdivision is unknown, this type is used for each individual
	// postal code.
	//   "TYPE_POSTAL_CODE_PREFIX" - A prefix portion of a postal code which
	// does not meet the requirements for TYPE_POSTAL_CODE, but which is
	// useful to search for, for example UK outcodes.
	//   "TYPE_PREMISE" - DEPRECATED
	//   "TYPE_SUB_PREMISE" - DEPRECATED This is deprecated and we want to
	// use TYPE_COMPOUND_SECTION instead.
	//   "TYPE_SUITE" - DEPRECATED
	//   "TYPE_POST_TOWN" - The term "post town" is used for a
	// locality-like-entity that is only used for postal addresses.
	//   "TYPE_POSTAL_ROUND" - DEPRECATED
	//   "TYPE_META_FEATURE" - ABSTRACT
	//   "TYPE_DATA_SOURCE" - Every data source used in constructing a data
	// repository has a corresponding feature that provides more information
	// about that data source. The extra information is stored in the
	// optional data_source field below.
	//   "TYPE_LOCALE" - A locale feature provides region specific
	// conventions such as preferred language and formatting details for
	// time, date, and currency values. Locales aren't necessary defined by
	// physical geographic features, so they are classified as
	// meta-features.
	//   "TYPE_TIMEZONE" - A timezone feature is used to specify the region
	// covering an international timezone. When a point is covered by
	// multiple timezone features, the most specific one can be used to
	// compute the local time at this point. Most specific implies a much
	// smaller region or the one that is closer to the center. A feature's
	// timezone can be specified in the repeated related_timezone field.
	//   "TYPE_BUSINESS_CHAIN" - A business chain feature is used to
	// represent a chain, e.g. Starbucks, McDonald's, etc. Other features
	// representing specific stores/franchises of this chain may refer to
	// one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly
	// reserved to commercial chains but can also be used to model
	// organizations such as the Red Cross or the United Nations.
	//   "TYPE_PHONE_NUMBER_PREFIX" - A phone number prefix feature is used
	// to specify the region where phone numbers (typically fixed-line
	// numbers) must begin with a certain prefix. Any phone number prefix
	// down to any level of granularity could be represented by this type.
	//   "TYPE_PHONE_NUMBER_AREA_CODE" - A phone number area code is a
	// prefix which also coincides with the area code, or national
	// destination code, of a particular region.
	//   "TYPE_BUSINESS_CORRIDOR" - A Business Corridor is a dense cluster
	// of semantically similar establishments. TYPE_BUSINESS_CORRIDOR
	// features are distinguished from TYPE_COLLOQUIAL_AREA features because
	// the corridors are not under the political hierarchy, are allowed to
	// be nameless, and may not correspond to well-known real world
	// locations. For more details, see go/geo-corridors-schema.
	//   "TYPE_ADDRESS_TEMPLATE" - An address template feature provides
	// region-specific conventions for structuring addresses. These features
	// aren't necessarily defined by physical geographic features, so they
	// are classified as meta-features.
	//   "TYPE_TRANSIT_AGENCY" - A transit agency operates a number of
	// lines, typically all in the same city, region or country. See also
	// transitagency.proto
	//   "TYPE_FUTURE_GEOMETRY" - A feature whose geometry is planned to
	// replace the geometry on another feature.
	//   "TYPE_EVENT" - DEPRECATED
	//   "TYPE_EARTHQUAKE" - DEPRECATED
	//   "TYPE_HURRICANE" - DEPRECATED
	//   "TYPE_WEATHER_CONDITION" - DEPRECATED
	//   "TYPE_TRANSIENT" - RESERVED
	//   "TYPE_ENTRANCE" - A portal of entry or exit to another feature.
	// Examples: - Subway station entrance. - Parking lot entrance.
	//   "TYPE_CARTOGRAPHIC" - Cartographic features are used to capture
	// real-world objects for which there is no current desire to model any
	// specific attributes. These are only useful to make the map tiles look
	// pretty.
	//   "TYPE_HIGH_TENSION" - DEPRECATED
	//   "TYPE_SKI_TRAIL" - Also see skitrail.proto
	//   "TYPE_SKI_LIFT" - Also see skilift.proto
	//   "TYPE_SKI_BOUNDARY" - Also see skiboundary.proto
	//   "TYPE_WATERSHED_BOUNDARY"
	//   "TYPE_TARMAC" - Starting with TYPE_TARMAC, we use longer IDs, so
	// that we can expand the number of feature types under
	// TYPE_CARTOGRAPHIC.
	//   "TYPE_WALL" - Use TYPE_COMPOUND_GROUND and appropriate gcids for
	// the next two.
	//   "TYPE_PICNIC_AREA" - DEPRECATED
	//   "TYPE_PLAY_GROUND" - DEPRECATED
	//   "TYPE_TRAIL_HEAD"
	//   "TYPE_GOLF_TEEING_GROUND" - Sub-types within a golf course.
	//   "TYPE_GOLF_PUTTING_GREEN"
	//   "TYPE_GOLF_ROUGH"
	//   "TYPE_GOLF_SAND_BUNKER"
	//   "TYPE_GOLF_FAIRWAY"
	//   "TYPE_GOLF_HOLE" - Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop
	// for golf shops instead.
	//   "TYPE_DEPRECATED_GOLF_SHOP" - DEPRECATED
	//   "TYPE_CAMPING_SITE" - DEPRECATED
	//   "TYPE_DESIGNATED_BARBECUE_PIT"
	//   "TYPE_DESIGNATED_COOKING_AREA"
	//   "TYPE_CAMPFIRE_PIT"
	//   "TYPE_WATER_FOUNTAIN"
	//   "TYPE_LITTER_RECEPTACLE"
	//   "TYPE_LOCKER_AREA"
	//   "TYPE_ANIMAL_ENCLOSURE" - Subtype within a zoo - a cage or
	// fenced-off or otherwise delineated area containing animals.
	//   "TYPE_CARTOGRAPHIC_LINE" - A line for a cartographic detail. For
	// example the international date line. Such features should have
	// polyline geometry.
	//   "TYPE_ESTABLISHMENT" - ABSTRACT This type is being replaced by
	// TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2
	//   "TYPE_ESTABLISHMENT_GROUNDS" - DEPRECATED This type has been
	// replaced by TYPE_COMPOUND_BUILDING. For further details, see
	// go/oyster-compounds
	//   "TYPE_ESTABLISHMENT_BUILDING" - DEPRECATED
	//   "TYPE_ESTABLISHMENT_POI" - An establishment which has a address
	// (a.k.a. location or storefront). Note that it *may* also have a
	// service area (e.g. a restaurant that offers both dine-in and
	// delivery). This type of business is also known as a "hybrid" Service
	// Area Business. Establishment POIs can be referenced by TYPE_COMPOUND
	// features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the
	// reciprocal relation of the RELATION_OCCUPIES.
	//   "TYPE_ESTABLISHMENT_SERVICE" - A business without a storefront,
	// e.g. a plumber. It would normally not have a place that a customer
	// could visit to receive service, but it would have an area served by
	// the business. Also known as a "pure" Service Area Business.
	// NOTE(tcain): Using value 0xD441, since we could find ourselves with a
	// need to differentiate service areas from online-only at this level in
	// the future, but still benefit from being able to group those under a
	// common parent, disjoint from TYPE_ESTABLISHMENT_POI.
	//   "TYPE_CELESTIAL" - The root of types of features that are in the
	// sky, rather than on the earth. There will eventually be a hierarchy
	// of types here.
	//   "TYPE_ROAD_MONITOR" - Features responsible for monitoring traffic
	// on roads (usually for speed). Includes cameras at particular points
	// as well as monitors that cover larger spans. Features of this type
	// should have a corresponding gcid that specifies the correct subtype
	// (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was
	// originally named as TYPE_ROAD_CAMERA.
	//   "TYPE_PUBLIC_SPACES_AND_MONUMENTS" - ABSTRACT
	//   "TYPE_STATUE" - Note that this type does not distinguish the nature
	// of the statue (religious, historical, memorial, tourist, ...).
	//   "TYPE_TOWN_SQUARE" - Open space used for events, gathering, or as
	// market-place.
	//   "TYPE_LEVEL" - A feature used to represent a logical level, e.g.
	// floor.
	//   "TYPE_COMPOUND" - ABSTRACT
	//   "TYPE_COMPOUND_GROUNDS" - e.g. campus, compound, parcel.
	//   "TYPE_COMPOUND_BUILDING" - e.g. single family dwelling, office
	// building.
	//   "TYPE_COMPOUND_SECTION" - e.g. suite, room, hallway, cubicle.
	//   "TYPE_TERMINAL_POINT" - A terminal point represents a good location
	// for a user to meet a taxi, ridesharing vehicle, or general driver.
	//   "TYPE_REGULATED_AREA" - An area controlled in some way by an
	// authoritative source, such as a government-designated COVID
	// containment zone or an area under government sanctions. Features of
	// this type should have one or more gcids corresponding to their
	// specific regulation, and client handling of these features may vary
	// based on the type of regulation.
	//   "TYPE_LOGICAL_BORDER" - A grouping of TYPE_BORDER features ("border
	// segments"), which together represent a border between two features of
	// the same type.
	//   "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES" - DEPRECATED
	//   "TYPE_UNKNOWN" - A feature of completely unknown type. This should
	// only be used when absolutely necessary. One example in which this
	// type is useful is in the Chinese importer, which must heuristically
	// segment addresses into components - it often does not know what types
	// to make those components. Please note that the Oyster address
	// formatter does not currently support address components of
	// TYPE_UNKNOWN well.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Center") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Center") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryLocationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod CountryLocationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CountryMetroNBFeature: A metro feature, keyed by NavBoost feature id
// V2. This can be a metro id, a boost, or extended in the future to add
// probabilities or weights.
type CountryMetroNBFeature struct {
	// EnclosingProvinceGeotoken: The enclosing_province_geotoken is a 32
	// bit fingerprint of the state encosing the (metro) id. MetroId's can
	// span multiple states. Enclosing geotoken is filled in with the state
	// name for disambiguation. ProvinceGeotoken field is different as it
	// indicates an "interest". Format: 32 bit
	// fingerprint(__state__country).
	EnclosingProvinceGeotoken int64 `json:"enclosingProvinceGeotoken,omitempty"`

	// Id: A 32 bit navboost v2 feature id encoding (country, language,
	// metro). NavBoosterUtils class
	// (google3/quality/navboost/nav_booster_utils.h) provides functions to
	// decode this feature.
	Id int64 `json:"id,omitempty"`

	// Navboost: This is the multiplier to apply to the result for this
	// locale & query. NOTE: This is for serving purposes only and should
	// not be populated in the index.
	Navboost float64 `json:"navboost,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EnclosingProvinceGeotoken") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "EnclosingProvinceGeotoken") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryMetroNBFeature) MarshalJSON() ([]byte, error) {
	type NoMethod CountryMetroNBFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountryMetroNBFeature) UnmarshalJSON(data []byte) error {
	type NoMethod CountryMetroNBFeature
	var s1 struct {
		Navboost gensupport.JSONFloat64 `json:"navboost"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Navboost = float64(s1.Navboost)
	return nil
}

// CountryProvinceGeotoken: A 32 bit fingerprint of a state level
// geotoken. The geotoken is in the following format: __state__country.
// These indicate a page is of interest to these states/regions of a
// country. The use of message is to enable easy additions of
// probabilities or weights per metro id in the future.
type CountryProvinceGeotoken struct {
	Geotoken int64 `json:"geotoken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Geotoken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Geotoken") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CountryProvinceGeotoken) MarshalJSON() ([]byte, error) {
	type NoMethod CountryProvinceGeotoken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CountrySalientCountry: Salient Countries is an estimated probability
// (salience) of a doc to be relevant to a country. On this message,
// countries are represented as int32 (the format of this data is
// defined in i18n/identifiers/stableinternalregionconverter.cc).
// Salience is a value in range [0.0 - 1.0] in which 1.0 represents a
// high likelihood to be relevant to the country
type CountrySalientCountry struct {
	CompressedSalience int64 `json:"compressedSalience,omitempty"`

	CountryCode int64 `json:"countryCode,omitempty"`

	Salience float64 `json:"salience,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CompressedSalience")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompressedSalience") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CountrySalientCountry) MarshalJSON() ([]byte, error) {
	type NoMethod CountrySalientCountry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CountrySalientCountry) UnmarshalJSON(data []byte) error {
	type NoMethod CountrySalientCountry
	var s1 struct {
		Salience gensupport.JSONFloat64 `json:"salience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Salience = float64(s1.Salience)
	return nil
}

// CrawlerChangerateMultipleComponentDistribution: Proto contains
// parameters for a multiple component distributions, where each
// component has non-negative weight and the sum of component weights is
// 1.
type CrawlerChangerateMultipleComponentDistribution struct {
	Components []*CrawlerChangerateSingleComponentDistribution `json:"components,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Components") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Components") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateMultipleComponentDistribution) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateMultipleComponentDistribution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CrawlerChangerateSingleComponentDistribution: Proto contains
// parameters of a single component distribution.
type CrawlerChangerateSingleComponentDistribution struct {
	// LogScaling: Scaling factor to ensure the approximated posterior to
	// have the same scale as the product of prior and likelihood. This
	// value is used to compute posterior weights. Uses log scale to provide
	// a wider range. This field is for internal use only.
	LogScaling float64 `json:"logScaling,omitempty"`

	// Type: The type indicates the type of the distribution.
	//
	// Possible values:
	//   "LOG_GAMMA" - Log-Gamma distribution, where it assumes the log of
	// the values follow Gamma distribution. It uses extension gamma_params.
	//   "INV_GAMMA" - Inverse-Gamma distribution, where it assumes the
	// inverse of values follow Gamma distribution. It uses extension
	// gamma_params.
	//   "GAMMA" - Gamma distribution. It uses extension gamma_params.
	//   "LOG_NORMAL" - Log-Normal distribution. It uses extension
	// log_normal_params.
	Type string `json:"type,omitempty"`

	// Weight: The weight is only used in multiple component scenarios.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LogScaling") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LogScaling") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateSingleComponentDistribution) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateSingleComponentDistribution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CrawlerChangerateSingleComponentDistribution) UnmarshalJSON(data []byte) error {
	type NoMethod CrawlerChangerateSingleComponentDistribution
	var s1 struct {
		LogScaling gensupport.JSONFloat64 `json:"logScaling"`
		Weight     gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LogScaling = float64(s1.LogScaling)
	s.Weight = float64(s1.Weight)
	return nil
}

// CrawlerChangerateUrlChange: NEXT_TAG: 13
type CrawlerChangerateUrlChange struct {
	// AdditionalChangesMerged: Duplicate UrlChanges crawled within a
	// specified time range will be merged together. UrlChanges are
	// considered duplicates if the simhash, simhash_is_trusted, simhash_v2,
	// simhash_v2_is_trusted, and shingle_simhash are the same.
	// additional_changes_merged indiciates the number of duplicate
	// UrlChanges merged into this UrlChange.
	AdditionalChangesMerged int64 `json:"additionalChangesMerged,omitempty"`

	// FractionalTileChange: Deprecated fields. The fraction of tiles (0 to
	// 1) that changed.
	FractionalTileChange float64 `json:"fractionalTileChange,omitempty"`

	// Interval: The length in seconds of the change.
	Interval int64 `json:"interval,omitempty"`

	// OffDomainLinksChange: Whether the content of the off-domain links
	// changed.
	OffDomainLinksChange bool `json:"offDomainLinksChange,omitempty"`

	// OffDomainLinksCount: The new count of off-domain links, if they
	// changed.
	OffDomainLinksCount int64 `json:"offDomainLinksCount,omitempty"`

	// OnDomainLinksCount: The new count of on-domain links, if the count
	// changed.
	OnDomainLinksCount int64 `json:"onDomainLinksCount,omitempty"`

	// OnDomainLinksCountChange: Whether the number of on-domain links
	// changed.
	OnDomainLinksCountChange bool `json:"onDomainLinksCountChange,omitempty"`

	// ShingleSimhash: The old simhash value obtained from shingles.
	ShingleSimhash *IndexingConverterShingleFingerprint `json:"shingleSimhash,omitempty"`

	// Simhash: The simhash-v1 value. Use of simhash-v1 is deprecated, and
	// newer UrlChange should only contain simhash-v2. During this
	// transition period, UrlChange can contain either simhash or
	// simhash_v2. It is possible that previous UrlChange only contain
	// simhash-v1 and the next UrlChange only contain simhash-v2. In this
	// case, we skip that interval in our changerate computation.
	// [go/changerate-simhash-v2-migration]
	Simhash uint64 `json:"simhash,omitempty,string"`

	// SimhashIsTrusted: Whether the simhash-v1 should be trusted.
	SimhashIsTrusted bool `json:"simhashIsTrusted,omitempty"`

	// SimhashV2: The simhash-v2 value.
	SimhashV2 uint64 `json:"simhashV2,omitempty,string"`

	// SimhashV2IsTrusted: Whether the simhash-v2 value should be trusted.
	SimhashV2IsTrusted bool `json:"simhashV2IsTrusted,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalChangesMerged") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalChangesMerged")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateUrlChange) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateUrlChange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CrawlerChangerateUrlChange) UnmarshalJSON(data []byte) error {
	type NoMethod CrawlerChangerateUrlChange
	var s1 struct {
		FractionalTileChange gensupport.JSONFloat64 `json:"fractionalTileChange"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FractionalTileChange = float64(s1.FractionalTileChange)
	return nil
}

// CrawlerChangerateUrlChangerate: The next available field number is
// 22. To access the best estimate of change period, please use
// GetChangePeriod in predict-change-rate.h to select between this and
// other change period estimates below.
type CrawlerChangerateUrlChangerate struct {
	// ApproximatedPosterior: The approximated posterior distribution.
	ApproximatedPosterior *CrawlerChangerateMultipleComponentDistribution `json:"approximatedPosterior,omitempty"`

	// AverageChangeSignificance: The "significance" of the average change
	// we saw of this document (from 0 to 1). Influenced by content changes.
	// This can be used for prioritizing the crawl (higher significance
	// first).
	AverageChangeSignificance float64 `json:"averageChangeSignificance,omitempty"`

	// Changeperiod:
	// //////////////////////////////////////////////////////////////////////
	// ////// The classic changerate estimation.
	// //////////////////////////////////////////////////////////////////////
	// ////// The classic estimate of change period (in seconds). It is
	// computed by inserted a "fake" change and no-change interval as a
	// prior distribution. This field is generally not used and should NOT
	// be accessed directly. See above for correct method for determining
	// the change period estimate.
	Changeperiod int64 `json:"changeperiod,omitempty"`

	// Confidence: The confidence (between 0 and 1) in the changeperiod
	// guess.
	Confidence float64 `json:"confidence,omitempty"`

	// GlobalBasedChangePeriod:
	// //////////////////////////////////////////////////////////////////////
	// ////// The changerate estimation based on the global prior.
	// //////////////////////////////////////////////////////////////////////
	// ////// The global-based changeperiod. This is our estimate (in
	// seconds) for the average time between changes. It is computed using
	// the new prior method based on global_based_prior_period and the
	// global_based_prior_strength specified below. This is used for
	// computing pattern priors. Use pattern_based_change_period or
	// changeperiod fields for all other purposes.
	GlobalBasedChangePeriod int64 `json:"globalBasedChangePeriod,omitempty"`

	// GlobalBasedChangePeriodConfidence: The 'confidence' of the
	// global-based changeperiod. This is the n-th root of the posterior
	// evaluated at MAP point, where n is the number of history intervals.
	// For now, it is hard to interpret the meaning of the absolute values
	// of 'average' posterior cross different sets of data.
	GlobalBasedChangePeriodConfidence float64 `json:"globalBasedChangePeriodConfidence,omitempty"`

	// GlobalBasedPriorPeriod: The 2 parameters below specify the prior
	// employed in calculating the global_based_change_period. These values
	// are precomputed through an offline analysis and specified via flags.
	GlobalBasedPriorPeriod float64 `json:"globalBasedPriorPeriod,omitempty"`

	GlobalBasedPriorStrength float64 `json:"globalBasedPriorStrength,omitempty"`

	// LastChangeSignificance: The "significance" of the last change we saw
	// of this document (from 0 to 1). Influenced by content changes, etc.
	// This can be used for prioritizing the crawl (higher significance
	// first).
	LastChangeSignificance float64 `json:"lastChangeSignificance,omitempty"`

	// LastChanged: The last time (unix timestamp) we saw a changed copy of
	// the document. Provided iff we have seen the page change.
	LastChanged int64 `json:"lastChanged,omitempty"`

	// LastFetched: The last time (unix timestamp) we saw a fetched copy of
	// the document.
	LastFetched int64 `json:"lastFetched,omitempty"`

	// NumIntervals: The number of intervals we've seen for this document
	// (where an interval is two different versions).
	NumIntervals int64 `json:"numIntervals,omitempty"`

	// PatternBasedChangePeriod:
	// //////////////////////////////////////////////////////////////////////
	// ////// The changerate estimation based on the pattern prior.
	// //////////////////////////////////////////////////////////////////////
	// ////// The pattern-based changeperiod. This is our estimate (in
	// seconds) for the average time between changes. It is calculated based
	// on the pattern_based_prior_period and pattern_based_prior_strength
	// below. This quantity will eventually replace the old changeperiod
	// calculation.
	PatternBasedChangePeriod int64 `json:"patternBasedChangePeriod,omitempty"`

	// PatternBasedChangePeriodConfidence: The same as
	// global_based_change_period_confidence, except it is computed using
	// pattern based priors.
	PatternBasedChangePeriodConfidence float64 `json:"patternBasedChangePeriodConfidence,omitempty"`

	// PatternBasedLowerChangePeriod: The lower edge of a confidence
	// interval for the pattern-based change period.
	PatternBasedLowerChangePeriod int64 `json:"patternBasedLowerChangePeriod,omitempty"`

	// PatternBasedPriorPeriod: The 2 parameters below specify the prior
	// employed in calculating the pattern_based_change_period. These values
	// are calculated in a separate process and looked up based on the URL
	// pattern.
	PatternBasedPriorPeriod float64 `json:"patternBasedPriorPeriod,omitempty"`

	PatternBasedPriorStrength float64 `json:"patternBasedPriorStrength,omitempty"`

	// PatternChangePeriodVersion: The version number of the algorithm,
	// refer to ChangePeriodVersion for more information.
	PatternChangePeriodVersion int64 `json:"patternChangePeriodVersion,omitempty"`

	// Type:
	// //////////////////////////////////////////////////////////////////////
	// ////// Basic information of a document.
	// //////////////////////////////////////////////////////////////////////
	// ////// The type of the document determined by crawl histories, refer
	// to TYPE for more information.
	Type int64 `json:"type,omitempty"`

	// UgcChangePeriod:
	// //////////////////////////////////////////////////////////////////////
	// ////// The UGC changerate estimation.
	// //////////////////////////////////////////////////////////////////////
	// ////// Information on change period generated from user generated
	// content (UGC) change history.
	UgcChangePeriod int64 `json:"ugcChangePeriod,omitempty"`

	UgcChangePeriodConfidence float64 `json:"ugcChangePeriodConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ApproximatedPosterior") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApproximatedPosterior") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateUrlChangerate) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateUrlChangerate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *CrawlerChangerateUrlChangerate) UnmarshalJSON(data []byte) error {
	type NoMethod CrawlerChangerateUrlChangerate
	var s1 struct {
		AverageChangeSignificance          gensupport.JSONFloat64 `json:"averageChangeSignificance"`
		Confidence                         gensupport.JSONFloat64 `json:"confidence"`
		GlobalBasedChangePeriodConfidence  gensupport.JSONFloat64 `json:"globalBasedChangePeriodConfidence"`
		GlobalBasedPriorPeriod             gensupport.JSONFloat64 `json:"globalBasedPriorPeriod"`
		GlobalBasedPriorStrength           gensupport.JSONFloat64 `json:"globalBasedPriorStrength"`
		LastChangeSignificance             gensupport.JSONFloat64 `json:"lastChangeSignificance"`
		PatternBasedChangePeriodConfidence gensupport.JSONFloat64 `json:"patternBasedChangePeriodConfidence"`
		PatternBasedPriorPeriod            gensupport.JSONFloat64 `json:"patternBasedPriorPeriod"`
		PatternBasedPriorStrength          gensupport.JSONFloat64 `json:"patternBasedPriorStrength"`
		UgcChangePeriodConfidence          gensupport.JSONFloat64 `json:"ugcChangePeriodConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageChangeSignificance = float64(s1.AverageChangeSignificance)
	s.Confidence = float64(s1.Confidence)
	s.GlobalBasedChangePeriodConfidence = float64(s1.GlobalBasedChangePeriodConfidence)
	s.GlobalBasedPriorPeriod = float64(s1.GlobalBasedPriorPeriod)
	s.GlobalBasedPriorStrength = float64(s1.GlobalBasedPriorStrength)
	s.LastChangeSignificance = float64(s1.LastChangeSignificance)
	s.PatternBasedChangePeriodConfidence = float64(s1.PatternBasedChangePeriodConfidence)
	s.PatternBasedPriorPeriod = float64(s1.PatternBasedPriorPeriod)
	s.PatternBasedPriorStrength = float64(s1.PatternBasedPriorStrength)
	s.UgcChangePeriodConfidence = float64(s1.UgcChangePeriodConfidence)
	return nil
}

type CrawlerChangerateUrlHistory struct {
	// Change: All the changes we've seen for this URL.
	Change []*CrawlerChangerateUrlChange `json:"change,omitempty"`

	// LatestVersion: The latest version we've seen.
	LatestVersion *CrawlerChangerateUrlVersion `json:"latestVersion,omitempty"`

	// Url: This field in only set in 'url_history' column of Union
	// repository to avoid having to read CompositeDocs.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Change") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Change") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateUrlHistory) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateUrlHistory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CrawlerChangerateUrlVersion: NEXT_TAG: 15
type CrawlerChangerateUrlVersion struct {
	// AdditionalChangesMerged: Same as the field in UrlChange. This allows
	// us to merge identical UrlVersions into a single UrlVersion.
	AdditionalChangesMerged int64 `json:"additionalChangesMerged,omitempty"`

	// ContentType: The content type of the page.
	ContentType int64 `json:"contentType,omitempty"`

	// IsImsNotModified: Whether this is an IMS response (a 304, not
	// modified).
	IsImsNotModified bool `json:"isImsNotModified,omitempty"`

	// LastModified: The date from the LastModified header, if present.
	LastModified int64 `json:"lastModified,omitempty"`

	// OffDomainLinksChecksum: The checksum of all the off-domain links on
	// the page.
	OffDomainLinksChecksum int64 `json:"offDomainLinksChecksum,omitempty"`

	// OffDomainLinksCount: The count of all the off-domain links on the
	// page.
	OffDomainLinksCount int64 `json:"offDomainLinksCount,omitempty"`

	// OnDomainLinksCount: The count of all the on-domain links on the page.
	// We aren't worried about the contents themselves, since they might
	// often change (e.g., session ids). We assume that a change in the
	// number of links is significant, however.
	OnDomainLinksCount int64 `json:"onDomainLinksCount,omitempty"`

	// ShingleSimhash: The simhash value obtained from shingles.
	ShingleSimhash *IndexingConverterShingleFingerprint `json:"shingleSimhash,omitempty"`

	// Simhash: The simhash-v1 value. The simhash-v1 is now deprecated and
	// new UrlVersions should only populate simhash-v2. During migration
	// phase from using simhash-v1 to simhash-v2, it is possible that
	// previous UrlChange only contain simhash-v1 and the next UrlChange /
	// UrlVersion could only contain simhash-v2. In this case, we skip that
	// interval in our changerate computation.
	// [go/changerate-simhash-v2-migration]
	Simhash uint64 `json:"simhash,omitempty,string"`

	// SimhashIsTrusted: Whether the simhash-v1 should be trusted.
	SimhashIsTrusted bool `json:"simhashIsTrusted,omitempty"`

	// SimhashV2: The simhash-v2 value.
	SimhashV2 uint64 `json:"simhashV2,omitempty,string"`

	// SimhashV2IsTrusted: Whether the simhash-v2 value should be trusted.
	SimhashV2IsTrusted bool `json:"simhashV2IsTrusted,omitempty"`

	// Tile: The tiles of the document body. We use int32s instead of int64s
	// (the norm) in order to save space. Since rare inaccuracy doesn't
	// really matter, we've decided this is an okay tradeoff.
	Tile []int64 `json:"tile,omitempty"`

	// Timestamp: The timestamp we crawled the page.
	Timestamp int64 `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalChangesMerged") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalChangesMerged")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *CrawlerChangerateUrlVersion) MarshalJSON() ([]byte, error) {
	type NoMethod CrawlerChangerateUrlVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type CrowdingPerDocData struct {
	Newscluster []*CrowdingPerDocDataNewsCluster `json:"newscluster,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Newscluster") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Newscluster") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CrowdingPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod CrowdingPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// CrowdingPerDocDataNewsCluster: For crowding in news we need to keep
// data about the last X clustering iterations around.
type CrowdingPerDocDataNewsCluster struct {
	// ClusterId: Fingerprint combination of all urls in a cluster
	ClusterId uint64 `json:"ClusterId,omitempty,string"`

	// ClusterSize: This is the X in the "and X related >>" link on
	// headlines and search results
	ClusterSize int64 `json:"ClusterSize,omitempty"`

	// ClusterTimeStamp: When was this clustered (needed for keeping last X
	// iterations around and discarding earlier ones)
	ClusterTimeStamp int64 `json:"ClusterTimeStamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *CrowdingPerDocDataNewsCluster) MarshalJSON() ([]byte, error) {
	type NoMethod CrowdingPerDocDataNewsCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DeepCropIndexing struct {
	// CropBytes: Compact representation for indexing, see
	// creatism::CropBitmap for details on the packing format.
	CropBytes string `json:"cropBytes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CropBytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CropBytes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DeepCropIndexing) MarshalJSON() ([]byte, error) {
	type NoMethod DeepCropIndexing
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DeepCropPixels struct {
	// X0: Pixels version of the DeepCropIndexing bytes, this corresponds to
	// the crop box for a given image (based input image size and desired
	// aspect ratio).
	X0 int64 `json:"x0,omitempty"`

	X1 int64 `json:"x1,omitempty"`

	Y0 int64 `json:"y0,omitempty"`

	Y1 int64 `json:"y1,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X0") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X0") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DeepCropPixels) MarshalJSON() ([]byte, error) {
	type NoMethod DeepCropPixels
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DocProperties: NOTE: In segindexer, the docproperties of a document
// may be reused from a previous cycle if its content is not changed. If
// you add a new field to DocProperties, make sure it is taken care
// (i.e., gets copied from a previous cycle to the current document) in
// CDocProperties::EndDocument().
type DocProperties struct {
	// AvgTermWeight: The average weighted font size of a term in the doc
	// body
	AvgTermWeight int64 `json:"avgTermWeight,omitempty"`

	// BadTitle: Missing or meaningless title
	BadTitle bool `json:"badTitle,omitempty"`

	Badtitleinfo []*DocPropertiesBadTitleInfo `json:"badtitleinfo,omitempty"`

	// Languages: A Language enum value. See: go/language-enum
	Languages []int64 `json:"languages,omitempty"`

	// Leadingtext: Leading text information generated by
	// google3/quality/snippets/leadingtext/leadingtext-detector.cc
	Leadingtext *SnippetsLeadingtextLeadingTextInfo `json:"leadingtext,omitempty"`

	NumPunctuations int64 `json:"numPunctuations,omitempty"`

	NumTags int64 `json:"numTags,omitempty"`

	// NumTokens: The number of tokens, tags and punctuations in the
	// tokenized contents. This is an approximation of the number of tokens,
	// tags and punctuations we end up with in mustang, but is inexact since
	// we drop some tokens in mustang and also truncate docs at a max cap.
	NumTokens int64 `json:"numTokens,omitempty"`

	// ProseRestrict: The restricts for CSE structured search.
	ProseRestrict []string `json:"proseRestrict,omitempty"`

	Restricts []string `json:"restricts,omitempty"`

	// Timestamp: The time CDocProperties::StartDocument() is called,
	// encoded as seconds past the epoch (Jan 1, 1970). This value is always
	// refreshed and not reused.
	Timestamp int64 `json:"timestamp,omitempty,string"`

	// Title: Extracted from the title tag of the content. This is typically
	// extracted by TitleMetaCollector defined at
	// google3/segindexer/title-meta-collector.h. Please see its
	// documentation for the format and other caveats.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvgTermWeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvgTermWeight") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DocProperties) MarshalJSON() ([]byte, error) {
	type NoMethod DocProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DocPropertiesBadTitleInfo: Bad title information.
type DocPropertiesBadTitleInfo struct {
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "NOT_BAD"
	//   "MISSING_OR_MEANINGLESS" - An empty string, or a bad title such as
	// "Untitled". See quality_titles::bad_titles::BadTitleDetector for more
	// details.
	//   "BOILERPLATE" - Most of the title is marked as boilerplate regions.
	// See boilerplate::BoilerplateTitleScorer for more details.
	//   "FOREIGN" - The language of a title is different from the language
	// of the document. See
	// quality_snippets::foreigntitle::ForeignTitleScorer for more details.
	//   "UNREADABLE" - Title has a low readability score. See
	// quality_titles::ReadabilityScorer for more details.
	//   "NAKED" - Title needs more context (i.e. a site name), e.g.
	// "Photos", "Contact Us". See
	// quality_titles::bad_titles::BadTitleDetector for more details.
	//   "NO_QUERY_SUPPORT" - Title contains no navboost query. See
	// quality_titles::AlternativeTitlesGenerator for more details.
	//   "NO_SITE_INFO" - Title has no site title information. See
	// quality_titles::AlternativeTitlesGenerator for more details.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DocPropertiesBadTitleInfo) MarshalJSON() ([]byte, error) {
	type NoMethod DocPropertiesBadTitleInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DocPropertiesBadTitleInfo) UnmarshalJSON(data []byte) error {
	type NoMethod DocPropertiesBadTitleInfo
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type DrishtiDenseFeatureData struct {
	// Extra: If extra is present it must be of the same length as value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	// Value: Dense data.
	Value []float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiDenseFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiDenseFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiFeatureExtra struct {
}

type DrishtiFeatureSetData struct {
	// Extra: Extra information for this particular FeatureSetData (example
	// timestamp of this frame in the video). (Almost never used).
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	// Feature: The following can have multiple FeatureSetElement(s) Each of
	// these FeatureSetElement correspond to the various feature groups. One
	// concrete example is the way these features are generated - example
	// audio, video or OCR.
	Feature []*DrishtiFeatureSetDataFeatureSetElement `json:"feature,omitempty"`

	// Label: Labels for this particular FeatureSetData. (Almost never
	// used). Only interesting when you have (for example) frame level
	// labels.
	Label []*DrishtiLabelSetElement `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiFeatureSetData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiFeatureSetData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiFeatureSetDataFeatureSetElement: A FeatureSetElement stores
// the features coming from a single group.
type DrishtiFeatureSetDataFeatureSetElement struct {
	Dense *DrishtiDenseFeatureData `json:"dense,omitempty"`

	Indexed *DrishtiIndexedFeatureData `json:"indexed,omitempty"`

	// Name: A name for the feature group: example "AUDIO", "VIDEO", "OCR",
	// etc.
	Name string `json:"name,omitempty"`

	Quantized *DrishtiQuantizedDenseFeatureData `json:"quantized,omitempty"`

	QuantizedByteDense *DrishtiQuantizedByteDenseFeatureData `json:"quantizedByteDense,omitempty"`

	QuantizedByteIndexed *DrishtiQuantizedByteIndexedFeatureData `json:"quantizedByteIndexed,omitempty"`

	Sparse *DrishtiSparseFeatureData `json:"sparse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dense") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dense") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiFeatureSetDataFeatureSetElement) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiFeatureSetDataFeatureSetElement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiFeatureSetDataSequence: This represents a sequence (ordered)
// of FeatureSetData elements.
type DrishtiFeatureSetDataSequence struct {
	// Element: FeatureSetData contains the features. In most scenarios, you
	// only have one element. However, multiple elements are appropriate in
	// case of videos where each element may correspond to a frame in the
	// video.
	Element []*DrishtiFeatureSetData `json:"element,omitempty"`

	// Extra: Some extra information about this FeatureSetDataSequence.
	// (Almost never used).
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	// Label: Global (video-level) labels. In most cases, you only have one
	// LabelSetElement. All the labels will be stored in this single
	// LabelSetElement. Scenarios where you may have multiple
	// LabelSetElement(s) is (for example) when you want to differentiate
	// the labels into various sub-groups - eg, central vs relevant, kg-ids
	// vs queries, etc.
	Label []*DrishtiLabelSetElement `json:"label,omitempty"`

	// Timestamp: If set, must be same length as element. Each entry is the
	// timestamp in microseconds where the FeatureSetData element was
	// extracted.
	Timestamp googleapi.Int64s `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Element") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Element") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiFeatureSetDataSequence) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiFeatureSetDataSequence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiIndexedFeatureData struct {
	// Extra: If extra is present it must be of the same length as index and
	// value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	// Index: Indexed data. index and value must be of the same length.
	Index googleapi.Uint64s `json:"index,omitempty"`

	Value []float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiIndexedFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiIndexedFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiLabelSetData struct {
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	TargetClass googleapi.Uint64s `json:"targetClass,omitempty"`

	TargetClassName []string `json:"targetClassName,omitempty"`

	TargetValue []float64 `json:"targetValue,omitempty"`

	TargetWeight []float64 `json:"targetWeight,omitempty"`

	// Weight: Weight assigned to this set of labels.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiLabelSetData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiLabelSetData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DrishtiLabelSetData) UnmarshalJSON(data []byte) error {
	type NoMethod DrishtiLabelSetData
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

type DrishtiLabelSetElement struct {
	Label *DrishtiLabelSetData `json:"label,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiLabelSetElement) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiLabelSetElement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiQuantizedByteDenseFeatureData: Proto message to store
// quantized dense feature data.
type DrishtiQuantizedByteDenseFeatureData struct {
	// Extra: If extra is present it must be of the same length as value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	// Value: Quantized values for the feature.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiQuantizedByteDenseFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiQuantizedByteDenseFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiQuantizedByteIndexedFeatureData: Proto message to store
// quantized indexed feature data.
type DrishtiQuantizedByteIndexedFeatureData struct {
	// Extra: If extra is present it must be of the same length as value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	Index googleapi.Uint64s `json:"index,omitempty"`

	// Value: Quantized values for the feature.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiQuantizedByteIndexedFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiQuantizedByteIndexedFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiQuantizedDenseFeatureData struct {
	// Extra: If extra is present it must be of the same length as value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	// Value: Quantized Dense data.
	Value []string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiQuantizedDenseFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiQuantizedDenseFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiSparseFeatureData struct {
	// Extra: If extra is present it must be of the same length as label and
	// value.
	Extra []*DrishtiFeatureExtra `json:"extra,omitempty"`

	GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"`

	// Label: Indexed data. label and value must be of the same length.
	Label []string `json:"label,omitempty"`

	Value []float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Extra") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Extra") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiSparseFeatureData) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiSparseFeatureData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiVesperEncodedThumbnail: The attributes of encoded thumbnail
// images. Next id: 7.
type DrishtiVesperEncodedThumbnail struct {
	// EncodingQuality: JPEG/WEBP quality factor in range [0,100].
	EncodingQuality int64 `json:"encodingQuality,omitempty"`

	// EncodingType: Image encoding type.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "JPEG" - JPEG encoded.
	//   "WEBP" - WEBP encoded.
	//   "PNG" - PNG encoded.
	EncodingType string `json:"encodingType,omitempty"`

	Height int64 `json:"height,omitempty"`

	// ImageBytes: Encoded thumbnail bytes. Prefer this over `image_string`
	// as we are not supposed to store image bytes in a proto string field.
	ImageBytes string `json:"imageBytes,omitempty"`

	// ImageString: Please migrate to `image_bytes`.
	ImageString string `json:"imageString,omitempty"`

	// Width: Thumbnail resolution.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EncodingQuality") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncodingQuality") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperEncodedThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperEncodedThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiVesperMovingThumbnail: LINT: LEGACY_NAMES MovingThumbnail is
// defined as a short video clip that represents the whole video
// content. Next id: 17.
type DrishtiVesperMovingThumbnail struct {
	// BeginTimestampMs: The begin timestamp in milliseconds.
	BeginTimestampMs int64 `json:"beginTimestampMs,omitempty"`

	// DurationMs: The duration of the moving thumbnail in milliseconds.
	// Note that the duration may not be the difference between
	// begin_timestamp_ms and end_timestamp_ms, esp when the moving
	// thumbnail covers multiple clips from the video.
	DurationMs int64 `json:"durationMs,omitempty"`

	EncodedGifAnimation string `json:"encodedGifAnimation,omitempty"`

	// EncodedVideoString: The encoded video string.
	EncodedVideoString string `json:"encodedVideoString,omitempty"`

	// EncodedWebpAnimation: The encoded WebP animation.
	EncodedWebpAnimation string `json:"encodedWebpAnimation,omitempty"`

	// EndTimestampMs: The end timestamp in milliseconds.
	EndTimestampMs int64 `json:"endTimestampMs,omitempty"`

	// Height: Pixel height of the moving thumbnail.
	Height int64 `json:"height,omitempty"`

	// Id: MovingThumbnail id (e.g., the video id).
	Id string `json:"id,omitempty"`

	// MovingThumbnailerVersion: If set, this is the algorithm version used
	// to generate this moving thumbnail.
	//
	// Possible values:
	//   "V0" - Version 0 and 1 - Initial version with thumbnail quality,
	// iconic face and motion scores.
	//   "V1"
	//   "DEPRECATED_V2" - Version 2 - Version 1 with default static
	// thumbnail matching, title matching, face matching and face clustering
	// (Deprecated).
	//   "DEPRECATED_V3" - Version 3 - Version 2 with high resolution
	// transcodes preferred (Deprecated).
	//   "V4" - Version 4 - Version 1 with default static thumbnail
	// matching, title matching, and high resolution transcodes preferred.
	//   "V5" - Version 5 - Version 1 with title matching and high res
	// transcodes preferred.
	//   "V6" - Version 6 - Version 1 with default static thumbnail
	// matching, title matching, retention data and high resolution
	// transcodes preferred.
	//   "SHORT_PREVIEW_V0" - Version used for YT Shorts.
	//   "LIVE_MOVING_THUMBNAILER" - Live moving thumbnailer (no scorers
	// involved).
	//   "MANUAL" - Manually generated.
	MovingThumbnailerVersion string `json:"movingThumbnailerVersion,omitempty"`

	// Name: MovingThumbnail name.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MQDEFAULT" - 320x180, 10s
	//   "MQDEFAULT_6S" - 320x180, 6s
	//   "LQDEFAULT_6S" - 196x110, 6s
	//   "MQ220P_5S" - 392x220, 5s
	//   "MQDEFAULT_6S_HIGHLIGHT" - 320x180, 6s, highlight
	//   "MQDEFAULT_6S_PRE_HIGHLIGHT" - 320x180, 6s, pre-highlight
	//   "MQDEFAULT_6S_THIRD_HIGHLIGHT" - (3s before highlight) 320x180, 6s,
	// 3rd best highlight
	//   "MQDEFAULT_6S_ZOOM_IN" - 320x180, 6s, central zoom-in version
	//   "SD360P_6S_ZOOM_IN" - 640x360, 6s, central zoom-in version
	//   "MQDEFAULT_3S" - 320x180, 3s
	//   "MQDEFAULT_6S_480x270" - 480x270, 6s
	//   "MQDEFAULT_1S" - Do not use this (deprecated)
	//   "MQ_SHORTS_PREVIEW" - 360x360, original aspect ratio
	//   "HQ_SHORTS_PREVIEW" - 480x480, original aspect ratio
	Name string `json:"name,omitempty"`

	// Score: The score of the moving thumbnail.
	Score float64 `json:"score,omitempty"`

	ScoreComponents *DrishtiVesperMovingThumbnailScoreComponents `json:"scoreComponents,omitempty"`

	// Thumbnails: A set of single frame thumbnails in the MovingThumbnail.
	Thumbnails []*DrishtiVesperThumbnail `json:"thumbnails,omitempty"`

	// Type: MovingThumbnail type.
	//
	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "AN_GIF" - Animated gif.
	//   "AN_WEBP" - Animated webp.
	//   "AN_MP4" - Animated mp4.
	//   "AN_WEBM" - Animated webm.
	Type string `json:"type,omitempty"`

	// WebpQualityLevel: The actual quality of the Webp animation. Note this
	// value may not be equal to the quality value requested in the
	// animation creator's options. This is because other requirements, such
	// as the max file size, may force the creator to lower the actual
	// quality value.
	WebpQualityLevel float64 `json:"webpQualityLevel,omitempty"`

	// Width: Pixel width of the moving thumbnail.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BeginTimestampMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BeginTimestampMs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperMovingThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperMovingThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DrishtiVesperMovingThumbnail) UnmarshalJSON(data []byte) error {
	type NoMethod DrishtiVesperMovingThumbnail
	var s1 struct {
		Score            gensupport.JSONFloat64 `json:"score"`
		WebpQualityLevel gensupport.JSONFloat64 `json:"webpQualityLevel"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	s.WebpQualityLevel = float64(s1.WebpQualityLevel)
	return nil
}

// DrishtiVesperMovingThumbnailScoreComponents: Sum of individual score
// components within a moving thumbnail. Used as input for weight
// fitting.
type DrishtiVesperMovingThumbnailScoreComponents struct {
	AudienceRewindRatioScore float64 `json:"audienceRewindRatioScore,omitempty"`

	IconicFaceScore float64 `json:"iconicFaceScore,omitempty"`

	MatchingScore float64 `json:"matchingScore,omitempty"`

	MotionScore float64 `json:"motionScore,omitempty"`

	TitleMatchingScore float64 `json:"titleMatchingScore,omitempty"`

	VideoThumbQualityScore float64 `json:"videoThumbQualityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AudienceRewindRatioScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudienceRewindRatioScore")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperMovingThumbnailScoreComponents) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperMovingThumbnailScoreComponents
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DrishtiVesperMovingThumbnailScoreComponents) UnmarshalJSON(data []byte) error {
	type NoMethod DrishtiVesperMovingThumbnailScoreComponents
	var s1 struct {
		AudienceRewindRatioScore gensupport.JSONFloat64 `json:"audienceRewindRatioScore"`
		IconicFaceScore          gensupport.JSONFloat64 `json:"iconicFaceScore"`
		MatchingScore            gensupport.JSONFloat64 `json:"matchingScore"`
		MotionScore              gensupport.JSONFloat64 `json:"motionScore"`
		TitleMatchingScore       gensupport.JSONFloat64 `json:"titleMatchingScore"`
		VideoThumbQualityScore   gensupport.JSONFloat64 `json:"videoThumbQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AudienceRewindRatioScore = float64(s1.AudienceRewindRatioScore)
	s.IconicFaceScore = float64(s1.IconicFaceScore)
	s.MatchingScore = float64(s1.MatchingScore)
	s.MotionScore = float64(s1.MotionScore)
	s.TitleMatchingScore = float64(s1.TitleMatchingScore)
	s.VideoThumbQualityScore = float64(s1.VideoThumbQualityScore)
	return nil
}

// DrishtiVesperThumbnail: The attributes of a video thumbnail.
type DrishtiVesperThumbnail struct {
	// DenseFeatures: Thumbnail dense features
	DenseFeatures []float64 `json:"denseFeatures,omitempty"`

	// EncodedImageString: Thumbnail image as an encoded image. Deprecated,
	// use encoded_thumbnails instead.
	EncodedImageString string `json:"encodedImageString,omitempty"`

	// EncodedImageStringSmall: Thumbnail image as an encoded image with
	// smaller resolution. Deprecated, use encoded_thumbnails instead.
	EncodedImageStringSmall string `json:"encodedImageStringSmall,omitempty"`

	// EncodedThumbnails: Encoded thumbnail images.
	EncodedThumbnails []*DrishtiVesperEncodedThumbnail `json:"encodedThumbnails,omitempty"`

	// Id: Thumbnail id.
	Id string `json:"id,omitempty"`

	// OcrText: Text in video thumbnails that was detected by OCR.
	OcrText string `json:"ocrText,omitempty"`

	// QualityScores: Thumbnail quality scores.
	QualityScores []*DrishtiVesperThumbnailQualityScore `json:"qualityScores,omitempty"`

	// ShouldUpdateDefaultThumbnail: If true, this thumbnail should update
	// default thumbnail.
	ShouldUpdateDefaultThumbnail bool `json:"shouldUpdateDefaultThumbnail,omitempty"`

	// ThumbnailerModelVersion: Thumbnailer Version.
	//
	// Possible values:
	//   "VERSION_UNKNOWN"
	//   "VERSION_FIRST" - Use the first frame as thumbnail.
	//   "VERSION_RANDOM" - Randomly choose a frame as thumbnail.
	//   "VERSION_4" - Thumbnailer version 4.
	//   "VERSION_5" - Thumbnailer version 5.
	//   "VERSION_6" - Thumbnailer version 6 for violative thumbnail
	// regeneration. Design: go/reduce-violative-thumb
	//   "VERSION_7" - Thumbnailer version 7.
	//   "VERSION_8" - Thumbnailer version 8 for violative thumbnail
	// regeneration. Design: go/reduce-violative-thumb
	//   "VERSION_SHORTS_4" - Thumbnailer version 4 for shorts videos.
	//   "VERSION_SHORTS_5" - Thumbnailer version 5 for shorts videos.
	//   "VERSION_SHORTS_6" - Thumbnailer version 6 for shorts videos.
	//   "VERSION_STORY_4" - Thumbnailer version 4 for stories.
	//   "VERSION_STORY_5" - Thumbnailer version 5 for stories.
	//   "VERSION_MOVING_4" - Moving thumbnailer version 4.
	//   "VERSION_MOVING_5" - Moving thumbnailer version 5.
	//   "VERSION_MOVING_6" - Moving thumbnailer version 6.
	//   "VERSION_MOVING_SHORTS_0" - Moving thumbnailer version 0 for
	// shorts.
	//   "VERSION_MOVING_LIVE_0" - Moving thumbnailer version 0 for live.
	//   "VERSION_MOVING_MANUAL_0" - Moving thumbnail generated manually.
	//   "VERSION_LITE_1" - Lite Thumbnailer (previously known as
	// FirstFrameThumbnailer)
	//   "VERSION_CUSTOM" - Custom image (not generated). Likely client
	// provided.
	//   "VERSION_REJECTED" - A gray fallback image for images that have
	// been rejected.
	ThumbnailerModelVersion string `json:"thumbnailerModelVersion,omitempty"`

	// TimestampMs: Thumbnail timestamp in milliseconds.
	TimestampMs int64 `json:"timestampMs,omitempty"`

	// Type: Thumbnail type.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "MAIN_THUMB_CUSTOM" - Customized main thumbnail uploaded from user.
	//   "MAIN_THUMB_NON_CUSTOM" - Non-customized main thumbnail.
	//   "SHOT_THUMB" - Shot thumbnail.
	//   "NUMBERED_THUMB" - The numbered thumbnail, e.g. 1.jpg, 2.jpg,
	// 3.jpg.
	//   "KEY_FRAME" - The iframe extracted from the media decoder.
	//   "FRAME" - The regular video frame.
	//   "AUTO" - This type indicates that the thumbnail is to use for
	// thumbnail A/B test. In this case the id field will be used to
	// indicate the control and experimental thumbnail.
	Type string `json:"type,omitempty"`

	UserReportedThumbnail *DrishtiVesperUserReportUserReportedThumbnail `json:"userReportedThumbnail,omitempty"`

	// UserReportedThumbnails: All user reported thumbnails of interest.
	UserReportedThumbnails []*DrishtiVesperUserReportUserReportedThumbnail `json:"userReportedThumbnails,omitempty"`

	// Version: Thumbnail version, i.e., the unix time in seconds when the
	// thumbnail was created.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DenseFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DenseFeatures") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type DrishtiVesperThumbnailQualityScore struct {
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "PHOTO_QUALITY"
	//   "PAMIR_IMAGE_QUALITY"
	//   "VIDEO_THUMB_QUALITY"
	//   "SALIENCY"
	//   "COMPLEXITY"
	//   "SHARPNESS"
	//   "CLOSE_UP"
	//   "BEEHIVE_QUALITY"
	//   "ICONIC_FACE"
	//   "DUMMY"
	//   "COLORFULNESS"
	//   "MOTION"
	//   "RETENTION_STATS"
	//   "FACIAL_EXPRESSION"
	//   "MATCHING"
	//   "LUCKYSHOT_SHARPNESS"
	//   "SINGLE_FACE_MODULE"
	//   "TITLE_MATCHING"
	//   "FACE_CLUSTERING"
	//   "FACE_MATCHING"
	//   "RACY_SCORE" - The higher the score, the racier the thumbnail.
	//   "NON_RACY_SCORE" - The higher the score, less racier of the
	// thumbnail.
	//   "SALIENCY_COVERAGE"
	//   "AUDIENCE_WATCH_DATA"
	//   "AUDIENCE_REWATCH_DATA"
	//   "AUDIENCE_REWIND_RATIO"
	//   "AUDIENCE_DROPOFF_RATIO"
	//   "HIGHLIGHT_SCORE"
	//   "JOY_FACE"
	//   "EYE_OPEN"
	//   "FACE_RATIO"
	//   "OCR_RACY_SCORE"
	//   "SHOT_BOUNDARY"
	//   "NIMA" - go/nima
	//   "FOREGROUND_MOTION_SALIENCY"
	//   "PAGE_QUALITY"
	//   "GLOBAL_MOTION"
	//   "CHAPTER_TITLE_MATCHING"
	//   "DBSCAN_FRAME_CHAPTER_SIMILARITY"
	//   "EYES_NOT_VISIBLY_CLOSED"
	//   "ENGAGINESS"
	//   "MERGED" - The score merged from the above source types.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperThumbnailQualityScore) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperThumbnailQualityScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DrishtiVesperThumbnailQualityScore) UnmarshalJSON(data []byte) error {
	type NoMethod DrishtiVesperThumbnailQualityScore
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// DrishtiVesperUserReportHumanLabel: Proto holding values for details
// about human labels.
type DrishtiVesperUserReportHumanLabel struct {
	// Possible values:
	//   "UNKNOWN"
	//   "SAFE"
	//   "BORDERLINE"
	//   "SEXUAL"
	RacyLevel string `json:"racyLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RacyLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RacyLevel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperUserReportHumanLabel) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperUserReportHumanLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiVesperUserReportModelScore: Proto holding values for details
// about score and the source model.
type DrishtiVesperUserReportModelScore struct {
	ModelName string `json:"modelName,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ModelName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ModelName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperUserReportModelScore) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperUserReportModelScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *DrishtiVesperUserReportModelScore) UnmarshalJSON(data []byte) error {
	type NoMethod DrishtiVesperUserReportModelScore
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// DrishtiVesperUserReportUserReportedThumbnail: Proto holding values
// for user reported thumbnails. Next id: 12
type DrishtiVesperUserReportUserReportedThumbnail struct {
	DenseFeatures []float64 `json:"denseFeatures,omitempty"`

	// Duration: Number of days in which volume is calculated.
	Duration int64 `json:"duration,omitempty"`

	HumanLabel *DrishtiVesperUserReportHumanLabel `json:"humanLabel,omitempty"`

	// Impressions: Daily aggregared impressions for the reported video.
	Impressions int64 `json:"impressions,omitempty"`

	// NeedHumanLabel: Whether the thumbnail needs a human label.
	NeedHumanLabel bool `json:"needHumanLabel,omitempty"`

	RawHumanLabels []*DrishtiVesperUserReportHumanLabel `json:"rawHumanLabels,omitempty"`

	ReportScore *DrishtiVesperUserReportModelScore `json:"reportScore,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "RACY"
	ReportType string `json:"reportType,omitempty"`

	Score *DrishtiVesperUserReportModelScore `json:"score,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "TRAIN"
	//   "EVAL"
	UseCase string `json:"useCase,omitempty"`

	// Volume: Number of reports.
	Volume int64 `json:"volume,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DenseFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DenseFeatures") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperUserReportUserReportedThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperUserReportUserReportedThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DrishtiVesperVideoThumbnail: Video level container for thumbnail with
// its attributes, e.g., timestamp, id, quality scores, annotations, or
// features.
type DrishtiVesperVideoThumbnail struct {
	// Id: Video id.
	Id string `json:"id,omitempty"`

	MovingThumbnails []*DrishtiVesperMovingThumbnail `json:"movingThumbnails,omitempty"`

	Thumbnails []*DrishtiVesperThumbnail `json:"thumbnails,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *DrishtiVesperVideoThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod DrishtiVesperVideoThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// EmbedsDeepLinkData: Deep-linking data is used to construct a
// deep-link URI for an activity or frame's embed, such that on click,
// the user is taken to the right place in a mobile app. If the app is
// not installed, the user is taken to the app store. If not on mobile,
// an analogous web uri is used.
type EmbedsDeepLinkData struct {
	// AppId: Application ID (or project ID) from Google API Console.
	AppId int64 `json:"appId,omitempty,string"`

	// Client: The data for a Google API Console client is entered by a
	// developer during client registration and is stored in
	// PackagingService.
	Client []*EmbedsPackagingServiceClient `json:"client,omitempty"`

	// DeepLinkId: The ID for non-URL content. Embeds may either have no
	// analogous web presence or prefer a native mobile experience if
	// supported. In the case of no web presence, instead of setting the
	// "url" field of an embed, such developers will set this field and
	// other content fields, e.g. thumbnail, title, description. If set,
	// this field is used to construct the deep-link URI. Note that the
	// native experience is preferred over the web link and the web link is
	// used as a fallback.
	DeepLinkId string `json:"deepLinkId,omitempty"`

	// Url: Analogous web presence. Used as desktop fallback or when no
	// native link data is present.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *EmbedsDeepLinkData) MarshalJSON() ([]byte, error) {
	type NoMethod EmbedsDeepLinkData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// EmbedsEmbedClientItem: Represents an embedded object in an update.
// This is a wrapper class that can contain a single specific item proto
// in an extension field. Think of it as a base class like `Message` in
// Java. Each item proto must declare that it extends this proto:
// message ExampleObject { option (item_type) = EXAMPLE_OBJECT; extend
// EmbedClientItem { optional ExampleObject example_object = ; } } See
// go/es-embeds for details.
type EmbedsEmbedClientItem struct {
	// CanonicalId: The canonical ID of the embed. If absent, the canonical
	// ID is equal to the ID; if present, then the canonical ID represents
	// an "equivalence class" of embeds which really refer to the same
	// object. (For example, the URLs http://www.foo.com/ and
	// http://foo.com/ refer to the same object) This field may be updated
	// periodically by background processes.
	CanonicalId string `json:"canonicalId,omitempty"`

	// DeepLinkData: Deep-linking data to take the user to the right place
	// in a mobile app. This is only used for preview and attribution. Links
	// that are specific to a given embed type should live on that specific
	// embed's proto by using Link. See
	// http://goto.google.com/mariana-design.
	DeepLinkData *EmbedsDeepLinkData `json:"deepLinkData,omitempty"`

	// Id: The ID of the embed. This corresponds to the schema.org ID, as
	// represented in the ItemScope.id field.
	Id string `json:"id,omitempty"`

	// Provenance: The provenance of the embed, populated when the embed
	// originated from a web fetch. The provenance captures information
	// about the web page the embed had originated, like the URL that was
	// retrieved and the retrieved URL's canonical form. This is useful in
	// the case where the URL shared by the URL redirects (e.g., in the case
	// of a shortened URL).
	Provenance *EmbedsProvenance `json:"provenance,omitempty"`

	// RenderId: The ID used to identify the embed during rendering. This
	// field will match ID, if set, otherwise it will be the ID of the
	// parent activity. This field is only populated on the server for
	// client use and is not persisted to storage.
	RenderId string `json:"renderId,omitempty"`

	// Signature: Signature of the embed, used for verification.
	Signature string `json:"signature,omitempty"`

	// TransientData: Transient generic data that will not be saved on the
	// server.
	TransientData *EmbedsTransientData `json:"transientData,omitempty"`

	// Type: The first value in `type` determines which extension field will
	// be set. When creating an EmbedClientItem, you only need to set the
	// first (primary) type in this field. When the server receives the
	// item, it will populate the full type list using the parent
	// annotations in the ItemType enum.
	//
	// Possible values:
	//   "UNKNOWN" - Largely deprecated, effectively an error condition and
	// should not be in storage.
	//   "ACTION_V2" - Embeds V2 types
	//   "ADD_ACTION_V2"
	//   "AGGREGATE_RATING_V2"
	//   "ARTICLE_V2"
	//   "ASSESS_ACTION_V2"
	//   "AUDIO_OBJECT_V2"
	//   "BASIC_INTERACTION_V2"
	//   "BLOG_POSTING_V2"
	//   "BLOG_V2"
	//   "BOOK_V2"
	//   "BUY_ACTION_V2"
	//   "CHECK_IN_ACTION_V2" - The action of checking in, as opposed to a
	// "check-in".
	//   "CHECKIN_V2"
	//   "COLLEXION_V2"
	//   "COMMENT_ACTION_V2" - The act of commenting, which might result in
	// a comment.
	//   "COMMENT_V2"
	//   "COMMUNICATE_ACTION_V2"
	//   "CONSUME_ACTION_V2"
	//   "CREATE_ACTION_V2"
	//   "CREATIVE_WORK_V2"
	//   "DISCOVER_ACTION_V2"
	//   "DOCUMENT_OBJECT_V2"
	//   "DRAWING_OBJECT_V2"
	//   "DRIVE_OBJECT_V2"
	//   "EMOTISHARE_V2"
	//   "ENTRY_POINT_V2"
	//   "EVENT_TIME_V2"
	//   "EVENT_V2"
	//   "FILE_OBJECT_V2"
	//   "FIND_ACTION_V2"
	//   "FINANCIAL_QUOTE_V2"
	//   "FORM_OBJECT_V2"
	//   "GEO_COORDINATES_V2"
	//   "GOOGLE_OFFER_V2"
	//   "HANGOUT_CHAT_MESSAGE"
	//   "HANGOUT_QUOTE"
	//   "HANGOUT_V2"
	//   "HOA_PLUS_EVENT_V2"
	//   "IMAGE_OBJECT_V2"
	//   "INTERACT_ACTION_V2"
	//   "INTERACTION_V2"
	//   "LISTEN_ACTION_V2"
	//   "LOCAL_BUSINESS_V2"
	//   "LOCAL_PLUS_PHOTO_ALBUM_V2"
	//   "MAGAZINE_V2"
	//   "MEDIA_OBJECT_V2"
	//   "MOBILE_APPLICATION_V2"
	//   "MOVIE_V2"
	//   "MUSIC_ALBUM_V2"
	//   "MUSIC_GROUP_V2"
	//   "MUSIC_PLAYLIST_V2"
	//   "MUSIC_RECORDING_V2"
	//   "NEWS_ARTICLE_V2"
	//   "OFFER_V2"
	//   "ORGANIZATION_V2"
	//   "ORGANIZE_ACTION_V2"
	//   "PERSON_V2"
	//   "PLACE_REVIEW_V2"
	//   "PLACE_V2"
	//   "PLAN_ACTION_V2"
	//   "PLAY_MUSIC_ALBUM_V2"
	//   "PLAY_MUSIC_TRACK_V2"
	//   "PLAY_OBJECT_V2"
	//   "PLUS_AUDIO_V2"
	//   "PLUS_EVENT_V2"
	//   "PLUS_MEDIA_COLLECTION_V2"
	//   "PLUS_MEDIA_OBJECT_V2"
	//   "PLUS_PAGE_V2"
	//   "PLUS_PHOTOS_ADDED_TO_COLLECTION_V2"
	//   "PLUS_PHOTO_ALBUM_V2"
	//   "PLUS_PHOTO_COLLECTION_V2"
	//   "PLUS_PHOTO_V2"
	//   "PLUS_POST_V2"
	//   "PLUS_RESHARE_V2"
	//   "PLUS_SOFTWARE_APPLICATION_V2"
	//   "POLL_OPTION_V2"
	//   "POLL_V2"
	//   "POSTAL_ADDRESS_V2"
	//   "PRESENTATION_OBJECT_V2"
	//   "PRODUCT_REVIEW_V2"
	//   "RATING_V2"
	//   "REACT_ACTION_V2"
	//   "RESERVATION_V2"
	//   "RESERVE_ACTION_V2"
	//   "REVIEW_V2"
	//   "REVIEW_ACTION_V2"
	//   "SOFTWARE_APPLICATION_V2"
	//   "SPREADSHEET_OBJECT_V2"
	//   "SQUARE_INVITE_V2"
	//   "SQUARE_V2"
	//   "STICKER_V2"
	//   "STORY_V2" - Boswell story (see goto/boswell)
	//   "THING_V2"
	//   "TRADE_ACTION_V2"
	//   "DEPRECATED_TOUR_OBJECT_V2"
	//   "TV_EPISODE_V2"
	//   "TV_SERIES_V2"
	//   "UPDATE_ACTION_V2"
	//   "VIEW_ACTION_V2"
	//   "VIDEO_OBJECT_V2"
	//   "VIDEO_GALLERY_V2"
	//   "WANT_ACTION_V2"
	//   "WEB_PAGE_V2"
	//   "WRITE_ACTION_V2"
	//   "YOUTUBE_CHANNEL_V2"
	//   "GOOGLE_USER_PHOTO_V2" - A photo stored in photo service owned by a
	// Google account user. This is distinct from PlusPhoto as it isn't tied
	// to GPlus, but is instead intended to be a more general photo tied to
	// a google user.
	//   "GOOGLE_USER_PHOTO_ALBUM" - A photo album in photo service owned by
	// a Google account user. This is distinct from PlusPhotoAlbum as it
	// isn't tied to GPlus, but is instead intended to be a general photo
	// album tied to a google user.
	//   "GOOGLE_PHOTO_RECIPE" - An embed used to create a single photo in
	// photo service. This type is never stored but is used to create a
	// GOOGLE_USER_PHOTO_V2 or PLUS_PHOTO_V2 embed.
	//   "THING" - Embeds V1 types
	//   "CREATIVE_WORK"
	//   "EVENT"
	//   "INTANGIBLE"
	//   "ORGANIZATION"
	//   "PERSON"
	//   "PLACE"
	//   "PRODUCT"
	//   "ARTICLE" - CREATIVE_WORK subtypes
	//   "BLOG_POSTING"
	//   "NEWS_ARTICLE"
	//   "SCHOLARLY_ARTICLE"
	//   "BLOG"
	//   "BOOK"
	//   "COMMENT"
	//   "ITEM_LIST"
	//   "MAP"
	//   "MEDIA_OBJECT"
	//   "AUDIO_OBJECT"
	//   "IMAGE_OBJECT"
	//   "MUSIC_VIDEO_OBJECT"
	//   "VIDEO_OBJECT"
	//   "MOVIE"
	//   "MUSIC_PLAYLIST"
	//   "MUSIC_ALBUM"
	//   "MUSIC_RECORDING"
	//   "PAINTING"
	//   "PHOTOGRAPH"
	//   "RECIPE"
	//   "REVIEW"
	//   "SCULPTURE"
	//   "SOFTWARE_APPLICATION"
	//   "MOBILE_APPLICATION"
	//   "WEB_APPLICATION"
	//   "TV_EPISODE"
	//   "TV_SEASON"
	//   "TV_SERIES"
	//   "WEB_PAGE"
	//   "ABOUT_PAGE"
	//   "CHECKOUT_PAGE"
	//   "COLLECTION_PAGE"
	//   "IMAGE_GALLERY"
	//   "VIDEO_GALLERY"
	//   "CONTACT_PAGE"
	//   "ITEM_PAGE"
	//   "PROFILE_PAGE"
	//   "SEARCH_RESULTS_PAGE"
	//   "WEB_PAGE_ELEMENT"
	//   "SITE_NAVIGATION_ELEMENT"
	//   "TABLE"
	//   "WP_AD_BLOCK"
	//   "WP_FOOTER"
	//   "WP_HEADER"
	//   "WP_SIDEBAR"
	//   "APP_INVITE"
	//   "EMOTISHARE"
	//   "BUSINESS_EVENT" - EVENT subtypes
	//   "CHILDRENS_EVENT"
	//   "COMEDY_EVENT"
	//   "DANCE_EVENT"
	//   "EDUCATION_EVENT"
	//   "FESTIVAL"
	//   "FOOD_EVENT"
	//   "LITERARY_EVENT"
	//   "MUSIC_EVENT"
	//   "SALE_EVENT"
	//   "SOCIAL_EVENT"
	//   "SPORTS_EVENT"
	//   "THEATER_EVENT"
	//   "VISUAL_ARTS_EVENT"
	//   "RESERVATION"
	//   "TRAVEL_EVENT"
	//   "CORPORATION" - ORGANIZATION subtypes
	//   "EDUCATIONAL_ORGANIZATION"
	//   "COLLEGE_OR_UNIVERSITY"
	//   "ELEMENTARY_SCHOOL"
	//   "HIGH_SCHOOL"
	//   "MIDDLE_SCHOOL"
	//   "PRESCHOOL"
	//   "SCHOOL"
	//   "GOVERNMENT_ORGANIZATION"
	//   "LOCAL_BUSINESS"
	//   "ANIMAL_SHELTER"
	//   "AUTOMOTIVE_BUSINESS"
	//   "AUTO_BODY_SHOP"
	//   "AUTO_DEALER"
	//   "AUTO_PARTS_STORE"
	//   "AUTO_RENTAL"
	//   "AUTO_REPAIR"
	//   "AUTO_WASH"
	//   "GAS_STATION"
	//   "MOTORCYCLE_DEALER"
	//   "MOTORCYCLE_REPAIR"
	//   "CHILD_CARE"
	//   "DRY_CLEANING_OR_LAUNDRY"
	//   "EMERGENCY_SERVICE"
	//   "FIRE_STATION"
	//   "HOSPITAL"
	//   "POLICE_STATION"
	//   "EMPLOYMENT_AGENGY"
	//   "ENTERTAINMENT_BUSINESS"
	//   "ADULT_ENTERTAINMENT"
	//   "AMUSEMENT_PARK"
	//   "ART_GALLERY"
	//   "CASINO"
	//   "COMEDY_CLUB"
	//   "MOVIE_THEATER"
	//   "NIGHT_CLUB"
	//   "FINANCIAL_SERVICE"
	//   "ACCOUNTING_SERVICE"
	//   "AUTOMATED_TELLER"
	//   "BANK_OR_CREDIT_UNION"
	//   "INSURANCE_AGENCY"
	//   "FOOD_ESTABLISHMENT"
	//   "BAKERY"
	//   "BAR_OR_PUB"
	//   "BREWERY"
	//   "CAFE_OR_COFFEE_SHOP"
	//   "FAST_FOOD_RESTAURANT"
	//   "ICE_CREAM_SHOP"
	//   "RESTAURANT"
	//   "WINERY"
	//   "GOVERNMENT_OFFICE"
	//   "POST_OFFICE"
	//   "HEALTH_AND_BEAUTY_BUSINESS"
	//   "BEAUTY_SALON"
	//   "DAY_SPA"
	//   "HAIR_SALON"
	//   "HEALTH_CLUB"
	//   "NAIL_SALON"
	//   "TATTOO_PARLOR"
	//   "HOME_AND_CONSTRUCTION_BUSINESS"
	//   "ELECTRICIAN"
	//   "GENERAL_CONTRACTOR"
	//   "HVAC_BUSINESS"
	//   "HOUSE_PAINTER"
	//   "LOCKSMITH"
	//   "MOVING_COMPANY"
	//   "PLUMBER"
	//   "ROOFING_CONTRACTOR"
	//   "INTERNET_CAFE"
	//   "LIBRARY"
	//   "LODGING_BUSINESS"
	//   "BED_AND_BREAKFAST"
	//   "HOSTEL"
	//   "HOTEL"
	//   "MOTEL"
	//   "MEDICAL_ORGANIZATION"
	//   "DENTIST"
	//   "MEDICAL_CLINIC"
	//   "OPTICIAN"
	//   "PHARMACY"
	//   "PHYSICIAN"
	//   "VETERINARY_CARE"
	//   "PROFESSIONAL_SERVICE"
	//   "ATTORNEY"
	//   "NOTARY"
	//   "RADIO_STATION"
	//   "REAL_ESTATE_AGENT"
	//   "RECYCLING_CENTER"
	//   "SELF_STORAGE"
	//   "SHOPPING_CENTER"
	//   "SPORTS_ACTIVITY_LOCATION"
	//   "BOWLING_ALLEY"
	//   "EXERCISE_GYM"
	//   "GOLF_COURSE"
	//   "PUBLIC_SWIMMING_POOL"
	//   "SKI_RESORT"
	//   "SPORTS_CLUB"
	//   "STADIUM_OR_ARENA"
	//   "TENNIS_COMPLEX"
	//   "STORE"
	//   "BIKE_STORE"
	//   "BOOK_STORE"
	//   "CLOTHING_STORE"
	//   "COMPUTER_STORE"
	//   "CONVENIENCE_STORE"
	//   "DEPARTMENT_STORE"
	//   "ELECTRONICS_STORE"
	//   "FLORIST"
	//   "FURNITURE_STORE"
	//   "GARDEN_STORE"
	//   "GROCERY_STORE"
	//   "HARDWARE_STORE"
	//   "HOBBY_SHOP"
	//   "HOME_GOODS_STORE"
	//   "JEWELRY_STORE"
	//   "LIQUOR_STORE"
	//   "MENS_CLOTHING_STORE"
	//   "MOBILE_PHONE_STORE"
	//   "MOVIE_RENTAL_STORE"
	//   "MUSIC_STORE"
	//   "OFFICE_EQUIPMENT_STORE"
	//   "OUTLET_STORE"
	//   "PAWN_SHOP"
	//   "PET_STORE"
	//   "SHOE_STORE"
	//   "SPORTING_GOODS_STORE"
	//   "TIRE_SHOP"
	//   "TOY_STORE"
	//   "WHOLESALE_STORE"
	//   "TELEVISION_STATION"
	//   "TOURIST_INFORMATION_CENTER"
	//   "TRAVEL_AGENCY"
	//   "PERFORMING_GROUP"
	//   "MUSIC_GROUP"
	//   "ADMINISTRATIVE_AREA" - PLACE subtypes
	//   "CITY"
	//   "COUNTRY"
	//   "STATE"
	//   "CIVIC_STRUCTURE"
	//   "AIRPORT"
	//   "AQUARIUM"
	//   "BEACH"
	//   "BUS_STATION"
	//   "BUS_STOP"
	//   "CAMPGROUND"
	//   "CEMETERY"
	//   "CREMATORIUM"
	//   "EVENT_VENUE"
	//   "GOVERNMENT_BUILDING"
	//   "CITY_HALL"
	//   "COURTHOUSE"
	//   "DEFENCE_ESTABLISHMENT"
	//   "EMBASSY"
	//   "LEGISLATIVE_BUILDING"
	//   "MUSEUM"
	//   "MUSIC_VENUE"
	//   "PARK"
	//   "PARKING_FACILITY"
	//   "PERFORMING_ARTS_THEATER"
	//   "PLACE_OF_WORSHIP"
	//   "BUDDHIST_TEMPLE"
	//   "CATHOLIC_CHURCH"
	//   "CHURCH"
	//   "HINDU_TEMPLE"
	//   "MOSQUE"
	//   "SYNAGOGUE"
	//   "PLAYGROUND"
	//   "R_V_PARK"
	//   "RESIDENCE"
	//   "APARTMENT_COMPLEX"
	//   "GATED_RESIDENCE_COMMUNITY"
	//   "SINGLE_FAMILY_RESIDENCE"
	//   "TOURIST_ATTRACTION"
	//   "SUBWAY_STATION"
	//   "TAXI_STAND"
	//   "TRAIN_STATION"
	//   "ZOO"
	//   "LANDFORM"
	//   "BODY_OF_WATER"
	//   "CANAL"
	//   "LAKE_BODY_OF_WATER"
	//   "OCEAN_BODY_OF_WATER"
	//   "POND"
	//   "RESERVOIR"
	//   "RIVER_BODY_OF_WATER"
	//   "SEA_BODY_OF_WATER"
	//   "WATERFALL"
	//   "CONTINENT"
	//   "MOUNTAIN"
	//   "VOLCANO"
	//   "LANDMARKS_OR_HISTORICAL_BUILDINGS"
	//   "USER_INTERACTION" - NOTE(jpanzer): This is a badly designed
	// hierarchy and we should avoid depending on Event properties inside
	// UserInteractions as much as possible IMHO.
	//   "USER_PLUS_ONES"
	//   "ENUMERATION" - Intangibles, primarily used as sub-objects of other
	// types
	//   "BOOK_FORMAT_TYPE"
	//   "ITEM_AVAILABILITY"
	//   "OFFER_ITEM_CONDITION"
	//   "JOB_POSTING"
	//   "LANGUAGE"
	//   "OFFER"
	//   "QUANTITY"
	//   "DISTANCE"
	//   "DURATION"
	//   "ENERGY"
	//   "MASS"
	//   "RATING"
	//   "AGGREGATE_RATING"
	//   "STRUCTURED_VALUE"
	//   "CONTACT_POINT"
	//   "POSTAL_ADDRESS"
	//   "GEO_COORDINATES"
	//   "GEO_SHAPE"
	//   "NUTRITION_INFORMATION"
	//   "PRESENTATION_OBJECT" - CREATIVE_WORK extensions
	//   "DOCUMENT_OBJECT"
	//   "SPREADSHEET_OBJECT"
	//   "FORM_OBJECT"
	//   "DRAWING_OBJECT"
	//   "PLACE_REVIEW"
	//   "FILE_OBJECT"
	//   "PLAY_MUSIC_TRACK"
	//   "PLAY_MUSIC_ALBUM"
	//   "MAGAZINE"
	//   "CAROUSEL_FRAME" - Single frame for http://goto/carousel.
	//   "PLUS_EVENT" - EVENT extensions
	//   "HANGOUT" - No declared proto. Used only as a base type for now.
	//   "HANGOUT_BROADCAST"
	//   "HANGOUT_CONSUMER"
	//   "CHECKIN"
	//   "EXAMPLE_OBJECT"
	//   "SQUARE" - NOTE(melchang): These correspond to
	// http://schema.org/WebPage/Community and
	// http://schema.org/WebPage/CommunityInvite. See b/7653610 for why
	// these are "SQUARE" and not "COMMUNITY".
	//   "SQUARE_INVITE"
	//   "PLUS_PHOTO"
	//   "PLUS_PHOTO_ALBUM"
	//   "LOCAL_PLUS_PHOTO_ALBUM"
	//   "PRODUCT_REVIEW"
	//   "FINANCIAL_QUOTE"
	//   "DEPRECATED_TOUR_OBJECT"
	//   "PLUS_PAGE"
	//   "GOOGLE_CHART" - Data visualizations. See
	// http://code.google.com/apis/chart/index.html
	//   "PLUS_PHOTOS_ADDED_TO_COLLECTION"
	//   "RECOMMENDED_PEOPLE" - A collection of people that have been
	// recommended to a user.
	//   "PLUS_POST" - A Google+ post.
	//   "DATE" - An http://schema.org/Date unstructured ISO-8859 timestamp
	// string.
	//   "DRIVE_OBJECT_COLLECTION" - Embed representing a collection of
	// multiple Drive objects.
	//   "NEWS_MEDIA_ORGANIZATION" -
	// https://schema.org/NewsMediaOrganization
	//   "DYNAMITE_ATTACHMENT_METADATA" - Deprecated in favor of
	// DYNAMITE_MESSAGE_METADATA
	//   "DYNAMITE_MESSAGE_METADATA" - Used for Dynamite message metadata in
	// Hangouts
	Type []string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *EmbedsEmbedClientItem) MarshalJSON() ([]byte, error) {
	type NoMethod EmbedsEmbedClientItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// EmbedsPackagingServiceClient: Developers register a client in Google
// API Console to get the deep-linking feature on Google+ posts or
// frames about their apps. The client data is stored in this proto.
type EmbedsPackagingServiceClient struct {
	// AndroidPackageName: Android app's package name to generate the
	// deep-link URI.
	AndroidPackageName string `json:"androidPackageName,omitempty"`

	// IosAppStoreId: iOS app's App Store ID to generate the App Store URL
	// when app is not installed on device.
	IosAppStoreId string `json:"iosAppStoreId,omitempty"`

	// IosBundleId: iOS app's bundle ID to generate the deep-link URI.
	IosBundleId string `json:"iosBundleId,omitempty"`

	// Type: Type of Google API Console client.
	//
	// Possible values:
	//   "ANDROID" - Client for Android app.
	//   "IOS" - Client for iOS app.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidPackageName")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidPackageName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *EmbedsPackagingServiceClient) MarshalJSON() ([]byte, error) {
	type NoMethod EmbedsPackagingServiceClient
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// EmbedsProvenance: This field records where the ItemScope was
// retrieved, if it was created via a web fetch.
type EmbedsProvenance struct {
	// AnnotationBlob: Annotation blob from Annotation Service.
	AnnotationBlob string `json:"annotationBlob,omitempty"`

	// CanonicalUrl: Canonical url of the retrieved_url, if one was resolved
	// during retrieval, for example, if a rel="canonical" link tag was
	// provided in the retrieved web page.
	CanonicalUrl string `json:"canonicalUrl,omitempty"`

	// InputUrl: The url originally passed in the PRS request, which should
	// be used to re-discover the content. Note that this URL may be a
	// forwarding service or link shortener (bit.ly), so it should not be
	// assumed to be canonical, but should be used for navigation back to
	// the original source of the itemscope.
	InputUrl string `json:"inputUrl,omitempty"`

	// Itemtype: Contains exact types as parsed, whether or not we
	// recognized that type at parse time. If an itemscope is created by
	// merging SchemaOrg markup and open graph markup then the first
	// itemtype would be schemaorg type, the second would be open graph and
	// so on. example: http://schema.org/VideoObject, og:video.movie Plain
	// text; usually a URL
	Itemtype []string `json:"itemtype,omitempty"`

	// RetrievedTimestampMsec: The server retrieved timestamp (in msec).
	RetrievedTimestampMsec uint64 `json:"retrievedTimestampMsec,omitempty,string"`

	// RetrievedUrl: The final URL that was the actual source of the
	// itemscope, after any redirects.
	RetrievedUrl string `json:"retrievedUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationBlob") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationBlob") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *EmbedsProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod EmbedsProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// EmbedsTransientData: Transient generic data that will not be saved on
// the server.
type EmbedsTransientData struct {
}

// EventIdMessage: An EventId is a 128 bit identifier that uniquely
// identifies an event, such as a query. The event time recorded to the
// nearest microsecond, along with information about the process
// generating the event, ensures that all EventIds are unique. Details
// of this EventId are described in a design document:
// http://www/eng/designdocs/sawmill/adlogs.html
type EventIdMessage struct {
	// ProcessId: process_id is an integer that identifies the process on
	// this machine that generated this event. This id is calculated once
	// when the server generates its first event, and may change if the
	// process is migrated to a different host. This field has a very
	// specific format mandated by the logs collection infrastructure, which
	// is subject to change WITHOUT NOTICE. As of 2013-01-09, this format
	// is: uint32 process_id = (time(NULL) << 24) + (getpid() & 0xFFFFFF);
	// If you are generating an extended_pid directly, you MUST use one of
	// the maintained library implementations in order to generate it
	// properly: C++ //borg/borgletlib:extended_pid; call
	// borg::ExtendedPid() Python //borg/borgletlib/python:pyextendedpid;
	// call ExtendedPid() Go //borg/borgletlib/go:extendedpid; call Get()
	// Java //java/com/google/common/logging; call EventId.getPid() If you
	// think that you need to parse the values of this field, please contact
	// logs-collection-dev@ to discuss your requirement.
	ProcessId int64 `json:"processId,omitempty"`

	// ServerIp: server_ip is the IPv4 address or http://go/ghostid of the
	// machine running the server that created this event message. This
	// allows us to distinguish between events that occur at the same time
	// on different servers. Format: 10.1.2.3 is stored as 0x0a010203, and
	// GHostId 1 as 0x00000001.
	ServerIp int64 `json:"serverIp,omitempty"`

	// TimeUsec: time_usec is the number of microseconds since the epoch
	// (i.e., since 1970-01-01 00:00:00 UTC) as an int64: 1e6 * (unix time)
	// + microseconds. Applications must ensure that EventIdMessages have
	// increasing times, artificially increasing time_usec to one greater
	// than the previous value if necessary. Alternate implementations were
	// considered: 1. storing unix time and microseconds separately would
	// require a bit more storage, and the convenience of having a single
	// value representing the time seemed more useful than having trivial
	// access to a unix time. 2. storing unix time in the upper 32 bits
	// would allow for more precision - up to 4G events/second, but it
	// wouldn't print nicely as a decimal value and it seems unlikely that
	// any single server would ever sustain more than 1M events/second. 3.
	// Java-compatible time uses millis - this would limit servers to 1000
	// events per second - too small. Other names for this field were
	// considered, including time, time_stamp, and utime. We felt that
	// including the units in the name would tend to produce more readable
	// code. utime might be interpreted as user time. unix timestamp * 1e6 +
	// microseconds
	TimeUsec int64 `json:"timeUsec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ProcessId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProcessId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *EventIdMessage) MarshalJSON() ([]byte, error) {
	type NoMethod EventIdMessage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ExtraSnippetInfoResponse: the extra info response from ascorer used
// to build snippets in GWS experiments
type ExtraSnippetInfoResponse struct {
	Matchinfo *ExtraSnippetInfoResponseMatchInfo `json:"matchinfo,omitempty"`

	Querysubitem []*ExtraSnippetInfoResponseQuerySubitem `json:"querysubitem,omitempty"`

	Tidbit []*ExtraSnippetInfoResponseTidbit `json:"tidbit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Matchinfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Matchinfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ExtraSnippetInfoResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ExtraSnippetInfoResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ExtraSnippetInfoResponseMatchInfo struct {
	// TitleMatches: bitvector of query items matching the title
	TitleMatches uint64 `json:"titleMatches,omitempty,string"`

	// UrlMatches: bitvector of query items matching the url
	UrlMatches uint64 `json:"urlMatches,omitempty,string"`

	// WeightedItems: bitvector of query items considered by chooser
	WeightedItems uint64 `json:"weightedItems,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "TitleMatches") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TitleMatches") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ExtraSnippetInfoResponseMatchInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ExtraSnippetInfoResponseMatchInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ExtraSnippetInfoResponseQuerySubitem: A query term, phrase, or
// synonym. An original query term or phrase is called an "item". Each
// item may have more than one "subitem" if there are synonyms. In rare
// cases a subitem may correspond to multiple items, such as the subitem
// "cia" in the query [central intelligence agency].
type ExtraSnippetInfoResponseQuerySubitem struct {
	// IsHighlighted: Additional information from the SnippetQuery.
	IsHighlighted bool `json:"isHighlighted,omitempty"`

	IsOptional bool `json:"isOptional,omitempty"`

	// IsOriginal: true iff this subitem was an original query term or
	// phrase. Can only be false if want_all_query_subitems == true in the
	// request.
	IsOriginal bool `json:"isOriginal,omitempty"`

	// Items: a bitvector of the query items corresponding to this subitem.
	// Typically only one bit is set, but see comment above.
	Items int64 `json:"items,omitempty"`

	// Text: text associated with this query item
	Text string `json:"text,omitempty"`

	// Weight: the weight of this query item, as calculated by
	// SubitemWeight():
	// https://qwiki.corp.google.com/display/Q/SnippetWeights
	Weight int64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsHighlighted") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsHighlighted") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ExtraSnippetInfoResponseQuerySubitem) MarshalJSON() ([]byte, error) {
	type NoMethod ExtraSnippetInfoResponseQuerySubitem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ExtraSnippetInfoResponseTidbit struct {
	Anchorinfo *ExtraSnippetInfoResponseTidbitAnchorInfo `json:"anchorinfo,omitempty"`

	// Begin: For tidbits only: position of tidbit in the document. More
	// specifically, tidbit is found at [begin, end) in the document's
	// tokens.
	Begin int64 `json:"begin,omitempty"`

	End int64 `json:"end,omitempty"`

	// Items: a bitvector of each query term within this tidbit
	Items uint64 `json:"items,omitempty,string"`

	// Score: the score for this tidbit if there was one this is returned
	// for Snippets and Tidbits and is only meaningful for comparing between
	// objects of the same type (snippet to snippet, tidbit to tidbit)
	Score float64 `json:"score,omitempty"`

	// Text: the tidbit text, with search terms already highlighted
	Text string `json:"text,omitempty"`

	// Possible values:
	//   "TIDBIT" - it is a tidbit returned by want_all_tidbits
	//   "BODY" - these are the best candidate snippets from each section,
	// returned by want_all_snippets
	//   "META"
	//   "GWD" - NOTE(kinoue): ODP/GWD snippet is unlaunched as of June
	// 2017. This is no longer used.
	//   "FULL"
	//   "ANCHOR" - NOTE(kinoue): Deprecated and unsupported. anchor text,
	// returned if max_anchors_wanted > 0
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchorinfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchorinfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ExtraSnippetInfoResponseTidbit) MarshalJSON() ([]byte, error) {
	type NoMethod ExtraSnippetInfoResponseTidbit
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ExtraSnippetInfoResponseTidbit) UnmarshalJSON(data []byte) error {
	type NoMethod ExtraSnippetInfoResponseTidbit
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ExtraSnippetInfoResponseTidbitAnchorInfo: this information is
// specific to anchors and is only returned if type == ANCHOR
type ExtraSnippetInfoResponseTidbitAnchorInfo struct {
	OffdomainCount int64 `json:"offdomainCount,omitempty"`

	OndomainCount int64 `json:"ondomainCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OffdomainCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OffdomainCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ExtraSnippetInfoResponseTidbitAnchorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ExtraSnippetInfoResponseTidbitAnchorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type FaceIndexing struct {
	// MustangBytes: Always use image/search/utils/face_proto_util.h for
	// packing and unpacking these values.
	MustangBytes string `json:"mustangBytes,omitempty"`

	MustangBytesVersion int64 `json:"mustangBytesVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MustangBytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MustangBytes") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FaceIndexing) MarshalJSON() ([]byte, error) {
	type NoMethod FaceIndexing
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type FatcatCompactBinaryClassification struct {
	// BinaryClassifier: Either binary_classifier will be set, using the
	// enum above, or binary_classifier_name will be set, if it is not one
	// of the classifiers in the enum - never both.
	//
	// Possible values:
	//   "BLOG" - Pagetypes
	//   "FORUM"
	//   "LOGIN"
	//   "B2B_OK"
	//   "IMAGES"
	//   "SOCIAL"
	//   "PURCHASING_INTENT"
	//   "PORN" - Sensitive content
	//   "ADULTISH"
	//   "VIOLENCE_GORE"
	//   "GOSSIP"
	BinaryClassifier string `json:"binaryClassifier,omitempty"`

	BinaryClassifierName string `json:"binaryClassifierName,omitempty"`

	// DiscreteFraction: A CompactDocClassification will not usually have a
	// weight. For a CompactSiteClassification, this value will be 0...127
	// corresponding to 0.0...1.0, indicating fraction of the site that this
	// label applies to
	DiscreteFraction int64 `json:"discreteFraction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BinaryClassifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BinaryClassifier") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactBinaryClassification) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactBinaryClassification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FatcatCompactDocClassification: The result of PetacatAnnotator. Each
// result contains: 1. RephilClusters; 2. At most 5 verticals from each
// taxonomy, sorted by the probabilities in descending order. 3. Binary
// classification results about page types and sensitive content. The
// types of taxonomies include: verticals4, geo, verticals4_geo,
// products_services, icm_im_audiences and icm_im_audiences_dev.
type FatcatCompactDocClassification struct {
	Binary []*FatcatCompactBinaryClassification `json:"binary,omitempty"`

	Clusters *FatcatCompactRephilClusters `json:"clusters,omitempty"`

	Epoch string `json:"epoch,omitempty"`

	LangCode string `json:"langCode,omitempty"`

	// RephilModelId: The id of the Rephil model used to generate the Rephil
	// clusters. If it is absent, Rephil 4 is assumed.
	RephilModelId int64 `json:"rephilModelId,omitempty"`

	Taxonomic []*FatcatCompactTaxonomicClassification `json:"taxonomic,omitempty"`

	// Url: not needed if the url is the sstable / bigtable key used during
	// intermediate processing only
	Url string `json:"url,omitempty"`

	// Weight: The relative weight of this doc within a site, typically
	// something like pagerank or navboost impressions. May be a large
	// number (like an actual pageviews estimate), not limited to a small
	// range.
	Weight int64 `json:"weight,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Binary") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Binary") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactDocClassification) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactDocClassification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type FatcatCompactRephilClusters struct {
	Cluster []*FatcatCompactRephilClustersCluster `json:"cluster,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cluster") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cluster") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactRephilClusters) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactRephilClusters
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type FatcatCompactRephilClustersCluster struct {
	// DiscreteWeight: 0...127 corresponds to 0.0 - 1.0
	DiscreteWeight int64 `json:"discreteWeight,omitempty"`

	Id int64 `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DiscreteWeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DiscreteWeight") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactRephilClustersCluster) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactRephilClustersCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FatcatCompactTaxonomicClassification: A version of this proto for
// logging is available at
// cs/symbol:logged_fatcat.LoggedCompactTaxonomicClassification
type FatcatCompactTaxonomicClassification struct {
	Category []*FatcatCompactTaxonomicClassificationCategory `json:"category,omitempty"`

	ClassifierVersion string `json:"classifierVersion,omitempty"`

	// Taxonomy: Either taxonomy will be set, using the enum above, or
	// taxonomy_name will be set (if the taxonomy is not one of the ones in
	// the enum) - never both
	//
	// Possible values:
	//   "VERTICALS" - DEPRECATED Verticals, v3
	//   "VERTICALS4" - Publisher Verticals, v4. go/verticals4
	//   "VERTICALS4_GEO" - Publisher Verticals, v4 + World Localities
	//   "GEO" - World Localities
	//   "PRODUCTS_SERVICES" - Products & Services
	//   "ICM_IM_AUDIENCES" - ICM In Market Audiences
	//   "ICM_IM_AUDIENCES_DEV" - Experimental ICM In Market Audiences
	Taxonomy string `json:"taxonomy,omitempty"`

	TaxonomyName string `json:"taxonomyName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactTaxonomicClassification) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactTaxonomicClassification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FatcatCompactTaxonomicClassificationCategory: A taxonomic category. A
// classification consists of weight (totalling 1.0) distributed among
// one or more categories.
type FatcatCompactTaxonomicClassificationCategory struct {
	// DiscreteWeight:
	// go/petacat-faq#how-should-i-interpret-classification-weights Discrete
	// to reduce size. Range is [0,127], corresponding to [0.0,1.0].
	DiscreteWeight int64 `json:"discreteWeight,omitempty"`

	// Id: The category's ID, e.g. 20 for /Sports in the go/verticals4
	// taxonomy.
	Id int64 `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DiscreteWeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DiscreteWeight") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FatcatCompactTaxonomicClassificationCategory) MarshalJSON() ([]byte, error) {
	type NoMethod FatcatCompactTaxonomicClassificationCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendContactDetailHash: http://go/contact-detail-hash.
type FocusBackendContactDetailHash struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "PHONE"
	//   "EMAIL"
	Type string `json:"type,omitempty"`

	// Value: The hash here will be a 16-bit weak hash to avoid reverse
	// engineering for decoding the actual contact detail. The hash value is
	// computed by the fingerprint of the raw contact detail mod 2^16.
	Value int64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendContactDetailHash) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendContactDetailHash
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendContactPointer: A contact pointer that represents a
// contact (http://go/assistant-contact-id).
type FocusBackendContactPointer struct {
	// AnnotationId: The annotation ID. Annotations are only allowed to
	// point to annotations that do not themselves have a pointer (avoids
	// any possibilty of loops). Cast this field to string in javascript to
	// make it compile in js.
	AnnotationId int64 `json:"annotationId,omitempty,string"`

	// DeviceRawContactId: The raw contact ID from an active mobile device
	// of the user.
	DeviceRawContactId *FocusBackendDeviceRawContactId `json:"deviceRawContactId,omitempty"`

	// FocusContactId: The contact ID from the Focus backend. Cast this
	// field to string in javascript to make it compile in js.
	FocusContactId int64 `json:"focusContactId,omitempty,string"`

	// OtherContactId: Additional contact ids that are not actively used to
	// match contact pointers to contacts.
	OtherContactId *FocusBackendOtherContactId `json:"otherContactId,omitempty"`

	// SecondaryId: The secondary identifier of contact. It will be used
	// when the primary ID doesn't match any contact.
	SecondaryId *FocusBackendSecondaryContactId `json:"secondaryId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendContactPointer) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendContactPointer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendDeviceContactId: //////////////////// DeviceContactId
// ////////////////////// Used by Device Contacts only. For more details
// see go/fbs-support-for-device-contacts.
type FocusBackendDeviceContactId struct {
	// ContactId: DeviceContact Id.
	ContactId int64 `json:"ContactId,omitempty,string"`

	// DeviceId: Device Id.
	DeviceId *FocusBackendDeviceId `json:"DeviceId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendDeviceContactId) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendDeviceContactId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendDeviceId: //////////////////// DeviceId
// ////////////////////// Used by Device Contacts only. For more details
// see go/fbs-support-for-device-contacts.
type FocusBackendDeviceId struct {
	// AndroidDeviceId: The GServices id on Android. See go/android-id.
	AndroidDeviceId int64 `json:"AndroidDeviceId,omitempty,string"`

	// Hash: DeviceId.Hash is a SHA256 of some attribute of the user and
	// device. For Android devices: Hash = SHA256(gaia_account_name +
	// “:” + “1” + “:” + (android id - LSB)); For iOS devices:
	// Hash = TOLOWER(HEX(GMCSComputeUserDeviceToken(userId, iOsDeviceId))
	// For more details see go/client-instance-id.
	Hash string `json:"Hash,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidDeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidDeviceId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendDeviceId) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendDeviceId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendDeviceRawContactId: ////////////////////
// DeviceRawContactId ////////////////////// Used by Device Contacts
// Only. The Raw ID as assigned to the original contact on the device.
// For more details see go/fbs-support-for-device-contacts.
type FocusBackendDeviceRawContactId struct {
	DeviceId *FocusBackendDeviceId `json:"DeviceId,omitempty"`

	// RawContactId: Raw ID assigned by the device. Cast this field to
	// string in javascript to make it compile in js.
	RawContactId int64 `json:"RawContactId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendDeviceRawContactId) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendDeviceRawContactId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendOtherContactId: Additional contact ids that are not
// actively used to match contact pointers to contacts. There may be
// overlap with primary or secondary contact ids.
type FocusBackendOtherContactId struct {
	// DeviceContactId: Device contact ID, when available: - The annotation
	// points to a device contact, and the device contact id was correctly
	// populated when the annotation was created. Note that the device
	// contact id is populated once per device contact on a device. It is
	// distinct from RawContactId - a single device contact may have
	// multiple raw contact ids. - The annotation points to a Focus contact
	// that was merged with device contact information in Starlight. When
	// the annotation was created, a device contact id was available on the
	// merged person object. - The contact annotation was created from April
	// 2021 onwards. All prior annotations do not populate this field.
	// ContactPointer creation relies on the client caller to correctly
	// populate the device contact id, and does not enforce any assumptions
	// on availability of this field. This field is repeated because in rare
	// cases Starlight may merge device contact information across different
	// devices into a single merged person object. WARNING: Use with extreme
	// caution! This ID is not stable. For more details see
	// go/fbs-support-for-device-contacts.
	DeviceContactId []*FocusBackendDeviceContactId `json:"deviceContactId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceContactId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceContactId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendOtherContactId) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendOtherContactId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FocusBackendSecondaryContactId: The secondary ID of a contact.
type FocusBackendSecondaryContactId struct {
	// ContactDetailHash: The hashes of the contact details (e.g. phone
	// number and email address).
	ContactDetailHash []*FocusBackendContactDetailHash `json:"contactDetailHash,omitempty"`

	// ContactName: The contact's full name, not hashed.
	ContactName string `json:"contactName,omitempty"`

	// ContactNameHash: The hash of contact's full name, generated using
	// Fingerprint2011(). Cast this field to string in javascript to make it
	// compile in js.
	ContactNameHash uint64 `json:"contactNameHash,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ContactDetailHash")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactDetailHash") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *FocusBackendSecondaryContactId) MarshalJSON() ([]byte, error) {
	type NoMethod FocusBackendSecondaryContactId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseCitation: Citation contains the information needed to
// correctly attribute the source of data.
type FreebaseCitation struct {
	// Dataset: Mid of the dataset.
	Dataset string `json:"dataset,omitempty"`

	// IsAttributionRequired: If set to true, the citation is required to be
	// displayed when the data is used.
	IsAttributionRequired bool `json:"isAttributionRequired,omitempty"`

	// Project: Name of the project of the data's origin.
	Project string `json:"project,omitempty"`

	// Provider: The name of the provider of this information.
	Provider string `json:"provider,omitempty"`

	// Statement: A human readable statement of attribution.
	Statement string `json:"statement,omitempty"`

	// Uri: Uri link associated with this data.
	Uri string `json:"uri,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dataset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dataset") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseCitation) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseCitation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseId: An Id contains the identifiers used to reference this
// topic (entity) in the Knowledge Graph. The Knowledge Graph supports
// several forms of identifiers: - "mids" (machine ids) that are
// assigned at creation time, and support a resolution mechanism that
// tracks topics after they are merged (for more about mids, see
// go/kg-mid), - "ids" are human-readable ids (HRIDs) that are derived
// from a namespace hierarchy stored in Knowledge Graph, and a set of
// rules, - "guids" are low-level ids historically used in Freebase
// (pre-Knowledge Graph, deprecated). Only the mid and id are supplied
// here. Note that mids can be converted to guids or uint64s (see
// //metaweb/util/mid/mid.h).
type FreebaseId struct {
	// Id: "id" may be a human readable ID (HRID) or a MID. Originally it
	// was intended to always be a human readable ID, but that convention
	// was not always followed so clients should be wary. Not every topic
	// has an id.
	Id string `json:"id,omitempty"`

	// Mid: The "mid" should be used whenever a globally unique, primary key
	// into the Knowledge Graph is needed. These keys are always prefixed
	// with the "/m" and "/g", (and more rarely the "/x" and "/t")
	// namespaces, and are alphanumeric strings consisting of lowercase
	// letters excluding vowels, numbers and the underscore character.
	// (Applications should not assume a constant length for these strings
	// as Livegraph reserves the right to extend the number of characters to
	// accommodate more topics.)
	Mid string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseId) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseLatLong: Represents a geopoint, which is one of the possible
// Value types.
type FreebaseLatLong struct {
	LatDeg float64 `json:"latDeg,omitempty"`

	LongDeg float64 `json:"longDeg,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LatDeg") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LatDeg") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseLatLong) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseLatLong
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *FreebaseLatLong) UnmarshalJSON(data []byte) error {
	type NoMethod FreebaseLatLong
	var s1 struct {
		LatDeg  gensupport.JSONFloat64 `json:"latDeg"`
		LongDeg gensupport.JSONFloat64 `json:"longDeg"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LatDeg = float64(s1.LatDeg)
	s.LongDeg = float64(s1.LongDeg)
	return nil
}

// FreebaseMeasurement: Represents a measurements, which is one of the
// possible Value types. A measurement value like "5.2 meter^2 / second"
// would be represented as: magnitude: 5.2 unit { unit_mid:
// "/m/mid_for_meter" power: 2 } unit { unit_mid: "/m/mid_for_second"
// power: -1 }
type FreebaseMeasurement struct {
	Magnitude float64 `json:"magnitude,omitempty"`

	// Unit: Repeated units are interpreted as a product. i.e. (meter ^ 1) *
	// (second ^ -2)
	Unit []*FreebaseMeasurementUnit `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Magnitude") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Magnitude") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseMeasurement) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseMeasurement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *FreebaseMeasurement) UnmarshalJSON(data []byte) error {
	type NoMethod FreebaseMeasurement
	var s1 struct {
		Magnitude gensupport.JSONFloat64 `json:"magnitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Magnitude = float64(s1.Magnitude)
	return nil
}

type FreebaseMeasurementUnit struct {
	Power int64 `json:"power,omitempty"`

	Unit *FreebaseId `json:"unit,omitempty"`

	// UnitMid: Deprecated fields.
	UnitMid string `json:"unitMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Power") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Power") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseMeasurementUnit) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseMeasurementUnit
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseNestedStruct: List of { predicate, { object } } to be
// processed as a Nested Struct. Nested Struct can be recursive.
// NestedStruct.property_value(i).value(j) may have nested_struct field.
type FreebaseNestedStruct struct {
	PropertyValue []*FreebasePropertyValue `json:"propertyValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PropertyValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PropertyValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseNestedStruct) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseNestedStruct
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebasePropertyValue: A PropertyValue associates properties with
// values in the context of a topic.
type FreebasePropertyValue struct {
	// Property: The id of the property.
	Property *FreebaseId `json:"property,omitempty"`

	// TotalValueCount: Indicates the total values that exist for this
	// property, even if they aren't all present in the value field, due to
	// truncation.
	TotalValueCount int64 `json:"totalValueCount,omitempty,string"`

	// Value: The value associated with the property for the containing
	// topic.
	Value []*FreebaseValue `json:"value,omitempty"`

	// ValueStatus: If ValueStatus is not set at all, the implication is
	// that there are well-known value(s), specified in the "value" field.
	// (It should be considered malformed data to have value_status set when
	// len(values) > 0.)
	//
	// Possible values:
	//   "HAS_UNKNOWN_VALUE" - There are values, but we don't know what they
	// are. (e.g. person is known to have children, but we don't know who
	// they are) (This is only sensible if len(values) == 0; it is an error
	// to see this value if len(values) > 0)
	//   "HAS_NO_VALUE" - We know that there are no values for this
	// predicate. (e.g. person is known to have zero children) (This is only
	// sensible if len(values) == 0; it is an error to see this value if
	// len(values) > 0)
	ValueStatus string `json:"valueStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Property") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Property") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebasePropertyValue) MarshalJSON() ([]byte, error) {
	type NoMethod FreebasePropertyValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseTopic: A Topic represents a Knowledge Graph entity with its
// associated properties and their values.
type FreebaseTopic struct {
	// Id: The id (mid and human-readable id) of the topic. The id will
	// always be present and will contain a mid value for topics in the
	// topic sstable.
	Id *FreebaseId `json:"id,omitempty"`

	// PropertyValue: The property-value bindings associated with the topic.
	// Note that in the case where a property is relevant to a topic based
	// on its type, but no values of that property are present for the
	// topic, the PropertyValue will simply not appear, rather than being
	// present with a null value, or empty repeated value list.
	PropertyValue []*FreebasePropertyValue `json:"propertyValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseTopic) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FreebaseValue: Values are effectively a union of several possible
// Knowledge Graph types: simple primitive datatypes such as booleans,
// integers and floats, references to other Knowledge Graph topics (by
// id), or "compound values" which are expressed as embedded topics with
// associated properties and values. Values occur in indexed order (if
// any).
type FreebaseValue struct {
	// BoolValue: key, uri, or datetime. Present when value is bool.
	BoolValue bool `json:"boolValue,omitempty"`

	// Citation: Citation data for this value. See: http://go/kg-clap
	Citation *FreebaseCitation `json:"citation,omitempty"`

	// CompoundValue: Compound values are those that contain either a number
	// of simple valued facets (such as a latitude/longitude pair), or
	// "mediator" topics representing multi-dimensional relationships
	// between topics. In both cases we represent them here with an embedded
	// topic, although the topic's identity is somewhat secondary to the
	// property/value pairs it contains. (The identity is still made
	// available so that it can be used to perform updates to that mediator
	// on the Knowledge Graph.)
	CompoundValue *FreebaseTopic `json:"compoundValue,omitempty"`

	// DeletionProvenance: Deletion provenance for this value.
	DeletionProvenance []*StorageGraphBfgTripleProvenance `json:"deletionProvenance,omitempty"`

	// DisplayLang: The lang of the display_value field.
	DisplayLang string `json:"displayLang,omitempty"`

	// DisplayValue: The display value of this value. This is a i18n-aware
	// formatted value if present.
	DisplayValue string `json:"displayValue,omitempty"`

	// ExpectedProto: An optional name for a proto field.
	ExpectedProto string `json:"expectedProto,omitempty"`

	// FloatValue: Present when value is float.
	FloatValue float64 `json:"floatValue,omitempty"`

	// IdValue: Present when value is an id.
	IdValue *FreebaseId `json:"idValue,omitempty"`

	// Index: Index of the value relative to the containing property (if
	// any). Knowledge Graph supports a loose notion of indexing: some
	// non-unique properties may have indices, while others may not.
	// Furthermore, for a single property, some values may have indices
	// (such as the top 5 actors in a film), while others may not (the
	// film's supporting cast). Un-indexed values will appear at the end of
	// the repeated value list. This field contains the index value only
	// when is present in the Knowledge Graph.
	Index uint64 `json:"index,omitempty,string"`

	// IntValue: Present when value is int.
	IntValue int64 `json:"intValue,omitempty,string"`

	// Lang: Whenever the value is text with TYPE_TEXT, the lang field is
	// populated with the III LanguageCode associated with the string_value
	// field.
	Lang string `json:"lang,omitempty"`

	LatLongValue *FreebaseLatLong `json:"latLongValue,omitempty"`

	MeasurementValue *FreebaseMeasurement `json:"measurementValue,omitempty"`

	// NestedStruct: Populated if this value holds NestedStruct. 'type'
	// field needs to be set to TYPE_NESTED_STRUCT.
	NestedStruct *FreebaseNestedStruct `json:"nestedStruct,omitempty"`

	// Provenance: Provenance for this value.
	Provenance []*StorageGraphBfgTripleProvenance `json:"provenance,omitempty"`

	// RawValue: Similar to string_value/etc but contains raw bytes.
	RawValue string `json:"rawValue,omitempty"`

	// StringValue: Present when value is text, enum,
	StringValue string `json:"stringValue,omitempty"`

	SubgraphId googleapi.Uint64s `json:"subgraphId,omitempty"`

	// Timestamp: The ISO-8601 timestamp corresponding to when this value
	// was created (when it was written to the Knowledge Graph). Deprecated
	// in favor of timestamp_usec.
	Timestamp string `json:"timestamp,omitempty"`

	// TimestampUsec: The microsecond timestamp corresponding to when this
	// value was created.
	TimestampUsec int64 `json:"timestampUsec,omitempty,string"`

	// Possible values:
	//   "TYPE_NULL" - No fields are supplied.
	//   "TYPE_ID" - id_value contains an Id of a referenced topic.
	//   "TYPE_TEXT" - For text, string_value contains an UTF-8 string,
	//   "TYPE_ENUM" - and lang contains the III LanguageCode code. For
	// bytes, string_value contains non-UTF-8 bytes. string_value contains
	// an enum key string.
	//   "TYPE_KEY" - string_value contains a namespace key string.
	//   "TYPE_URI" - string_value contains a URI string.
	//   "TYPE_DATETIME" - string_value contains a (possibly truncated)
	//   "TYPE_BOOL" - ISO-8601 datetime string (always UTC relative).
	// bool_value contains a bool.
	//   "TYPE_INT" - int_value contains an int. Uint64 are supported
	//   "TYPE_FLOAT" - (they are encoded as int64, which looks odd when
	// printed, but the representation is correct). float_value contains a
	// float.
	//   "TYPE_COMPOUND" - compound_value contains property/value pairs.
	//   "TYPE_PROTO" - raw_value contains a raw proto.
	//   "TYPE_EXTENSION" - This proto has extensions set.
	//   "TYPE_NESTED_STRUCT" - nested_struct field is populated.
	//   "TYPE_LAT_LONG" - lat_long_value contains a geopoint.
	//   "TYPE_MEASUREMENT" - measurement_value contains a measurement.
	//   "TYPE_HAS_VALUE" - No longer used; pending downstream code cleanup.
	//   "TYPE_HAS_NO_VALUE" - No longer used; pending downstream code
	// cleanup.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *FreebaseValue) MarshalJSON() ([]byte, error) {
	type NoMethod FreebaseValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *FreebaseValue) UnmarshalJSON(data []byte) error {
	type NoMethod FreebaseValue
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// GDocumentBase: Next id: 127
type GDocumentBase struct {
	// ContentExpiryTime: unix secs from epoch
	ContentExpiryTime int64 `json:"ContentExpiryTime,omitempty"`

	// DisplayUrl: Sometimes the URL displayed in search results should be
	// different from what gets indexed (e.g. in enterprise, content
	// management systems). If this value is not set, we default to the
	// regular URL.
	DisplayUrl string `json:"DisplayUrl,omitempty"`

	// DocId: 64-bit docid of the document (usually fingerprint of URL, but
	// not always). WARNING: This does NOT uniquely identify a document
	// ANYMORE. For a unique identifier across all documents in production
	// please refer to the field 'id().key()' listed above.
	DocId uint64 `json:"DocId,omitempty,string"`

	ExternalFeedMetadata string `json:"ExternalFeedMetadata,omitempty"`

	// ExternalHttpMetadata: Enterprise-specific external metadata. See
	// http://engdoc/eng/designdocs/enterprise/enterprise_indexing_metadata.html
	ExternalHttpMetadata string `json:"ExternalHttpMetadata,omitempty"`

	// FilterForSafeSearch: Deprecated, do not use, this field is not
	// populated since 2012.
	FilterForSafeSearch int64 `json:"FilterForSafeSearch,omitempty"`

	// IPAddr: IP addr in binary (allows for IPv6)
	IPAddr string `json:"IPAddr,omitempty"`

	NoArchiveReason int64 `json:"NoArchiveReason,omitempty"`

	NoFollowReason int64 `json:"NoFollowReason,omitempty"`

	NoImageIndexReason int64 `json:"NoImageIndexReason,omitempty"`

	NoImageframeOverlayReason int64 `json:"NoImageframeOverlayReason,omitempty"`

	// NoIndexReason: When these reasons are set to a non zero value, the
	// document should not be indexed, or show a snippet, or show a cache,
	// etc. These reasons are bit maps of
	// indexing.converter.RobotsInfo.RobotedReasons enum values reflecting
	// the places where the restriction was found.
	NoIndexReason int64 `json:"NoIndexReason,omitempty"`

	NoPreviewReason int64 `json:"NoPreviewReason,omitempty"`

	NoSnippetReason int64 `json:"NoSnippetReason,omitempty"`

	NoTranslateReason int64 `json:"NoTranslateReason,omitempty"`

	// Pagerank: Pagerank for doc (if known)
	Pagerank int64 `json:"Pagerank,omitempty"`

	// PagerankNS: Pagerank-NearestSeeds is an alternative pagerank score
	// for the doc.
	PagerankNS int64 `json:"PagerankNS,omitempty"`

	// Repid:  is the webmirror representative id of the canonical url. Urls
	// with the same repid are considered as dups in webmirror. WARNING: use
	// this field with caution! The webmirror duprules change frequently, so
	// this value only reflects the duprules at the time when the
	// canonical's docjoin is built.
	Repid string `json:"Repid,omitempty"`

	// ScienceMetadata: Citation data for science articles.
	ScienceMetadata *ScienceCitation `json:"ScienceMetadata,omitempty"`

	// URL: WARNING: the URL does NOT uniquely identify a document ANYMORE.
	// For a unique identifier across all documents in production please
	// refer to the field 'id().key()' listed above. Reason: foo.bar:/http
	// and foo.bar:/http:SMARTPHONE share the same URL, but the body of the
	// two documents might differ because of different crawl-context
	// (desktop vs. smartphone in this example).
	URL string `json:"URL,omitempty"`

	URLAfterRedirects string `json:"URLAfterRedirects,omitempty"`

	// URLEncoding: See webutil/urlencoding
	URLEncoding int64 `json:"URLEncoding,omitempty"`

	Content *GDocumentBaseContent `json:"content,omitempty"`

	Directory []*GDocumentBaseDirectory `json:"directory,omitempty"`

	// EcnFp: 96-bit fingerprint of the canonical url's webmirror
	// equivalence class name as of when this cdoc was exported.
	EcnFp string `json:"ecnFp,omitempty"`

	// Id: The primary identifier of a production document is the document
	// key given in the ServingDocumentIdentifier, which is the same as the
	// row-key in Alexandria, and represents a URL and its crawling context.
	// In your production code, please always assume that the document key
	// is the only way to uniquely identify a document. ## Recommended way
	// of reading: const string& doc_key = cdoc.doc().id().key(); ##
	// CHECK(!doc_key.empty()); More background information can be found in
	// google3/indexing/crawler_id/servingdocumentidentifier.proto The
	// ServingDocumentIdentifier uniquely identifies a document in serving
	// and also distinguishes between experimental vs. production documents.
	// The SDI is also used as an input for the union/muppet key generation
	// in serving.
	Id *IndexingCrawlerIdServingDocumentIdentifier `json:"id,omitempty"`

	// LocalsearchDocInfo: Localsearch-specific data.
	LocalsearchDocInfo *LocalsearchDocInfo `json:"localsearchDocInfo,omitempty"`

	// OceanDocInfo: Ocean-specific data.
	OceanDocInfo *OceanDocInfo `json:"oceanDocInfo,omitempty"`

	Originalcontent *GDocumentBaseOriginalContent `json:"originalcontent,omitempty"`

	// UserAgentName: The user agent name used to crawl the URL. See
	// //crawler/engine/webmirror_user_agents.h for the list of user-agents
	// (e.g. crawler::WebmirrorUserAgents::kGoogleBot). NOTE: This field is
	// copied from the first WEBMIRROR FetchReplyClientInfo in
	// trawler_fetch_info column. We leave this field unpopulated if no
	// WEBMIRROR FecthReplyClientInfo is found. As the submission of
	// cl/51488336, Alexandria starts to populate this field. However,
	// docjoins from freshdocs (or any other source), won't have this field
	// populated, because we believe no one needs to read this field from
	// freshdocs docjoins.
	UserAgentName string `json:"userAgentName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentExpiryTime")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentExpiryTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GDocumentBase) MarshalJSON() ([]byte, error) {
	type NoMethod GDocumentBase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GDocumentBaseContent: Main content section
type GDocumentBaseContent struct {
	AuthMethod int64 `json:"AuthMethod,omitempty"`

	// ContentLength: The actual length of the content: If Representation is
	// compressed, this equals to Content.UncompressedLength; otherwise it
	// is the length of the representation string.
	ContentLength int64 `json:"ContentLength,omitempty"`

	// ContentType: See enum ContentType in
	// //depot/google3/webutil/http/content-type.proto.
	ContentType int64 `json:"ContentType,omitempty"`

	// CrawlTime: Seconds since Unix epoch.
	CrawlTime int64 `json:"CrawlTime,omitempty,string"`

	// Encoding: See //depot/google3/i18n/encodings/public/encodings.h
	// Encoding of representation
	Encoding int64 `json:"Encoding,omitempty"`

	// HasHttpHeader: Set to false if Representation does not contain HTTP
	// headers.
	HasHttpHeader bool `json:"HasHttpHeader,omitempty"`

	// Language: A Language enum value. See: go/language-enum Default is
	// english
	Language int64 `json:"Language,omitempty"`

	// OriginalEncoding: If OriginalEncoding is present, the body part of
	// the Representation was converted to UTF-8, Encoding was set to UTF8,
	// and OriginalEncoding was set to the original encoding before
	// conversion. However, the HTTP headers part of the content might not
	// be valid UTF-8. -1=an invalid value
	OriginalEncoding int64 `json:"OriginalEncoding,omitempty"`

	// Representation: Possibly compressed for old documents. It is not
	// compressed for docjoins produced by Raffia after ~2012.
	Representation string `json:"Representation,omitempty"`

	// UncompressedLength: Historically present if Representation is
	// compressed.
	UncompressedLength int64 `json:"UncompressedLength,omitempty"`

	// VisualType: Whether the content was visual right-to-left, and if so,
	// what type of visual document it is. Must be one of the values in enum
	// VisualType from google3/repository/rtl/visualtype.h Default is
	// NOT_VISUAL_DOCUMENT. See http://wiki/Main/RtlLanguages for
	// background.
	VisualType int64 `json:"VisualType,omitempty"`

	// CrawledFileSize: Crawled file size of the original document.
	CrawledFileSize int64 `json:"crawledFileSize,omitempty"`

	// EncodedGeometryAnnotations: GeometryAnnotations, encoded with
	// GeometryUtil::DeltaEncode() to reduce disk space usage. Use
	// GeometryUtil::DeltaDecode() to decode this field.
	EncodedGeometryAnnotations string `json:"encodedGeometryAnnotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuthMethod") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthMethod") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GDocumentBaseContent) MarshalJSON() ([]byte, error) {
	type NoMethod GDocumentBaseContent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GDocumentBaseDirectory: The Directory proto group holds snippet and
// title metadata which is made available to the snippet code. The proto
// group was originally created for metadata coming from the Google Web
// Directory (gwd) project. It has since come to be used to hold
// metadata from gwd and other sources.
type GDocumentBaseDirectory struct {
	// Category: encoded in UTF8
	Category string `json:"Category,omitempty"`

	// Description: encoded in UTF8
	Description string `json:"Description,omitempty"`

	DescriptionScore float64 `json:"DescriptionScore,omitempty"`

	// Identifier: "gwd", etc.
	Identifier string `json:"Identifier,omitempty"`

	// Language: go/language-enum
	Language int64 `json:"Language,omitempty"`

	// Title: encoded in UTF8
	Title string `json:"Title,omitempty"`

	// TitleScore: Deprecated; do not use. There is no code populating these
	// fields as of Oct 2017.
	TitleScore float64 `json:"TitleScore,omitempty"`

	URL string `json:"URL,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GDocumentBaseDirectory) MarshalJSON() ([]byte, error) {
	type NoMethod GDocumentBaseDirectory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GDocumentBaseDirectory) UnmarshalJSON(data []byte) error {
	type NoMethod GDocumentBaseDirectory
	var s1 struct {
		DescriptionScore gensupport.JSONFloat64 `json:"DescriptionScore"`
		TitleScore       gensupport.JSONFloat64 `json:"TitleScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DescriptionScore = float64(s1.DescriptionScore)
	s.TitleScore = float64(s1.TitleScore)
	return nil
}

// GDocumentBaseOriginalContent: The original, unconverted document,
// typically PDF or Word. Copied from OriginalDoc field of doclogs.
// Unlike "Content", this does not contain any HTTP headers. The content
// may be compressed using the same method as "Content". In practice it
// is only compressed in the Teragoogle index. It is never compressed in
// docjoins because those are compressed at the sstable level. In
// doclogs content will only be compressed if the Trawler fetchreply is
// also compressed--which is currently never and unlikely to change for
// performance reasons.
type GDocumentBaseOriginalContent struct {
	Representation string `json:"Representation,omitempty"`

	// UncompressedLength: present iff rep is compressed
	UncompressedLength int64 `json:"UncompressedLength,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Representation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Representation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GDocumentBaseOriginalContent) MarshalJSON() ([]byte, error) {
	type NoMethod GDocumentBaseOriginalContent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GenericSnippetResponse: The generic version of a snippet response
type GenericSnippetResponse struct {
	// DebugInfo: Per-doc debug information.
	DebugInfo []string `json:"debugInfo,omitempty"`

	// Info: Servlet-specific response info.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Snippet: Lines of the snippet HTML. Typically gws concatenates these
	// and lets the browser wrap. The values include trailing spaces, so
	// inserting additional spaces is not necessary. However, for very old
	// browsers, gws may insert break tags after each snippet line. This
	// field is confusing and poorly named; "snippet_line" would be better.
	// In particular, note that this does not return multiple snippets for a
	// result. Nor are these fields the individual tidbits of the snippet.
	Snippet []string `json:"snippet,omitempty"`

	// Title: The title HTML. It may contain tags to denote query term
	// matches. It may be already truncated and "..." is put instead (note
	// that truncation does not always happen at the very end of the title
	// text). However the existence of "..." does not guarantee that the
	// snippet generation algorithm truncated it; e.g. webmasters themselves
	// can write "...".
	Title string `json:"title,omitempty"`

	// WwwSnippetResponse: Snippet-specific members (tag ids 16+, must be
	// optional!) Example: optional NewContentResponse new_response;
	WwwSnippetResponse *WWWSnippetResponse `json:"wwwSnippetResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GenericSnippetResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GenericSnippetResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeoOndemandAssistantSupportedActions: Actions supported by Madden for
// a local entity.
type GeoOndemandAssistantSupportedActions struct {
	// AllowsGuestCheckout: Whether this local entity allows guest checkout
	// for reservations.
	AllowsGuestCheckout bool `json:"allowsGuestCheckout,omitempty"`

	// IsAsynchronousRestaurantReservation: Whether or not this local entity
	// supports asynchronous restaurant reservations, through the above
	// restaurant_reservation_url.
	IsAsynchronousRestaurantReservation bool `json:"isAsynchronousRestaurantReservation,omitempty"`

	// RestaurantReservationUrl: URL for the Madden restaurant reservation
	// flow, e.g. for display in a WebView. Not populated if restaurant
	// reservations are not supported for the local entity.
	RestaurantReservationUrl string `json:"restaurantReservationUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowsGuestCheckout")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowsGuestCheckout") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeoOndemandAssistantSupportedActions) MarshalJSON() ([]byte, error) {
	type NoMethod GeoOndemandAssistantSupportedActions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAccessPointProto: This class holds information about a single
// access point. An access point establishes a relationship between a
// feature (like a POI or building) and some other feature. For example,
// consider a TYPE_LOCALITY feature like Seattle. An access point might
// be the TYPE_AIRPORT feature for Seattle-Tacoma International Airport.
// The airport feature defines the access point to gain airplane-based
// access to Seattle. A feature like Seattle will typically have
// multiple access points. You can get to Seattle using airplanes,
// various forms of public transit, or by driving a car. Thus Seattle
// would have multiple access points. You may be able to get to Seattle
// by flying into SeaTac, or you might be able to fly into Boeing Field,
// or Paine Field in Everett. You could drive in from the North/South
// using I-5, or you could drive in from the East using I-90. Many
// access points are from the road network. Thus the access point for
// some building at 123 Main Street would likely be a segment that
// defines the 100-200 block of "Main Street". A feature at the corner
// of "Hollywood" and "Vine" streets might have access points from both
// named streets. Access points are an optional field. Data editors may
// ignore them when creating features or editing other fields. In these
// cases, other quality teams will synthesize and update them. Several
// fields are also optional, as they are derivable from other fields.
// Access points to non-TYPE_SEGMENT features should always have the
// following fields set: - feature_type - feature_id - point Location
// and reference fields: BASIC vs DERIVABLE Access points to
// TYPE_SEGMENT features must have all the following BASIC fields: -
// feature_type (of the segment, e.g. TYPE_ROAD or TYPE_VIRTUAL_SEGMENT)
// - point_off_segment (or point; see "fuzzy point" note below) -
// unsuitable_travel_mode (may be empty) - level (indoor access points
// only) The following are DERIVABLE fields, which should only be added
// if the supplier is confident about their accuracy: - feature_id -
// point_on_segment - segment_position Editing clients are encouraged to
// set all fields, but they may set only the BASIC fields, in which case
// quality teams may use the BASIC fields to snap to an appropriate
// segment and derive the remaining fields. Example: The segment is
// split, so that the portion that the access point is on has a new
// feature ID. Quality teams notice that the point_on_segment is no
// longer on the segment with feature_id, finds the new nearest segment
// based on feature_type and existing point_on_segment, and re-derives a
// new feature_id, point_on_segment, and segment_position, keeping other
// fields consistent. Fuzzy point special case If the editor does not
// have side-of-road information for access points or is otherwise
// unsure of the precise placement of the access point, it may supply
// the point field (and not point_off_segment) as basic data instead, in
// which case quality teams may generate the point_off_segment. Identity
// Access points are considered semantically equivalent if they have the
// same geometry, including derived fields, and the same references to
// other features (feature_id, level_feature_id). For the exact
// definition, see cs/symbol:geostore::AreAccessPointsEquivalent. Field
// definitions
type GeostoreAccessPointProto struct {
	// CanEnter: RESERVED
	CanEnter bool `json:"canEnter,omitempty"`

	// CanExit: RESERVED
	CanExit bool `json:"canExit,omitempty"`

	// FeatureId: The ID of the feature that defines the access point. The
	// bounding box of the feature is expanded to include the bounding box
	// of the feature with the access point in accordance with the standard
	// practice for bucketing map/reduce operations. See the wiki page at
	// http://wiki/Main/OysterBucketingMapReduce for more information. For
	// access points to TYPE_SEGMENT features, this may be re-derived if
	// necessary by looking up the nearest segment to existing geometry.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// FeatureType: The type of the feature. Required, to allow handling the
	// access point differently based on feature type. For access points to
	// non-TYPE_SEGMENT features, this cached type also makes things easier
	// for clients that aren't running a bucketing map-reduce. For access
	// points to TYPE_SEGMENT features, this is used to find to find the
	// nearest segment of the given type.
	FeatureType int64 `json:"featureType,omitempty"`

	// LevelFeatureId: For indoor access points, this should be set to the
	// level that the access point is on. The feature_id should point to the
	// indoor segment, but when it is missing or invalid, and we need to
	// derive it from geometry, only segments on this level will be
	// considered. For non-indoor access points, level should remain unset,
	// and when we derive feature_id from geometry, only segments not on any
	// level (non-indoor segments) will be considered. The bounding box of
	// the level feature is expanded to include the bounding box of the
	// feature with the access point in accordance with the standard
	// practice for bucketing map/reduce operations. See the wiki page at
	// http://wiki/Main/OysterBucketingMapReduce for more information.
	// (Though in general the feature should reside on the level already
	// anyway..)
	LevelFeatureId *GeostoreFeatureIdProto `json:"levelFeatureId,omitempty"`

	// Metadata: Field-level metadata for this access point.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Point: For access points to non-TYPE_SEGMENT features, the location
	// of the access point. For access points to TYPE_SEGMENT features, this
	// can be supplied as a fuzzy access point that is not guaranteed to be
	// on the correct side of road. It should not be used by end clients in
	// case of TYPE_SEGMENT access points.
	Point *GeostorePointProto `json:"point,omitempty"`

	// PointOffSegment: If the access point is defined by a TYPE_SEGMENT
	// feature, this is the location of the access point displaced slightly
	// to the correct side of the segment. This offset is in a direction
	// perpendicular to the direction of travel along the segment. The
	// actual offset distance is unspecified. It would typically be
	// relatively small (approximately 1 meter). You can subtract the "off
	// segment" point from the "on segment" point to get a vector of unknown
	// length pointing from "on segment" point to the "off segment" point.
	// You can then scale that vector to whatever length you want. Note that
	// extending this displacement vector a large distance (10s of meters)
	// may result in a new point that is in the middle of some other feature
	// (park, street, intersection). This is the preferred basic geometry
	// field for incoming data from editing clients and importers, if
	// side-of-road is well-established.
	PointOffSegment *GeostorePointProto `json:"pointOffSegment,omitempty"`

	// PointOnSegment: If the access point is defined by a TYPE_SEGMENT
	// feature, this is the point on the centerline of the segment that is
	// closest to the actual access point. May be re-derived if necessary to
	// maintain precise placement on segment.
	PointOnSegment *GeostorePointProto `json:"pointOnSegment,omitempty"`

	// Priority:
	// LINT.ThenChange(//depot/google3/geostore/cleanup/callbacks/\
	// ID_DUPLICATE_ACCESS_POINT.cc)
	//
	// Possible values:
	//   "TYPE_PRIMARY"
	//   "TYPE_SECONDARY"
	Priority string `json:"priority,omitempty"`

	// SegmentPosition: If the access point is defined by a TYPE_SEGMENT
	// feature, this is the location of the access point expressed as a
	// fractional distance along the segment. The value runs from 0 to 1
	// inclusive. May be re-derived if necessary to maintain precise
	// placement on segment.
	SegmentPosition float64 `json:"segmentPosition,omitempty"`

	// UnsuitableTravelMode: This list represents the travel modes for which
	// this access-point should be avoided. If this list is empty, the
	// access-point is suitable for any travel mode. If all access points
	// are unsuitable for the current travel mode, client should revert to
	// other heuristics (e.g. feature center). This is only used for access
	// points to TYPE_SEGMENT features; access points to non-TYPE_SEGMENT
	// features, e.g. TYPE_ESTABLISHMENT_POI features with
	// gcid:transit_station GConcepts are just identified by feature_type
	// and feature_id.
	//
	// Possible values:
	//   "TRAVEL_MODE_MOTOR_VEHICLE"
	//   "TRAVEL_MODE_AUTO"
	//   "TRAVEL_MODE_TWO_WHEELER"
	//   "TRAVEL_MODE_BICYCLE"
	//   "TRAVEL_MODE_PEDESTRIAN"
	//   "TRAVEL_MODE_PUBLIC_TRANSIT"
	UnsuitableTravelMode []string `json:"unsuitableTravelMode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanEnter") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanEnter") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAccessPointProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAccessPointProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreAccessPointProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreAccessPointProto
	var s1 struct {
		SegmentPosition gensupport.JSONFloat64 `json:"segmentPosition"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SegmentPosition = float64(s1.SegmentPosition)
	return nil
}

// GeostoreAddressComponentProto: This class represents a parsed field
// within an address. NOTE: if you add a field to this proto, please
// update the AreAddressComponentsEquivalent() function in
// google3/geostore/base/internal/addresscomponent.cc
type GeostoreAddressComponentProto struct {
	// FeatureId: The id of the corresponding Feature, if such a feature is
	// defined. As discussed above for feature_type, components of
	// TYPE_FEATURE or TYPE_LANDMARK may have a corresponding feature id.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// FeatureType: For components of TYPE_FEATURE or TYPE_LANDMARK, this is
	// the feature type (TYPE_COUNTRY, TYPE_LOCALITY, TYPE_ESTABLISHMENT_POI
	// etc.). Note that some features may not actually exist in the geostore
	// (e.g. a village that we've never heard of), in which case the
	// feature_id will be missing but the feature_type is still specified.
	// Please refer to IsValidAddressComponentFeatureType() in
	// google3/geostore/base/public/addresscomponent.h for the definitive
	// list of feature types allowed for the type (either TYPE_FEATURE or
	// TYPE_LANDMARK) of components.
	FeatureType int64 `json:"featureType,omitempty"`

	// Index: The order of this address component relative to the ones that
	// share the same feature_type in the AddressProto. For now, the primary
	// use of this index field is to handle ordering issue of multiple
	// occurrences of AddressComponentProto with feature_type of TYPE_ROUTE
	// (and subtypes), or TYPE_POLITICAL, where the order of the address
	// components matters as there are dependences. 0 is the smallest valid
	// index value, representing the most specific address component. Index
	// value of 1 represents a relatively less specific address component of
	// the same feature_type on which the 0-indexed address component
	// depends.
	Index int64 `json:"index,omitempty"`

	// ParsedName: The parsed_name field contains one or more names of an
	// address component. Its actual contents depends on where in the
	// Geo/Google stack you are reading a feature: 1. When an address is
	// initially parsed via a feed or other raw input and structured as an
	// AddressProto, parsed_name should contain the set of names that
	// corresponds to the (possibly normalized) raw text from the raw input.
	// 2. In MapFacts, the address component may be linked to an actual
	// feature via feature_id. Any address formatting directly from MapFacts
	// should follow links to retrieve names when possible. The parsed_name
	// contents may be formatted directly if the address component is
	// unlinked following the same rules as selecting and formatting the
	// name of a feature. The cached parsed_name is regularly refreshed from
	// the linked feature with the minimal set of names for address
	// components (usually just a single, preferred name, in the local
	// language, plus a Latin-script name: go/story-of-ac-names). 3. In
	// serving systems, the names of linked features may be denormalized
	// into the parsed_name field to facilitate quicker address formatting
	// or for simple data filtering (e.g. finding all geocodes in California
	// by name). If reading a feature from such a system, the parsed_name
	// field could contain multiple names in multiple languages that reflect
	// a cached copy of the names associated with the linked features.
	// Formatting of such names should follow the same rules as selecting
	// and formatting the name of a feature itself.
	ParsedName []*GeostoreNameProto `json:"parsedName,omitempty"`

	// Range: Any numerical address component may optionally be specified as
	// a range. For example if a component of TYPE_STREET_NUMBER has the
	// optional "range" attribute, then it represents a range of addresses
	// rather than a single address (see AddressRangeProto for details).
	Range *GeostoreAddressRangeProto `json:"range,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to an
	// address component. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// TextAffix: Additional text to append before and/or after the
	// parsed_name, when the address is formatted. Multiple instance should
	// represent translations. Currently, this is only permitted on
	// TYPE_LANDMARK components, and only one instance is permitted.
	TextAffix []*GeostoreTextAffixProto `json:"textAffix,omitempty"`

	// Type: Every address component has a type. Most address components
	// correspond to one of the feature types defined in FeatureProto, so
	// rather than defining a separate category system here, instead we mark
	// them as TYPE_FEATURE and store the FeatureProto type in the
	// feature_type() field. This is how we handle countries, cities,
	// streets, etc. However, there are a few types of address components
	// that do not have a corresponding feature type (e.g. PO boxes). These
	// components have their type defined here. An address component of
	// TYPE_STREET_NUMBER may correspond to a physical entity that defines a
	// street number, such as a geocoded address or a land parcel. In this
	// case, the address component may have a link to the corresponding
	// feature. A good reference for what types of address components are
	// possible is the xAL standard, which is a published XML schema:
	// http://www.oasis-open.org/committees/ciq/download.shtml. This
	// standard is the basis of the PostalAddress protocol message.
	//
	// Possible values:
	//   "TYPE_FEATURE"
	//   "TYPE_POSTAL_CODE_SUFFIX" - Address contains a suffix that refines
	// the postal code in this address (e.g. the '+4' portion of a US '5+4'
	// zip code). Postal code suffixes do not point to features.
	//   "TYPE_POST_BOX"
	//   "TYPE_STREET_NUMBER"
	//   "TYPE_FLOOR" - DEPRECATED, use TYPE_FEATURE/TYPE_LEVEL
	//   "TYPE_ROOM" - DEPRECATED, use TYPE_FEATURE/TYPE_COMPOUND_SECTION
	//   "TYPE_HOUSE_ID" - A building number unique relative to some
	// political feature.
	//   "TYPE_DISTANCE_MARKER" - A component corresponding to a marker for
	// the approximate distance of the address along the route. Distance
	// markers do not point to features and must have a single name that
	// corresponds to the distance measured along the route in the standard
	// units of the locale in which the address is contained (units
	// themselves omitted from the name). The name must be a canonical
	// floating point number in the feature's locale. E.g. in the US, the
	// name representing 1000.5 must be '1,000.5'. Trailing zeros after the
	// decimal and superfluous zeros preceding the number are forbidden.
	//   "TYPE_LANDMARK" - A component representing a reference to some
	// nearby landmark, to aid navigation. Landmark components are
	// distinguished by the fact that they have additional text to relate
	// the feature with this address, for example "near" or "opposite". This
	// text is stored in the affix field. Landmark components may point to
	// features, but are not required to.
	//   "TYPE_PLUS_CODE" - Plus codes (go/pluscodes) are short, user
	// readable encodings of latitude and longitude, that are intended as a
	// substitute for street addresses where these do not exist or are not
	// commonly used. Used when the physical address of the feature contains
	// a local plus code, e.g.'PXX7+RW' in 'PXX7+RW Damaturu, Nigeria'.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAddressComponentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAddressComponentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAddressLinesProto: Represents the unparsed portion of an
// address with an associated language.
type GeostoreAddressLinesProto struct {
	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See
	// http://go/geo-schema-reference/feature-properties/languages.md
	Language string `json:"language,omitempty"`

	// Line: These lines are in display order.
	Line []string `json:"line,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAddressLinesProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAddressLinesProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAddressProto: This class represents an address, partial
// address, or address range. It is intended to be attached to features
// to identify their address(es). Some important points about addresses:
// - The addresses in the Geo Schema do *not* include a component for
// the name of the feature, i.e. they are not self-referential. For
// example, the name of a feature might be "Zack's Pizza" and its
// address would be "123 Main Street". Similarly, streets, cities, and
// counties do not include themselves as part of their address. The
// address of "Seattle" is "King County, Washington, USA". If want to
// construct an address that *does* include the feature name, you can
// simply prepend it to the other address components. - Lakes,
// mountains, and other natural features do not normally have addresses.
// Countries also do not have addresses because they are at the top of
// the political hierarchy. - Address components in the Geo Schema are
// listed in a particular order, independent of the conventions used by
// the country in which they occur. The basic order is "smallest to
// largest" starting with street numbers and routes, then political
// features, and ending with postal features. The exact rules are
// defined by the implementation of the
// AddressComponentOrdering::IsLessThan() function. - Some types of
// address components may occur more than once in an address. For
// example, a UK address with a "dependent thoroughfare" would have two
// components of TYPE_ROUTE (i.e. street names). These are listed in the
// order they are normally written.
type GeostoreAddressProto struct {
	// AddressLines: The unparsed portion (lines) of the address. An address
	// can have multiple unparsed portions. Multiple unparsed portions
	// sharing the same language should be modeled as one address_lines
	// instance having multiple lines. Historically, we also supported
	// uparsed portions in different languages, but we no longer do.
	// Consequently, only one value is allowed for this field despite the
	// fact that it is repeated. See go/address-lines-multi-language for
	// information about why we made this change. If any components are
	// filled in, this is supplemental to (i.e. disjoint from) them.
	// Furthermore, this must be the most specific portion of the address
	// (except for the portion, if any, stored in the name field of
	// feature.proto). Unparsed lines are always formatted together in a
	// block. Other address components are never formatted between the
	// address lines. This doesn't imply that the address lines are always
	// either the first or the last part of the formatted output.
	AddressLines []*GeostoreAddressLinesProto `json:"addressLines,omitempty"`

	// Component: A list of parsed address components, e.g. the street,
	// city, etc. An address range is one type of component.
	Component []*GeostoreAddressComponentProto `json:"component,omitempty"`

	// CrossStreet: ** DEPRECATED ** This field is now deprecated (see
	// b/33268032). If you want to store cross street information as part of
	// an address, use the address_lines field.
	CrossStreet []*GeostoreAddressComponentProto `json:"crossStreet,omitempty"`

	// Metadata: Field-level metadata for this address.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// PartialDenormalization: reserved
	PartialDenormalization *GeostoreAddressProto `json:"partialDenormalization,omitempty"`

	// TemplateId: The opaque ID of the address template that contains rules
	// for structuring this address. The id of the address template can be
	// retrieved using
	// google3/geostore/address_templates/public/address_templates.h
	TemplateId string `json:"templateId,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to an
	// address. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddressLines") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddressLines") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAddressProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAddressProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAddressRangeProto: This class represents a range of numbers
// in an address. It is an optional additional field in the
// 'AddressComponentProto' message. This structure can be used to model
// both single addresses and address ranges. There are two primary
// use-cases for address ranges: definitions and references. Ranges are
// being defined when they are present on the addresses of segment
// features. Ranges are being referenced when they are present on
// non-segment features. NOTE: If you add fields in this proto, consider
// updating the AreAddressRangesEquivalent() function in
// google3/geostore/base/internal/addressrange.cc
type GeostoreAddressRangeProto struct {
	// Number: Two or more address numbers. Each number represents an
	// address that was mentioned by the data provider.
	Number []int64 `json:"number,omitempty"`

	// Parameter: For address range definitions: Two or more interpolation
	// parameter values. The length of this array must match the length of
	// the number array, and each parameter number specifies the position of
	// the corresponding address number. Each value is an interpolation
	// between 0.0 and 1.0 inclusive. The value is proportional to the
	// distance traveled along the segment's polyline starting at its
	// origin. The parameters must be provided in increasing order and the
	// values in the number array must be in strictly increasing or
	// decreasing order. We make an exception for singleton addresses, which
	// are represented as two copies of a (number, parameter) pair, for
	// backwards compatibility. For address range references: This array
	// must be empty.
	Parameter []float64 `json:"parameter,omitempty"`

	// Prefix: If specified, the prefix or suffix is applied to all numbers
	// in the range. For example, this can be used to indicate that
	// addresses B1 through B99 are on one side of the street, while A1
	// through A99 are on the other side of the street.
	Prefix string `json:"prefix,omitempty"`

	// SameParity: If 'same_parity' is true, then all 'number' values must
	// have the same parity (even or odd), and this address range only
	// includes addresses whose parity is the same as the given 'number'
	// values.
	SameParity bool `json:"sameParity,omitempty"`

	Suffix string `json:"suffix,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to an
	// address range. Never set in MapFacts. Here are some examples: Example
	// #1: Single non-numeric address (e.g., "Twelve") At the moment this
	// can only be represented as a street number (with the value in the
	// parsed_name field of the AddressComponentProto). We have future plans
	// to make other changes so we can handle this case. Example #2: Single
	// semi-numeric address (e.g., "12bis") The number array contains two
	// copies of the single numeric value (12). The prefix is empty and the
	// suffix contains "bis". The parameter array has two identical values
	// specifying the position of the single address. Example #3: Simple
	// address range (e.g., "100 to 198, even numbers only") The number
	// array contains the two values "100" and "198". The prefix and suffix
	// strings are empty in this example. The parameter array has two
	// values, one for each number. The same_parity flag is set in this
	// example.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Number") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Number") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAddressRangeProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAddressRangeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAnchoredGeometryProto: A feature’s geometry that is
// populated from the 3D Geometry Store. Please see go/a3d-and-mapfacts
// for design details.
type GeostoreAnchoredGeometryProto struct {
	// GeometryId: The ID to be used to fetch the feature’s geometry from
	// the 3D Geometry Store.
	GeometryId string `json:"geometryId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GeometryId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GeometryId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAnchoredGeometryProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAnchoredGeometryProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAppliedSpeedLimitProto: A container for speed limits that
// allows tagging with a correctness trust level.
type GeostoreAppliedSpeedLimitProto struct {
	// SpeedLimit: The actual speed limit value.
	SpeedLimit *GeostoreSpeedLimitProto `json:"speedLimit,omitempty"`

	// TrustLevel: The level of trust we have in this speed limit value.
	//
	// Possible values:
	//   "SPEED_LIMIT_TRUST_LEVEL_UNKNOWN" - Default proto value, this value
	// will never be set in MapFacts.
	//   "LOW_QUALITY" - This speed limit is set, but may be completely
	// wrong and potential users should consult external quality metrics
	// before deciding whether to use it.
	//   "HIGH_QUALITY" - We have high confidence that this is the correct
	// speed limit, and that it's good enough to be shown to users. However,
	// we are not completely confident the value is correct.
	//   "EXACT" - We are certain that this is the correct speed limit.
	TrustLevel string `json:"trustLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SpeedLimit") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SpeedLimit") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAppliedSpeedLimitProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAppliedSpeedLimitProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAttachmentsAttachmentProto: An AttachmentProto contains
// structured data of a client-specified type. An attachment is uniquely
// identified by the combination of its attachment_id and
// client_name_space fields.
type GeostoreAttachmentsAttachmentProto struct {
	// AttachmentId: attachment_id distinguishes messages of the same
	// type_id associated with the same feature. It can not be set to 0x0.
	AttachmentId uint64 `json:"attachmentId,omitempty,string"`

	// ClientNameSpace: This field specifies a namespace identifier that can
	// be used to track the sources of attachments in a human friendly
	// format. Name spaces must be at most 64 characters long and must be
	// composed entirely of alphanumeric characters, hyphens, and
	// underscores. No other characters are allowed.
	ClientNameSpace string `json:"clientNameSpace,omitempty"`

	// Comment: comment is a human-readable string that is logged whenever
	// this attachment is processed by the framework.
	Comment string `json:"comment,omitempty"`

	// Messages: messages contains the structured data for this attachment.
	// It should contain a single message with a type ID matching the value
	// of the type_id field below.
	Messages *Proto2BridgeMessageSet `json:"messages,omitempty"`

	// TypeId: type_id determines the type of the actual attachment that
	// should be set in the messages MessageSet. It can not be set to 0x0.
	TypeId uint64 `json:"typeId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AttachmentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttachmentId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAttachmentsAttachmentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAttachmentsAttachmentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAttributeIdProto: Used to represent the unique id of an
// attribute.
type GeostoreAttributeIdProto struct {
	// Id: The id of the attribute. Stored as a stripped format of the gcid
	// (e.g. "foo" instead of "gcid:att_foo").
	Id string `json:"id,omitempty"`

	// ProviderId: Set because it's required, but not really meaningful in
	// geostore (always set to "Geo").
	ProviderId string `json:"providerId,omitempty"`

	// Possible values:
	//   "ITEMCLASS" - deprecated
	//   "ATTRIBUTE"
	//   "VALUESPACE" - deprecated
	//   "DATASTORE" - deprecated
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAttributeIdProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAttributeIdProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreAttributeProto: Protocol buffer for attaching attributes and
// values to instances. This is for assigning a particular attribute and
// value to a repository item, not for metadata. For protocol buffers
// that represents metadata about attributes and values, see
// CanonicalAttribute in itemclass.proto and ValueSpace in
// valuespace.proto.
type GeostoreAttributeProto struct {
	ApplicationData *Proto2BridgeMessageSet `json:"applicationData,omitempty"`

	AttributeDisplay []*GeostoreAttributeValueDisplayProto `json:"attributeDisplay,omitempty"`

	BooleanValue bool `json:"booleanValue,omitempty"`

	// CanonicalAttributeId: The canonical attribute for this attribute
	// instance.
	CanonicalAttributeId *GeostoreAttributeIdProto `json:"canonicalAttributeId,omitempty"`

	DoubleValue float64 `json:"doubleValue,omitempty"`

	// EnumIdValue: For those attribute ids that expect their values to be
	// taken from an enumeration-style set of values, that value's gcid
	// should be stored here, e.g. "gcid:attval_yes".
	EnumIdValue string `json:"enumIdValue,omitempty"`

	FloatValue float64 `json:"floatValue,omitempty"`

	Int64Value int64 `json:"int64Value,omitempty,string"`

	IntegerValue int64 `json:"integerValue,omitempty"`

	ItemClassId *GeostoreAttributeIdProto `json:"itemClassId,omitempty"`

	// Metadata: Field-level metadata for this attribute
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// ProtoValue: Fully qualified package name because genprotohdf uses
	// genproto for this proto2 syntax:
	// https://wiki.corp.google.com/twiki/bin/view/Main/Proto2WithGenproto
	ProtoValue *Proto2BridgeMessageSet `json:"protoValue,omitempty"`

	// StringValue: The attribute value falls into one of these fields,
	// based on value_type:
	StringValue string `json:"stringValue,omitempty"`

	Uint32Value int64 `json:"uint32Value,omitempty"`

	// ValueDisplay: Used to store language-specific names of this
	// attribute's value (e.g. a translation into another language).
	ValueDisplay []*GeostoreAttributeValueDisplayProto `json:"valueDisplay,omitempty"`

	ValueSpaceId *GeostoreAttributeIdProto `json:"valueSpaceId,omitempty"`

	// Possible values:
	//   "NONE"
	//   "STRING"
	//   "INTEGER"
	//   "DOUBLE"
	//   "BOOLEAN"
	//   "PROTO_VALUE"
	//   "INT64"
	//   "FLOAT"
	//   "DISPLAY_ONLY"
	//   "UINT32"
	//   "ENUM_ID" - The value comes from an enumerated attribute
	// valuespace.
	ValueType string `json:"valueType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAttributeProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAttributeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreAttributeProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreAttributeProto
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		FloatValue  gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// GeostoreAttributeValueDisplayProto: Used to help display
// language-specific names of attributes.
type GeostoreAttributeValueDisplayProto struct {
	Language string `json:"language,omitempty"`

	Synonym string `json:"synonym,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreAttributeValueDisplayProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreAttributeValueDisplayProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreBarrierLogicalMaterialProto struct {
	// Possible values:
	//   "UNKNOWN_LOGICAL_MATERIAL"
	//   "CONCRETE"
	//   "METAL"
	//   "PLASTIC"
	//   "STONE"
	//   "TIMBER"
	Material []string `json:"material,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Material") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Material") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBarrierLogicalMaterialProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBarrierLogicalMaterialProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreBestLocaleProto: A BestLocaleProto holds information about
// the best-match locale for a feature. Clients may use this information
// to determine the appropriate local name of a feature.
type GeostoreBestLocaleProto struct {
	// Locale: The ID of the best-match TYPE_LOCALE feature for this
	// feature.
	Locale *GeostoreFeatureIdProto `json:"locale,omitempty"`

	// LocalizationPolicyId: The ID of the localization policy to apply when
	// selecting a name for a feature. This field should always be set. If
	// feature_id is also defined, this field should have the same
	// localization policy ID as the referenced locale feature. Localization
	// policy IDs are arbitrary identifiers (up to some number of bytes; see
	// geostore/base/public/constants.h) that uniquely distinguish a set of
	// language-selection rules.
	LocalizationPolicyId string `json:"localizationPolicyId,omitempty"`

	// Metadata: Field-level metadata for this best locale.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBestLocaleProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBestLocaleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreBizBuilderReferenceProto: The reference to a BizBuilder
// listing. For details on BizBuilder see
// http://g3doc/commerce/bizbuilder/backend/g3doc/index.md
type GeostoreBizBuilderReferenceProto struct {
	// Id: Listing id. Used in queries to BizBuilder backend for listing
	// access.
	Id int64 `json:"id,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBizBuilderReferenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBizBuilderReferenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreBorderProto: A border represents a line of division between
// two features of the same type (i.e. United States and Mexico, but not
// California and Mexico). Borders are only used for features that tile
// an area. For example, country features have borders with one another
// because they tile an area of land. Country features do not have
// borders with province features because those two types of features
// may intersect with each other. The geometry of a border will often be
// similar (or derived from) the geometry of the two features that it
// separates. However, it is useful to have borders represented by
// stand-alone features for map-styling purposes. Ideally, the geometry
// in a border feature would be exactly the same as the common edges of
// the polygonal geometry of the two features. This may not always be
// true in practice. At some point in the future we would like to build
// a network of borders for features that are supposed to tile with each
// other. The network would be composed of different border types
// meeting at endpoint intersections. In the process of building this
// network, we would perform small geometry corrections to ensure that
// the borders align properly at all zoom levels. Border features are
// intended primarily for map drawing, and they would rarely be useful
// for geocoding. One exception would be for famous borders like the
// "Mason Dixon Line" or the "Berlin Wall." The standard feature
// properties have the following interpretations: name - Borders rarely
// have names unless they notable in their own right (e.g. "Mason Dixon
// Line", "Berlin Wall"). point - A border should not have point
// geometry. polyline - A border should have a single polyline that
// represents the division between the two features. polygon - A border
// should not have polygon geometry.
type GeostoreBorderProto struct {
	// FeatureIdLeft: The ids of the area features to the left and right of
	// the border, relative to the start and end of this borders' polyline
	// geometry. These features should have the same type as the "type"
	// attribute above. These ids are not required because the corresponding
	// features may be nonexistent or difficult to obtain.
	FeatureIdLeft *GeostoreFeatureIdProto `json:"featureIdLeft,omitempty"`

	FeatureIdRight *GeostoreFeatureIdProto `json:"featureIdRight,omitempty"`

	// LogicalBorder: The logical borders which this border is a part of.
	LogicalBorder []*GeostoreFeatureIdProto `json:"logicalBorder,omitempty"`

	// OverrideStatus: List of border status overrides. Due to legal
	// reasons, we may be required to display some borders differently on
	// some domains for instance.
	OverrideStatus []*GeostoreOverrideBorderStatusProto `json:"overrideStatus,omitempty"`

	// Status: The border status identifies the legal status of the border
	// line.
	//
	// Possible values:
	//   "STATUS_NORMAL" - Most border lines have this status, which
	// typically means both parties agree on the location of the line. These
	// might be called "de jure" borders.
	//   "STATUS_DISPUTED" - This status is used when the two parties
	// disagree on the location of the line. There can be multiple border
	// lines in a given disputed area. One might be the line proposed by
	// country "A" and another the line proposed by country "B". A third
	// line might mark the de facto line of control. Other border lines
	// might indicate historical borders, e.g., "1949 Armistice Line".
	//   "STATUS_UNSURVEYED" - This is used for one section of border
	// between Argentina and Chile. Both parties agree that a border line
	// exists somewhere on the glacier, but the exact location has not been
	// determined.
	//   "STATUS_INTERNATIONAL_WATER" - This is a border line between a
	// country and international water.
	//   "STATUS_NEVER_DISPLAY" - This status is only used for the borders
	// that should never display to users. Typically it is for the borders
	// that we don't want to represent but that we would still like to use
	// to model country boundaries, e.g. Hong Kong and Macau.
	//   "STATUS_TREATY" - This is used for borders that refer to
	// well-defined boundaries which have been established by a specific
	// treaty, agreement, armistice or other such agreement between two or
	// more parties, yet the position and/or status is not considered to be
	// legal and final (e.g., the final demarcation of the exact position
	// has not occurred or the final political status is not resolved).
	//   "STATUS_PROVISIONAL" - This is used for borders for which a formal
	// agreement has not been established between the parties involved, yet
	// the existing line acts as a de facto functional border without
	// existence of any dispute.
	//   "STATUS_NO_LABEL" - This is used for borders which should not have
	// country labels to either side, but should otherwise be styled the
	// same as a border with STATUS_NORMAL. This is typically for borders
	// which are not themselves disputed but still form part of the boundary
	// around a disputed area that is not otherwise modeled or labeled as a
	// country, or as an override where we are obligated to remove labels
	// for region specific versions of Maps.
	Status string `json:"status,omitempty"`

	// Type: The type of the features this border separates. Should always
	// be a subtype of TYPE_POLITICAL. NOTE: as of December 2019, we
	// currently require this to be equal to TYPE_COUNTRY or
	// TYPE_ADMINISTRATIVE_AREA1. In the future, we may support TYPE_BORDER
	// for lower types of political features.
	Type int64 `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureIdLeft") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureIdLeft") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBorderProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBorderProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreBoundingMarkerProto struct {
	// BoundingMarker: References to any gcid:physical_lane_marker features
	// that bound this lane or lane connection.
	BoundingMarker *GeostoreFeatureIdProto `json:"boundingMarker,omitempty"`

	// BoundingMarkerToken: A token that can be used to identify the version
	// of the data about this bounding marker.
	BoundingMarkerToken string `json:"boundingMarkerToken,omitempty"`

	// FlowlineAdjacencyBeginFraction: Which part of the flowline does this
	// association refer to? These should be between 0 and 1. These are
	// optionally set, but can be approximated geometrically if they
	// aren’t set. NOTE: These refer to the geometry of this feature.
	FlowlineAdjacencyBeginFraction float64 `json:"flowlineAdjacencyBeginFraction,omitempty"`

	FlowlineAdjacencyEndFraction float64 `json:"flowlineAdjacencyEndFraction,omitempty"`

	// MarkerAdjacencyBeginFraction: Which part of the marker track does
	// this association refer to? These should be between 0 and 1. These are
	// optionally set, but can be approximated geometrically if they
	// aren’t set. NOTE: These refer to the geometry of the marker
	// feature.
	MarkerAdjacencyBeginFraction float64 `json:"markerAdjacencyBeginFraction,omitempty"`

	MarkerAdjacencyEndFraction float64 `json:"markerAdjacencyEndFraction,omitempty"`

	// Side: Which side of the flowline does the marker occur on.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "LEFT"
	//   "RIGHT"
	Side string `json:"side,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingMarker") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingMarker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBoundingMarkerProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBoundingMarkerProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreBoundingMarkerProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreBoundingMarkerProto
	var s1 struct {
		FlowlineAdjacencyBeginFraction gensupport.JSONFloat64 `json:"flowlineAdjacencyBeginFraction"`
		FlowlineAdjacencyEndFraction   gensupport.JSONFloat64 `json:"flowlineAdjacencyEndFraction"`
		MarkerAdjacencyBeginFraction   gensupport.JSONFloat64 `json:"markerAdjacencyBeginFraction"`
		MarkerAdjacencyEndFraction     gensupport.JSONFloat64 `json:"markerAdjacencyEndFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FlowlineAdjacencyBeginFraction = float64(s1.FlowlineAdjacencyBeginFraction)
	s.FlowlineAdjacencyEndFraction = float64(s1.FlowlineAdjacencyEndFraction)
	s.MarkerAdjacencyBeginFraction = float64(s1.MarkerAdjacencyBeginFraction)
	s.MarkerAdjacencyEndFraction = float64(s1.MarkerAdjacencyEndFraction)
	return nil
}

// GeostoreBuildingProto: This protocol buffer holds the
// building-specific attributes for features of type
// TYPE_COMPOUND_BUILDING.
type GeostoreBuildingProto struct {
	// BaseHeightMetersAgl: The height of the base of this building, in
	// meters above ground-level, if known.
	BaseHeightMetersAgl float64 `json:"baseHeightMetersAgl,omitempty"`

	// DefaultDisplayLevel: The level in this building that should get
	// displayed by default. If present, the default display level must be
	// one of this building's levels that are listed in the level[] field,
	// and if a level is set as a default level of one building, all
	// buildings sharing the level should have that same level as their
	// default level. If not present, clients should not display any level
	// by default for that building.
	DefaultDisplayLevel *GeostoreFeatureIdProto `json:"defaultDisplayLevel,omitempty"`

	// Floors: The number of floors above the base of the building, if
	// known. For example a regular 1-story building would set this to "1".
	// Use a value of GeostoreConstants::kDefaultHeightPerFloor when
	// converting "floors" to "height_meters".
	Floors int64 `json:"floors,omitempty"`

	FloorsMetadata *GeostoreFieldMetadataProto `json:"floorsMetadata,omitempty"`

	// HeightMeters: The height of the building above its base, in meters,
	// if known.
	HeightMeters float64 `json:"heightMeters,omitempty"`

	HeightMetersMetadata *GeostoreFieldMetadataProto `json:"heightMetersMetadata,omitempty"`

	// Level: The levels in this building, in no particular order. These
	// levels refer back to the building via another strong reference (the
	// LevelProto.building field).
	Level []*GeostoreFeatureIdProto `json:"level,omitempty"`

	// Structure: "Structure" denotes a physical architecture of the
	// building that is readily visible. This attribute is useful in that
	// rarer structures can make good landmarks.
	//
	// Possible values:
	//   "STRUCTURE_ANY" - ABSTRACT
	//   "STRUCTURE_TOWER" - The root of all structure categories. Not a
	// meaningful value and should never be set on any feature.
	//   "STRUCTURE_DOME"
	//   "STRUCTURE_CASTLE"
	//   "STRUCTURE_SHRINE"
	//   "STRUCTURE_TEMPLE"
	//   "STRUCTURE_TANK"
	Structure string `json:"structure,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BaseHeightMetersAgl")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseHeightMetersAgl") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBuildingProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBuildingProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreBuildingProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreBuildingProto
	var s1 struct {
		BaseHeightMetersAgl gensupport.JSONFloat64 `json:"baseHeightMetersAgl"`
		HeightMeters        gensupport.JSONFloat64 `json:"heightMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BaseHeightMetersAgl = float64(s1.BaseHeightMetersAgl)
	s.HeightMeters = float64(s1.HeightMeters)
	return nil
}

// GeostoreBusinessChainProto: This holds data specific to business
// chain features.
type GeostoreBusinessChainProto struct {
	// CanonicalGconcepts: Canonical GConcepts describe the ideal state of
	// the GConcepts of this business chain's members.
	CanonicalGconcepts []*GeostoreCanonicalGConceptProto `json:"canonicalGconcepts,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalGconcepts")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalGconcepts") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBusinessChainProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBusinessChainProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreBusinessHoursProto: A BusinessHoursProto stores a weekly
// schedule of opening hours for a business (represented as a
// BusinessHours message) together with other closely related
// information that is Geo-specific.
type GeostoreBusinessHoursProto struct {
	// Data: The actual hours represented by this BusinessHoursProto.
	Data *BusinessHours `json:"data,omitempty"`

	// Metadata: Field-level metadata for these hours.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreBusinessHoursProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreBusinessHoursProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreCallToActionProto: Message containing calls to action
// specified by the business owner.
type GeostoreCallToActionProto struct {
	// CtaType: Required.
	//
	// Possible values:
	//   "CTA_TYPE_UNSPECIFIED"
	//   "CTA_TYPE_BOOK"
	//   "CTA_TYPE_BUY"
	//   "CTA_TYPE_ORDER_ONLINE"
	//   "CTA_TYPE_LEARN_MORE"
	//   "CTA_TYPE_SIGN_UP"
	//   "CTA_TYPE_GET_OFFER"
	CtaType string `json:"ctaType,omitempty"`

	Url *GeostoreUrlProto `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CtaType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CtaType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCallToActionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCallToActionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreCanonicalGConceptProto: This proto represents a canonical
// gconcept of a business chain's members.
type GeostoreCanonicalGConceptProto struct {
	Gconcept *GeostoreGConceptInstanceProto `json:"gconcept,omitempty"`

	// IsRequired: Whether the gconcept must be on a member. This must be
	// true for a primary gconcept.
	IsRequired bool `json:"isRequired,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Gconcept") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Gconcept") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCanonicalGConceptProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCanonicalGConceptProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreCellCoveringProto: This protocol buffer holds S2 cell
// covering for the feature. See util/geometry/s2cell_union.h for more
// information on S2 cells. See geostore/base/public/cellcovering.h for
// utility functions.
type GeostoreCellCoveringProto struct {
	// CellId: Array of S2 cell ids that represent the covering. There is no
	// preset limit on how many cells can be used.
	CellId googleapi.Uint64s `json:"cellId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CellId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CellId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCellCoveringProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCellCoveringProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreComposableItemProto: Generic item proto. This is intended to
// have only certain aspects filled (e.g. photo only, name + price).
// Valid combinations of properties are enforced by linters.
type GeostoreComposableItemProto struct {
	// CallToAction: Call to action for the individual product.
	CallToAction *GeostoreCallToActionProto `json:"callToAction,omitempty"`

	JobMetadata *GeostoreJobMetadata `json:"jobMetadata,omitempty"`

	// Media: Any photos describing this item.
	Media []*GeostoreMediaItemProto `json:"media,omitempty"`

	// NameInfo: The repeated name_info field is for price list sections
	// listed in multiple languages. At least one name_info containing id
	// must be specified. There should be at most one name_info for any
	// given language. When representing a job item, there should be exactly
	// one name_info specified.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// Offered: Represents if an item is offered at a business. For
	// TYPE_JOB, this represents if this job is offered by the corresponding
	// business
	//
	// Possible values:
	//   "OFFERED_UNSPECIFIED" - Merchant says nothing
	//   "OFFERED" - Merchant explicitly says this is offered
	//   "OFFERED_NOT" - Merchant explicitly says this is NOT offered
	//   "OFFERED_ON_WEBSITE" - Merchant mentioned this job on their
	// websites
	Offered string `json:"offered,omitempty"`

	// Price: Price of the item. There should be at most one price for any
	// given currency.
	Price *GeostorePriceRangeProto `json:"price,omitempty"`

	// PriceFormat: Represents which price format is being used by this
	// item, which determines the usage/meaning of the “price” field
	// above. Optional – the default value is legal and safe (represents
	// no price if the “price” field is unset).
	//
	// Possible values:
	//   "PRICE_FORMAT_DEFAULT" - Default price format which uses the
	// PriceRangeProto (set or unset) in the "price" field above to
	// represent a price interval, or lack thereof.
	//   "PRICE_FORMAT_VARIES" - Value for a price which explicitly varies,
	// i.e. it should show as “Price may vary" or similar. If this is the
	// price_format, contents of the "price" field will be ignored.
	PriceFormat string `json:"priceFormat,omitempty"`

	// RankingHint: Numerical score which can be provided by data sources to
	// indicate preferred item ordering. This is purely a hint – we are
	// not required to followed it if we have a different order we think is
	// better. Higher scores represent items that should be shown more
	// prominently/earlier. Optional.
	RankingHint float64 `json:"rankingHint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallToAction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallToAction") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreComposableItemProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreComposableItemProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreComposableItemProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreComposableItemProto
	var s1 struct {
		RankingHint gensupport.JSONFloat64 `json:"rankingHint"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RankingHint = float64(s1.RankingHint)
	return nil
}

// GeostoreCountComparisonProto: A count value tagged with a comparison
// operator. This can be used for axle count, trailer count, etc.
type GeostoreCountComparisonProto struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "EQUAL"
	//   "LESS_THAN"
	//   "LESS_THAN_OR_EQUAL"
	//   "GREATER_THAN"
	//   "GREATER_THAN_OR_EQUAL"
	ComparisonOperator string `json:"comparisonOperator,omitempty"`

	Count int64 `json:"count,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComparisonOperator")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComparisonOperator") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCountComparisonProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCountComparisonProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreCrossingStripePatternProto: Possible patterns of a crossing
// stripe (any element that denotes a point on a segment or lane at
// which the vehicle must stop or yield). These include crosswalks,
// stop, and yield lines.
type GeostoreCrossingStripePatternProto struct {
	BorderLine *GeostorePhysicalLineProto `json:"borderLine,omitempty"`

	// Possible values:
	//   "UNKNOWN_BORDER_PATTERN"
	//   "NO_BORDER_PATTERN"
	//   "SOLID"
	//   "DASHED"
	BorderPattern string `json:"borderPattern,omitempty"`

	// Color: Colors found on this crossing.
	Color []*GeostorePaintedElementLogicalColorProto `json:"color,omitempty"`

	// Possible values:
	//   "UNKNOWN_STRIPE_PATTERN"
	//   "NO_STRIPE_PATTERN" - For crosswalk No crossing stripes. Usually
	// comes with the bordered crosswalk.
	//   "LONGITUDINAL_STRIPE"
	//   "DIAGONAL_STRIPE"
	//   "LATERAL_STRIPE"
	//   "SINGLE_CROSSING_LINE" - A crossing line consisting of a single
	// stripe e.g. a stop line.
	//   "DOUBLE_CROSSING_LINE" - A crossing line consisting of a double
	// stripe.
	//   "TRIANGLE_CROSSING_LINE_POINTING_LEFT" - A crossing line made of
	// repeating triangles e.g. a California yield line. The teeth are
	// always facing the left of the crossing line.
	//   "TRIANGLE_CROSSING_LINE_POINTING_RIGHT" - A crossing line made of
	// repeating triangles e.g. a California yield line. The teeth are
	// always facing the right of the crossing line.
	//   "STRUCTURED_CROSSING_LINE" - The crossing line has a more complex
	// structure than just a single conceptual stripe or row of symbols.
	StripePattern string `json:"stripePattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BorderLine") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BorderLine") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCrossingStripePatternProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCrossingStripePatternProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreCurveConnectionProto: Protocol buffer describing a curve that
// connects two externally specified endpoints.
type GeostoreCurveConnectionProto struct {
	BezierParams *GeostoreCurveConnectionProtoBezierParams `json:"bezierParams,omitempty"`

	CircleParams *GeostoreCurveConnectionProtoCircleParams `json:"circleParams,omitempty"`

	// Possible values:
	//   "UNSPECIFIED" - The connection is unspecified. Rendering code will
	// rely on heuristics to choose one.
	//   "BEZIER" - Bezier curve interpolates the two endpoints.
	//   "CIRCLE" - Endpoints are connected via a circle arc.
	//   "STRAIGHT_EDGE" - Endpoints are connected by a straight edge.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BezierParams") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BezierParams") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCurveConnectionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCurveConnectionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreCurveConnectionProtoBezierParams struct {
	// ControlPoint: Internal Bezier handles. One can be used for a
	// quadratic curve, two for cubic Beziers.
	ControlPoint []*GeostoreCurveConnectionProtoBezierParamsControlPoint `json:"controlPoint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ControlPoint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ControlPoint") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCurveConnectionProtoBezierParams) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCurveConnectionProtoBezierParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreCurveConnectionProtoBezierParamsControlPoint struct {
	// AngleDegrees: We use this parameterization to make curves change
	// predictable when endpoints move. Each point P is defined in terms of
	// the straight edge [S, E] between the start point of the curve S and
	// its end point E. *P / / / S *------------* E Counter-clockwise angle
	// between vector SE and vector SP.
	AngleDegrees float64 `json:"angleDegrees,omitempty"`

	// DistanceMultiplier: Distance(S, P) in units of Distance(S, E).
	DistanceMultiplier float64 `json:"distanceMultiplier,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AngleDegrees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AngleDegrees") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCurveConnectionProtoBezierParamsControlPoint) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCurveConnectionProtoBezierParamsControlPoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreCurveConnectionProtoBezierParamsControlPoint) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreCurveConnectionProtoBezierParamsControlPoint
	var s1 struct {
		AngleDegrees       gensupport.JSONFloat64 `json:"angleDegrees"`
		DistanceMultiplier gensupport.JSONFloat64 `json:"distanceMultiplier"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AngleDegrees = float64(s1.AngleDegrees)
	s.DistanceMultiplier = float64(s1.DistanceMultiplier)
	return nil
}

type GeostoreCurveConnectionProtoCircleParams struct {
	// Radius: Arc radius. Must be greater than half-distance between two
	// endpoints.
	Radius float64 `json:"radius,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Radius") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Radius") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreCurveConnectionProtoCircleParams) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreCurveConnectionProtoCircleParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreCurveConnectionProtoCircleParams) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreCurveConnectionProtoCircleParams
	var s1 struct {
		Radius gensupport.JSONFloat64 `json:"radius"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Radius = float64(s1.Radius)
	return nil
}

// GeostoreDataSourceProto: Every data source used to construct a data
// repository has an associated feature that provides more information
// about it. The standard feature properties have the following
// interpretations: bound - The bounds must includes all features that
// refer to this data source, so that bucketing MapReduce passes work
// correctly. name - The provider name associated with this data source.
// It is expected to remain constant from release to release, and
// between datasets. address - should be empty. point, polyline, polygon
// - should be empty. source_info - should not be set. child - should be
// empty.
type GeostoreDataSourceProto struct {
	// AttributionUrl: This is the URL of a website representing this
	// DataSource as a whole. If this DataSource feature is specific to a
	// particular dataset or product, the page may contain information
	// relevant to that dataset or product or may be the main page of the
	// organization.
	AttributionUrl []*GeostoreUrlProto `json:"attributionUrl,omitempty"`

	// CopyrightOwner: A UTF8 string that will be inserted in copyright
	// messages to refer to this copyright owner, e.g. "Tele Atlas".
	CopyrightOwner string `json:"copyrightOwner,omitempty"`

	// CopyrightYear: The copyright year of this data (which may be
	// different than the year of the release date), e.g. 2005.
	CopyrightYear int64 `json:"copyrightYear,omitempty"`

	// Description: A free-form description of this data source. Ideally the
	// description should include: - Where the data was obtained (URL,
	// company name, individual, etc). - Where to find detailed
	// documentation. - A brief summary of the licensing terms. - As much
	// internal and external contact information as possible (e.g. who to
	// ask about licensing questions, interpreting the data, updating the
	// data, fixing bugs in the importer, etc).
	Description string `json:"description,omitempty"`

	// ImporterBuildInfo: The build information of the importer binary used
	// to generate this data source.
	ImporterBuildInfo string `json:"importerBuildInfo,omitempty"`

	// ImporterBuildTarget: The build target of the importer binary used to
	// generate this data source.
	ImporterBuildTarget string `json:"importerBuildTarget,omitempty"`

	// ImporterClientInfo: The Perforce client information of the importer
	// binary used to generate this data source.
	ImporterClientInfo string `json:"importerClientInfo,omitempty"`

	// ImporterMpmVersion: If the importer was built as an MPM, the version
	// number can be stored in this field. As with build_info, this can be
	// useful when tracking down issues that may be due to the use of a
	// particular binary.
	ImporterMpmVersion string `json:"importerMpmVersion,omitempty"`

	// ImporterTimestamp: The timestamp of the importer binary used to
	// generate this data source.
	ImporterTimestamp string `json:"importerTimestamp,omitempty"`

	// Provider: The provider type of this data source.
	//
	// Possible values:
	//   "PROVIDER_ANY" - ABSTRACT The root of all provider types. This
	// should never be present on an actual feature, but can be useful when
	// calling InCategory.
	//   "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel
	//   "PROVIDER_NAVTEQ"
	//   "PROVIDER_TELE_ATLAS" - ABSTRACT
	//   "PROVIDER_TELE_ATLAS_MULTINET"
	//   "PROVIDER_TELE_ATLAS_CODEPOINT"
	//   "PROVIDER_TELE_ATLAS_GEOPOST"
	//   "PROVIDER_TELE_ATLAS_DATAGEO"
	//   "PROVIDER_TELE_ATLAS_ADDRESS_POINTS"
	//   "PROVIDER_TELCONTAR"
	//   "PROVIDER_EUROPA"
	//   "PROVIDER_ROYAL_MAIL"
	//   "PROVIDER_GOOGLE" - ABSTRACT
	//   "PROVIDER_GOOGLE_HAND_EDIT"
	//   "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must
	// be full ints. The next available ID is: 0x111730B1
	//   "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT
	//   "PROVIDER_GOOGLE_GT_FUSION"
	//   "PROVIDER_GOOGLE_ZAGAT_CMS"
	//   "PROVIDER_GOOGLE_PLACE_NAVBOOST"
	//   "PROVIDER_GOOGLE_FOOTPRINT"
	//   "PROVIDER_GOOGLE_PRODUCT_TERMS"
	//   "PROVIDER_GOOGLE_POINTCARDS"
	//   "PROVIDER_GOOGLE_BUSINESS_CHAINS"
	//   "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_PRONUNCIATIONS"
	//   "PROVIDER_GOOGLE_DUMPLING"
	//   "PROVIDER_GOOGLE_DISTILLERY"
	//   "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_RELATION_MINER"
	//   "PROVIDER_GOOGLE_MAPSPAM"
	//   "PROVIDER_GOOGLE_ROSE"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS"
	//   "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider
	// meant for sending wipeout requests to mapfacts.
	//   "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH"
	//   "PROVIDER_GOOGLE_BEEGEES"
	//   "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_GEO_WORLDMAPS"
	//   "PROVIDER_GOOGLE_GEO_MODERATION"
	//   "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_LOCAL_ALCHEMY"
	//   "PROVIDER_GOOGLE_KEROUAC"
	//   "PROVIDER_GOOGLE_MOBRANK"
	//   "PROVIDER_GOOGLE_RAPTURE"
	//   "PROVIDER_GOOGLE_CULTURAL_INSTITUTE"
	//   "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS"
	//   "PROVIDER_GOOGLE_TACTILE_MAPS"
	//   "PROVIDER_GOOGLE_MAPS_FOR_MOBILE"
	//   "PROVIDER_GOOGLE_GEO_REALTIME"
	//   "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos
	// with this provider to identify whether or not a feature is a
	// Prominent Place! Instead, use the proper API,
	// localsearch_clustering::QualityTierHelper::IsProminentPlace().
	//   "PROVIDER_GOOGLE_PLACE_ACTIONS"
	//   "PROVIDER_GOOGLE_GT_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_WAZE"
	//   "PROVIDER_GOOGLE_ONTHEGO"
	//   "PROVIDER_GOOGLE_GT_IMPORT"
	//   "PROVIDER_GOOGLE_STRUCTURED_DATA"
	//   "PROVIDER_GOOGLE_HELICOPTER"
	//   "PROVIDER_GOOGLE_ROLLBACK"
	//   "PROVIDER_GOOGLE_RIGHTS_REPAIR"
	//   "PROVIDER_GOOGLE_PERFUME"
	//   "PROVIDER_GOOGLE_MAPS_TRANSLATION"
	//   "PROVIDER_GOOGLE_CALL_ME_MAYBE"
	//   "PROVIDER_GOOGLE_LOCAL_UNIVERSAL"
	//   "PROVIDER_GOOGLE_CROUPIER"
	//   "PROVIDER_GOOGLE_SKYSMART"
	//   "PROVIDER_GOOGLE_RIDDLER"
	//   "PROVIDER_GOOGLE_ROADCLOSURES"
	//   "PROVIDER_GOOGLE_SPORE" - UMBRELLA
	//   "PROVIDER_GOOGLE_LOCALIZATION"
	//   "PROVIDER_GOOGLE_CATTERMS"
	//   "PROVIDER_GOOGLE_GT_FIELD_OPS"
	//   "PROVIDER_GOOGLE_MATCHMAKER"
	//   "PROVIDER_GOOGLE_ARBITRATION"
	//   "PROVIDER_GOOGLE_BIZBUILDER_OPS"
	//   "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS"
	//   "PROVIDER_GOOGLE_GT_DRAFTY"
	//   "PROVIDER_GOOGLE_HOTELADS_OPS"
	//   "PROVIDER_GOOGLE_MARKERS"
	//   "PROVIDER_GOOGLE_STATE_MACHINE"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE"
	//   "PROVIDER_GOOGLE_BIKESHARE"
	//   "PROVIDER_GOOGLE_GHOSTWRITER"
	//   "PROVIDER_GOOGLE_EDIT_PLATFORM"
	//   "PROVIDER_GOOGLE_BLUE_GINGER"
	//   "PROVIDER_GOOGLE_GEO_TIGER"
	//   "PROVIDER_GOOGLE_HYADES"
	//   "PROVIDER_GOOGLE_WEBQUARRY"
	//   "PROVIDER_GOOGLE_GEO_MADDEN"
	//   "PROVIDER_GOOGLE_ANDROID_PAY"
	//   "PROVIDER_GOOGLE_OPENING_HOURS_TEAM"
	//   "PROVIDER_GOOGLE_LOCAL_DISCOVERY"
	//   "PROVIDER_GOOGLE_LOCAL_HEALTH"
	//   "PROVIDER_GOOGLE_UGC_MAPS"
	//   "PROVIDER_GOOGLE_FIBER"
	//   "PROVIDER_GOOGLE_REVGEO"
	//   "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END"
	//   "PROVIDER_GOOGLE_GEO_UGC_TASKS"
	//   "PROVIDER_GOOGLE_GEOCODING"
	//   "PROVIDER_GOOGLE_SPYGLASS"
	//   "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES"
	//   "PROVIDER_GOOGLE_GEO_CHANGES"
	//   "PROVIDER_GOOGLE_HUME"
	//   "PROVIDER_GOOGLE_MEGAMIND"
	//   "PROVIDER_GOOGLE_GT_ROADSYNTH"
	//   "PROVIDER_GOOGLE_FIREBOLT"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS"
	//   "PROVIDER_GOOGLE_UGC_SERVICES"
	//   "PROVIDER_GOOGLE_GEOALIGN"
	//   "PROVIDER_GOOGLE_GT_COMPOUNDS"
	//   "PROVIDER_GOOGLE_FOOD_ORDERING"
	//   "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS"
	//   "PROVIDER_GOOGLE_URAW"
	//   "PROVIDER_GOOGLE_FLYEYE"
	//   "PROVIDER_GOOGLE_YOUKE"
	//   "PROVIDER_GOOGLE_GT_ZEPHYR"
	//   "PROVIDER_GOOGLE_USER_SAFETY"
	//   "PROVIDER_GOOGLE_ADDRESS_MAKER"
	//   "PROVIDER_GOOGLE_UGC_PHOTOS"
	//   "PROVIDER_GOOGLE_GT_WINDCHIME"
	//   "PROVIDER_GOOGLE_SNAG_FIXER"
	//   "PROVIDER_GOOGLE_GEO_DEALS"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS"
	//   "PROVIDER_GOOGLE_PROPERTY_INSIGHTS"
	//   "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS"
	//   "PROVIDER_GOOGLE_GEO_PORTKEY"
	//   "PROVIDER_GOOGLE_ROAD_MAPPER"
	//   "PROVIDER_GOOGLE_LOCATION_PLATFORM"
	//   "PROVIDER_GOOGLE_POSTTRIP"
	//   "PROVIDER_GOOGLE_TRAVEL_DESTINATION"
	//   "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP"
	//   "PROVIDER_GOOGLE_USER"
	//   "PROVIDER_GOOGLE_STATION"
	//   "PROVIDER_GOOGLE_GEO_FOOD"
	//   "PROVIDER_GOOGLE_GEO_AR"
	//   "PROVIDER_GOOGLE_GEO_TEMPORAL"
	//   "PROVIDER_GOOGLE_SERVICES_MARKETPLACE"
	//   "PROVIDER_GOOGLE_IMT_CLEANUP"
	//   "PROVIDER_GOOGLE_GEO_FOOD_MENU"
	//   "PROVIDER_GOOGLE_CARENAV"
	//   "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA
	//   "PROVIDER_GOOGLE_DRIVING_UGC"
	//   "PROVIDER_GOOGLE_POLAR"
	//   "PROVIDER_GOOGLE_TRIWILD"
	//   "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS"
	//   "PROVIDER_GOOGLE_SA_FROM_WEB"
	//   "PROVIDER_GOOGLE_POI_ALIGNMENT"
	//   "PROVIDER_GOOGLE_SA_FROM_HULK"
	//   "PROVIDER_GOOGLE_SERVICES_INTERACTIONS"
	//   "PROVIDER_GOOGLE_ROADS_UGC_EDITOR"
	//   "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_DRIVING_VIZ"
	//   "PROVIDER_GOOGLE_GEO_TASKING"
	//   "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKADS"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKMATE"
	//   "PROVIDER_GOOGLE_CROWDTASK_FURBALL"
	//   "PROVIDER_GOOGLE_CROWDTASK_ADAP"
	//   "PROVIDER_GOOGLE_GPAY"
	//   "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS"
	//   "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION"
	//   "PROVIDER_GOOGLE_GEOTRACKER"
	//   "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_CLOSED_LOOP"
	//   "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS"
	//   "PROVIDER_GOOGLE_CORE_DATA_RIGHTS"
	//   "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS"
	//   "PROVIDER_GOOGLE_GEO_CONTENT_FIXER"
	//   "PROVIDER_GOOGLE_POLYGON_REFINEMENT"
	//   "PROVIDER_GOOGLE_HANASU"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS"
	//   "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS"
	//   "PROVIDER_GOOGLE_SA_QUALITY"
	//   "PROVIDER_GOOGLE_GDCE_CLEANUP"
	//   "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_DISCOVERY" - Shopping Attributes
	// Discovery
	//   "PROVIDER_GOOGLE_GEO_LDE"
	//   "PROVIDER_GOOGLE_GEO_SIGNAL_TRACKING"
	//   "PROVIDER_GOOGLE_UGC_AGGREGATION"
	//   "PROVIDER_GOOGLE_3D_BASEMAP"
	//   "PROVIDER_GOOGLE_MAPFACTS_PRIVACY"
	//   "PROVIDER_GOOGLE_GT_ALF"
	//   "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE"
	//   "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider
	// entries should be placed above.
	//   "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA
	//   "PROVIDER_GOOGLE_GEOWIKI"
	//   "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM"
	//   "PROVIDER_GOOGLE_SYNTHESIZED"
	//   "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for
	// teams that wish to integrate with components of the Geo Data
	// Infrastructure that require a valid provider. No production data
	// should ever be sent using this provider.
	//   "PROVIDER_GOOGLE_DISPUTED_AREAS"
	//   "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA
	//   "PROVIDER_GOOGLE_GROUNDS_BUILDER"
	//   "PROVIDER_GOOGLE_SESAME"
	//   "PROVIDER_GOOGLE_GT"
	//   "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range
	// extends the PROVIDER_GOOGLE hierarchy.
	//   "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION"
	//   "PROVIDER_GOOGLE_TRAVELSEARCH"
	//   "PROVIDER_GOOGLE_PANORAMIO"
	//   "PROVIDER_GOOGLE_YOUTUBE"
	//   "PROVIDER_GOOGLE_OLD"
	//   "PROVIDER_GOOGLE_STREETVIEW"
	//   "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW"
	//   "PROVIDER_GOOGLE_ZIPIT"
	//   "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES"
	//   "PROVIDER_GOOGLE_GOLDEN"
	//   "PROVIDER_GOOGLE_INNERSPACE"
	//   "PROVIDER_GOOGLE_MAPSEARCH"
	//   "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of
	// PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and
	// PROVIDER_GOOGLE_GEO_TIGER (for categories).
	//   "PROVIDER_GOOGLE_CROWDSENSUS"
	//   "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not
	// be used, since its range further extends the PROVIDER_GOOGLE
	// hierarchy. aka Local AI.
	//   "PROVIDER_GOOGLE_FREEBASE"
	//   "PROVIDER_GOOGLE_HOTELADS"
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGES"
	//   "PROVIDER_GOOGLE_PLACES_API"
	//   "PROVIDER_GOOGLE_NAMEHEATMAP"
	//   "PROVIDER_GOOGLE_MAPMAKER"
	//   "PROVIDER_GOOGLE_MAPMAKER_MOBILE"
	//   "PROVIDER_GOOGLE_MAPMAKER_PANCAKE"
	//   "PROVIDER_GOOGLE_MAPMAKER_V2"
	//   "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE"
	//   "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from
	// this provider. It is only used to identify features that must be
	// served on MapMaker.
	//   "PROVIDER_GOOGLE_GT_LOCAL"
	//   "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS"
	//   "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS"
	//   "PROVIDER_GOOGLE_ENTITY_NAVBOOST"
	//   "PROVIDER_GOOGLE_RELATED_PLACES"
	//   "PROVIDER_GOOGLE_KNOWN_FOR_TERMS"
	//   "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used,
	// since its range further extends the PROVIDER_GOOGLE hierarchy.
	// Synthetically generated areas (sublocalities/neighborhoods/ postal
	// codes/etc) based on dropped terms from approximate geocoding. More
	// info on go/syntheticareas.
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS"
	//   "PROVIDER_GOOGLE_CROSS_STREETS"
	//   "PROVIDER_GOOGLE_CORRIDORS"
	//   "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a
	// provider that aggregates positions of bicycle rental points that we
	// have agreements with to show on maps
	//   "PROVIDER_GOOGLE_CONCRETE_URLS"
	//   "PROVIDER_GOOGLE_LEANBACK"
	//   "PROVIDER_GOOGLE_LOCKED_LISTINGS"
	//   "PROVIDER_GOOGLE_MONITORING"
	//   "PROVIDER_GOOGLE_SPROUT"
	//   "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY"
	//   "PROVIDER_GOOGLE_GOBY"
	//   "PROVIDER_GOOGLE_PROBLEM_REPORT"
	//   "PROVIDER_GOOGLE_CANDID"
	//   "PROVIDER_GOOGLE_BIZBUILDER"
	//   "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been
	// depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.
	//   "PROVIDER_MAPDATA_SCIENCES"
	//   "PROVIDER_MAPONICS"
	//   "PROVIDER_SKI_RESORTS"
	//   "PROVIDER_ZENRIN"
	//   "PROVIDER_SANBORN"
	//   "PROVIDER_URBAN_MAPPING"
	//   "PROVIDER_US_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_US_CENSUS"
	//   "PROVIDER_US_POSTAL_SERVICE"
	//   "PROVIDER_US_GEOLOGICAL_SURVEY"
	//   "PROVIDER_US_GNIS"
	//   "PROVIDER_US_LANDSAT"
	//   "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY"
	//   "PROVIDER_US_NGA_GNS"
	//   "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines
	//   "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS"
	//   "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" -
	// NOAA
	//   "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC
	//   "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA
	//   "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry
	//   "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS"
	//   "PROVIDER_DMTI_SPATIAL"
	//   "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION"
	//   "PROVIDER_MAPLINK"
	//   "PROVIDER_KINGWAY"
	//   "PROVIDER_GEOCENTRE"
	//   "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS"
	//   "PROVIDER_CN_MAPABC"
	//   "PROVIDER_SMITHSONIAN_INSTITUTE"
	//   "PROVIDER_TRACKS_FOR_AFRICA"
	//   "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO
	//   "PROVIDER_LEADDOG"
	//   "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG"
	//   "PROVIDER_GISRAEL"
	//   "PROVIDER_BASARSOFT"
	//   "PROVIDER_MAPINFO"
	//   "PROVIDER_MAPIT"
	//   "PROVIDER_GEOBASE"
	//   "PROVIDER_ORION"
	//   "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY"
	//   "PROVIDER_ANASAT"
	//   "PROVIDER_MINED_POSTCODES"
	//   "PROVIDER_DMAPAS"
	//   "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY"
	//   "PROVIDER_CH_SBB"
	//   "PROVIDER_SKENERGY"
	//   "PROVIDER_GBRMPA"
	//   "PROVIDER_KOREA_POST"
	//   "PROVIDER_CN_AUTONAVI"
	//   "PROVIDER_MINED_POI"
	//   "PROVIDER_ML_INFOMAP"
	//   "PROVIDER_SNOOPER"
	//   "PROVIDER_GEOSISTEMAS"
	//   "PROVIDER_AFRIGIS"
	//   "PROVIDER_TRANSNAVICOM"
	//   "PROVIDER_EASYCONNECT"
	//   "PROVIDER_LANTMATERIET"
	//   "PROVIDER_LOGICA"
	//   "PROVIDER_MAPKING"
	//   "PROVIDER_DIANPING"
	//   "PROVIDER_GEONAV"
	//   "PROVIDER_HEIBONSHA"
	//   "PROVIDER_DEUTSCHE_TELEKOM"
	//   "PROVIDER_LINGUISTIC_DATA_CONSORTIUM"
	//   "PROVIDER_ACXIOM"
	//   "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395
	//   "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION"
	//   "PROVIDER_INFOUSA"
	//   "PROVIDER_INFOUSA_NIXIE"
	//   "PROVIDER_THOMSON_LOCAL"
	//   "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION"
	//   "PROVIDER_WIKIPEDIA"
	//   "PROVIDER_INFOBEL"
	//   "PROVIDER_MX_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY"
	//   "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO"
	//   "PROVIDER_TELEGATE"
	//   "PROVIDER_TELELISTAS"
	//   "PROVIDER_MAPCITY"
	//   "PROVIDER_EXPLAINER_DC"
	//   "PROVIDER_DAIKEI"
	//   "PROVIDER_NL_CHAMBER_OF_COMMERCE"
	//   "PROVIDER_KOREA_INFO_SERVICE"
	//   "PROVIDER_WIKITRAVEL"
	//   "PROVIDER_FLICKR"
	//   "PROVIDER_DIANCO"
	//   "PROVIDER_VOLT_DELTA"
	//   "PROVIDER_SG_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY"
	//   "PROVIDER_MAPBAR"
	//   "PROVIDER_LONGTU"
	//   "PROVIDER_SA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SA_SAUDI_POST"
	//   "PROVIDER_PEAKLIST"
	//   "PROVIDER_LOCAL_BUSINESS_CENTER"
	//   "PROVIDER_LOCAL_FEED_XML" - UMBRELLA
	//   "PROVIDER_WEB"
	//   "PROVIDER_RAILS_TO_TRAILS"
	//   "PROVIDER_INDIACOM"
	//   "PROVIDER_INFOMEDIA"
	//   "PROVIDER_PICASA"
	//   "PROVIDER_AT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN"
	//   "PROVIDER_AT_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_AT_AUSTRIA_POST"
	//   "PROVIDER_NO_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON"
	//   "PROVIDER_NO_POSTEN_NORGE_AS"
	//   "PROVIDER_CH_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_CH_SWISS_POST"
	//   "PROVIDER_CH_SWISSTOPO"
	//   "PROVIDER_CH_SWISS_NATIONAL_PARK"
	//   "PROVIDER_NAVIT"
	//   "PROVIDER_GEOSEARCH"
	//   "PROVIDER_DE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE"
	//   "PROVIDER_BUNDESNETZAGENTUR"
	//   "PROVIDER_SCHOBER_GROUP"
	//   "PROVIDER_MIREO"
	//   "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO"
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY"
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE"
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA"
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA"
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK"
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN"
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO"
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA"
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV"
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX"
	//   "PROVIDER_SG_PUBLIC_MUNICIPALITY"
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO"
	//   "PROVIDER_MAPCUBE"
	//   "PROVIDER_3D_REALITYMAPS"
	//   "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT"
	//   "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA"
	//   "PROVIDER_DISNEY"
	//   "PROVIDER_CYBERCITY"
	//   "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS"
	//   "PROVIDER_VIRTUAL_HUNGARY_LIMITED"
	//   "PROVIDER_VIRTUEL_CITY"
	//   "PROVIDER_SCREAMPOINT_INTERNATIONAL"
	//   "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN"
	//   "PROVIDER_FR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL"
	//   "PROVIDER_FR_CADASTRE"
	//   "PROVIDER_DIADIEM"
	//   "PROVIDER_THE_WEATHER_CHANNEL"
	//   "PROVIDER_COWI"
	//   "PROVIDER_FALKPLAN_ANDES"
	//   "PROVIDER_NL_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NL_KADASTER"
	//   "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS"
	//   "PROVIDER_DIGITAL_MAP_PRODUCTS"
	//   "PROVIDER_SILICE_DIGITAL"
	//   "PROVIDER_TYDAC"
	//   "PROVIDER_ALBRECHT_GOLF"
	//   "PROVIDER_HEALTH_CH"
	//   "PROVIDER_VISITDENMARK"
	//   "PROVIDER_FLYHERE"
	//   "PROVIDER_DIGITAL_DATA_SERVICES"
	//   "PROVIDER_MECOMO"
	//   "PROVIDER_ZA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM"
	//   "PROVIDER_SENSIS"
	//   "PROVIDER_JJCONNECT"
	//   "PROVIDER_OPPLYSNINGEN"
	//   "PROVIDER_TELLUS"
	//   "PROVIDER_IQONIA"
	//   "PROVIDER_BE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT"
	//   "PROVIDER_BE_BRUSSELS_MOBILITY"
	//   "PROVIDER_YELLOWMAP_AG"
	//   "PROVIDER_STIFTUNG_GESUNDHEIT"
	//   "PROVIDER_GIATA"
	//   "PROVIDER_SANPARKS"
	//   "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE"
	//   "PROVIDER_INFOPORTUGAL"
	//   "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO"
	//   "PROVIDER_COLLINS_BARTHOLOMEW"
	//   "PROVIDER_PROTECT_PLANET_OCEAN"
	//   "PROVIDER_KARTTAKESKUS"
	//   "PROVIDER_FI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION"
	//   "PROVIDER_FI_NATIONAL_LAND_SURVEY"
	//   "PROVIDER_FI_STATISTICS_FINLAND"
	//   "PROVIDER_GB_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_GB_ORDNANCE_SURVEY"
	//   "PROVIDER_NATURAL_ENGLAND"
	//   "PROVIDER_WELSH_GOVERNMENT"
	//   "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS"
	//   "PROVIDER_EPSILON"
	//   "PROVIDER_PARTNER_FRONT_END"
	//   "PROVIDER_CARTESIA"
	//   "PROVIDER_SE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SE_TRAFIKVERKET"
	//   "PROVIDER_SE_NATURVARDSVERKET"
	//   "PROVIDER_IE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND"
	//   "PROVIDER_LU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_LU_P_AND_T_LUXEMBOURG"
	//   "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE"
	//   "PROVIDER_LU_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_MAPFLOW"
	//   "PROVIDER_TKARTOR"
	//   "PROVIDER_JUMPSTART"
	//   "PROVIDER_EPTISA"
	//   "PROVIDER_MC_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MC_PRINCIPAUTE_DE_MONACO"
	//   "PROVIDER_MONOLIT"
	//   "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE"
	//   "PROVIDER_MODIS"
	//   "PROVIDER_GEOX"
	//   "PROVIDER_GEODIRECTORY"
	//   "PROVIDER_GEOPLAN"
	//   "PROVIDER_INFODIREKT"
	//   "PROVIDER_GEOGLOBAL"
	//   "PROVIDER_DEUTSCHE_POST"
	//   "PROVIDER_TRACASA"
	//   "PROVIDER_CORREOS"
	//   "PROVIDER_ES_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA"
	//   "PROVIDER_EDIMAP"
	//   "PROVIDER_VERIZON"
	//   "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS"
	//   "PROVIDER_PROMAPS"
	//   "PROVIDER_CONSODATA"
	//   "PROVIDER_DE_AGOSTINI"
	//   "PROVIDER_FEDERPARCHI"
	//   "PROVIDER_NAVIGO"
	//   "PROVIDER_ITALIAMAPPE"
	//   "PROVIDER_CZECOT"
	//   "PROVIDER_NATURAL_EARTH"
	//   "PROVIDER_REGIO"
	//   "PROVIDER_SHIPWRECK_CENTRAL"
	//   "PROVIDER_RUTGERS_STATE_UNIVERSITY"
	//   "PROVIDER_TWINICE"
	//   "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD"
	//   "PROVIDER_INFOGROUP"
	//   "PROVIDER_TNET"
	//   "PROVIDER_CTT_CORREIOS_DE_PORTUGAL"
	//   "PROVIDER_EUROPARC"
	//   "PROVIDER_IUPPITER"
	//   "PROVIDER_MICHAEL_BAUER_INTERNATIONAL"
	//   "PROVIDER_LEPTON"
	//   "PROVIDER_MAPPOINT"
	//   "PROVIDER_GEODATA"
	//   "PROVIDER_RU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_RU_FNS_KLADR"
	//   "PROVIDER_BR_GOVERNMENT" - ABSTRACT
	//
	// "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU
	// RAIS_RENOVAVEIS" - IBAMA
	//   "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA
	//   "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA
	//   "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" -
	// IBGE
	//   "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI
	//
	// "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES"
	// - DNIT
	//   "PROVIDER_AZAVEA"
	//   "PROVIDER_NORTHSTAR"
	//   "PROVIDER_COMMEDI"
	//   "PROVIDER_NEXUS_GEOGRAFICS"
	//   "PROVIDER_INFOERA"
	//   "PROVIDER_AD_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography
	//   "PROVIDER_MAXXIMA"
	//   "PROVIDER_SI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT"
	//   "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS"
	//   "PROVIDER_L1_TECHNOLOGIES"
	//   "PROVIDER_TELEMEDIA"
	//   "PROVIDER_CDCOM_PROGOROD"
	//   "PROVIDER_MIT_CITYGUIDE"
	//   "PROVIDER_SUNCART"
	//   "PROVIDER_MICROMAPPER"
	//   "PROVIDER_RICHI"
	//   "PROVIDER_FORUM44"
	//   "PROVIDER_SEAT"
	//   "PROVIDER_VALASSIS"
	//   "PROVIDER_NAVICOM"
	//   "PROVIDER_COLTRACK"
	//   "PROVIDER_PSMA_AUSTRALIA"
	//   "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA"
	//   "PROVIDER_CA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_STATISTICS_CANADA"
	//   "PROVIDER_TOCTOC"
	//   "PROVIDER_RMSI"
	//   "PROVIDER_TRUE_TECHNOLOGY"
	//   "PROVIDER_INCREMENT_P_CORPORATION"
	//   "PROVIDER_GOJAVAS"
	//   "PROVIDER_GEOINFORMATION_GROUP"
	//   "PROVIDER_CYBERSOFT"
	//   "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not
	// to be used. OOO CET
	//   "PROVIDER_EE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_EE_MAA_AMET" - Estonian Land Board
	//   "PROVIDER_GASBUDDY"
	//   "PROVIDER_DK_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency
	//   "PROVIDER_MURCIA_REGION_GOVERNMENT"
	//   "PROVIDER_CORREIOS"
	//   "PROVIDER_WEST_WORLD_MEDIA"
	//   "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION"
	//   "PROVIDER_MEDICARE"
	//   "PROVIDER_POLARIS"
	//   "PROVIDER_TW_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER"
	//   "PROVIDER_NORDECA"
	//   "PROVIDER_AFRIMAPPING"
	//   "PROVIDER_OVERDRIVE"
	//   "PROVIDER_PROVIDER_NETWORK_DIRECTORIES"
	//   "PROVIDER_BR_MINISTERIO_DA_SAUDE"
	//   "PROVIDER_DIGITAL_EGYPT"
	//   "PROVIDER_INRIX"
	//   "PROVIDER_ARPINDO"
	//   "PROVIDER_IT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE"
	//   "PROVIDER_EAST_END_GROUP"
	//   "PROVIDER_INGEOLAN"
	//   "PROVIDER_SEMACONNECT"
	//   "PROVIDER_BLINK"
	//   "PROVIDER_EVGO"
	//   "PROVIDER_CHARGEPOINT"
	//   "PROVIDER_TPL_TRAKKER"
	//   "PROVIDER_OI"
	//   "PROVIDER_MAPARADAR"
	//   "PROVIDER_SINGAPORE_POST"
	//   "PROVIDER_CHARGEMASTER"
	//   "PROVIDER_TESLA"
	//   "PROVIDER_VISICOM"
	//   "PROVIDER_GEOLYSIS"
	//   "PROVIDER_ZEPHEIRA"
	//   "PROVIDER_HUBJECT"
	//   "PROVIDER_PODPOINT"
	//   "PROVIDER_CHARGEFOX"
	//   "PROVIDER_KR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and
	// transport, 국토교통부, Guktogyotongbu
	//   "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY"
	//   "PROVIDER_CRITCHLOW"
	//   "PROVIDER_EIFRIG"
	//   "PROVIDER_GIREVE"
	//   "PROVIDER_CN_NAVINFO"
	//   "PROVIDER_JAPAN_CHARGE_NETWORK"
	//   "PROVIDER_NOBIL"
	//   "PROVIDER_INDIA_BANKS"
	//   "PROVIDER_INDONESIA_ELECTION_KPU"
	//   "PROVIDER_CAREERS360"
	//   "PROVIDER_SOURCE_LONDON"
	//   "PROVIDER_EVBOX"
	//   "PROVIDER_JP_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT"
	//   "PROVIDER_YUMYUM"
	//   "PROVIDER_HWW_AUSTRALIA"
	//   "PROVIDER_CINERGY"
	//   "PROVIDER_MTIME"
	//   "PROVIDER_KULTUNAUT"
	//   "PROVIDER_BLITZ"
	//   "PROVIDER_PIA"
	//   "PROVIDER_INTERPARK"
	//   "PROVIDER_CINEMA_ONLINE"
	//   "PROVIDER_BELBIOS"
	//   "PROVIDER_MOVIESEER"
	//   "PROVIDER_SODAMEDYA"
	//   "PROVIDER_ATMOVIES"
	//   "PROVIDER_HOTELBEDS"
	//   "PROVIDER_VERICRED"
	//   "PROVIDER_CIRRANTIC"
	//   "PROVIDER_GOGO_LABS"
	//   "PROVIDER_ELECTRIFY_AMERICA"
	//   "PROVIDER_CMS_MPPUF"
	//   "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.
	//   "PROVIDER_KONTEX_GEOMATICS"
	//   "PROVIDER_NZ_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NZ_LINZ" - Land Information New Zealand
	//   "PROVIDER_NZ_DOC" - NZ Department of Conservation
	//   "PROVIDER_FASTNED"
	//   "PROVIDER_DESTINY_CS"
	//   "PROVIDER_IONITY"
	//   "PROVIDER_EV_CONNECT"
	//   "PROVIDER_PANPAGES"
	//   "PROVIDER_ETECNIC"
	//   "PROVIDER_VOLTA"
	//   "PROVIDER_NISSAN_MEXICO"
	//   "PROVIDER_BMW_GROUP_LATIN_AMERICA"
	//   "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO"
	//   "PROVIDER_VOLVO_CARS_BRASIL"
	//   "PROVIDER_CHARGE_AND_PARKING"
	//   "PROVIDER_DEDUCE_TECHNOLOGIES"
	//   "PROVIDER_SK_TELECOM"
	//   "PROVIDER_ECO_MOVEMENT"
	//   "PROVIDER_GOOGLE_GMS"
	//   "PROVIDER_EASYWAY"
	//   "PROVIDER_PHYSICIAN_COMPARE"
	//   "PROVIDER_HOSPITAL_COMPARE"
	//   "PROVIDER_ENDOLLA_BARCELONA"
	//   "PROVIDER_BE_CHARGE"
	//   "PROVIDER_ONE_NETWORK"
	//   "PROVIDER_CARENAV_DUPLEX"
	//   "PROVIDER_CARENAV_POI" - UMBRELLA
	//   "PROVIDER_IN_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SURVEY_OF_INDIA"
	//   "PROVIDER_E_ON"
	//   "PROVIDER_ELECTRIFY_CANADA"
	//   "PROVIDER_GRIDCARS"
	//   "PROVIDER_DRIVECO"
	//   "PROVIDER_GREEN_ACTION_STUDIOS"
	//   "PROVIDER_GREEN_ACTION_STUDIO"
	//   "PROVIDER_EVINY"
	//   "PROVIDER_MASTERCARD"
	//   "PROVIDER_VATTENFALL"
	//   "PROVIDER_VIETGIS"
	//   "PROVIDER_UNITE"
	//   "PROVIDER_NEOGY"
	//   "PROVIDER_AMPUP"
	//   "PROVIDER_LOOP"
	//   "PROVIDER_ZEST" - Note: Next available value is 0x1270B.
	Provider string `json:"provider,omitempty"`

	// RawMetadata: For every key that is used in raw_data from this source,
	// there must be a corresponding entry in raw_metadata that describes
	// this key.
	RawMetadata []*GeostoreRawMetadataProto `json:"rawMetadata,omitempty"`

	// Release: A release string that doesn't have to be a date. This is
	// provided so that we can preserve provider release strings that aren't
	// based on dates. If you don't set it, the release_date will get
	// formatted into this field for debugging purposes.
	Release string `json:"release,omitempty"`

	// ReleaseDate: The release date of this data.
	ReleaseDate *GeostoreDateTimeProto `json:"releaseDate,omitempty"`

	// SourceDataset: A data provider defined string describing the source
	// dataset from which the features of this data source were generated.
	// For example, the MultiNet "fra" dataset produces features for both
	// France and Monaco.
	SourceDataset string `json:"sourceDataset,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributionUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributionUrl") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDataSourceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDataSourceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreDateTimeProto struct {
	// Precision: This attribute describes the precision of the date and
	// time. It would be unusual for a data provider to provide a precision
	// along with their date. It is more likely that the precision of a date
	// will be inferred from the date format. For example "19th century" is
	// likely to be correct to the century, while "1800" is probably correct
	// to the year. The precision should be semantically interpreted as a
	// cast, so a DateTimeProto object with a seconds value corresponding to
	// 2018-03-28 18:40:00 UTC and a precision of MONTH should be
	// interpreted as "March 2018". The enums above are only some of the
	// possible precision levels for dates and times. Clients may wish to
	// add more precision enums in the future. However, these enums must be
	// ordered by decreasing duration. Clients should be able to write date
	// formatting code that looks like this: if (datetime.precision() <=
	// DateTimeProto::PRECISION_CENTURY) { date =
	// FormatCenturyDate(proto.seconds()); } else if (proto.precision() <=
	// case DateTimeProto::PRECISION_DECADE) { date =
	// FormatDecadeDate(proto.seconds()); } else { ... } See
	// geostore/base/public/datetime.h for date formatting utility
	// functions.
	//
	// Possible values:
	//   "PRECISION_CENTURY" - The enum values here should be ordered from
	// low precision to high precision.
	//   "PRECISION_DECADE"
	//   "PRECISION_YEAR"
	//   "PRECISION_MONTH"
	//   "PRECISION_DAY"
	//   "PRECISION_HOUR"
	//   "PRECISION_MINUTE"
	//   "PRECISION_SECOND"
	Precision string `json:"precision,omitempty"`

	// Seconds: Number of seconds since (or before) the UNIX epoch (January
	// 1, 1970). This is also the standard epoch for Java and Python time
	// representations. If it is important for this time be displayed
	// correctly for different time zones, convert the time to Coordinated
	// Universal Time (UTC).
	Seconds float64 `json:"seconds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Precision") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Precision") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDateTimeProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDateTimeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreDateTimeProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreDateTimeProto
	var s1 struct {
		Seconds gensupport.JSONFloat64 `json:"seconds"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Seconds = float64(s1.Seconds)
	return nil
}

// GeostoreDimensionComparisonProto: A dimension value tagged with a
// comparison operator. This can be used for height, width, or length.
type GeostoreDimensionComparisonProto struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "EQUAL"
	//   "LESS_THAN"
	//   "LESS_THAN_OR_EQUAL"
	//   "GREATER_THAN"
	//   "GREATER_THAN_OR_EQUAL"
	ComparisonOperator string `json:"comparisonOperator,omitempty"`

	DimensionWithUnit *GeostoreDimensionProto `json:"dimensionWithUnit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComparisonOperator")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComparisonOperator") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDimensionComparisonProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDimensionComparisonProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreDimensionProto: A dimension with a numerical value and unit.
// This can be a height, width, or length.
type GeostoreDimensionProto struct {
	Dimension float64 `json:"dimension,omitempty"`

	// Possible values:
	//   "UNIT_UNKNOWN" - Default proto value, this value will never be set
	// in MapFacts.
	//   "METERS"
	//   "FEET"
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dimension") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dimension") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDimensionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDimensionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreDimensionProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreDimensionProto
	var s1 struct {
		Dimension gensupport.JSONFloat64 `json:"dimension"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Dimension = float64(s1.Dimension)
	return nil
}

// GeostoreDisplayDataProto: This holds data specific to rendering a POI
// on a map. It's derived from data already in MapFacts, e.g. containing
// features and the feature's point field. If empty, this proto should
// be ignored for rendering. See go/maps-render-alignment for motivation
// and more details.
type GeostoreDisplayDataProto struct {
	// DisplayLocation: The location where this feature should be rendered.
	DisplayLocation *GeostorePointProto `json:"displayLocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayLocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayLocation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDisplayDataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDisplayDataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreDoodleProto: This protocol buffer holds the doodle-specific
// attributes for features of type TYPE_DOODLE.
type GeostoreDoodleProto struct {
	// Type: The type of this feature -- see comments above.
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_USER_DEFINED_LABEL" - A label that a cartographer has
	// manually placed on the map. These may be read in from configuration
	// files in a renderer and drawn on the map in the appropriate location.
	//   "TYPE_POINT_ANNOTATION" - Point, line, and area annotations. There
	// used to be a more detailed list of doodle types here, but the doodles
	// encoded with them turned out to have a fair bit of tricky
	// datasource-specific baggage. Rather than list provider-specific types
	// here, they've been pulled out and are now private to the importer and
	// the renderer. The point/line/area distinction however has proven to
	// be useful for configuration and filtering, and remains.
	//   "TYPE_LINE_ANNOTATION"
	//   "TYPE_AREA_ANNOTATION"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDoodleProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDoodleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreDurationBasedRateProto: A single cost which will apply based
// on the duration of utilization. The cost may apply once, or
// repeatedly on some interval, to account for the total utilization. If
// the duration expressed by range_start_seconds and range_end_seconds
// do not cover the entire duration of the utilization (i.e. from 0 to
// some time greater than the total utilization time), this must be
// combined with other DurationBasedRateProtos such that the entire
// duration of the utilization is accounted for. See go/rate-schema for
// more details.
type GeostoreDurationBasedRateProto struct {
	// IsFree: If true, represents that the rate is free; i.e. the price is
	// 0 in any currency. If this is true, price must be empty.
	IsFree bool `json:"isFree,omitempty"`

	// PeriodicitySeconds: The billable unit of the rate; i.e. after having
	// utilized the service for exactly periodicity_seconds, the total cost
	// should increase by ‘price’. For example, if the rate expresses a
	// price per hour, then periodicity_seconds should be set to 3600. If
	// this is unset, then the rate does not vary based on duration, and
	// price represents a flat cost. May only be set if price is nonempty.
	PeriodicitySeconds int64 `json:"periodicitySeconds,omitempty"`

	// Price: The total price, in each applicable currency, of utilizing the
	// service for periodicity_seconds, or for the entire duration expressed
	// by range_start_seconds and range_end_seconds if periodicity_seconds
	// is 0. Each entry should have an ID of /measurement_unit/money_value
	// and consist of two properties: one with an ID of
	// /measurement_unit/money_value/amount and a float value with the
	// amount, and another with the ID
	// /measurement_unit/money_value/currency and an ID value with the MID
	// of the proper currency. May only be set if is_free is false.
	Price []*FreebaseTopic `json:"price,omitempty"`

	// RangeEndSeconds: Upper bound for durations to match, exclusive. Unset
	// implies indefinite.
	RangeEndSeconds int64 `json:"rangeEndSeconds,omitempty"`

	// RangeStartSeconds: Lower bound for durations to match, inclusive.
	// Required; a value of 0 expresses that the price applies from the
	// start of the utilization period.
	RangeStartSeconds int64 `json:"rangeStartSeconds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsFree") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsFree") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreDurationBasedRateProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreDurationBasedRateProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreElevationModelProto: Represents raster digital elevation
// model data.
type GeostoreElevationModelProto struct {
	// BlendOrder: Defines the relative order in which terrain data should
	// be rendered. Features with higher blend_order should be blended on
	// top of features with lower blend_order. NOTE: this is backwards from
	// the way BlendRank works in Magrathean.
	BlendOrder int64 `json:"blendOrder,omitempty"`

	// DataLevel: The zoom level at which this data is defined. Level 0 is
	// world level data, and each increase in zoom level corresponds to a
	// factor of 2 increase in scale.
	DataLevel int64 `json:"dataLevel,omitempty"`

	// DataMaxlevel: The maximum (finest) level at which this terrain data
	// has sufficient resolution to be displayed.
	DataMaxlevel int64 `json:"dataMaxlevel,omitempty"`

	// ElevationData: A place to store an elevation data protocol buffer.
	// Currently, this must be a keyhole::AssetTileCompressed (see
	// google3/keyhole/common/proto/magrathean.protodevel).
	ElevationData *Proto2BridgeMessageSet `json:"elevationData,omitempty"`

	// FullChildDataAvailable: If true, all of the data contained in this
	// feature is available at the next highest (more detailed) level. If
	// this is true, partial_child_data_available should also be true.
	FullChildDataAvailable bool `json:"fullChildDataAvailable,omitempty"`

	// PartialChildDataAvailable: If true, at least part of the data
	// contained in this feature is available at the next highest (more
	// detailed) level.
	PartialChildDataAvailable bool `json:"partialChildDataAvailable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlendOrder") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlendOrder") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreElevationModelProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreElevationModelProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreElevationProto: This protocol buffer holds elevation and
// related data.
type GeostoreElevationProto struct {
	// AverageElevationMeters: The average elevation of the feature in
	// meters above the local mean sea level.
	AverageElevationMeters float64 `json:"averageElevationMeters,omitempty"`

	// Peak: Additional details for TYPE_PEAK and TYPE_VOLCANO features.
	Peak *GeostorePeakProto `json:"peak,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AverageElevationMeters") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageElevationMeters")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreElevationProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreElevationProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreElevationProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreElevationProto
	var s1 struct {
		AverageElevationMeters gensupport.JSONFloat64 `json:"averageElevationMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageElevationMeters = float64(s1.AverageElevationMeters)
	return nil
}

// GeostoreEntranceProto: This protocol buffer holds entrance-specific
// attributes for features of type TYPE_ENTRANCE.
type GeostoreEntranceProto struct {
	// Possible values:
	//   "ENTER_AND_EXIT"
	//   "ENTER_ONLY"
	//   "EXIT_ONLY"
	Allowance string `json:"allowance,omitempty"`

	// CanEnter: DEPRECATED. Please use enter_or_exit instead.
	CanEnter bool `json:"canEnter,omitempty"`

	// CanExit: Whether the target can be entered through this entrance.
	// Whether the target can be exited through this entrance.
	CanExit bool `json:"canExit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Allowance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Allowance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreEntranceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreEntranceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreEntranceReferenceProto: Models a relationship between a
// feature and its entrance or exit.
type GeostoreEntranceReferenceProto struct {
	// FeatureId: Feature ID of the related entrance. References should
	// refer to TYPE_ENTRANCE or TYPE_COMPOUND features that are entrances
	// or exits of the referencing feature.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreEntranceReferenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreEntranceReferenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreEstablishmentProto: This protocol buffer holds
// establishment-specific attributes for features of type
// TYPE_ESTABLISHMENT.
type GeostoreEstablishmentProto struct {
	// BizbuilderReference: Reference to BizBuilder data for this
	// establishment. The bizbuilder_reference field indicates that a
	// feature is claimed in CBDB (with the canonical state in MapFacts).
	// The bizbuilder_reference is different from the social_reference's
	// claimed_gaia_id because some BizBuilder clients will not have +Pages.
	// All claimed businesses should have a bizbuilder_reference.
	BizbuilderReference *GeostoreBizBuilderReferenceProto `json:"bizbuilderReference,omitempty"`

	// Hours: Regular opening hours for the establishment (weekly schedule).
	Hours *GeostoreTimeScheduleProto `json:"hours,omitempty"`

	// OpeningHours: Opening hours for this establishment, including regular
	// weekly hours and exceptional hours (e.g. on holidays). NOTE: in
	// practice, only the exceptional hours are filled in this message. A
	// schema migration for regular weekly hours was planned back in 2015
	// (see b/23105782) but was not completed and is (as of May 2018) not
	// prioritized. Clients should continue getting regular opening hours
	// from the `hours` field above. In openinghours.h there is a utility
	// function `GetOpeningHoursFromFeature` that merges
	// `EstablishmentProto.hours` into this proto.
	OpeningHours *GeostoreOpeningHoursProto `json:"openingHours,omitempty"`

	// PriceInfo: Pricing for products and services offered. Example: menus
	// for restaurants.
	PriceInfo *GeostorePriceInfoProto `json:"priceInfo,omitempty"`

	ServiceArea *GeostoreServiceAreaProto `json:"serviceArea,omitempty"`

	// Telephone: Telephone number and related information.
	Telephone []*GeostoreTelephoneProto `json:"telephone,omitempty"`

	// Type: ** DEPRECATED ** This is deprecated in favor of the top-level
	// (in FeatureProto) set of GConcepts. The type of establishment -- see
	// comments above.
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_UNDEFINED" - Can be used for features where no establishment
	// information is available. For example, if an importer generates a
	// TYPE_ESTABLISHMENT_BUILDING feature, but source data does not have
	// any information on the actual purpose of the building, the importer
	// should use TYPE_UNDEFINED for establishment type.
	//   "TYPE_DEPRECATED_AVIATION" - DEPRECATED
	//   "TYPE_BUSINESS"
	//   "TYPE_TRAVEL_SERVICE"
	//   "TYPE_LODGING"
	//   "TYPE_HOTEL"
	//   "TYPE_RESORT"
	//   "TYPE_MOTEL"
	//   "TYPE_HOSTEL"
	//   "TYPE_GUESTHOUSE"
	//   "TYPE_VACATION_RENTAL"
	//   "TYPE_GAS_STATION"
	//   "TYPE_REST_AREA"
	//   "TYPE_CASH_MACHINE"
	//   "TYPE_CAR_RENTAL"
	//   "TYPE_CAR_REPAIR"
	//   "TYPE_TAXI_STAND"
	//   "TYPE_TRAVEL_AGENT"
	//   "TYPE_BICYCLE_RENTAL_POINT"
	//   "TYPE_ELECTRIC_VEHICLE_CHARGING_STATION"
	//   "TYPE_SHOPPING"
	//   "TYPE_GROCERY"
	//   "TYPE_ANTIQUES"
	//   "TYPE_APPAREL"
	//   "TYPE_GIFTS"
	//   "TYPE_JEWELRY"
	//   "TYPE_SPORTING_GOODS"
	//   "TYPE_VEHICLE"
	//   "TYPE_SHOPPING_CENTER"
	//   "TYPE_SUPERMARKET"
	//   "TYPE_FAIRGROUNDS"
	//   "TYPE_MARKET"
	//   "TYPE_PRODUCE_MARKET"
	//   "TYPE_FARMERS_MARKET"
	//   "TYPE_LIQUOR_STORE"
	//   "TYPE_SOUVENIR_SHOP"
	//   "TYPE_INDUSTRIAL"
	//   "TYPE_CONSTRUCTION"
	//   "TYPE_BUILDING_MATERIAL"
	//   "TYPE_SECURITY_PRODUCTS"
	//   "TYPE_MECHANICAL"
	//   "TYPE_TEXTILE"
	//   "TYPE_CHEMICAL"
	//   "TYPE_METAL"
	//   "TYPE_TRANSPORTATION"
	//   "TYPE_FREIGHT"
	//   "TYPE_AVIATION"
	//   "TYPE_COURIER"
	//   "TYPE_MOVING"
	//   "TYPE_PACKAGING"
	//   "TYPE_RAIL"
	//   "TYPE_PUBLIC_TRANSIT"
	//   "TYPE_WAREHOUSE"
	//   "TYPE_DEFENSE"
	//   "TYPE_AGRICULTURE"
	//   "TYPE_PLANTATION"
	//   "TYPE_PLANT_NURSERY"
	//   "TYPE_DESIGN"
	//   "TYPE_UTILITIES"
	//   "TYPE_POWER_PLANT"
	//   "TYPE_SEWAGE_TREATMENT_PLANT"
	//   "TYPE_WATER_TREATMENT_PLANT"
	//   "TYPE_SUBSTATION"
	//   "TYPE_MANUFACTURING"
	//   "TYPE_BIOTECH"
	//   "TYPE_MATERIALS"
	//   "TYPE_MINING"
	//   "TYPE_QUARRY" - Note: 0xF213F is reserved to extend TYPE_INDUSTRIAL
	//   "TYPE_TANNERY"
	//   "TYPE_OIL_REFINERY"
	//   "TYPE_ADVERTISING_MARKETING"
	//   "TYPE_LEGAL"
	//   "TYPE_FAMILY_LAW"
	//   "TYPE_IP_LAW"
	//   "TYPE_LABOR_LAW"
	//   "TYPE_PERSONAL_INJURY_LAW"
	//   "TYPE_CRIMINAL_LAW"
	//   "TYPE_PERSONAL_FINANCE"
	//   "TYPE_LIFE_INSURANCE"
	//   "TYPE_LENDING"
	//   "TYPE_ACCOUNTING"
	//   "TYPE_INVESTING"
	//   "TYPE_BANKING"
	//   "TYPE_HEALTH"
	//   "TYPE_HEALTH_EQUIPMENT"
	//   "TYPE_NURSING"
	//   "TYPE_HEALTH_INSURANCE"
	//   "TYPE_HEALTH_FACILITY"
	//   "TYPE_DIAGNOSTIC_CENTER"
	//   "TYPE_HEALTH_RESOURCES"
	//   "TYPE_NUTRITION"
	//   "TYPE_VISION"
	//   "TYPE_COUNSELING"
	//   "TYPE_MASSAGE"
	//   "TYPE_BLOOD_BANK"
	//   "TYPE_HEARING"
	//   "TYPE_HOME_GARDEN"
	//   "TYPE_INTERIOR_DECOR"
	//   "TYPE_DOMESTIC_SERVICES"
	//   "TYPE_APPLIANCES"
	//   "TYPE_PEST_CONTROL"
	//   "TYPE_GARDENING"
	//   "TYPE_ELECTRONICS"
	//   "TYPE_COMPUTER"
	//   "TYPE_COMPUTER_HARDWARE"
	//   "TYPE_COMPUTER_SECURITY"
	//   "TYPE_COMPUTER_SOFTWARE"
	//   "TYPE_COMPUTER_SUPPORT"
	//   "TYPE_AUDIO_DEVICES"
	//   "TYPE_VIDEO_DEVICES"
	//   "TYPE_REAL_ESTATE"
	//   "TYPE_OFFICE_SERVICES"
	//   "TYPE_ENTERTAINMENT"
	//   "TYPE_GAMES"
	//   "TYPE_CASINO"
	//   "TYPE_LOTTO"
	//   "TYPE_VIDEO"
	//   "TYPE_CLUBS"
	//   "TYPE_DISCOTHEQUE"
	//   "TYPE_ANIMATION"
	//   "TYPE_MODELING"
	//   "TYPE_HUMOR"
	//   "TYPE_MOVIES"
	//   "TYPE_MOVIE_RENTAL"
	//   "TYPE_MOVIE_THEATER"
	//   "TYPE_MUSIC"
	//   "TYPE_RADIO"
	//   "TYPE_TV"
	//   "TYPE_BAR"
	//   "TYPE_PRINT_MEDIA"
	//   "TYPE_ADULT"
	//   "TYPE_SEXUAL_SERVICES"
	//   "TYPE_ANIMALS"
	//   "TYPE_PETS"
	//   "TYPE_FISHERY"
	//   "TYPE_ARTS"
	//   "TYPE_BOOKS"
	//   "TYPE_PERFORMING_ARTS"
	//   "TYPE_GALLERY"
	//   "TYPE_AUTOMOTIVE"
	//   "TYPE_PARTS"
	//   "TYPE_AUTO_FINANCE"
	//   "TYPE_AUTO_INSURANCE"
	//   "TYPE_RV"
	//   "TYPE_MOTORCYCLES"
	//   "TYPE_CARS"
	//   "TYPE_TRUCKS_SUVS"
	//   "TYPE_LICENSING"
	//   "TYPE_MAINTENANCE"
	//   "TYPE_PERSONAL_CARE"
	//   "TYPE_BODY_ART"
	//   "TYPE_COSMETICS"
	//   "TYPE_FITNESS"
	//   "TYPE_YOGA_CENTER"
	//   "TYPE_GYM"
	//   "TYPE_HAIR_CARE"
	//   "TYPE_SPA"
	//   "TYPE_BEAUTY_SALON"
	//   "TYPE_CORPORATE_EVENTS"
	//   "TYPE_HUMAN_RESOURCES"
	//   "TYPE_FOOD_AND_DRINK"
	//   "TYPE_BEVERAGE"
	//   "TYPE_RECIPES"
	//   "TYPE_COOKWARE"
	//   "TYPE_CULINARY"
	//   "TYPE_RETAIL"
	//   "TYPE_RESTAURANT"
	//   "TYPE_COFFEE"
	//   "TYPE_BAKERY"
	//   "TYPE_FOOD_CENTER"
	//   "TYPE_TEA"
	//   "TYPE_CAFE"
	//   "TYPE_WINERY"
	//   "TYPE_BREWERY"
	//   "TYPE_FAST_FOOD"
	//   "TYPE_FOOD_DELIVERY"
	//   "TYPE_INTERNET"
	//   "TYPE_WEB_DESIGN"
	//   "TYPE_WEB_HOSTING"
	//   "TYPE_WEB_SERVICES"
	//   "TYPE_LIFESTYLE"
	//   "TYPE_PHOTO_VIDEO"
	//   "TYPE_ACTIVITIES"
	//   "TYPE_BOATING"
	//   "TYPE_CYCLING"
	//   "TYPE_EQUESTRIAN"
	//   "TYPE_FISHING"
	//   "TYPE_HIKING"
	//   "TYPE_HUNTING"
	//   "TYPE_SWIMMING"
	//   "TYPE_GOLF"
	//   "TYPE_GOLF_COURSE"
	//   "TYPE_BASEBALL"
	//   "TYPE_BASKETBALL"
	//   "TYPE_HOCKEY"
	//   "TYPE_MOTOR_SPORTS"
	//   "TYPE_WINTER_SPORTS"
	//   "TYPE_FOOTBALL"
	//   "TYPE_SOCCER"
	//   "TYPE_ICE_SKATING"
	//   "TYPE_BOXING"
	//   "TYPE_CRICKET"
	//   "TYPE_ROWING"
	//   "TYPE_RUGBY"
	//   "TYPE_RACQUET_SPORTS"
	//   "TYPE_ROCK_CLIMBING"
	//   "TYPE_REFERENCES"
	//   "TYPE_MAPS"
	//   "TYPE_TIME"
	//   "TYPE_SCIENTIFIC_EQUIPMENT"
	//   "TYPE_TELECOMMUNICATIONS"
	//   "TYPE_EVENT_VENUE"
	//   "TYPE_BANQUET_HALL"
	//   "TYPE_CONFERENCE_HALL"
	//   "TYPE_WEDDING_HALL"
	//   "TYPE_EXHIBITION_HALL"
	//   "TYPE_COMMUNITY_CENTER"
	//   "TYPE_AUDITORIUM"
	//   "TYPE_FUNCTION_HALL"
	//   "TYPE_CONCERT_HALL"
	//   "TYPE_AMPHITHEATER"
	//   "TYPE_LAUNDRY"
	//   "TYPE_LAUNDROMAT"
	//   "TYPE_DRY_CLEANER"
	//   "TYPE_MORTUARY"
	//   "TYPE_REPAIR_AND_MAINTENANCE"
	//   "TYPE_GOVERNMENT"
	//   "TYPE_BORDER_CROSSING"
	//   "TYPE_CITY_HALL"
	//   "TYPE_COURTHOUSE"
	//   "TYPE_EMBASSY"
	//   "TYPE_LIBRARY"
	//   "TYPE_PRISON"
	//   "TYPE_TAX_OFFICE"
	//   "TYPE_PROSECUTORS_OFFICE"
	//   "TYPE_CONGRESS"
	//   "TYPE_TOWN_COUNCIL"
	//   "TYPE_CAPITOL_BUILDING"
	//   "TYPE_VOTING_FACILITY"
	//   "TYPE_CHECKPOINT"
	//   "TYPE_SCHOOL"
	//   "TYPE_UNIVERSITY"
	//   "TYPE_ORPHANAGE"
	//   "TYPE_KINDERGARTEN"
	//   "TYPE_DAYCARE"
	//   "TYPE_ACADEMY"
	//   "TYPE_TRADE_SCHOOL"
	//   "TYPE_SKILL_INSTRUCTION"
	//   "TYPE_EMERGENCY"
	//   "TYPE_HOSPITAL"
	//   "TYPE_PHARMACY"
	//   "TYPE_POLICE"
	//   "TYPE_FIRE"
	//   "TYPE_DOCTOR"
	//   "TYPE_DENTIST"
	//   "TYPE_VETERINARIAN"
	//   "TYPE_FIRST_AID"
	//   "TYPE_CIVIL_DEFENSE"
	//   "TYPE_TOURIST_DESTINATION"
	//   "TYPE_ECO_TOURIST_DESTINATION"
	//   "TYPE_BIRD_WATCHING"
	//   "TYPE_NATURE_RESERVE"
	//   "TYPE_MUSEUM"
	//   "TYPE_VISITOR_CENTER"
	//   "TYPE_OBSERVATION_DECK"
	//   "TYPE_OBSERVATORY"
	//   "TYPE_SCENIC_POINT"
	//   "TYPE_ZOO"
	//   "TYPE_AQUARIUM"
	//   "TYPE_AMUSEMENT_PARK"
	//   "TYPE_MONUMENT"
	//   "TYPE_PALACE"
	//   "TYPE_FORT"
	//   "TYPE_TOWER"
	//   "TYPE_LIGHTHOUSE" - 0xF6F is reserved and any new types should
	// start with 0xF6F1
	//   "TYPE_TEMPLE"
	//   "TYPE_CHURCH"
	//   "TYPE_GURUDWARA"
	//   "TYPE_HINDU_TEMPLE"
	//   "TYPE_MOSQUE"
	//   "TYPE_SYNAGOGUE"
	//   "TYPE_BUDDHIST_TEMPLE"
	//   "TYPE_JAIN_TEMPLE"
	//   "TYPE_BAHAI_TEMPLE"
	//   "TYPE_SHINTO_TEMPLE"
	//   "TYPE_MORMON_TEMPLE"
	//   "TYPE_SPORTS_COMPLEX"
	//   "TYPE_STADIUM"
	//   "TYPE_BOWLING"
	//   "TYPE_BADMINTON"
	//   "TYPE_TENNIS"
	//   "TYPE_TABLE_TENNIS"
	//   "TYPE_PARK" - State parks, county parks, city parks, wilderness
	// areas. This also includes underwater preserves, wild and scenic
	// rivers, etc. Should we have things like baseball diamonds?
	//   "TYPE_LOCAL_PARK"
	//   "TYPE_NATIONAL_PARK"
	//   "TYPE_US_NATIONAL_PARK"
	//   "TYPE_US_NATIONAL_MONUMENT"
	//   "TYPE_NATIONAL_FOREST"
	//   "TYPE_NATIONAL_GRASSLAND"
	//   "TYPE_NATIONAL_PRESERVE"
	//   "TYPE_NATIONAL_RECREATION_AREA"
	//   "TYPE_NATIONAL_MONUMENT"
	//   "TYPE_NATIONAL_HISTORIC_AREA"
	//   "TYPE_NATIONAL_SCENIC_AREA"
	//   "TYPE_NATIONAL_SCENIC_ROADWAY_AREA"
	//   "TYPE_NATIONAL_SCENIC_RIVER_AREA"
	//   "TYPE_PROVINCIAL_PARK"
	//   "TYPE_PROVINCIAL_FOREST"
	//   "TYPE_CAMPGROUNDS"
	//   "TYPE_WILDERNESS_AREA" - Wildlife management area. This includes
	// preservation areas for fish, game, and birds.
	//   "TYPE_WILDLIFE_AREA"
	//   "TYPE_BOTANICAL_GARDEN"
	//   "TYPE_GARDEN"
	//   "TYPE_ARBORETUM"
	//   "TYPE_MARINE_PROTECTED_AREA"
	//   "TYPE_AIRPORT" - An airport is a location where aircraft such as
	// fixed-wing aircraft, helicopters, and blimps takeoff and land. NOTE:
	// TYPE_TARMAC establishment type has been deprecated in favor of
	// TYPE_TARMAC feature type. Once all data is modeled using the new
	// feature type, the entry below should be removed.
	//   "TYPE_TARMAC" - DEPRECATED
	//   "TYPE_HELIPORT" - A heliport is a small airport suitable only for
	// use by helicopters.
	//   "TYPE_SEAPLANE_BASE" - A seaplane base is a special airport
	// suitable for seaplanes.
	//   "TYPE_MILITARY_AIRBASE" - An airbase (sometimes referred to
	// correctly as an airfield, military airport, or Royal Air Force
	// Station or Air Force Station) is a military airfield that provides
	// basing and support of military aircraft.
	//   "TYPE_CEMETERY"
	//   "TYPE_MILITARY"
	//   "TYPE_ENCLOSED_TRAFFIC_AREA" - The term "enclosed traffic area" is
	// used extensively in Europe. It generally refers to a parking lot or
	// other similar area through which traffic passes but are not generally
	// considered to be a road. Another example is a piazza in an Italian
	// town.
	//   "TYPE_PARKING" - Establishment TYPE_PARKING is used for parking
	// lots or garages. The actual feature type can be
	// TYPE_ESTABLISHMENT_GROUNDS or TYPE_ESTABLISHMENT_BUILDING to
	// distinguish between those.
	//   "TYPE_OFF_ROAD_AREA"
	//   "TYPE_POST_OFFICE"
	//   "TYPE_HOUSING_DEVELOPMENT" - In some country (like China), there
	// will have a small area of housing development. Normally covers one or
	// more city blocks.
	//   "TYPE_BRIDGE" - In the Australian data we get bridges as POIs
	// effectively. We'd like to include them so we can mapsearch for
	// "Sydney Harbour Bridge" and others. Many other data sets have bridges
	// modeled directly as segments, and so don't require this.
	//   "TYPE_ARCHAEOLOGICAL"
	//   "TYPE_HISTORICAL" - In some countries historical objects are well
	// known and important.
	//   "TYPE_RUINS"
	//   "TYPE_TUNNEL" - Feature must be TYPE_ESTABLISHMENT_GROUNDS.
	//   "TYPE_RESIDENTIAL_DWELLING" - These types, when used with
	// appropriate feature type (TYPE_ESTABLISHMENT_BUILDING,
	// TYPE_ESTABLISHMENT_GROUNDS) can refer to a single building or a
	// residential area (respectively).
	//   "TYPE_DETACHED_DWELLING"
	//   "TYPE_ATTACHED_DWELLING"
	//   "TYPE_APARTMENT" - All multi-unit housing such as duplex,
	// condominium, apartment belongs to this.
	//   "TYPE_GATED_COMMUNITY"
	//   "TYPE_RETIREMENT_HOME"
	//   "TYPE_TOLL_BOOTH" - In Korea most toll booths have their own names,
	// and are often used as reference points. If an importer generates
	// TYPE_TOLL_BOOTH establishment features with exact positions and
	// names, then mapsearch will index them. Also this can be used to
	// render them.
	//   "TYPE_CULTURAL"
	//   "TYPE_CULTURAL_CENTER"
	//   "TYPE_OVERPASS" - An overpass, or flyover is a structure that
	// passes over another road or railway.
	//   "TYPE_REST_ROOM"
	//   "TYPE_PUBLIC_PHONE"
	//   "TYPE_PHONE_BOOTH"
	//   "TYPE_MANNED_PCO"
	//   "TYPE_RESEARCH_INSTITUTE"
	//   "TYPE_NON_GOVERNMENTAL_ORGANIZATION"
	//   "TYPE_OFFICE_PARK"
	//   "TYPE_MEDITATION_CENTER"
	//   "TYPE_RELIGIOUS"
	//   "TYPE_MONASTERY"
	//   "TYPE_ASHRAM"
	//   "TYPE_PAGODA"
	//   "TYPE_MISSION"
	//   "TYPE_PILGRIM_DESTINATION"
	//   "TYPE_SOCIAL_SERVICE"
	//   "TYPE_RANGER_STATION"
	//   "TYPE_TRANSIT_STATION" - Hierarchy of transit station types. See
	// go/transit-schema for more details.
	//   "TYPE_BUS_STATION"
	//   "TYPE_TRAMWAY_STATION"
	//   "TYPE_TRAIN_STATION"
	//   "TYPE_SUBWAY_STATION"
	//   "TYPE_FERRY_TERMINAL"
	//   "TYPE_CABLE_CAR_STATION"
	//   "TYPE_GONDOLA_LIFT_STATION"
	//   "TYPE_FUNICULAR_STATION"
	//   "TYPE_HORSE_CARRIAGE_STATION"
	//   "TYPE_MONORAIL_STATION"
	//   "TYPE_SEAPORT"
	//   "TYPE_NATURAL_FEATURE"
	//   "TYPE_ELEVATED"
	//   "TYPE_PEAK"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BizbuilderReference")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BizbuilderReference") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreEstablishmentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreEstablishmentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreExceptionalHoursProto: An ExceptionalHoursProto holds
// information about exceptional (non-regular) hours for a business,
// such as holiday hours.
type GeostoreExceptionalHoursProto struct {
	// Hours: The weekly schedule to be applied for the dates that fall
	// within the range. The schedule may contain hours only for days of the
	// week that occur during the date range specified in the range field.
	Hours *GeostoreBusinessHoursProto `json:"hours,omitempty"`

	// Metadata: Field-level metadata for this exception.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Range: The dates for which this exception applies, expressed as a
	// half open interval. For example, an exception that applies for the
	// entire month of December 2015 should have a range December 1, 2015 to
	// January 1, 2016. Any regular hours that start on days in this range
	// are ignored and replaced by the exceptional hours for that day. The
	// TimeIntervalProto for the range must be a fully specified, non-empty,
	// and non-inverted range of dates. Concretely, the requirements are: *
	// the range must be a TYPE_RANGE interval * the interval may not be
	// inverted * the endpoints of the interval must specify a year, month,
	// and day * the day_type of each endpoint must be type DAY_OF_MONTH *
	// the endpoints may not specify hour, minute, second, week, or
	// week_type * the begin endpoint must predate the end endpoint
	Range *GeostoreTimeIntervalProto `json:"range,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hours") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hours") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreExceptionalHoursProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreExceptionalHoursProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreExistenceProto struct {
	// CloseReason: Structured reason for the permanent closure (if any).
	//
	// Possible values:
	//   "CLOSED" - The establishment is permanently closed.
	//   "MOVED" - The establishment moved to another location. There may be
	// a new feature representing the "same" establishment at its new
	// location and if so, this feature should have a
	// RELATION_BUSINESS_MOVED relation to that other feature.
	//   "REBRANDED" - The establishment was rebranded. There may be a new
	// feature representing the "same" establishment with its new branding
	// and if so, this feature should have a RELATION_BUSINESS_REBRANDED
	// relation to that other feature.
	CloseReason string `json:"closeReason,omitempty"`

	// Closed: Indicates whether the place is closed (permanently or
	// temporarily), i.e., not operational in the present, but was at in the
	// past and/or will be in the future. WARNING: New code should use Geo
	// Schema's libraries instead, specifically the OpeningStatus APIs,
	// available in: * C++
	// (cs/f:google3/geostore/base/public/feature.h%20function:ExistenceState
	// ) * Java
	// (cs/f:google3/java/com/google/geostore/base/Existence.java%20function:
	// OpeningStatus) * Python
	// (cs/f:google3/geostore/base/public/python/feature.clif%20existence_sta
	// te)
	Closed bool `json:"closed,omitempty"`

	// EndAsOfDate: RESERVED
	EndAsOfDate *GeostoreDateTimeProto `json:"endAsOfDate,omitempty"`

	EndDate *GeostoreDateTimeProto `json:"endDate,omitempty"`

	// FeatureBirthTimestampSeconds: ** DEPRECATED ** This field is now
	// deprecated (see b/22878252). Please use the Geo Schema
	// GetFeatureBirthTimestamp() API to extract the birth timestamp of a
	// feature. The timestamp in seconds since the UNIX epoch (January 1,
	// 1970) when this feature becomes live in the Geo repository. Different
	// from start_date in that this is the birth date of Google's
	// representation of the place whereas start_date is the birth date of
	// the place in the physical world.
	FeatureBirthTimestampSeconds int64 `json:"featureBirthTimestampSeconds,omitempty,string"`

	// Removed: Indicates whether the feature is marked as removed in the
	// Geo repository. Removed features are still present in the Geo
	// repository but are considered to be in an inactive state (not valid
	// for lint purposes, not retrievable except explicitly by feature ID,
	// etc.). NOTE: If you have access to a complete FeatureProto, do NOT
	// read this bit directly to find out whether a feature is removed.
	// Instead, rely on the IsFeatureRemoved() API, available in C++
	// (geostore/base/public/feature.h) and Java
	// (geostore/base/Feature.java).
	Removed bool `json:"removed,omitempty"`

	// RemovedReason: Structured reason why the feature is marked as
	// removed. Relevant only when removed == true.
	//
	// Possible values:
	//   "UNKNOWN" - Reason unknown or not captured by one of the other
	// values.
	//   "BOGUS" - Bogus data - doesn't represent a real world geographic
	// place or is just largely bad/incorrect data.
	//   "PRIVATE" - Considered "private" data. We do not want to display
	// this data to users, but we allow it to remain in MapFacts
	// indefinitely.
	//   "PRIVATE_MUST_PURGE" - Considered "private" data, which has been or
	// will soon be fully removed from MapFacts and related systems (other
	// than feature id and existence metadata).
	//   "SPAM" - Bad data that was intentionally/maliciously contributed.
	//   "UNSUPPORTED" - Not enough data to support the existence of the
	// feature. Different from the BOGUS case in that there is no positive
	// evidence that place is/was incorrect. NOTE: This removal reason can
	// only be set/unset by PROVIDER_GOOGLE_LOCAL_ALCHEMY and
	// PROVIDER_GOOGLE_OYSTER_AUTO_EDITS.
	//   "PENDING" - Indicates that the existence of the place is yet to be
	// justified.
	//   "DUPLICATE" - Place has been identified as duplicate of and merged
	// to another place. NOTE: This removal reason cannot be set for
	// TYPE_SEGMENT. NOTE: If you have access to a complete FeatureProto, do
	// NOT read this bit directly to find out whether a feature is a
	// duplicate. Instead, rely on the IsDuplicateFeature() API, available
	// in C++ (geostore/base/public/feature.h) and Java
	// (geostore/base/Feature.java).
	//   "OLD_SCHEMA" - The feature uses an old version of the Geo Schema
	// (e.g. it has a deprecated feature type).
	//   "REPLACED" - Feature has been replaced by one or more other
	// features. E.g. a segment got split and is now replaced by 2 segments.
	// This is different than DUPLICATE because the feature is not a
	// duplicate (in the identity sense) of the feature(s) that replace it.
	// NOTE: this removal reason is currently allowed to be set only on
	// TYPE_SEGMENT features.
	//   "ROLLED_BACK" - The edit that created the feature has been rolled
	// back.
	RemovedReason string `json:"removedReason,omitempty"`

	// StartDate: (Initial) opening and (permanent) closing dates of the
	// establishment, such that start_date is the first day open and
	// end_date is the first day closed. The only allowed precisions are
	// PRECISION_DAY, PRECISION_MONTH, PRECISION_YEAR. DateTimeProto.seconds
	// should have the lowest legal value for the desired date/time and
	// precision. E.g. for PRECISION_MONTH, 2019-02-15 21:10:30 is not
	// valid, it should be 2019-02-01 00:00:00 instead. NOTE: The start_date
	// and end_date are stored in UTC but should be interpreted as being in
	// the local timezone. So clients should convert the DateTimeProto to
	// local (civil) time using UTC+0, and then treat the result as local to
	// the feature.
	StartDate *GeostoreDateTimeProto `json:"startDate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CloseReason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloseReason") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreExistenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreExistenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureFieldMetadataProto: Provenance information for
// sub-fields of this feature.
type GeostoreFeatureFieldMetadataProto struct {
	FieldProvenance []*GeostoreFeatureFieldMetadataProtoFieldProvenance `json:"fieldProvenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldProvenance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldProvenance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureFieldMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureFieldMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreFeatureFieldMetadataProtoFieldProvenance struct {
	// FieldPath: Represents all fields for which this SourceInfo is valid.
	// NOTE: Field paths are rooted at FeatureProto level.
	FieldPath []*GeostoreStableFieldPathProto `json:"fieldPath,omitempty"`

	Provenance *GeostoreProvenanceProto `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldPath") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldPath") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureFieldMetadataProtoFieldProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureFieldMetadataProtoFieldProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureHistoryMetadataProto: Metadata related to the history
// of a given feature in the Geo repository.
type GeostoreFeatureHistoryMetadataProto struct {
	// FeatureBirthTimestampUs: The timestamp (in microseconds since the
	// UNIX epoch) when this feature first went live in the Geo repository.
	// Note that this has no relation to the birth data of that geographical
	// entity in the real world.
	FeatureBirthTimestampUs int64 `json:"featureBirthTimestampUs,omitempty,string"`

	// LastModificationTimestampUs: The timestamp (in microseconds since the
	// UNIX epoch) of the last modification to the feature. Note this
	// includes attachment modifications. The feature's initial creation is
	// also considered as a modification. This is useful for those that
	// consume features via both listening to notifications and reading from
	// repository snapshots. This timestamp can be used to decide whether a
	// feature in the snapshot was already seen in a more recent state
	// through the notifications.
	LastModificationTimestampUs int64 `json:"lastModificationTimestampUs,omitempty,string"`

	// RemovalTimestampUs: The timestamp (in microseconds since the UNIX
	// epoch) of the deletion time of the feature. If the feature is
	// currently removed, this field gets populated with the timestamp the
	// feature first became removed after being live (or being removed from
	// beginning). This field won't be set if the feature is live.
	RemovalTimestampUs int64 `json:"removalTimestampUs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "FeatureBirthTimestampUs") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureBirthTimestampUs")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureHistoryMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureHistoryMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureIdForwardingsProto: Feature ID forwardings. There are
// many different types of ID forwardings, some of which are attached to
// live features, others to removed features. This information is
// available in multiple forms (with different completeness guarantees):
// (1) in RPC responses to read requests to the live Geo repository; (2)
// on disk, as part of the metadata section of features found in the
// (inactive) features snapshots; (3) on disk, as part of a separate
// feature_id_forwardings side table.
type GeostoreFeatureIdForwardingsProto struct {
	// DuplicateOf: If the feature has been marked as a DUPLICATE of another
	// feature, this is the feature ID of that other feature. Note that the
	// other feature may itself be removed. This field is NOT set in (1).
	DuplicateOf *GeostoreFeatureIdProto `json:"duplicateOf,omitempty"`

	// ForwardedId: The feature ID of the forwarded feature. This field is
	// only set in case (3).
	ForwardedId *GeostoreFeatureIdProto `json:"forwardedId,omitempty"`

	// InactiveDuplicate: If other features have been marked as DUPLICATE of
	// this feature, this is the set of all such feature IDs. All feature
	// IDs in this set should be for removed (aka inactive) features. Note
	// that in the context of historical read requests against MapFacts
	// (when ReadRequest.version_selection.timestamp is set), this field
	// won't be set.
	InactiveDuplicate []*GeostoreFeatureIdProto `json:"inactiveDuplicate,omitempty"`

	// ReplacedBy: DEPRECATED - Use
	// feature.metadata.feature_replacement_info instead. This field was
	// never populated.
	ReplacedBy *GeostoreFeatureIdListProto `json:"replacedBy,omitempty"`

	// TransitivelyDuplicateOf: If the feature has been transitively marked
	// as a DUPLICATE of another feature (via a chain of size >= 1), this is
	// the feature ID of that other feature which is the end of the chain.
	// The field is always set even if the chain is of size 1. Note that the
	// other feature may itself be removed. This field is only set in case
	// (3).
	TransitivelyDuplicateOf *GeostoreFeatureIdProto `json:"transitivelyDuplicateOf,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DuplicateOf") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DuplicateOf") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureIdForwardingsProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureIdForwardingsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureIdListProto: A simple list of feature IDs.
type GeostoreFeatureIdListProto struct {
	// Id: The list of feature IDs. While the exact semantics of these IDs
	// are usage-dependent, the list should never be empty or contain
	// duplicates.
	Id []*GeostoreFeatureIdProto `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureIdListProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureIdListProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureIdProto: A globally unique identifier associated with
// each feature. We use 128-bit identifiers so that we have lots of bits
// available to distinguish between features. The feature id currently
// consists of a 64-bit "cell id" that **sometimes** corresponds to the
// approximate centroid of the feature, plus a 64-bit fingerprint of
// other identifying information. See more on each respective field in
// its comments. Feature ids are first assigned when the data is created
// in MapFacts. After initial creation of the feature, they are
// immutable. This means that the only properties that you should rely
// on are that they are unique, and that cell_ids often - but not always
// - preserve spatial locality. The degree of locality varies as the
// feature undergoes geometry changes, and should not in general be
// considered a firm guarantee of the location of any particular
// feature. In fact, some locationless features have randomized cell
// IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that
// fprints in the id field of features will be globally unique. Using
// the fprint allows consumers who don't need the spatial benefit of
// cell ids to uniquely identify features in a 64-bit address space.
// This property is not guaranteed for other sources of FeatureProtos.
type GeostoreFeatureIdProto struct {
	// CellId: The S2CellId corresponding to the approximate location of
	// this feature as of when it was first created. This can be of variable
	// accuracy, ranging from the exact centroid of the feature at creation,
	// a very large S2 Cell, or even being completely randomized for
	// locationless features. Cell ids have the nice property that they
	// follow a space-filling curve over the surface of the earth. (See
	// s2cellid.h for details.) WARNING: Clients should only use cell IDs to
	// perform spatial locality optimizations. There is no strict guarantee
	// that the cell ID of a feature is related to the current geometry of
	// the feature in any way.
	CellId uint64 `json:"cellId,omitempty,string"`

	// Fprint: A 64-bit fingerprint used to identify features. Most clients
	// should rely on MapFacts or OneRing to choose fingerprints. If
	// creating new fprints, the strategy should be chosen so that the
	// chance of collision is remote or non-existent, and the distribution
	// should be reasonably uniform. For example, if the source data assigns
	// unique ids to features, then a fingerprint of the provider name,
	// version, and source id is sufficient.
	Fprint uint64 `json:"fprint,omitempty,string"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// feature ID. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CellId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CellId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureIdProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureIdProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureMetadataProto: General metadata related to a given
// feature in the Geo repository.
type GeostoreFeatureMetadataProto struct {
	// BulkUpdatable: This field indicates whether the feature is subject to
	// bulk updates. Caution must be exercised while editing such features
	// since the changes made by the edits will be overwritten by the bulk
	// update (if the feature is bulk updated). See go/mapfacts-abu for more
	// information.
	//
	// Possible values:
	//   "NOT_BULK_UPDATABLE" - The feature will not be bulk updated.
	//   "BULK_UPDATABLE" - The feature has been bulk updated, and may be
	// bulk updated again in the future. Note that this refers specifically
	// to the atomic bulk-upload process, not methods of applying large sets
	// of (independent) edits (e.g. with BEST).
	BulkUpdatable string `json:"bulkUpdatable,omitempty"`

	// CoreVersionToken: core_version_token is an opaque token representing
	// the version of the core fields of the feature. This field is not
	// updated when attachments are changed.
	CoreVersionToken string `json:"coreVersionToken,omitempty"`

	// FeatureReplacementInfo: Metadata for tracking when a feature is
	// derived from or replaced by another feature or set of features.
	FeatureReplacementInfo *GeostoreFeatureReplacementInfoProto `json:"featureReplacementInfo,omitempty"`

	// FieldMetadata: Metadata about certain repeated fields and their
	// subfields, for which field type is not granular enough.
	FieldMetadata *GeostoreFeatureFieldMetadataProto `json:"fieldMetadata,omitempty"`

	// Forwardings: Feature ID forwardings, if applicable.
	Forwardings *GeostoreFeatureIdForwardingsProto `json:"forwardings,omitempty"`

	// History: Metadata related to the history.
	History *GeostoreFeatureHistoryMetadataProto `json:"history,omitempty"`

	// VersionToken: version_token is an opaque token representing the
	// version of this feature. It can be used as a concurrency token when
	// sending edits.
	VersionToken string `json:"versionToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BulkUpdatable") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BulkUpdatable") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeaturePropertyIdProto: Message to represent a "feature
// property" as an abstract construct. Most feature properties are
// mapped one to one with the EditProto field types. However in some
// cases the EditProto field type granularity is too coarse to support
// use-cases that rely on feature properties (such as per-value rights
// tracking). When that is the case, the feature property is augmented
// with a secondary field.
type GeostoreFeaturePropertyIdProto struct {
	// AttachmentTypeId: Required when field_type == ATTACHMENT.
	AttachmentTypeId uint64 `json:"attachmentTypeId,omitempty,string"`

	// AttributeId: Required when field_type == FEATURE_ATTRIBUTE.
	AttributeId string `json:"attributeId,omitempty"`

	// Possible values:
	//   "NONE"
	//   "ACCESS_POINT"
	//   "ADDRESS"
	//   "ANCHORED_GEOMETRY_GEOMETRY_ID"
	//   "ATTACHMENT"
	//   "BIZBUILDER_REFERENCE"
	//   "BORDER_FEATURE_ID_LEFT"
	//   "BORDER_FEATURE_ID_RIGHT"
	//   "BORDER_OVERRIDE_STATUS"
	//   "BORDER_STATUS"
	//   "BORDER_TYPE"
	//   "BORDER_LOGICAL_BORDER"
	//   "BOUND"
	//   "BUILDING_BASE_HEIGHT_METERS_AGL"
	//   "BUILDING_DEFAULT_DISPLAY_LEVEL"
	//   "BUILDING_FLOORS"
	//   "BUILDING_HEIGHT_METERS"
	//   "BUILDING_LEVEL"
	//   "BUILDING_STRUCTURE"
	//   "BUSINESS_CHAIN_CANONICAL_GCONCEPT"
	//   "BUSINESS_HOURS"
	//   "DATA_SOURCE"
	//   "DISPLAY_DATA"
	//   "ENTRANCE_ALLOWANCE"
	//   "ESTABLISHMENT_OPENING_HOURS_EXCEPTION"
	//   "ESTABLISHMENT_OPENING_HOURS_REGULAR_HOURS"
	//   "ESTABLISHMENT_PRICE_INFO"
	//   "ESTABLISHMENT_SERVICE_AREA_SERVED_FEATURE"
	//   "EXISTENCE_STATUS"
	//   "FEATURE_AVERAGE_ELEVATION"
	//   "FEATURE_BEST_LOCALE"
	//   "FEATURE_CELL_COVERING"
	//   "FEATURE_CENTER"
	//   "FEATURE_CHILD"
	//   "FEATURE_EXEMPT_REGULATED_AREA"
	//   "FEATURE_INTERIOR_CELL_COVERING"
	//   "FEATURE_NAME"
	//   "FEATURE_PARENT"
	//   "FEATURE_POSE"
	//   "FEATURE_PREFERRED_VIEWPORT"
	//   "FEATURE_TRACK"
	//   "FEATURE_TYPE"
	//   "FEATURE_WEBSITE"
	//   "FIELD_RIGHTS"
	//   "FUTURE_GEOMETRY"
	//   "FUTURE_GEOMETRY_FOR"
	//   "GCONCEPT"
	//   "GEOMETRY_PRECISION_METERS"
	//   "GEOPOLITICAL_GEOMETRY_REST_OF_WORLD_POLYGON"
	//   "GEOPOLITICAL_GEOMETRY_SELF_POLYGON"
	//   "INFERRED_GEOMETRY_GEOMETRY_COMPOSITION"
	//   "INFERRED_GEOMETRY_DEFINES_GEOMETRY_FOR"
	//   "INTERSECTION"
	//   "INTERSECTION_GROUP"
	//   "INTERSECTION_GROUP_CHILD_GROUP"
	//   "INTERSECTION_GROUP_GROUP_TYPE"
	//   "INTERSECTION_GROUP_PARENT_GROUP"
	//   "INTERSECTION_IN_GROUP"
	//   "INTERSECTION_TOLL_CLUSTER"
	//   "IN_SEGMENT"
	//   "KNOWLEDGE_GRAPH_PROPERTY"
	//   "LABEL_BACKGROUND_COLOR"
	//   "LABEL_TEXT_COLOR"
	//   "LANE_MARKER_BARRIER_MATERIALS"
	//   "LANE_MARKER_CROSSING_PATTERN"
	//   "LANE_MARKER_LINEAR_PATTERN"
	//   "LEVEL_BUILDING"
	//   "LEVEL_NUMBER"
	//   "LOCALE_LANGUAGE"
	//   "LOCALE_LOCALIZATION_POLICY_ID"
	//   "LOGICAL_BORDER_BORDER_SEGMENT"
	//   "LOGICAL_BORDER_STATUS"
	//   "OPERATIONS_TEMPORARY_CLOSURE"
	//   "PARKING_ALLOWANCE"
	//   "PARKING_AVAILABLE"
	//   "PARKING_OPENING_HOURS_EXCEPTION"
	//   "PARKING_OPENING_HOURS_REGULAR_HOURS"
	//   "PARKING_PROVIDER_FEATURE"
	//   "PARKING_RESTRICTION"
	//   "PEAK_PROMINENCE"
	//   "PHONE_NUMBER"
	//   "POINT"
	//   "POLYGON"
	//   "POLYGON_FOR_DISPLAY"
	//   "POLYLINE"
	//   "RANK"
	//   "RANK_SIGNAL"
	//   "REGULATED_AREA_RESTRICTION"
	//   "RELATED_BORDER"
	//   "RELATED_ENTRANCE"
	//   "RELATED_FEATURE"
	//   "RELATED_TERMINAL_POINT"
	//   "RELATED_TIMEZONE"
	//   "RESTRICTION_GROUP_SEGMENT"
	//   "ROAD_MONITOR_MONITORED_ROAD"
	//   "ROUTE_CHILD_TYPE"
	//   "SCHOOL_DISTRICT_TYPE"
	//   "SEGMENT_ADVISORY_MAXIMUM_SPEED"
	//   "SEGMENT_AVERAGE_SPEED"
	//   "SEGMENT_BARRIER"
	//   "SEGMENT_BICYCLE_FACILITY"
	//   "SEGMENT_BICYCLE_SAFETY"
	//   "SEGMENT_CONDITION"
	//   "SEGMENT_CONSTRUCTION_BEGIN_DATE"
	//   "SEGMENT_CONSTRUCTION_END_DATE"
	//   "SEGMENT_CONSTRUCTION_STATUS"
	//   "SEGMENT_COVERED"
	//   "SEGMENT_DISTANCE_TO_EDGE"
	//   "SEGMENT_EDGE_FOLLOWS_SEGMENT_BEGIN_FRACTION"
	//   "SEGMENT_EDGE_FOLLOWS_SEGMENT_END_FRACTION"
	//   "SEGMENT_ELEVATION"
	//   "SEGMENT_ENDPOINT"
	//   "SEGMENT_GRADE_LEVEL_LIST"
	//   "SEGMENT_INTERNAL_TRAVEL_ALLOWANCE"
	//   "SEGMENT_INTERPOLATION_OFFSET_METERS"
	//   "SEGMENT_IS_MAX_PERMITTED_SPEED_DERIVED"
	//   "SEGMENT_LANE"
	//   "SEGMENT_LEGAL_MAXIMUM_SPEED"
	//   "SEGMENT_LEGAL_MINIMUM_SPEED"
	//   "SEGMENT_MAX_SPEED"
	//   "SEGMENT_ON_RIGHT"
	//   "SEGMENT_PATH"
	//   "SEGMENT_PEDESTRIAN_CROSSING"
	//   "SEGMENT_PEDESTRIAN_FACILITY"
	//   "SEGMENT_PEDESTRIAN_GRADE"
	//   "SEGMENT_PRIORITY"
	//   "SEGMENT_RESTRICTION"
	//   "SEGMENT_ROAD_CAMERA"
	//   "SEGMENT_ROAD_SIGN"
	//   "SEGMENT_ROUTE"
	//   "SEGMENT_ROUTE_ASSOCIATION"
	//   "SEGMENT_SEPARATED_ROADWAYS"
	//   "SEGMENT_SURFACE"
	//   "SEGMENT_SWEEP"
	//   "SEGMENT_TOLL_ROAD"
	//   "SEGMENT_USAGE"
	//   "SEGMENT_VISIBLE_LANDMARK"
	//   "SIGN_COMPONENT"
	//   "SOCIAL_REFERENCE_CLAIMED_GAIA_ID"
	//   "SOURCE_INFO"
	//   "STATUS_CLOSED"
	//   "STATUS_CLOSE_REASON"
	//   "STATUS_END_AS_OF_DATE"
	//   "STATUS_END_DATE"
	//   "STATUS_REMOVED"
	//   "STATUS_REMOVED_REASON"
	//   "STATUS_START_DATE"
	//   "STOREFRONT_GEOMETRY"
	//   "SYNTHETIC_GEOMETRY"
	//   "THREE_DIMENSIONAL_MODEL"
	//   "TOLL_CLUSTER_INTERSECTION"
	//   "TRANSIT_LINE_AGENCY"
	//   "TRANSIT_LINE_STATION"
	//   "TRANSIT_LINE_VARIANT_LINE_CONCEPT"
	//   "TRANSIT_LINE_VARIANT_STOP"
	//   "TRANSIT_LINE_VEHICLE_TYPE"
	//   "TRANSIT_STATION_AGENCY"
	//   "VERTICAL_ORDERING_LEVEL"
	//   "WATER_REMOVED_POLYGON"
	//   "DEPRECATED_DO_NOT_USE_EMAIL_ADDRESS"
	//   "DEPRECATED_DO_NOT_USE_RANK_GEOMETRY"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_INFO"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_LANE_LIST"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_WRONG_WAY"
	//   "DEPRECATED_DO_NOT_USE_WEBSITE"
	//   "FEATURE_ATTRIBUTE"
	//   "SOCIAL_REFERENCE"
	//   "CATEGORY"
	//   "DEPRECATED_DO_NOT_USE_CAPITAL"
	//   "DEPRECATED_DO_NOT_USE_DESCRIPTION"
	//   "DEPRECATED_DO_NOT_USE_DISTINCT"
	//   "DEPRECATED_DO_NOT_USE_DUPLICATE"
	//   "EDIT_PRECEDENCE"
	//   "DEPRECATED_DO_NOT_USE_EDIT_PRECEDENCE"
	//   "DEPRECATED_DO_NOT_USE_ENTRANCE_TARGET"
	//   "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_PLACE_ACTION_PAGE"
	//   "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_TYPE"
	//   "DEPRECATED_DO_NOT_USE_EVENT"
	//   "DEPRECATED_DO_NOT_USE_GEOMETRIC_ACCURACY"
	//   "DEPRECATED_DO_NOT_USE_HIGHEST_GRADE"
	//   "DEPRECATED_DO_NOT_USE_ID_TO_OVERRIDE"
	//   "DEPRECATED_DO_NOT_USE_ISSUE_HISTORY"
	//   "DEPRECATED_DO_NOT_USE_ISSUE_METADATA"
	//   "DEPRECATED_DO_NOT_USE_KNOWLEDGE_GRAPH_ID"
	//   "DEPRECATED_DO_NOT_USE_LOWEST_GRADE"
	//   "DEPRECATED_DO_NOT_USE_PAYMENT_TYPES"
	//   "DEPRECATED_DO_NOT_USE_PHOTO"
	//   "DEPRECATED_DO_NOT_USE_PHOTO_URL"
	//   "DEPRECATED_DO_NOT_USE_PLACE_CLOSED"
	//   "DEPRECATED_DO_NOT_USE_POPULATION"
	//   "DEPRECATED_DO_NOT_USE_RANK_USER"
	//   "DEPRECATED_DO_NOT_USE_REMOVE_DUPLICATE"
	//   "DEPRECATED_DO_NOT_USE_REMOVE_PLACE"
	//   "DEPRECATED_DO_NOT_USE_SCHOOL_TYPE"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_BEGIN"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_END"
	//   "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_MIDDLE"
	//   "DEPRECATED_DO_NOT_USE_SYLLABUS"
	//   "DEPRECATED_DO_NOT_USE_TRACK_CLASS"
	//   "DEPRECATED_DO_NOT_USE_VIEWCODE_INFO"
	//   "DEPRECATED_DO_NOT_USE_WORKAREA"
	//   "DEPRECATED_DO_NOT_USE_INFERRED_GEOMETRY_INCLUDES_GEOMETRY_OF"
	//   "DEPRECATED_DO_NOT_USE_INFERRED_GEOMETRY_EXCLUDES_GEOMETRY_OF"
	FieldType string `json:"fieldType,omitempty"`

	// KgPropertyId: Required when field_type == KNOWLEDGE_GRAPH_PROPERTY.
	KgPropertyId string `json:"kgPropertyId,omitempty"`

	// NameLanguage: RESERVED
	NameLanguage string `json:"nameLanguage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttachmentTypeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttachmentTypeId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeaturePropertyIdProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeaturePropertyIdProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFeatureProto: Every entry in the GeoStore database is called
// a "feature". A feature is represented as a discriminated union of all
// the different feature types, where the actual feature type is
// specified by the "type" field. There are also various fields that are
// meaningful for most or all feature types, such as bounding regions
// and names. Every feature has a globally unique id that can be used to
// refer to it from other features.
type GeostoreFeatureProto struct {
	// AccessPoint: Optional access point information. Access points hold
	// detailed information about routing endpoints. For example, the main
	// Google office is at "1600 Amphitheatre Parkway". The feature
	// representing that office has a polygon, a center, and an address with
	// components for the street number, route, locality, etc. The access
	// point information, on the other hand, identifies the specific
	// segment, the latitude/longitude of the driveway, and so forth.
	AccessPoint []*GeostoreAccessPointProto `json:"accessPoint,omitempty"`

	// Address: Address for this feature. A Geo Schema address is designed
	// to model a mailing address, so only features that have mailing
	// addresses in the real world may have addresses. Each feature should
	// have only one address. If you want to describe the geographic
	// location of a feature which does not have a mailing address with
	// respect to other well-known features, some other schema constructs
	// should be used. Note that the field is defined as repeated though
	// features that use this field with its intended semantics are
	// constrained to have a single address even if they may have multiple
	// mailing addresses in the real world. The “single address” rule is
	// enforced by lint. Current exceptions to the single address rule and
	// mailing address rule are described in the g3doc. Bear note that the
	// schema team is actively working on eliminating these exceptions.
	// http://go/geo-addresses Note the following conventions: - Addresses
	// follow the postal hierarchy, not the political hierarchy. Addresses
	// may have components that refer to political entities when those
	// entities also appear in the postal hierarchy. - As stated previously,
	// but it bears repeating, addresses on features are mailing addresses.
	// In many cases the physical address and the mailing address are the
	// same but the address stored on a feature represents the mailing
	// address of the feature. An example of a non-physical mailing address
	// would be a PO Box. - These addresses are commonly defined and
	// verifiable by a governmental authority (e.g. the United States Postal
	// Service in the United States, Royal Mail in the United Kingdom,
	// Correios in Brazil, etc.) and should follow conventions and rules
	// defined by those authorities.
	Address []*GeostoreAddressProto `json:"address,omitempty"`

	// AnchoredGeometry: Represents information about the feature’s
	// anchored geometry.
	AnchoredGeometry *GeostoreAnchoredGeometryProto `json:"anchoredGeometry,omitempty"`

	// Attachment: The collection of attachments for this feature.
	// Documentation: http://go/geo-attachments
	Attachment []*GeostoreAttachmentsAttachmentProto `json:"attachment,omitempty"`

	// Attribute: ** DEPRECATED ** A list of attributes that describe
	// defined aspects of this feature. An attribute must be a concrete,
	// high quality, and editable piece of information about a feature, and
	// must be used on some general consumer facing Google property. The
	// data types used for attributes must be primitive types or reusable in
	// a generic manner.
	Attribute []*GeostoreAttributeProto `json:"attribute,omitempty"`

	// BestLocale: Describes the best-match locale for this feature.
	BestLocale *GeostoreBestLocaleProto `json:"bestLocale,omitempty"`

	Border *GeostoreBorderProto `json:"border,omitempty"`

	// Bound: A latitude-longitude rectangle used by bucketing MapReduces.
	// See the documentation on bucketing MapReduce for details. This field
	// can be a source of confusion. Because it is called "bound", it is
	// often assumed that it is a tight bound on the geometry but it can be
	// (and often is) much larger. If a tight bound is needed then use the
	// standard GetFeatureGeometryBound() function instead. To be more
	// explicit, if you are using this field for *anything* else than a
	// bucketing MapReduce, you are doing the wrong thing. Not all features
	// are required to have bounding boxes. See
	// geostore::IsBoundRequiredForFeatureType() for the list of feature
	// types required to have a bounding box. This bound field will be
	// updated when a feature changes in MapFacts to include its geometry.
	// Also, a GeoSchema pipeline,
	// go/geo-schema-pipelines-docs#expand-bounds runs periodically to
	// update the field for strong references from other features.
	// Therefore, most editors don't need to edit this field explicitly. See
	// go/geo-changes:no-edit-for-feature-bound for the details.
	Bound *GeostoreRectProto `json:"bound,omitempty"`

	Building *GeostoreBuildingProto `json:"building,omitempty"`

	// BusinessChain: Data specific to business chain features, e.g.,
	// Canonical GConcepts.
	BusinessChain *GeostoreBusinessChainProto `json:"businessChain,omitempty"`

	// Center: The conceptual center of the feature, used for routing. For
	// cities, this would be the center of the downtown, or maybe the
	// location of city hall. For states and countries it might be the
	// capital city. Most feature types will not have a conceptual center -
	// by default, routing will use the centroid of the feature's geometry.
	// If you need a feature center point consider using
	// GetFeatureGeometryCenter() function from
	// geostore/base/public/feature.h rather than reading from this field
	// directly.
	Center *GeostorePointProto `json:"center,omitempty"`

	// Child: Features can define themselves as a collection of other
	// features. For example, a route is a collection of road segments, and
	// a feature for the "Great Lakes" could be defined as lakes Superior,
	// Michigan, Huron, Erie, and Ontario. It is not recommended to design a
	// multi level tree using the child field to build up a feature because
	// it requires fetching many features to see the details of the feature.
	// In practice this is used to model archipelago, route, transit
	// (agencies, lines, trips, departures), and river features. The
	// geometry of a feature is implicitly defined by its children, so if a
	// feature has children then it should not have any points, polylines,
	// or polygons. In general, this field should not be used to represent
	// political or postal hierarchies. For example, a county would not list
	// its cities as children, because the county is not defined in terms of
	// its cities (it also contains unincorporated areas, etc.).
	Child []*GeostoreFeatureIdProto `json:"child,omitempty"`

	// Covering: S2 cell coverings for this feature. See
	// util/geometry/s2cell_union.h for more information about S2 cells.
	// Coverings are useful for quick containment or intersection tests. S2
	// covering that consists of cells that intersect with the feature.
	Covering *GeostoreCellCoveringProto `json:"covering,omitempty"`

	DataSource *GeostoreDataSourceProto `json:"dataSource,omitempty"`

	// DisplayData: Data used to render this feature on a map.
	DisplayData *GeostoreDisplayDataProto `json:"displayData,omitempty"`

	// Doodle: ** DEPRECATED **
	Doodle *GeostoreDoodleProto `json:"doodle,omitempty"`

	Elevation *GeostoreElevationProto `json:"elevation,omitempty"`

	// ElevationModel: Captures elevation data used on
	// TYPE_DIGITAL_ELEVATION_MODEL features.
	ElevationModel *GeostoreElevationModelProto `json:"elevationModel,omitempty"`

	Entrance *GeostoreEntranceProto `json:"entrance,omitempty"`

	// Establishment: Also allowed on TYPE_BUSINESS_CHAIN and
	// TYPE_TRANSIT_AGENCY features, to model the feature's phone number(s).
	// Other fields within EstablishmentProto are not permitted on
	// non-TYPE_ESTABLISHMENT features.
	Establishment *GeostoreEstablishmentProto `json:"establishment,omitempty"`

	// ExemptRegulatedArea: A list of feature ids of polygon based
	// restrictions that do not apply to this feature. This may only include
	// features of TYPE_REGULATED_AREA that also have a
	// feature.regulated_area.restriction field defined. Setting this field
	// opts the feature out of all restrictions set on that regulated area.
	ExemptRegulatedArea []*GeostoreFeatureIdProto `json:"exemptRegulatedArea,omitempty"`

	// FutureGeometry: Specifies the TYPE_FUTURE_GEOMETRY whose geometry
	// will replace this feature's geometry. If this field is populated, the
	// referenced future geometry must have a future_geometry_for
	// referencing this feature.
	FutureGeometry *GeostoreFeatureIdProto `json:"futureGeometry,omitempty"`

	// FutureGeometryFor: Specifies the feature that this feature's geometry
	// will replace. If this field is populated, the referenced feature must
	// have a future_geometry reference back to this feature. This field is
	// only allowed (and required) for TYPE_FUTURE_GEOMETRY features.
	FutureGeometryFor *GeostoreFeatureIdProto `json:"futureGeometryFor,omitempty"`

	// GeometryPrecisionMeters: If set, the feature's actual location can be
	// assumed to be somewhere within a circle of this radius, centered on
	// the feature's location. More information on this field at
	// go/gpm-definition-update. NOTE: Only applicable to features with
	// 'point' geometry. Please contact geo-schema-team@ if you have
	// non-point use cases for which this field would be useful.
	GeometryPrecisionMeters float64 `json:"geometryPrecisionMeters,omitempty"`

	// GeopoliticalGeometry: Geopolitical (unsimplified) polygons for a
	// feature for different geopolitical use cases.
	GeopoliticalGeometry *GeostoreGeopoliticalGeometryProto `json:"geopoliticalGeometry,omitempty"`

	// HtmlText: ** DEPRECATED ** Features can have zero or more HTML texts
	// associated with them. These might be HTML balloons used by Google
	// Earth, for example.
	HtmlText []*GeostoreHtmlTextProto `json:"htmlText,omitempty"`

	// Id: The globally unique id for this feature.
	Id *GeostoreFeatureIdProto `json:"id,omitempty"`

	// InferredGeometry: RESERVED
	InferredGeometry *GeostoreInferredGeometryProto `json:"inferredGeometry,omitempty"`

	// InteriorCovering: S2 interior covering that consists of cells
	// completely enclosed within the feature's geometry (for features with
	// polygonal geometry).
	InteriorCovering *GeostoreCellCoveringProto `json:"interiorCovering,omitempty"`

	// Internal: Additional internal feature-level attributes that may be
	// set by data providers to be used inside the Geo Data infrastructure.
	// This field should never be present in the output of the Geo Data
	// infrastructure that read-only clients consume.
	Internal *GeostoreInternalFeatureProto `json:"internal,omitempty"`

	Intersection *GeostoreIntersectionProto `json:"intersection,omitempty"`

	IntersectionGroup *GeostoreIntersectionGroupProto `json:"intersectionGroup,omitempty"`

	// KgProperty: Properties that apply to this feature whose schema is
	// defined in the Knowledge Graph schema (see
	// https://hume.google.com/graph/schema). Not all properties that exist
	// in the KG schema can be asserted via this mechanism. The set of
	// properties that are allowed to be set on a feature depends on the
	// feature's GConcepts (and feature type). For instance, only
	// gcid:country features may have the /geo/type/country/president
	// property (made up example, since that property doesn't actually exist
	// in the KG schema). GConcept hierarchy is taken into account for
	// deciding the set of allowed properties. Additionally, the specific
	// properties allowed are further constrained by the list specified at
	// go/kg-property-allowlist. NOTE: not all types of properties are
	// allowed to appear in the Geo Schema. For now, we limit ourselves to
	// properties whose value type is TYPE_BOOL, TYPE_COMPOUND,
	// TYPE_DATETIME, TYPE_FLOAT, TYPE_ID, TYPE_INT, TYPE_NESTED_STRUCT,
	// TYPE_TEXT, or TYPE_URI. NOTE(b/35039936): We are in the process of
	// changing how a KG property with multiple values is stored in this
	// field. Currently, such a KG property is stored in a single instance
	// of the kg_property field. However, we will be changing this so that
	// each value will be stored in its own instance of kg_property. Any
	// client that wants to read from this field should be prepared to read
	// data represented in either format. See b/35039936 or the announcement
	// at http://g/geo-schema-announce/7IXR3Fex8to/7yFyT5UoAwAJ for an
	// example and more details. The mechanism to assert that a KG property
	// has no value is via the property_value_status field below.
	// freebase.PropertyValue.value_status is not allowed be set here for
	// consistency reason.
	KgProperty []*FreebasePropertyValue `json:"kgProperty,omitempty"`

	// KnowledgeGraphReference: RESERVED
	KnowledgeGraphReference *GeostoreKnowledgeGraphReferenceProto `json:"knowledgeGraphReference,omitempty"`

	LaneMarker *GeostoreLaneMarkerProto `json:"laneMarker,omitempty"`

	// Level: Represents information about TYPE_LEVEL features.
	Level *GeostoreLevelProto `json:"level,omitempty"`

	Locale *GeostoreLocaleProto `json:"locale,omitempty"`

	LogicalBorder *GeostoreLogicalBorderProto `json:"logicalBorder,omitempty"`

	// Metadata: Metadata about this particular feature. Metadata is managed
	// internally by the Geo Data Infrastructure and in general should not
	// be set by clients. Features that don't ultimately come from the Geo
	// repository (MapFacts) won't have any metadata set.
	Metadata *GeostoreFeatureMetadataProto `json:"metadata,omitempty"`

	// Name: The name(s) of this feature. A feature may have different names
	// in different languages, colloquial or "vanity" names, etc.
	Name []*GeostoreNameProto `json:"name,omitempty"`

	// Operations: Information about this feature's operations, e.g. when
	// this feature is temporarily closed. NOTE: for legacy reasons, some
	// closure-specifc information (e.g. permanent closure reason) lives in
	// ExistenceProto instead. In the future, such information should move
	// here in OperationsProto.
	Operations *GeostoreOperationsProto `json:"operations,omitempty"`

	// OriginalId: This field is used internally by the pipeline for id
	// stability. It should not be set by individual importers, nor should
	// it be read by consumer clients. In particular, this field will not be
	// present in features read or snapshotted from the Mapfacts Repository.
	OriginalId *GeostoreFeatureIdProto `json:"originalId,omitempty"`

	Parent []*GeostoreFeatureIdProto `json:"parent,omitempty"`

	// Parking: Describes parking details for the feature.
	Parking *GeostoreParkingProto `json:"parking,omitempty"`

	// Point: Defines the geometry of the feature. The geometry may be
	// specified as an arbitrary union of points, poses, polylines, tracks,
	// and polygons. Points, poses, polylines, and tracks are assumed to
	// represent regions of unspecified size or width rather than regions of
	// zero area. Most features should have some sort of geometry. Geometry
	// may be synthesized if none is available (e.g., polygons for postal
	// codes). The synthetic_geometry flag should be set in that case. Point
	// is currently enforced as a non-repeating field for all feature types,
	// though it is defined as repeating in case future modeling requires
	// multiple points. The number of allowed polylines, tracks, or polygons
	// vary based on feature type. A feature can have at most one pose (it
	// is an optional field).
	Point []*GeostorePointProto `json:"point,omitempty"`

	// Political: ** DEPRECATED ** Detail discussion could be found at
	// b/18611003.
	Political *GeostorePoliticalProto `json:"political,omitempty"`

	Polygon []*GeostorePolygonProto `json:"polygon,omitempty"`

	// PolygonForDisplay: Provide version of the geometry suitable for
	// display. This has been subject to water removal and (possibly)
	// moderate simplification.
	PolygonForDisplay *GeostorePolygonProto `json:"polygonForDisplay,omitempty"`

	Polyline []*GeostorePolyLineProto `json:"polyline,omitempty"`

	// Pose: Defines the geometry of a feature as a 6D pose, including lat,
	// lng, altitude, roll, pitch, and yaw along the WGS-84 ellipsoid. Only
	// the lat and lng are strictly required.
	Pose *GeostorePoseProto `json:"pose,omitempty"`

	// PreferredViewport: The preferred viewport for this feature. If
	// present, this latitude-longitude rectangle holds the preferred
	// viewport for the feature. For example, it might hold the bounds of
	// the "central" portion of a large city. There are no aspect ratio
	// requirements. This is an optional field: if no viewport is supplied,
	// interested clients can use heuristics to determine a viewport.
	// Calling the standard GetFeatureGeometryBound() function would be a
	// good way to start but note that it can return an empty bounding box
	// (e.g., if the feature has no geometry). The preferred viewport is not
	// necessarily fully contained by the above bounding box.
	PreferredViewport *GeostoreRectProto `json:"preferredViewport,omitempty"`

	// PropertyValueStatus: The value status of properties on this feature.
	// For example, this specifies whether the feature is known to have no
	// name (this is the value status of the 'FEATURE_NAME' property). Only
	// property IDs which have no specific value are allowed to have a value
	// status. Note: not all field types will be supported, please contact
	// geo schema team if you want to enable this field for a field type
	// that is not currently supported.
	PropertyValueStatus []*GeostorePropertyValueStatusProto `json:"propertyValueStatus,omitempty"`

	// Rank: WARNING: Please do NOT introduce new uses of this field; treat
	// it as if it were deprecated. For appropriate ranking contacts, see
	// g3doc/company/teams/gdeng/geo-schema-reference/home/feature-properties
	// /rank.md. A floating-point number between 0.0 and 1.0 indicating how
	// "important" we think this feature is. This can be used to decide
	// which features to render on maps, and how to rank results when the
	// user does a search. The rank can depend on any number of factors such
	// as the number of references to this feature in web pages, geographic
	// size, population, number of referring geographic entities, "priority"
	// information encoded in the source data, etc.
	Rank float64 `json:"rank,omitempty"`

	// RankDetails: The rank field is computed as a weighted sum of several
	// signals. This field contains a protocol buffer whose fields give
	// those signals and their weights. Clients should try very hard not to
	// depend on these individual signals and use the single rank field
	// instead. At some point in the future, this field will not be exposed
	// anymore.
	RankDetails *GeostoreRankDetailsProto `json:"rankDetails,omitempty"`

	// RawGconceptInstanceContainer: Geo Ontology GConcept Instances -
	// Design doc linked off http://go/geo-ontology - In order to shield
	// clients from changes in GConcept representation we provide an
	// accessor library: geostore/base/public/gconcept_instance.h
	RawGconceptInstanceContainer *GeostoreOntologyRawGConceptInstanceContainerProto `json:"rawGconceptInstanceContainer,omitempty"`

	RegulatedArea *GeostoreRegulatedAreaProto `json:"regulatedArea,omitempty"`

	// RelatedBorder: For TYPE_COUNTRY or TYPE_ADMINISTRATIVE_AREA1
	// features, this field defines the associated TYPE_BORDERs which
	// reference this feature. The linked TYPE_BORDERs must have the
	// feature.border set, pointing to this feature. TYPE_COUNTRY or
	// TYPE_ADMINISTRATIVE_AREA1 features must have this field set for each
	// TYPE_BORDER referencing them.
	RelatedBorder []*GeostoreFeatureIdProto `json:"relatedBorder,omitempty"`

	// RelatedEntrance: Logical relationship to other features that are
	// entrances or exits to this feature.
	RelatedEntrance []*GeostoreEntranceReferenceProto `json:"relatedEntrance,omitempty"`

	// RelatedFeature: Geographic or logical relationships to other
	// features. Importers don't need to fill a geographic relationship in -
	// it is handled by related feature processing by a standalone pipeline.
	// Adding "contained by" country relations is however encouraged (and
	// required for TYPE_ROUTE features). WARNING: Updates to this field
	// handled by standalone pipelines are NOT atomic with regard to updates
	// to the features being referenced; we do not guarantee that a given
	// MapFacts snapshot will be consistent between this field and the
	// related features.
	RelatedFeature []*GeostoreRelationProto `json:"relatedFeature,omitempty"`

	// RelatedTerminalPoint: Terminal points associated with this feature.
	// For instance, an airport terminal may have specifically designated
	// pickup and drop-off points.
	RelatedTerminalPoint []*GeostoreFeatureIdProto `json:"relatedTerminalPoint,omitempty"`

	// RelatedTimezone: Contains time zones known to be associated with a
	// feature. Most features are associated with the single time zone that
	// contains them. However, some larger features (countries, continents,
	// etc.) are associated with all of the time zones they contain. Most
	// features can have any number of related time zones, but TYPE_SEGMENT
	// and TYPE_ESTABLISHMENT_POI features can have at most 1.
	RelatedTimezone []*GeostoreTimezoneProto `json:"relatedTimezone,omitempty"`

	RestrictionGroup *GeostoreRestrictionGroupProto `json:"restrictionGroup,omitempty"`

	RoadMonitor *GeostoreRoadMonitorProto `json:"roadMonitor,omitempty"`

	// Route: Additional details on the feature types below can be found in
	// the individual protocol buffer definitions. These extensions capture
	// data that is specific to a set of feature types and which makes no
	// sense for other feature types.
	Route *GeostoreRouteProto `json:"route,omitempty"`

	SchoolDistrict *GeostoreSchoolDistrictProto `json:"schoolDistrict,omitempty"`

	Segment *GeostoreSegmentProto `json:"segment,omitempty"`

	SegmentPath *GeostoreSegmentPathProto `json:"segmentPath,omitempty"`

	Sign *GeostoreRoadSignProto `json:"sign,omitempty"`

	SkiBoundary *GeostoreSkiBoundaryProto `json:"skiBoundary,omitempty"`

	SkiLift *GeostoreSkiLiftProto `json:"skiLift,omitempty"`

	SkiTrail *GeostoreSkiTrailProto `json:"skiTrail,omitempty"`

	// SocialReference: All establishments must have a social reference.
	// WARNING: Aside from creating new establishments, please do NOT
	// introduce new uses; treat social references as if they were
	// deprecated. For alternatives and more, see
	// g3doc/company/teams/gdeng/geo-schema-reference/home/feature-types/esta
	// blishments/social-reference.md.
	SocialReference *GeostoreSocialReferenceProto `json:"socialReference,omitempty"`

	// SourceInfo: A list of the data sources that were used to construct
	// this feature, together with optional "raw data" in the provider's
	// format. Raw data should not be used by production clients but may be
	// useful for exploring data that is not currently converted to a
	// canonical form.
	SourceInfo []*GeostoreSourceInfoProto `json:"sourceInfo,omitempty"`

	// Status: All features can have "existence" information associated with
	// them.
	Status *GeostoreExistenceProto `json:"status,omitempty"`

	// StorefrontGeometry: Represents information about the store front
	// geoemtry. Only TYPE_ESTABLISHMENT_POI should have this field set.
	StorefrontGeometry []*GeostoreAnchoredGeometryProto `json:"storefrontGeometry,omitempty"`

	// SyntheticGeometry: We prefer features that have geometry over those
	// that do not. In some cases we synthesize geometry (e.g., polygons for
	// postal codes). This flag is set to indicate features that have such
	// synthetic geometry.
	SyntheticGeometry bool `json:"syntheticGeometry,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// feature. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ThreeDimModel: Captures full model representing the feature's 3D
	// geometry. Should only be found on TYPE_COMPOUND_BUILDING features for
	// now, but not part of the BuildingProto extension for possible future
	// extensions.
	ThreeDimModel *GeostoreThreeDimensionalModelProto `json:"threeDimModel,omitempty"`

	// TollCluster: Represents information about TYPE_TOLL_CLUSTER features.
	TollCluster *GeostoreTollClusterProto `json:"tollCluster,omitempty"`

	// Track: Defines the geometry of a feature as a sequence of 6D poses,
	// including lat, lng, altitude, roll, pitch, and yaw. Only lat and lng
	// are typically required. Each track has an index so that they can be
	// viewed in a stable order.
	Track []*GeostoreTrackProto `json:"track,omitempty"`

	TransitLine *GeostoreTransitLineProto `json:"transitLine,omitempty"`

	// TransitLineVariant: RESERVED
	TransitLineVariant *GeostoreTransitLineVariantProto `json:"transitLineVariant,omitempty"`

	// TransitStation: RESERVED
	TransitStation *GeostoreTransitStationProto `json:"transitStation,omitempty"`

	// Type: The type of this feature -- see comments above.
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_TRANSPORTATION" - ABSTRACT
	//   "TYPE_ROUTE" - A route is any section of road (or rails, etc.) that
	// has a name. This includes city streets as well as highways. Road
	// segments can belong to multiple routes (e.g. El Camino, CA-82).
	//   "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE" - DEPRECATED
	//   "TYPE_HIGHWAY" - ABSTRACT
	//   "TYPE_HIGHWAY_1"
	//   "TYPE_HIGHWAY_2"
	//   "TYPE_HIGHWAY_3"
	//   "TYPE_HIGHWAY_4"
	//   "TYPE_HIGHWAY_5"
	//   "TYPE_HIGHWAY_6"
	//   "TYPE_HIGHWAY_7"
	//   "TYPE_HIGHWAY_8"
	//   "TYPE_HIGHWAY_9"
	//   "TYPE_BICYCLE_ROUTE" - A designated bicycle route, whose segments
	// may consist of any combination of bicycle paths, bicycle lanes, or
	// city streets.
	//   "TYPE_TRAIL" - A designated trail, which may consist of paved
	// walkways, dirt paths, fire road, streets or highways, etc.
	//   "TYPE_SEGMENT" - ABSTRACT
	//   "TYPE_ROAD"
	//   "TYPE_RAILWAY" - Railroads use several different incompatible track
	// types.
	//   "TYPE_STANDARD_TRACK"
	//   "TYPE_JR_TRACK"
	//   "TYPE_NARROW_TRACK"
	//   "TYPE_MONORAIL_TRACK"
	//   "TYPE_SUBWAY_TRACK"
	//   "TYPE_LIGHT_RAIL_TRACK"
	//   "TYPE_BROAD_TRACK"
	//   "TYPE_HIGH_SPEED_RAIL"
	//   "TYPE_TROLLEY_TRACK" - Tracks for streetcars, cable-cars, etc.
	// Ferries are services that are part of the road network but are not
	// roads. They typically involve fares and scheduled departure times.
	//   "TYPE_FERRY" - ABSTRACT
	//   "TYPE_FERRY_BOAT" - The vast majority of ferries are ferry boats.
	//   "TYPE_FERRY_TRAIN" - Also called a "car transport", a ferry train
	// is a rail service that carries passengers and their vehicles across
	// undrivable terrain. The Channel Tunnel ("Chunnel") is the most famous
	// example, but they are also common in the Alps where they connect
	// neighboring valleys otherwise separated by impassable mountains.
	//   "TYPE_VIRTUAL_SEGMENT" - Any plausible 1-dimensional path through a
	// 2+ dimensional space, for the purposes of making graph-search-based
	// routing possible. Such segments can be used to model paths through
	// parking lots, squares, floors of buildings and other areas.
	//   "TYPE_INTERSECTION" - An intersection consists of a collection of
	// segments that terminate at the same location. This is topological
	// definition: it may not match what a typical user would think of as an
	// "intersection". See TYPE_INTERSECTION_GROUP, below, for more
	// information. Each segment terminating at an intersection has an
	// "endpoint type" that specifies how that segment is terminated: stop
	// sign, yield sign, three-way light, etc.
	//   "TYPE_TRANSIT" - ABSTRACT
	//   "TYPE_TRANSIT_STATION" - DEPRECATED
	//   "TYPE_BUS_STATION" - DEPRECATED
	//   "TYPE_TRAMWAY_STATION" - DEPRECATED
	//   "TYPE_TRAIN_STATION" - DEPRECATED
	//   "TYPE_SUBWAY_STATION" - DEPRECATED
	//   "TYPE_FERRY_TERMINAL" - DEPRECATED
	//   "TYPE_AIRPORT" - DEPRECATED
	//   "TYPE_AIRPORT_CIVIL" - DEPRECATED
	//   "TYPE_AIRPORT_MILITARY" - DEPRECATED
	//   "TYPE_AIRPORT_MIXED" - DEPRECATED
	//   "TYPE_HELIPORT" - DEPRECATED
	//   "TYPE_SEAPLANE_BASE" - DEPRECATED
	//   "TYPE_AIRSTRIP" - DEPRECATED
	//   "TYPE_CABLE_CAR_STATION" - DEPRECATED
	//   "TYPE_GONDOLA_LIFT_STATION" - DEPRECATED
	//   "TYPE_FUNICULAR_STATION" - DEPRECATED
	//   "TYPE_SPECIAL_STATION" - DEPRECATED
	//   "TYPE_HORSE_CARRIAGE_STATION" - DEPRECATED
	//   "TYPE_MONORAIL_STATION" - DEPRECATED
	//   "TYPE_SEAPORT" - DEPRECATED
	//   "TYPE_TRANSIT_STOP" - DEPRECATED
	//   "TYPE_TRANSIT_TRIP" - DEPRECATED
	//   "TYPE_TRANSIT_DEPARTURE" - DEPRECATED
	//   "TYPE_TRANSIT_LEG" - DEPRECATED
	//   "TYPE_TRANSIT_LINE" - A transit line is a collection of transit
	// legs, associated with some invariant properties of the trips that run
	// over the legs. See also transitline.proto
	//   "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE" - TYPE_TRANSIT_AGENCY was
	// moved to 0xC91. This deprecated enum value still exists for debugging
	// purposes only.
	//   "TYPE_TRANSIT_TRANSFER" - DEPRECATED
	//   "TYPE_SEGMENT_PATH" - ABSTRACT
	//   "TYPE_ROAD_SIGN" - Road sign features have names, point geometry,
	// etc. They also have segment_path data (see below) which lists the
	// segments that refer to the sign. See segment.proto for the reference
	// from the segment to the road sign.
	//   "TYPE_INTERSECTION_GROUP" - Our TYPE_INTERSECTION feature, above,
	// models the point where one or more segments terminate. This is
	// topological definition: it may not match what a typical user would
	// think of as an "intersection". Consider the intersections where
	// Hayes, Market, Larkin, and 9th Street meet near (37.77765,
	// -122.41638) in San Francisco. Most people would probably consider
	// this a single feature, even though we model it as four separate
	// TYPE_INTERSECTION features. This TYPE_INTERSECTION_GROUP is used to
	// model the user's concept of a complex intersection.
	//   "TYPE_PATHWAY" - RESERVED
	//   "TYPE_RESTRICTION_GROUP" - A restriction group describes a set of
	// segment restrictions that belong together and have a name or an
	// associated event. See also restriction_group.proto
	//   "TYPE_TOLL_CLUSTER" - A toll cluster is either a single point on a
	// segment (represented as a point at the end of the segment that has
	// ENDPOINT_TOLL_BOOTH set) or a group of points on various road
	// segments in MapFacts that represents one or more lanes passing
	// through a toll fixture that all go to the same routing destination.
	// Each toll cluster should have at most a single price per payment
	// method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has
	// different prices for multiple routing destinations, drivers need to
	// be in the correct lane before passing through the toll fixture and
	// hence such a fixture is represented by multiple toll clusters. A toll
	// cluster does not necessarily represent a real-world entity, e.g. a
	// particular plaza/structure as perceived by humans. This is because a
	// plaza can be represented by more than one toll cluster. We require
	// toll clusters to have names, but they might be non-unique. For
	// example, a plaza might be represented by multiple toll clusters that
	// may have the same plaza name. For further details, please see
	// go/toll-cluster-schema.
	//   "TYPE_POLITICAL" - ABSTRACT
	//   "TYPE_COUNTRY"
	//   "TYPE_ADMINISTRATIVE_AREA" - ABSTRACT
	//   "TYPE_ADMINISTRATIVE_AREA1"
	//   "TYPE_US_STATE" - DEPRECATED
	//   "TYPE_GB_COUNTRY" - DEPRECATED
	//   "TYPE_JP_TODOUFUKEN" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA2"
	//   "TYPE_GB_FORMER_POSTAL_COUNTY" - DEPRECATED
	//   "TYPE_GB_TRADITIONAL_COUNTY" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA3"
	//   "TYPE_ADMINISTRATIVE_AREA4"
	//   "TYPE_ADMINISTRATIVE_AREA5"
	//   "TYPE_ADMINISTRATIVE_AREA6"
	//   "TYPE_ADMINISTRATIVE_AREA7"
	//   "TYPE_ADMINISTRATIVE_AREA8"
	//   "TYPE_ADMINISTRATIVE_AREA9"
	//   "TYPE_COLLOQUIAL_AREA" - e.g. Silicon Valley
	//   "TYPE_RESERVATION" - A reservation is a region collectively held or
	// governed by indigenous people and officially recognized by the
	// country’s government at the federal or state level. A reservation
	// may be fully contained within an administrative feature or partially
	// contained within two or more. These regions are referred to by
	// different categorical names depending on country and even by state,
	// including but not limited to: “Indian Reservations”, “Indian
	// Reserves”, “Land Claim Settlement Lands”, “Indian Lands”,
	// “Treaty Lands”, “Indigenous Territories”, etc. A reservation
	// is not a historic indigenous territory boundary or a region which has
	// applied for land rights but has not yet received official
	// recognition.
	//   "TYPE_LOCALITY"
	//   "TYPE_GB_POST_TOWN" - DEPRECATED
	//   "TYPE_JP_GUN" - DEPRECATED
	//   "TYPE_JP_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_JP_SUB_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_COLLOQUIAL_CITY" - An entity widely considered to be a city,
	// that may itself be made up of smaller political entities, some of
	// which are cities/towns/villages themselves. For example, the
	// colloquial view of Sydney, Australia actually comprises many smaller
	// cities, but is regarded as a city itself. This type is not suitable
	// for modeling official metro-/micropolitan or other statistical areas.
	//   "TYPE_SUBLOCALITY" - ABSTRACT
	//   "TYPE_US_BOROUGH" - DEPRECATED
	//   "TYPE_GB_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_OOAZA" - DEPRECATED
	//   "TYPE_JP_KOAZA" - DEPRECATED
	//   "TYPE_JP_GAIKU" - DEPRECATED
	//   "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_CHIBAN" - DEPRECATED
	//   "TYPE_JP_EDABAN" - DEPRECATED
	//   "TYPE_SUBLOCALITY1"
	//   "TYPE_SUBLOCALITY2"
	//   "TYPE_SUBLOCALITY3"
	//   "TYPE_SUBLOCALITY4"
	//   "TYPE_SUBLOCALITY5"
	//   "TYPE_NEIGHBORHOOD"
	//   "TYPE_CONSTITUENCY"
	//   "TYPE_DESIGNATED_MARKET_AREA" - Designated Market Areas (or DMAs)
	// are used by marketing and ratings companies (such as the Nielsen
	// Media Research company) to describe geographical regions (such as the
	// greater New York metropolitan area) that are covered by a set of
	// television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In
	// the United States, DMAs should have a DMA numeric ID name, tagged
	// with the FLAG_DESIGNATED_MARKET_AREA_ID flag.
	//   "TYPE_SCHOOL_DISTRICT"
	//   "TYPE_LAND_PARCEL"
	//   "TYPE_DISPUTED_AREA" - Eventually we'll have more data for disputed
	// areas (e.g., who makes claims on the area, who has de facto control,
	// etc.). For the moment, we just define a type so we can simply mark
	// areas as disputed.
	//   "TYPE_POLICE_JURISDICTION" - Boundaries representing the
	// jurisdiction of a particular police station.
	//   "TYPE_STATISTICAL_AREA" - An area used for aggregating statistical
	// data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a
	// third nibble so we can add an abstract parent above it later if need
	// be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as
	// TYPE_STATISTICAL_AREA1).
	//   "TYPE_CONSTITUENCY_FUTURE" - DEPRECATED
	//   "TYPE_PARK" - DEPRECATED
	//   "TYPE_GOLF_COURSE" - DEPRECATED
	//   "TYPE_LOCAL_PARK" - DEPRECATED
	//   "TYPE_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_MONUMENT" - DEPRECATED
	//   "TYPE_NATIONAL_FOREST" - DEPRECATED
	//   "TYPE_PROVINCIAL_PARK" - DEPRECATED
	//   "TYPE_PROVINCIAL_FOREST" - DEPRECATED
	//   "TYPE_CAMPGROUNDS" - DEPRECATED
	//   "TYPE_HIKING_AREA" - DEPRECATED
	//   "TYPE_BUSINESS" - DEPRECATED
	//   "TYPE_GOVERNMENT" - DEPRECATED
	//   "TYPE_BORDER_CROSSING" - DEPRECATED
	//   "TYPE_CITY_HALL" - DEPRECATED
	//   "TYPE_COURTHOUSE" - DEPRECATED
	//   "TYPE_EMBASSY" - DEPRECATED
	//   "TYPE_LIBRARY" - DEPRECATED
	//   "TYPE_SCHOOL" - DEPRECATED
	//   "TYPE_UNIVERSITY" - DEPRECATED
	//   "TYPE_EMERGENCY" - DEPRECATED
	//   "TYPE_HOSPITAL" - DEPRECATED
	//   "TYPE_PHARMACY" - DEPRECATED
	//   "TYPE_POLICE" - DEPRECATED
	//   "TYPE_FIRE" - DEPRECATED
	//   "TYPE_DOCTOR" - DEPRECATED
	//   "TYPE_DENTIST" - DEPRECATED
	//   "TYPE_VETERINARIAN" - DEPRECATED
	//   "TYPE_TRAVEL_SERVICE" - DEPRECATED
	//   "TYPE_LODGING" - DEPRECATED
	//   "TYPE_RESTAURANT" - DEPRECATED
	//   "TYPE_GAS_STATION" - DEPRECATED
	//   "TYPE_PARKING" - DEPRECATED
	//   "TYPE_POST_OFFICE" - DEPRECATED
	//   "TYPE_REST_AREA" - DEPRECATED
	//   "TYPE_CASH_MACHINE" - DEPRECATED
	//   "TYPE_CAR_RENTAL" - DEPRECATED
	//   "TYPE_CAR_REPAIR" - DEPRECATED
	//   "TYPE_SHOPPING" - DEPRECATED
	//   "TYPE_GROCERY" - DEPRECATED
	//   "TYPE_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_ECO_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_BIRD_WATCHING" - DEPRECATED
	//   "TYPE_FISHING" - DEPRECATED
	//   "TYPE_HUNTING" - DEPRECATED
	//   "TYPE_NATURE_RESERVE" - DEPRECATED
	//   "TYPE_TEMPLE" - DEPRECATED
	//   "TYPE_CHURCH" - DEPRECATED
	//   "TYPE_GURUDWARA" - DEPRECATED
	//   "TYPE_HINDU_TEMPLE" - DEPRECATED
	//   "TYPE_MOSQUE" - DEPRECATED
	//   "TYPE_SYNAGOGUE" - DEPRECATED
	//   "TYPE_STADIUM" - DEPRECATED
	//   "TYPE_BAR" - DEPRECATED
	//   "TYPE_MOVIE_RENTAL" - DEPRECATED
	//   "TYPE_COFFEE" - DEPRECATED
	//   "TYPE_GOLF" - DEPRECATED
	//   "TYPE_BANK" - DEPRECATED
	//   "TYPE_DOODLE" - DEPRECATED
	//   "TYPE_GROUNDS" - DEPRECATED
	//   "TYPE_AIRPORT_GROUNDS" - DEPRECATED
	//   "TYPE_BUILDING_GROUNDS" - DEPRECATED
	//   "TYPE_CEMETERY" - DEPRECATED
	//   "TYPE_HOSPITAL_GROUNDS" - DEPRECATED
	//   "TYPE_INDUSTRIAL" - DEPRECATED
	//   "TYPE_MILITARY" - DEPRECATED
	//   "TYPE_SHOPPING_CENTER" - DEPRECATED
	//   "TYPE_SPORTS_COMPLEX" - DEPRECATED
	//   "TYPE_UNIVERSITY_GROUNDS" - DEPRECATED
	//   "TYPE_DEPRECATED_TARMAC" - DEPRECATED
	//   "TYPE_ENCLOSED_TRAFFIC_AREA" - DEPRECATED
	//   "TYPE_PARKING_LOT" - DEPRECATED
	//   "TYPE_PARKING_GARAGE" - DEPRECATED
	//   "TYPE_OFF_ROAD_AREA" - DEPRECATED
	//   "TYPE_BORDER" - A line representing the boundary between two
	// features. See border.proto for details.
	//   "TYPE_BUILDING" - DEPRECATED
	//   "TYPE_GEOCODED_ADDRESS" - An association of a point with an
	// address, with no other information.
	//   "TYPE_NATURAL_FEATURE" - ABSTRACT
	//   "TYPE_TERRAIN" - Expanses of land that share common surface
	// attributes. These areas would look more or less uniform from a high
	// altitude.
	//   "TYPE_SAND"
	//   "TYPE_BEACH"
	//   "TYPE_DUNE"
	//   "TYPE_ROCKY"
	//   "TYPE_ICE"
	//   "TYPE_GLACIER"
	//   "TYPE_BUILT_UP_AREA" - Terrain that looks populated.
	//   "TYPE_VEGETATION" - Terrain that is covered in vegetation.
	//   "TYPE_SHRUBBERY"
	//   "TYPE_WOODS"
	//   "TYPE_AGRICULTURAL"
	//   "TYPE_GRASSLAND"
	//   "TYPE_TUNDRA"
	//   "TYPE_DESERT"
	//   "TYPE_SALT_FLAT" - A flat expanse of salt left by the evaporation
	// of a body of salt water.
	//   "TYPE_WATER" - Features can be TYPE_WATER if we don't have enough
	// information to properly type the body of water. TYPE_WATER is also
	// used as the type for child features that compose a TYPE_RIVER
	// feature.
	//   "TYPE_OCEAN" - One of the large salt-water bodies that covers most
	// of the globe.
	//   "TYPE_BAY" - An ocean subdivision formed by a coastal indentation.
	// Includes coves and gulfs.
	//   "TYPE_BIGHT" - An open body of water formed by a slight coastal
	// indentation.
	//   "TYPE_LAGOON"
	//   "TYPE_SEA" - An ocean subdivision more or less confined by land and
	// islands.
	//   "TYPE_STRAIT" - A long narrow ocean subdivision. Includes sounds.
	//   "TYPE_INLET"
	//   "TYPE_FJORD"
	//   "TYPE_LAKE" - An inland body of standing water.
	//   "TYPE_SEASONAL_LAKE" - A lake that dries up part of the year.
	//   "TYPE_RESERVOIR" - An artificial body of water, possibly created by
	// a dam, often used for irrigation or house use.
	//   "TYPE_POND"
	//   "TYPE_RIVER" - An inland body of moving water, or parts associated
	// with it in which there is little or no current (backwater).
	//   "TYPE_RAPIDS"
	//   "TYPE_DISTRIBUTARY" - A branch which flows away from the main
	// river. Includes deltas.
	//   "TYPE_CONFLUENCE" - A place where two or more rivers join.
	//   "TYPE_WATERFALL"
	//   "TYPE_SPRING" - A place where ground water flows naturally out of
	// the ground.
	//   "TYPE_GEYSER"
	//   "TYPE_HOT_SPRING"
	//   "TYPE_SEASONAL_RIVER" - A river that dries up part of the year.
	//   "TYPE_WADI" - A dry riverbed that occasionally receives
	// flashfloods.
	//   "TYPE_ESTUARY" - A place at the end of a river where fresh and salt
	// water mix. Includes tidal creeks and limans.
	//   "TYPE_WETLAND" - Land that is usually flooded. Includes bogs,
	// marshes, flats, moors, and swamps.
	//   "TYPE_WATER_NAVIGATION"
	//   "TYPE_FORD" - A shallow place where water may be waded through.
	//   "TYPE_CANAL" - A narrow passage used by boats. Normally artificial.
	//   "TYPE_HARBOR" - A deep place near a shore where ships commonly drop
	// anchor.
	//   "TYPE_CHANNEL" - A deep part in a body of water that is suitable
	// for navigation. Includes narrows.
	//   "TYPE_REEF" - Rocks, coral, sandbars, or other features beneath the
	// surface of the water that pose a hazard to passing ships. Includes
	// shoals.
	//   "TYPE_REEF_FLAT" - A relatively shallow zone of the back reef
	// located closest to the shore, that may be exposed at low tide.
	//   "TYPE_REEF_GROWTH" - A small section of rocks, coral, sandbars, or
	// other features beneath the surface of the water that forms part of a
	// reef.
	//   "TYPE_REEF_EXTENT" - The full extent of the reef complex.
	//   "TYPE_REEF_ROCK_SUBMERGED" - A submerged rock in the water.
	//   "TYPE_IRRIGATION" - Man-made (and sometimes natural) channels used
	// to move water. This type was used for both dam structures and water
	// that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for
	// dam structures and TYPE_RESERVOIR for water.
	//   "TYPE_DAM" - DEPRECATED
	//   "TYPE_DRINKING_WATER"
	//   "TYPE_CURRENT" - Includes overfalls.
	//   "TYPE_WATERING_HOLE" - A natural depression filled with water where
	// animals come to drink.
	//   "TYPE_TECTONIC" - ABSTRACT This type is incorrectly under
	// TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now
	// fixed. See TYPE_WATERING_HOLE for the replacement.
	//   "TYPE_WATERING_HOLE_DEPRECATED" - DEPRECATED
	//   "TYPE_VOLCANO"
	//   "TYPE_LAVA_FIELD"
	//   "TYPE_FISSURE"
	//   "TYPE_FAULT"
	//   "TYPE_LAND_MASS"
	//   "TYPE_CONTINENT"
	//   "TYPE_ISLAND"
	//   "TYPE_ATOLL"
	//   "TYPE_OCEAN_ROCK_EXPOSED" - An exposed rock in the water.
	//   "TYPE_CAY" - A small, low-elevation, sandy island formed on the
	// surface of coral reefs
	//   "TYPE_PENINSULA" - A stretch of land projecting into water.
	// Includes capes and spits.
	//   "TYPE_ISTHMUS" - A strip of land connecting two larger land masses,
	// such as continents.
	//   "TYPE_ELEVATED" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_PEAK" - Elevations that have a distinctive peak.
	//   "TYPE_NUNATAK" - A peak or ridge of a mountain that extends through
	// a glacier.
	//   "TYPE_SPUR" - A subsidiary peak of a mountain.
	//   "TYPE_PASS" - A route over an otherwise difficult to traverse
	// feature. Includes saddle.
	//   "TYPE_PLATEAU" - Elevations that are flat on top. Includes mesas
	// and buttes.
	//   "TYPE_RIDGE" - A ridge is a geographical feature consisting of a
	// chain of mountains or hills that form a continuous elevated crest
	// with a single ridgeline for some distance.
	//   "TYPE_RAVINE" - Steep declines usually carved by erosion. Includes
	// valleys, canyons, ditches, and gorges.
	//   "TYPE_CRATER" - Depressions causes by impact, explosion, and
	// sometimes sink-holes.
	//   "TYPE_KARST" - Topography formed on limestone and gypsum by
	// dissolution with sinkholes, caves, etc.
	//   "TYPE_CLIFF" - A vertical or nearly vertical slope. Includes
	// escarpments.
	//   "TYPE_VISTA" - An elevated place that is notable for having a good
	// view. Raster digital elevation data. This is not a type to be used by
	// providers or consumed by clients.
	//   "TYPE_DIGITAL_ELEVATION_MODEL" - RESERVED
	//   "TYPE_UPLAND" - Land along streams higher than the alluvial plain
	// or stream terrace.
	//   "TYPE_TERRACE"
	//   "TYPE_SLOPE" - Land not so steep as a cliff, but changing
	// elevation. Includes slides.
	//   "TYPE_CONTOUR_LINE" - All the points on the polygon are at the same
	// elevation.
	//   "TYPE_PAN" - A near-level shallow, natural depression or basin,
	// usually containing an intermittent lake, pond, or pool.
	//   "TYPE_UNSTABLE_HILLSIDE"
	//   "TYPE_MOUNTAIN_RANGE" - A series of mountains or hills ranged in a
	// line and connected by high ground. Mountain ranges usually consist of
	// many smaller ridges. For example, the Himalayas, the Andes. the Alps,
	// etc.
	//   "TYPE_UNDERSEA" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_SUBMARINE_SEAMOUNT" - includes peaks, ranges, and spurs
	//   "TYPE_SUBMARINE_RIDGE"
	//   "TYPE_SUBMARINE_GAP" - includes saddles
	//   "TYPE_SUBMARINE_PLATEAU"
	//   "TYPE_SUBMARINE_DEEP"
	//   "TYPE_SUBMARINE_VALLEY" - includes trenches and troughs
	//   "TYPE_SUBMARINE_BASIN"
	//   "TYPE_SUBMARINE_SLOPE"
	//   "TYPE_SUBMARINE_CLIFF"
	//   "TYPE_SUBMARINE_PLAIN"
	//   "TYPE_SUBMARINE_FRACTURE_ZONE"
	//   "TYPE_CAVE" - Don't use 0xA7. Use 8 bits for additional types under
	// TYPE_NATURAL_FEATURE, so we don't run out of space. The following are
	// miscellaneous natural features that don't fit any of the categories
	// above.
	//   "TYPE_ROCK"
	//   "TYPE_ARCHIPELAGO" - A feature representing a group or chain of
	// islands.
	//   "TYPE_POSTAL" - ABSTRACT
	//   "TYPE_POSTAL_CODE" - This is the type for postal codes which are
	// complete and independent enough that there should be a feature for
	// them (e.g. US 5-digit ZIP codes). For even more detailed suffixes
	// that further subdivide a postal code (such as the +4 component in US
	// ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX
	// address component. When a range or set of postal codes share the same
	// geographical area, e.g. because a precise subdivision does not exist
	// or this subdivision is unknown, this type is used for each individual
	// postal code.
	//   "TYPE_POSTAL_CODE_PREFIX" - A prefix portion of a postal code which
	// does not meet the requirements for TYPE_POSTAL_CODE, but which is
	// useful to search for, for example UK outcodes.
	//   "TYPE_PREMISE" - DEPRECATED
	//   "TYPE_SUB_PREMISE" - DEPRECATED This is deprecated and we want to
	// use TYPE_COMPOUND_SECTION instead.
	//   "TYPE_SUITE" - DEPRECATED
	//   "TYPE_POST_TOWN" - The term "post town" is used for a
	// locality-like-entity that is only used for postal addresses.
	//   "TYPE_POSTAL_ROUND" - DEPRECATED
	//   "TYPE_META_FEATURE" - ABSTRACT
	//   "TYPE_DATA_SOURCE" - Every data source used in constructing a data
	// repository has a corresponding feature that provides more information
	// about that data source. The extra information is stored in the
	// optional data_source field below.
	//   "TYPE_LOCALE" - A locale feature provides region specific
	// conventions such as preferred language and formatting details for
	// time, date, and currency values. Locales aren't necessary defined by
	// physical geographic features, so they are classified as
	// meta-features.
	//   "TYPE_TIMEZONE" - A timezone feature is used to specify the region
	// covering an international timezone. When a point is covered by
	// multiple timezone features, the most specific one can be used to
	// compute the local time at this point. Most specific implies a much
	// smaller region or the one that is closer to the center. A feature's
	// timezone can be specified in the repeated related_timezone field.
	//   "TYPE_BUSINESS_CHAIN" - A business chain feature is used to
	// represent a chain, e.g. Starbucks, McDonald's, etc. Other features
	// representing specific stores/franchises of this chain may refer to
	// one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly
	// reserved to commercial chains but can also be used to model
	// organizations such as the Red Cross or the United Nations.
	//   "TYPE_PHONE_NUMBER_PREFIX" - A phone number prefix feature is used
	// to specify the region where phone numbers (typically fixed-line
	// numbers) must begin with a certain prefix. Any phone number prefix
	// down to any level of granularity could be represented by this type.
	//   "TYPE_PHONE_NUMBER_AREA_CODE" - A phone number area code is a
	// prefix which also coincides with the area code, or national
	// destination code, of a particular region.
	//   "TYPE_BUSINESS_CORRIDOR" - A Business Corridor is a dense cluster
	// of semantically similar establishments. TYPE_BUSINESS_CORRIDOR
	// features are distinguished from TYPE_COLLOQUIAL_AREA features because
	// the corridors are not under the political hierarchy, are allowed to
	// be nameless, and may not correspond to well-known real world
	// locations. For more details, see go/geo-corridors-schema.
	//   "TYPE_ADDRESS_TEMPLATE" - An address template feature provides
	// region-specific conventions for structuring addresses. These features
	// aren't necessarily defined by physical geographic features, so they
	// are classified as meta-features.
	//   "TYPE_TRANSIT_AGENCY" - A transit agency operates a number of
	// lines, typically all in the same city, region or country. See also
	// transitagency.proto
	//   "TYPE_FUTURE_GEOMETRY" - A feature whose geometry is planned to
	// replace the geometry on another feature.
	//   "TYPE_EVENT" - DEPRECATED
	//   "TYPE_EARTHQUAKE" - DEPRECATED
	//   "TYPE_HURRICANE" - DEPRECATED
	//   "TYPE_WEATHER_CONDITION" - DEPRECATED
	//   "TYPE_TRANSIENT" - RESERVED
	//   "TYPE_ENTRANCE" - A portal of entry or exit to another feature.
	// Examples: - Subway station entrance. - Parking lot entrance.
	//   "TYPE_CARTOGRAPHIC" - Cartographic features are used to capture
	// real-world objects for which there is no current desire to model any
	// specific attributes. These are only useful to make the map tiles look
	// pretty.
	//   "TYPE_HIGH_TENSION" - DEPRECATED
	//   "TYPE_SKI_TRAIL" - Also see skitrail.proto
	//   "TYPE_SKI_LIFT" - Also see skilift.proto
	//   "TYPE_SKI_BOUNDARY" - Also see skiboundary.proto
	//   "TYPE_WATERSHED_BOUNDARY"
	//   "TYPE_TARMAC" - Starting with TYPE_TARMAC, we use longer IDs, so
	// that we can expand the number of feature types under
	// TYPE_CARTOGRAPHIC.
	//   "TYPE_WALL" - Use TYPE_COMPOUND_GROUND and appropriate gcids for
	// the next two.
	//   "TYPE_PICNIC_AREA" - DEPRECATED
	//   "TYPE_PLAY_GROUND" - DEPRECATED
	//   "TYPE_TRAIL_HEAD"
	//   "TYPE_GOLF_TEEING_GROUND" - Sub-types within a golf course.
	//   "TYPE_GOLF_PUTTING_GREEN"
	//   "TYPE_GOLF_ROUGH"
	//   "TYPE_GOLF_SAND_BUNKER"
	//   "TYPE_GOLF_FAIRWAY"
	//   "TYPE_GOLF_HOLE" - Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop
	// for golf shops instead.
	//   "TYPE_DEPRECATED_GOLF_SHOP" - DEPRECATED
	//   "TYPE_CAMPING_SITE" - DEPRECATED
	//   "TYPE_DESIGNATED_BARBECUE_PIT"
	//   "TYPE_DESIGNATED_COOKING_AREA"
	//   "TYPE_CAMPFIRE_PIT"
	//   "TYPE_WATER_FOUNTAIN"
	//   "TYPE_LITTER_RECEPTACLE"
	//   "TYPE_LOCKER_AREA"
	//   "TYPE_ANIMAL_ENCLOSURE" - Subtype within a zoo - a cage or
	// fenced-off or otherwise delineated area containing animals.
	//   "TYPE_CARTOGRAPHIC_LINE" - A line for a cartographic detail. For
	// example the international date line. Such features should have
	// polyline geometry.
	//   "TYPE_ESTABLISHMENT" - ABSTRACT This type is being replaced by
	// TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2
	//   "TYPE_ESTABLISHMENT_GROUNDS" - DEPRECATED This type has been
	// replaced by TYPE_COMPOUND_BUILDING. For further details, see
	// go/oyster-compounds
	//   "TYPE_ESTABLISHMENT_BUILDING" - DEPRECATED
	//   "TYPE_ESTABLISHMENT_POI" - An establishment which has a address
	// (a.k.a. location or storefront). Note that it *may* also have a
	// service area (e.g. a restaurant that offers both dine-in and
	// delivery). This type of business is also known as a "hybrid" Service
	// Area Business. Establishment POIs can be referenced by TYPE_COMPOUND
	// features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the
	// reciprocal relation of the RELATION_OCCUPIES.
	//   "TYPE_ESTABLISHMENT_SERVICE" - A business without a storefront,
	// e.g. a plumber. It would normally not have a place that a customer
	// could visit to receive service, but it would have an area served by
	// the business. Also known as a "pure" Service Area Business.
	// NOTE(tcain): Using value 0xD441, since we could find ourselves with a
	// need to differentiate service areas from online-only at this level in
	// the future, but still benefit from being able to group those under a
	// common parent, disjoint from TYPE_ESTABLISHMENT_POI.
	//   "TYPE_CELESTIAL" - The root of types of features that are in the
	// sky, rather than on the earth. There will eventually be a hierarchy
	// of types here.
	//   "TYPE_ROAD_MONITOR" - Features responsible for monitoring traffic
	// on roads (usually for speed). Includes cameras at particular points
	// as well as monitors that cover larger spans. Features of this type
	// should have a corresponding gcid that specifies the correct subtype
	// (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was
	// originally named as TYPE_ROAD_CAMERA.
	//   "TYPE_PUBLIC_SPACES_AND_MONUMENTS" - ABSTRACT
	//   "TYPE_STATUE" - Note that this type does not distinguish the nature
	// of the statue (religious, historical, memorial, tourist, ...).
	//   "TYPE_TOWN_SQUARE" - Open space used for events, gathering, or as
	// market-place.
	//   "TYPE_LEVEL" - A feature used to represent a logical level, e.g.
	// floor.
	//   "TYPE_COMPOUND" - ABSTRACT
	//   "TYPE_COMPOUND_GROUNDS" - e.g. campus, compound, parcel.
	//   "TYPE_COMPOUND_BUILDING" - e.g. single family dwelling, office
	// building.
	//   "TYPE_COMPOUND_SECTION" - e.g. suite, room, hallway, cubicle.
	//   "TYPE_TERMINAL_POINT" - A terminal point represents a good location
	// for a user to meet a taxi, ridesharing vehicle, or general driver.
	//   "TYPE_REGULATED_AREA" - An area controlled in some way by an
	// authoritative source, such as a government-designated COVID
	// containment zone or an area under government sanctions. Features of
	// this type should have one or more gcids corresponding to their
	// specific regulation, and client handling of these features may vary
	// based on the type of regulation.
	//   "TYPE_LOGICAL_BORDER" - A grouping of TYPE_BORDER features ("border
	// segments"), which together represent a border between two features of
	// the same type.
	//   "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES" - DEPRECATED
	//   "TYPE_UNKNOWN" - A feature of completely unknown type. This should
	// only be used when absolutely necessary. One example in which this
	// type is useful is in the Chinese importer, which must heuristically
	// segment addresses into components - it often does not know what types
	// to make those components. Please note that the Oyster address
	// formatter does not currently support address components of
	// TYPE_UNKNOWN well.
	Type string `json:"type,omitempty"`

	// VerticalOrdering: Represents vertical ordering for this feature
	// relative to other geometrically-overlaping features. See
	// go/aboutgrades for more information about distinction among different
	// levels.
	VerticalOrdering *GeostoreVerticalOrderingProto `json:"verticalOrdering,omitempty"`

	// WaterRemovedPolygon: A version of the geometry which has water
	// removed but is not simplified (thus having equal or more vertices
	// than polygon_for_display).
	WaterRemovedPolygon *GeostorePolygonProto `json:"waterRemovedPolygon,omitempty"`

	// Website: The official website of this feature. Stored as a repeated
	// field to allow for multilingual official websites (see comments in
	// url.proto).
	Website []*GeostoreUrlProto `json:"website,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessPoint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessPoint") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreFeatureProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreFeatureProto
	var s1 struct {
		GeometryPrecisionMeters gensupport.JSONFloat64 `json:"geometryPrecisionMeters"`
		Rank                    gensupport.JSONFloat64 `json:"rank"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GeometryPrecisionMeters = float64(s1.GeometryPrecisionMeters)
	s.Rank = float64(s1.Rank)
	return nil
}

// GeostoreFeatureReplacementInfoProto: Metadata to track feature
// derivations and replacements. This is used to track feature
// provenance (particularly for road segments).
type GeostoreFeatureReplacementInfoProto struct {
	// DerivedFrom: This feature was created to replace other features that
	// are referenced by this field.
	DerivedFrom []*GeostoreFeatureIdProto `json:"derivedFrom,omitempty"`

	// ReplacedBy: This feature was replaced by other features that are
	// referenced by this this field.
	ReplacedBy []*GeostoreFeatureIdProto `json:"replacedBy,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DerivedFrom") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DerivedFrom") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFeatureReplacementInfoProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFeatureReplacementInfoProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFieldMetadataProto: Internal field metadata. This part is not
// exposed to downstream consumers of the repository (read-only clients)
// but is available to upstream providers to the repository (read-write
// clients).
type GeostoreFieldMetadataProto struct {
	Internal *GeostoreInternalFieldMetadataProto `json:"internal,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Internal") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Internal") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFieldMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFieldMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFieldWithRightsProto: Proto used to represent rights for a
// field type. See go/geo-rights for more details. NOTE: Use
// google3/geostore/provenance/public/rights.h or
// google3/java/com/google/geostore/provenance/rights/Rights.swig
// instead of accessing this proto directly.
type GeostoreFieldWithRightsProto struct {
	// AttributeId: ** DEPRECATED ** If field_type is set to
	// FEATURE_ATTRIBUTE or KNOWLEDGE_GRAPH_PROPERTY, the attribute ID / KG
	// property ID that makes this field with rights complete.
	AttributeId string `json:"attributeId,omitempty"`

	FeaturePropertyId *GeostoreFeaturePropertyIdProto `json:"featurePropertyId,omitempty"`

	// FieldType: The field type for which the rights level are tracked on.
	// The default value here has to match the value of fieldtype::NONE.
	FieldType int64 `json:"fieldType,omitempty"`

	// MinRightsLevel: The minimum rights level for all the current values
	// on the field type.
	//
	// Possible values:
	//   "UNKNOWN_RIGHTS" - Indicates that the rights level is unknown. This
	// should always be the default value of any RightsLevel field in any
	// proto.
	//   "GT_RIGHTS" - GT-rights or GT-level rights is a level of data
	// ownership that Google has retained as defined by the Ground Truth
	// project. GT rights include but may not be limited to: - Data may be
	// used perpetually in any Google product or service - No requirement
	// for any on-screen attribution requirements (although we may have
	// softer attribution requirements, like display on a legal notices
	// page) - No display, distribution, or storage restrictions - other
	// than that the content may not be redistributed on a standalone basis,
	// independent of a Google product or service.
	//   "FULL_RIGHTS" - Full rights refers to data for which Google has no
	// usage restrictions. We can do whatever we want with it.
	MinRightsLevel string `json:"minRightsLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFieldWithRightsProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFieldWithRightsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFlowLineProto: Wrapper to hold data related to a lane’s
// track, extendable for future data.
type GeostoreFlowLineProto struct {
	Track *GeostoreTrackProto `json:"track,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Track") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Track") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFlowLineProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFlowLineProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFoodMenuItemOptionProto: Example: the choice of chicken,
// beef, or tofu for the Thai Basil dish. Each option would have its own
// name, price, allergen info, etc. Note: This proto stores both food
// and service items despite the name.
type GeostoreFoodMenuItemOptionProto struct {
	// Possible values:
	//   "ALLERGEN_DAIRY" - A list of types of allergens for food and
	// drinks.
	//   "ALLERGEN_EGG"
	//   "ALLERGEN_FISH"
	//   "ALLERGEN_PEANUT"
	//   "ALLERGEN_SHELLFISH"
	//   "ALLERGEN_SOY"
	//   "ALLERGEN_TREE_NUT"
	//   "ALLERGEN_WHEAT"
	AllergenAbsent []string `json:"allergenAbsent,omitempty"`

	// Possible values:
	//   "ALLERGEN_DAIRY" - A list of types of allergens for food and
	// drinks.
	//   "ALLERGEN_EGG"
	//   "ALLERGEN_FISH"
	//   "ALLERGEN_PEANUT"
	//   "ALLERGEN_SHELLFISH"
	//   "ALLERGEN_SOY"
	//   "ALLERGEN_TREE_NUT"
	//   "ALLERGEN_WHEAT"
	AllergenPresent []string `json:"allergenPresent,omitempty"`

	Calories int64 `json:"calories,omitempty"`

	// Ingredients: Ingredients of the food dish option.
	Ingredients []*GeostoreFoodMenuItemOptionProtoIngredient `json:"ingredients,omitempty"`

	// Media: Photos of the food dish option.
	Media []*GeostoreMediaItemProto `json:"media,omitempty"`

	// NameInfo: The repeated name_info field here is for item options with
	// names or descriptions listed in multiple languages. When an item
	// option has no names or descriptions, the size of the repeated field
	// name_info may be 0. For example, when a food menu item does not have
	// multiple options, the item option proto is used only to specify price
	// and nutritional information, so it will not have a name_info field.
	// There should be at most one name_info for any given language.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// NutritionFacts: Nutrition facts of the food dish option. Note that it
	// also includes calories information with a finer defined unit
	// information.
	NutritionFacts *GeostorePriceInfoFoodNutritionFacts `json:"nutritionFacts,omitempty"`

	// PortionSize: Size of the order, represented in units of items. (e.g.
	// 4 "skewers”, 6 "pieces”)
	PortionSize *GeostoreFoodMenuItemOptionProtoPortionSize `json:"portionSize,omitempty"`

	// PreparationMethods: Methods on how the food dish option is prepared.
	//
	// Possible values:
	//   "METHOD_UNDEFINED"
	//   "BAKED"
	//   "BOILED"
	//   "BLANCHED"
	//   "BRAISED"
	//   "CODDLED"
	//   "PRESSURE_COOKED"
	//   "SIMMERED"
	//   "STEAMED"
	//   "STEEPED"
	//   "GRILLED"
	//   "FRIED"
	//   "PAN_FRIED"
	//   "STIR_FRIED"
	//   "SAUTEED"
	//   "ROASTED"
	//   "BARBECUED"
	//   "SEARED"
	//   "SMOKED"
	//   "FERMENTED"
	//   "MARINATED"
	//   "PICKLED"
	//   "BASTED"
	//   "KNEADED"
	//   "OTHER_METHOD"
	PreparationMethods []string `json:"preparationMethods,omitempty"`

	// Price: We use PriceRangeProto here but we expect the lower_price and
	// upper_price to be both set to equal numbers because an option should
	// have a single price. This field is not required because food item
	// prices may be variable depending on season.
	Price *GeostorePriceRangeProto `json:"price,omitempty"`

	// Possible values:
	//   "DIET_HALAL" - A list of types of restrictions adhered to during
	// food preparation.
	//   "DIET_KOSHER"
	//   "DIET_ORGANIC"
	//   "DIET_VEGAN"
	//   "DIET_VEGETARIAN"
	Restriction []string `json:"restriction,omitempty"`

	// ServesNumPeople: Number of people can be served by this food dish
	// option.
	ServesNumPeople int64 `json:"servesNumPeople,omitempty"`

	// Possible values:
	//   "SPICINESS_NONE"
	//   "SPICINESS_MILD"
	//   "SPICINESS_MEDIUM"
	//   "SPICINESS_HOT"
	Spiciness string `json:"spiciness,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllergenAbsent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllergenAbsent") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFoodMenuItemOptionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFoodMenuItemOptionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFoodMenuItemOptionProtoIngredient: This message denotes an
// ingredient information of a food dish.
type GeostoreFoodMenuItemOptionProtoIngredient struct {
	// NameInfo: The repeated name_info field is for the ingredient in
	// multiple languages.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NameInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NameInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFoodMenuItemOptionProtoIngredient) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFoodMenuItemOptionProtoIngredient
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFoodMenuItemOptionProtoPortionSize: This message denotes the
// serving portion size of a food dish.
type GeostoreFoodMenuItemOptionProtoPortionSize struct {
	// Quantity: Required.
	Quantity int64 `json:"quantity,omitempty"`

	// Unit: Required. The repeated name_info field is for the unit in
	// multiple languages.
	Unit []*GeostorePriceListNameInfoProto `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Quantity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Quantity") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFoodMenuItemOptionProtoPortionSize) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFoodMenuItemOptionProtoPortionSize
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreFoodMenuItemProto: A food menu item must have a name although
// it can have multiple names in different languages. Example: Thai
// Basil. Price for this item is specified in the item_option field.
// Since the price of an item may be unknown, e.g. seasonal price, there
// is nothing that requires an item_option to be present in the
// FoodMenuItemProto.
type GeostoreFoodMenuItemProto struct {
	ItemOption []*GeostoreFoodMenuItemOptionProto `json:"itemOption,omitempty"`

	// NameInfo: The repeated name_info field is for items listed in
	// multiple languages.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ItemOption") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ItemOption") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreFoodMenuItemProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreFoodMenuItemProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreGConceptInstanceProto: A GConceptInstanceProto contains a
// GConceptID (which is the unique identifier of a GConcept, a category
// in the Geo Ontology).
type GeostoreGConceptInstanceProto struct {
	// GconceptId: The unique identifier of a GConcept (e.g.
	// "gcid:railway").
	GconceptId string `json:"gconceptId,omitempty"`

	// Metadata: Field-level metadata for this GConcept.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Prominence: The relative prominence of this category to this feature
	// according to the data provider, as one of the values from the enum
	// above. Prominence is a measure of how well the given GConcept
	// describes the feature. An example is a gas station with convenience
	// store and ATM. All three GConcepts are very relevant, but the
	// gas_station GConcept is the most prominent. If the prominence of this
	// GConcept is unknown, this field should not be set.
	//
	// Possible values:
	//   "NON_PRIMARY" - not a prominent GConcept
	//   "PRIMARY" - the most prominent GConcept
	Prominence string `json:"prominence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GconceptId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GconceptId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreGConceptInstanceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreGConceptInstanceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreGeometryComposition: Encapsulates all the features which,
// together, define the geometry of a feature. This happens by: 1.
// taking the union of all polygons of features referenced in
// includes_geometry_of 2. subtracting the polygons of all the features
// referenced in excludes_geometry_of
type GeostoreGeometryComposition struct {
	// ExcludesGeometryOf: Features whose geometry to exclude while
	// composing the geometry of this feature.
	ExcludesGeometryOf []*GeostoreFeatureIdProto `json:"excludesGeometryOf,omitempty"`

	// IncludesGeometryOf: Features whose geometry to include while
	// composing the geometry of this feature.
	IncludesGeometryOf []*GeostoreFeatureIdProto `json:"includesGeometryOf,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExcludesGeometryOf")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExcludesGeometryOf") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreGeometryComposition) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreGeometryComposition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreGeopoliticalGeometryProto: Geopolitical (unsimplified)
// polygons for a feature for different geopolitical use cases. See
// go/unsimplified-poly.
type GeostoreGeopoliticalGeometryProto struct {
	// RestOfWorldPolygon: The unsimplified, water-subtracted polygon
	// representing the feature's geometry as viewed by the rest of the
	// world, which may differ from its default polygon, for example by
	// excluding certain regions.
	RestOfWorldPolygon *GeostorePolygonProto `json:"restOfWorldPolygon,omitempty"`

	// SelfPolygon: The unsimplified, water-subtracted polygon representing
	// the feature's geometry as viewed by the country that administers it,
	// which may differ from its default polygon, for example by including
	// disputed areas.
	SelfPolygon *GeostorePolygonProto `json:"selfPolygon,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RestOfWorldPolygon")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RestOfWorldPolygon") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreGeopoliticalGeometryProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreGeopoliticalGeometryProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreGradeLevelProto: The grade level of a segment represents the
// relative altitude of the segment at a particular point along the
// segment. This level is in relation to other segments at the same
// point. For example, you might have a freeway at level = 0 and an
// overpass at level = 2. Vertical segments are represented by a
// polyline containing only 1 vertex and exactly two grade_level in
// segment.proto whose indices are 0. grade_level(0) represents the
// relative height at the start point of the segments, and
// grade_level(1) represents the one at the end point.
type GeostoreGradeLevelProto struct {
	// Index: The index of the point along the segment, where 0 is the
	// starting point. This means that the index of a point along a segment
	// and its sibling will be different.
	Index int64 `json:"index,omitempty"`

	// Level: The grade level of the indexed point. The grade level can be
	// thought of as a relative vertical ordering with respect to other
	// segments at the same point, where larger/more positive numbers are
	// "higher". Negative grade level values are allowed and are typically
	// used for points below grade level (0 is a common choice to represent
	// the level of points at the ground level). For vertical segments, the
	// height, i.e. the vertical length, is represented by difference of
	// levels in millimeters. For example,
	// feature.segment().grade_level(0).level() == 0 and
	// feature.segment().grade_level(1).level() == 5000, then the length of
	// the vertical segment feature is 5000 millimeters (5 meters).
	Level int64 `json:"level,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreGradeLevelProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreGradeLevelProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreHtmlTextProto: Represents HTML text associated with a
// feature.
type GeostoreHtmlTextProto struct {
	// Text: Zero or more texts of the specified type, in various languages.
	// If this is a HTML_DESCRIPTION blob then these texts would hold the
	// description in English, German, and so forth. The text is an HTML
	// fragment, not a full page. The fragment should be suitable for
	// including in a DIV. It must have balanced HTML tags. It may use
	// HTML's "class" attributes to assign classes to HTML elements. This
	// allows the HTML to be formatted by an (external) style sheet. The
	// HTML should not have embedded style sheet definitions, nor should it
	// have embedded JavaScript.
	Text []*GeostoreLanguageTaggedTextProto `json:"text,omitempty"`

	// Possible values:
	//   "HTML_DESCRIPTION"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreHtmlTextProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreHtmlTextProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreInferredGeometryProto: Inferred geometry defines the geometry
// of a feature through the geometry of other features. For instance,
// the geometry of a timezone can be specified as the union of all the
// countries it applies to. See: go/inferred-geometry and
// go/geo-schema:composite-geometry-editor for more details.
type GeostoreInferredGeometryProto struct {
	// DefinesGeometryFor: Features whose geometry depends on this feature's
	// geometry.
	DefinesGeometryFor []*GeostoreFeatureIdProto `json:"definesGeometryFor,omitempty"`

	// GeometryComposition: Features whose geometry defines the geometry of
	// this feature.
	GeometryComposition *GeostoreGeometryComposition `json:"geometryComposition,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DefinesGeometryFor")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DefinesGeometryFor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreInferredGeometryProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreInferredGeometryProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreInternalFeatureProto: Main proto for all internal fields to
// be stored at the feature level.
type GeostoreInternalFeatureProto struct {
	// PolygonShapeId: A unique identifier for this feature's polygon data
	// which is being held externally in Shapestore (see go/shapestore).
	PolygonShapeId string `json:"polygonShapeId,omitempty"`

	// RestOfWorldPolygonShapeId: A unique identifier for this feature's
	// rest-of-world view polygon data which is being held externally in
	// Shapestore (see go/shapestore). This is part of the feature's
	// geopolitical geometry.
	RestOfWorldPolygonShapeId string `json:"restOfWorldPolygonShapeId,omitempty"`

	// RightsStatus: Per-field rights for this feature. See
	// http://g3doc/geostore/g3doc/developers-guide/inputs/rights-tracking
	// for more information.
	RightsStatus *GeostoreRightsStatusProto `json:"rightsStatus,omitempty"`

	// SelfPolygonShapeId: A unique identifier for this feature's self view
	// polygon data which is being held externally in Shapestore (see
	// go/shapestore). This is part of the feature's geopolitical geometry.
	SelfPolygonShapeId string `json:"selfPolygonShapeId,omitempty"`

	// Trust: Trust signals/annotations for the feature. In an input
	// feature, these signals are computed at the beginning of the pipeline
	// and are immutable during the processing. In output features, this
	// proto may define the rules/criteria that a newer edit should meet, in
	// order to be applied.
	Trust *GeostoreTrustSignalsProto `json:"trust,omitempty"`

	// WaterRemovedPolygonShapeId: A unique identifier for this feature's
	// water-removed polygon data which is being held externally in
	// Shapestore (see go/shapestore).
	WaterRemovedPolygonShapeId string `json:"waterRemovedPolygonShapeId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PolygonShapeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PolygonShapeId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreInternalFeatureProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreInternalFeatureProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreInternalFieldMetadataProto struct {
	// IsAuto: Whether or not the piece of data has been generated
	// automatically (i.e., by a bot/automated process based on
	// heuristics/algorithms rather than coming as a fact set by some human
	// user or data provider based on their knowledge). Note that this does
	// NOT imply that the value was set as a result of a bot operation on
	// the repository, since it is conceivable to use a bot/automated
	// process simply as a way of convenience to ingest large amount of
	// canonical/ground truth data.
	IsAuto bool `json:"isAuto,omitempty"`

	// SourceSummary: Information about the source providing the piece of
	// data this metadata is attached to.
	SourceSummary *GeostoreInternalSourceSummaryProto `json:"sourceSummary,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsAuto") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsAuto") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreInternalFieldMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreInternalFieldMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreInternalSegmentProto: Internal-only proto used to express
// additional information about segments. This is intended for
// communicating extra information between editing clients and the
// repository, and should not be used by or visible to clients. WARNING
// - if you add new fields to InternalSegmentProto, make sure that
// geostore/tools/internal/mr-mergesegments_test.cc is aware of them.
type GeostoreInternalSegmentProto struct {
	// TravelAllowance: The set of restrictions that apply to this segment;
	// these are actually *POSITIVE* restrictions, i.e. they are known to be
	// allowed.
	TravelAllowance []*GeostoreRestrictionProto `json:"travelAllowance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TravelAllowance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TravelAllowance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreInternalSegmentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreInternalSegmentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreInternalSourceSummaryProto struct {
	// Dataset: Within the above provider, the dataset from which this piece
	// of data was generated. For fields that are auto-generated the
	// "dataset" is likely to be some algorithm's or program's name. Similar
	// to SourceInfoProto.dataset but with the difference that it is
	// required to always be set. Providers that don't have a concept of
	// dataset may use "default".
	Dataset string `json:"dataset,omitempty"`

	// Provider: The data provider from which this piece of data was
	// generated. Equivalent to SourceInfoProto.provider in the public
	// schema.
	//
	// Possible values:
	//   "PROVIDER_ANY" - ABSTRACT The root of all provider types. This
	// should never be present on an actual feature, but can be useful when
	// calling InCategory.
	//   "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel
	//   "PROVIDER_NAVTEQ"
	//   "PROVIDER_TELE_ATLAS" - ABSTRACT
	//   "PROVIDER_TELE_ATLAS_MULTINET"
	//   "PROVIDER_TELE_ATLAS_CODEPOINT"
	//   "PROVIDER_TELE_ATLAS_GEOPOST"
	//   "PROVIDER_TELE_ATLAS_DATAGEO"
	//   "PROVIDER_TELE_ATLAS_ADDRESS_POINTS"
	//   "PROVIDER_TELCONTAR"
	//   "PROVIDER_EUROPA"
	//   "PROVIDER_ROYAL_MAIL"
	//   "PROVIDER_GOOGLE" - ABSTRACT
	//   "PROVIDER_GOOGLE_HAND_EDIT"
	//   "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must
	// be full ints. The next available ID is: 0x111730B1
	//   "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT
	//   "PROVIDER_GOOGLE_GT_FUSION"
	//   "PROVIDER_GOOGLE_ZAGAT_CMS"
	//   "PROVIDER_GOOGLE_PLACE_NAVBOOST"
	//   "PROVIDER_GOOGLE_FOOTPRINT"
	//   "PROVIDER_GOOGLE_PRODUCT_TERMS"
	//   "PROVIDER_GOOGLE_POINTCARDS"
	//   "PROVIDER_GOOGLE_BUSINESS_CHAINS"
	//   "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_PRONUNCIATIONS"
	//   "PROVIDER_GOOGLE_DUMPLING"
	//   "PROVIDER_GOOGLE_DISTILLERY"
	//   "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_RELATION_MINER"
	//   "PROVIDER_GOOGLE_MAPSPAM"
	//   "PROVIDER_GOOGLE_ROSE"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS"
	//   "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider
	// meant for sending wipeout requests to mapfacts.
	//   "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH"
	//   "PROVIDER_GOOGLE_BEEGEES"
	//   "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_GEO_WORLDMAPS"
	//   "PROVIDER_GOOGLE_GEO_MODERATION"
	//   "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_LOCAL_ALCHEMY"
	//   "PROVIDER_GOOGLE_KEROUAC"
	//   "PROVIDER_GOOGLE_MOBRANK"
	//   "PROVIDER_GOOGLE_RAPTURE"
	//   "PROVIDER_GOOGLE_CULTURAL_INSTITUTE"
	//   "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS"
	//   "PROVIDER_GOOGLE_TACTILE_MAPS"
	//   "PROVIDER_GOOGLE_MAPS_FOR_MOBILE"
	//   "PROVIDER_GOOGLE_GEO_REALTIME"
	//   "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos
	// with this provider to identify whether or not a feature is a
	// Prominent Place! Instead, use the proper API,
	// localsearch_clustering::QualityTierHelper::IsProminentPlace().
	//   "PROVIDER_GOOGLE_PLACE_ACTIONS"
	//   "PROVIDER_GOOGLE_GT_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_WAZE"
	//   "PROVIDER_GOOGLE_ONTHEGO"
	//   "PROVIDER_GOOGLE_GT_IMPORT"
	//   "PROVIDER_GOOGLE_STRUCTURED_DATA"
	//   "PROVIDER_GOOGLE_HELICOPTER"
	//   "PROVIDER_GOOGLE_ROLLBACK"
	//   "PROVIDER_GOOGLE_RIGHTS_REPAIR"
	//   "PROVIDER_GOOGLE_PERFUME"
	//   "PROVIDER_GOOGLE_MAPS_TRANSLATION"
	//   "PROVIDER_GOOGLE_CALL_ME_MAYBE"
	//   "PROVIDER_GOOGLE_LOCAL_UNIVERSAL"
	//   "PROVIDER_GOOGLE_CROUPIER"
	//   "PROVIDER_GOOGLE_SKYSMART"
	//   "PROVIDER_GOOGLE_RIDDLER"
	//   "PROVIDER_GOOGLE_ROADCLOSURES"
	//   "PROVIDER_GOOGLE_SPORE" - UMBRELLA
	//   "PROVIDER_GOOGLE_LOCALIZATION"
	//   "PROVIDER_GOOGLE_CATTERMS"
	//   "PROVIDER_GOOGLE_GT_FIELD_OPS"
	//   "PROVIDER_GOOGLE_MATCHMAKER"
	//   "PROVIDER_GOOGLE_ARBITRATION"
	//   "PROVIDER_GOOGLE_BIZBUILDER_OPS"
	//   "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS"
	//   "PROVIDER_GOOGLE_GT_DRAFTY"
	//   "PROVIDER_GOOGLE_HOTELADS_OPS"
	//   "PROVIDER_GOOGLE_MARKERS"
	//   "PROVIDER_GOOGLE_STATE_MACHINE"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE"
	//   "PROVIDER_GOOGLE_BIKESHARE"
	//   "PROVIDER_GOOGLE_GHOSTWRITER"
	//   "PROVIDER_GOOGLE_EDIT_PLATFORM"
	//   "PROVIDER_GOOGLE_BLUE_GINGER"
	//   "PROVIDER_GOOGLE_GEO_TIGER"
	//   "PROVIDER_GOOGLE_HYADES"
	//   "PROVIDER_GOOGLE_WEBQUARRY"
	//   "PROVIDER_GOOGLE_GEO_MADDEN"
	//   "PROVIDER_GOOGLE_ANDROID_PAY"
	//   "PROVIDER_GOOGLE_OPENING_HOURS_TEAM"
	//   "PROVIDER_GOOGLE_LOCAL_DISCOVERY"
	//   "PROVIDER_GOOGLE_LOCAL_HEALTH"
	//   "PROVIDER_GOOGLE_UGC_MAPS"
	//   "PROVIDER_GOOGLE_FIBER"
	//   "PROVIDER_GOOGLE_REVGEO"
	//   "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END"
	//   "PROVIDER_GOOGLE_GEO_UGC_TASKS"
	//   "PROVIDER_GOOGLE_GEOCODING"
	//   "PROVIDER_GOOGLE_SPYGLASS"
	//   "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES"
	//   "PROVIDER_GOOGLE_GEO_CHANGES"
	//   "PROVIDER_GOOGLE_HUME"
	//   "PROVIDER_GOOGLE_MEGAMIND"
	//   "PROVIDER_GOOGLE_GT_ROADSYNTH"
	//   "PROVIDER_GOOGLE_FIREBOLT"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS"
	//   "PROVIDER_GOOGLE_UGC_SERVICES"
	//   "PROVIDER_GOOGLE_GEOALIGN"
	//   "PROVIDER_GOOGLE_GT_COMPOUNDS"
	//   "PROVIDER_GOOGLE_FOOD_ORDERING"
	//   "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS"
	//   "PROVIDER_GOOGLE_URAW"
	//   "PROVIDER_GOOGLE_FLYEYE"
	//   "PROVIDER_GOOGLE_YOUKE"
	//   "PROVIDER_GOOGLE_GT_ZEPHYR"
	//   "PROVIDER_GOOGLE_USER_SAFETY"
	//   "PROVIDER_GOOGLE_ADDRESS_MAKER"
	//   "PROVIDER_GOOGLE_UGC_PHOTOS"
	//   "PROVIDER_GOOGLE_GT_WINDCHIME"
	//   "PROVIDER_GOOGLE_SNAG_FIXER"
	//   "PROVIDER_GOOGLE_GEO_DEALS"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS"
	//   "PROVIDER_GOOGLE_PROPERTY_INSIGHTS"
	//   "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS"
	//   "PROVIDER_GOOGLE_GEO_PORTKEY"
	//   "PROVIDER_GOOGLE_ROAD_MAPPER"
	//   "PROVIDER_GOOGLE_LOCATION_PLATFORM"
	//   "PROVIDER_GOOGLE_POSTTRIP"
	//   "PROVIDER_GOOGLE_TRAVEL_DESTINATION"
	//   "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP"
	//   "PROVIDER_GOOGLE_USER"
	//   "PROVIDER_GOOGLE_STATION"
	//   "PROVIDER_GOOGLE_GEO_FOOD"
	//   "PROVIDER_GOOGLE_GEO_AR"
	//   "PROVIDER_GOOGLE_GEO_TEMPORAL"
	//   "PROVIDER_GOOGLE_SERVICES_MARKETPLACE"
	//   "PROVIDER_GOOGLE_IMT_CLEANUP"
	//   "PROVIDER_GOOGLE_GEO_FOOD_MENU"
	//   "PROVIDER_GOOGLE_CARENAV"
	//   "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA
	//   "PROVIDER_GOOGLE_DRIVING_UGC"
	//   "PROVIDER_GOOGLE_POLAR"
	//   "PROVIDER_GOOGLE_TRIWILD"
	//   "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS"
	//   "PROVIDER_GOOGLE_SA_FROM_WEB"
	//   "PROVIDER_GOOGLE_POI_ALIGNMENT"
	//   "PROVIDER_GOOGLE_SA_FROM_HULK"
	//   "PROVIDER_GOOGLE_SERVICES_INTERACTIONS"
	//   "PROVIDER_GOOGLE_ROADS_UGC_EDITOR"
	//   "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_DRIVING_VIZ"
	//   "PROVIDER_GOOGLE_GEO_TASKING"
	//   "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKADS"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKMATE"
	//   "PROVIDER_GOOGLE_CROWDTASK_FURBALL"
	//   "PROVIDER_GOOGLE_CROWDTASK_ADAP"
	//   "PROVIDER_GOOGLE_GPAY"
	//   "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS"
	//   "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION"
	//   "PROVIDER_GOOGLE_GEOTRACKER"
	//   "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_CLOSED_LOOP"
	//   "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS"
	//   "PROVIDER_GOOGLE_CORE_DATA_RIGHTS"
	//   "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS"
	//   "PROVIDER_GOOGLE_GEO_CONTENT_FIXER"
	//   "PROVIDER_GOOGLE_POLYGON_REFINEMENT"
	//   "PROVIDER_GOOGLE_HANASU"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS"
	//   "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS"
	//   "PROVIDER_GOOGLE_SA_QUALITY"
	//   "PROVIDER_GOOGLE_GDCE_CLEANUP"
	//   "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_DISCOVERY" - Shopping Attributes
	// Discovery
	//   "PROVIDER_GOOGLE_GEO_LDE"
	//   "PROVIDER_GOOGLE_GEO_SIGNAL_TRACKING"
	//   "PROVIDER_GOOGLE_UGC_AGGREGATION"
	//   "PROVIDER_GOOGLE_3D_BASEMAP"
	//   "PROVIDER_GOOGLE_MAPFACTS_PRIVACY"
	//   "PROVIDER_GOOGLE_GT_ALF"
	//   "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE"
	//   "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider
	// entries should be placed above.
	//   "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA
	//   "PROVIDER_GOOGLE_GEOWIKI"
	//   "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM"
	//   "PROVIDER_GOOGLE_SYNTHESIZED"
	//   "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for
	// teams that wish to integrate with components of the Geo Data
	// Infrastructure that require a valid provider. No production data
	// should ever be sent using this provider.
	//   "PROVIDER_GOOGLE_DISPUTED_AREAS"
	//   "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA
	//   "PROVIDER_GOOGLE_GROUNDS_BUILDER"
	//   "PROVIDER_GOOGLE_SESAME"
	//   "PROVIDER_GOOGLE_GT"
	//   "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range
	// extends the PROVIDER_GOOGLE hierarchy.
	//   "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION"
	//   "PROVIDER_GOOGLE_TRAVELSEARCH"
	//   "PROVIDER_GOOGLE_PANORAMIO"
	//   "PROVIDER_GOOGLE_YOUTUBE"
	//   "PROVIDER_GOOGLE_OLD"
	//   "PROVIDER_GOOGLE_STREETVIEW"
	//   "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW"
	//   "PROVIDER_GOOGLE_ZIPIT"
	//   "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES"
	//   "PROVIDER_GOOGLE_GOLDEN"
	//   "PROVIDER_GOOGLE_INNERSPACE"
	//   "PROVIDER_GOOGLE_MAPSEARCH"
	//   "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of
	// PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and
	// PROVIDER_GOOGLE_GEO_TIGER (for categories).
	//   "PROVIDER_GOOGLE_CROWDSENSUS"
	//   "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not
	// be used, since its range further extends the PROVIDER_GOOGLE
	// hierarchy. aka Local AI.
	//   "PROVIDER_GOOGLE_FREEBASE"
	//   "PROVIDER_GOOGLE_HOTELADS"
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGES"
	//   "PROVIDER_GOOGLE_PLACES_API"
	//   "PROVIDER_GOOGLE_NAMEHEATMAP"
	//   "PROVIDER_GOOGLE_MAPMAKER"
	//   "PROVIDER_GOOGLE_MAPMAKER_MOBILE"
	//   "PROVIDER_GOOGLE_MAPMAKER_PANCAKE"
	//   "PROVIDER_GOOGLE_MAPMAKER_V2"
	//   "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE"
	//   "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from
	// this provider. It is only used to identify features that must be
	// served on MapMaker.
	//   "PROVIDER_GOOGLE_GT_LOCAL"
	//   "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS"
	//   "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS"
	//   "PROVIDER_GOOGLE_ENTITY_NAVBOOST"
	//   "PROVIDER_GOOGLE_RELATED_PLACES"
	//   "PROVIDER_GOOGLE_KNOWN_FOR_TERMS"
	//   "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used,
	// since its range further extends the PROVIDER_GOOGLE hierarchy.
	// Synthetically generated areas (sublocalities/neighborhoods/ postal
	// codes/etc) based on dropped terms from approximate geocoding. More
	// info on go/syntheticareas.
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS"
	//   "PROVIDER_GOOGLE_CROSS_STREETS"
	//   "PROVIDER_GOOGLE_CORRIDORS"
	//   "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a
	// provider that aggregates positions of bicycle rental points that we
	// have agreements with to show on maps
	//   "PROVIDER_GOOGLE_CONCRETE_URLS"
	//   "PROVIDER_GOOGLE_LEANBACK"
	//   "PROVIDER_GOOGLE_LOCKED_LISTINGS"
	//   "PROVIDER_GOOGLE_MONITORING"
	//   "PROVIDER_GOOGLE_SPROUT"
	//   "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY"
	//   "PROVIDER_GOOGLE_GOBY"
	//   "PROVIDER_GOOGLE_PROBLEM_REPORT"
	//   "PROVIDER_GOOGLE_CANDID"
	//   "PROVIDER_GOOGLE_BIZBUILDER"
	//   "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been
	// depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.
	//   "PROVIDER_MAPDATA_SCIENCES"
	//   "PROVIDER_MAPONICS"
	//   "PROVIDER_SKI_RESORTS"
	//   "PROVIDER_ZENRIN"
	//   "PROVIDER_SANBORN"
	//   "PROVIDER_URBAN_MAPPING"
	//   "PROVIDER_US_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_US_CENSUS"
	//   "PROVIDER_US_POSTAL_SERVICE"
	//   "PROVIDER_US_GEOLOGICAL_SURVEY"
	//   "PROVIDER_US_GNIS"
	//   "PROVIDER_US_LANDSAT"
	//   "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY"
	//   "PROVIDER_US_NGA_GNS"
	//   "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines
	//   "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS"
	//   "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" -
	// NOAA
	//   "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC
	//   "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA
	//   "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry
	//   "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS"
	//   "PROVIDER_DMTI_SPATIAL"
	//   "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION"
	//   "PROVIDER_MAPLINK"
	//   "PROVIDER_KINGWAY"
	//   "PROVIDER_GEOCENTRE"
	//   "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS"
	//   "PROVIDER_CN_MAPABC"
	//   "PROVIDER_SMITHSONIAN_INSTITUTE"
	//   "PROVIDER_TRACKS_FOR_AFRICA"
	//   "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO
	//   "PROVIDER_LEADDOG"
	//   "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG"
	//   "PROVIDER_GISRAEL"
	//   "PROVIDER_BASARSOFT"
	//   "PROVIDER_MAPINFO"
	//   "PROVIDER_MAPIT"
	//   "PROVIDER_GEOBASE"
	//   "PROVIDER_ORION"
	//   "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY"
	//   "PROVIDER_ANASAT"
	//   "PROVIDER_MINED_POSTCODES"
	//   "PROVIDER_DMAPAS"
	//   "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY"
	//   "PROVIDER_CH_SBB"
	//   "PROVIDER_SKENERGY"
	//   "PROVIDER_GBRMPA"
	//   "PROVIDER_KOREA_POST"
	//   "PROVIDER_CN_AUTONAVI"
	//   "PROVIDER_MINED_POI"
	//   "PROVIDER_ML_INFOMAP"
	//   "PROVIDER_SNOOPER"
	//   "PROVIDER_GEOSISTEMAS"
	//   "PROVIDER_AFRIGIS"
	//   "PROVIDER_TRANSNAVICOM"
	//   "PROVIDER_EASYCONNECT"
	//   "PROVIDER_LANTMATERIET"
	//   "PROVIDER_LOGICA"
	//   "PROVIDER_MAPKING"
	//   "PROVIDER_DIANPING"
	//   "PROVIDER_GEONAV"
	//   "PROVIDER_HEIBONSHA"
	//   "PROVIDER_DEUTSCHE_TELEKOM"
	//   "PROVIDER_LINGUISTIC_DATA_CONSORTIUM"
	//   "PROVIDER_ACXIOM"
	//   "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395
	//   "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION"
	//   "PROVIDER_INFOUSA"
	//   "PROVIDER_INFOUSA_NIXIE"
	//   "PROVIDER_THOMSON_LOCAL"
	//   "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION"
	//   "PROVIDER_WIKIPEDIA"
	//   "PROVIDER_INFOBEL"
	//   "PROVIDER_MX_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY"
	//   "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO"
	//   "PROVIDER_TELEGATE"
	//   "PROVIDER_TELELISTAS"
	//   "PROVIDER_MAPCITY"
	//   "PROVIDER_EXPLAINER_DC"
	//   "PROVIDER_DAIKEI"
	//   "PROVIDER_NL_CHAMBER_OF_COMMERCE"
	//   "PROVIDER_KOREA_INFO_SERVICE"
	//   "PROVIDER_WIKITRAVEL"
	//   "PROVIDER_FLICKR"
	//   "PROVIDER_DIANCO"
	//   "PROVIDER_VOLT_DELTA"
	//   "PROVIDER_SG_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY"
	//   "PROVIDER_MAPBAR"
	//   "PROVIDER_LONGTU"
	//   "PROVIDER_SA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SA_SAUDI_POST"
	//   "PROVIDER_PEAKLIST"
	//   "PROVIDER_LOCAL_BUSINESS_CENTER"
	//   "PROVIDER_LOCAL_FEED_XML" - UMBRELLA
	//   "PROVIDER_WEB"
	//   "PROVIDER_RAILS_TO_TRAILS"
	//   "PROVIDER_INDIACOM"
	//   "PROVIDER_INFOMEDIA"
	//   "PROVIDER_PICASA"
	//   "PROVIDER_AT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN"
	//   "PROVIDER_AT_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_AT_AUSTRIA_POST"
	//   "PROVIDER_NO_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON"
	//   "PROVIDER_NO_POSTEN_NORGE_AS"
	//   "PROVIDER_CH_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_CH_SWISS_POST"
	//   "PROVIDER_CH_SWISSTOPO"
	//   "PROVIDER_CH_SWISS_NATIONAL_PARK"
	//   "PROVIDER_NAVIT"
	//   "PROVIDER_GEOSEARCH"
	//   "PROVIDER_DE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE"
	//   "PROVIDER_BUNDESNETZAGENTUR"
	//   "PROVIDER_SCHOBER_GROUP"
	//   "PROVIDER_MIREO"
	//   "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO"
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY"
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE"
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA"
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA"
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK"
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN"
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO"
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA"
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV"
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX"
	//   "PROVIDER_SG_PUBLIC_MUNICIPALITY"
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO"
	//   "PROVIDER_MAPCUBE"
	//   "PROVIDER_3D_REALITYMAPS"
	//   "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT"
	//   "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA"
	//   "PROVIDER_DISNEY"
	//   "PROVIDER_CYBERCITY"
	//   "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS"
	//   "PROVIDER_VIRTUAL_HUNGARY_LIMITED"
	//   "PROVIDER_VIRTUEL_CITY"
	//   "PROVIDER_SCREAMPOINT_INTERNATIONAL"
	//   "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN"
	//   "PROVIDER_FR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL"
	//   "PROVIDER_FR_CADASTRE"
	//   "PROVIDER_DIADIEM"
	//   "PROVIDER_THE_WEATHER_CHANNEL"
	//   "PROVIDER_COWI"
	//   "PROVIDER_FALKPLAN_ANDES"
	//   "PROVIDER_NL_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NL_KADASTER"
	//   "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS"
	//   "PROVIDER_DIGITAL_MAP_PRODUCTS"
	//   "PROVIDER_SILICE_DIGITAL"
	//   "PROVIDER_TYDAC"
	//   "PROVIDER_ALBRECHT_GOLF"
	//   "PROVIDER_HEALTH_CH"
	//   "PROVIDER_VISITDENMARK"
	//   "PROVIDER_FLYHERE"
	//   "PROVIDER_DIGITAL_DATA_SERVICES"
	//   "PROVIDER_MECOMO"
	//   "PROVIDER_ZA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM"
	//   "PROVIDER_SENSIS"
	//   "PROVIDER_JJCONNECT"
	//   "PROVIDER_OPPLYSNINGEN"
	//   "PROVIDER_TELLUS"
	//   "PROVIDER_IQONIA"
	//   "PROVIDER_BE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT"
	//   "PROVIDER_BE_BRUSSELS_MOBILITY"
	//   "PROVIDER_YELLOWMAP_AG"
	//   "PROVIDER_STIFTUNG_GESUNDHEIT"
	//   "PROVIDER_GIATA"
	//   "PROVIDER_SANPARKS"
	//   "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE"
	//   "PROVIDER_INFOPORTUGAL"
	//   "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO"
	//   "PROVIDER_COLLINS_BARTHOLOMEW"
	//   "PROVIDER_PROTECT_PLANET_OCEAN"
	//   "PROVIDER_KARTTAKESKUS"
	//   "PROVIDER_FI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION"
	//   "PROVIDER_FI_NATIONAL_LAND_SURVEY"
	//   "PROVIDER_FI_STATISTICS_FINLAND"
	//   "PROVIDER_GB_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_GB_ORDNANCE_SURVEY"
	//   "PROVIDER_NATURAL_ENGLAND"
	//   "PROVIDER_WELSH_GOVERNMENT"
	//   "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS"
	//   "PROVIDER_EPSILON"
	//   "PROVIDER_PARTNER_FRONT_END"
	//   "PROVIDER_CARTESIA"
	//   "PROVIDER_SE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SE_TRAFIKVERKET"
	//   "PROVIDER_SE_NATURVARDSVERKET"
	//   "PROVIDER_IE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND"
	//   "PROVIDER_LU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_LU_P_AND_T_LUXEMBOURG"
	//   "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE"
	//   "PROVIDER_LU_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_MAPFLOW"
	//   "PROVIDER_TKARTOR"
	//   "PROVIDER_JUMPSTART"
	//   "PROVIDER_EPTISA"
	//   "PROVIDER_MC_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MC_PRINCIPAUTE_DE_MONACO"
	//   "PROVIDER_MONOLIT"
	//   "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE"
	//   "PROVIDER_MODIS"
	//   "PROVIDER_GEOX"
	//   "PROVIDER_GEODIRECTORY"
	//   "PROVIDER_GEOPLAN"
	//   "PROVIDER_INFODIREKT"
	//   "PROVIDER_GEOGLOBAL"
	//   "PROVIDER_DEUTSCHE_POST"
	//   "PROVIDER_TRACASA"
	//   "PROVIDER_CORREOS"
	//   "PROVIDER_ES_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA"
	//   "PROVIDER_EDIMAP"
	//   "PROVIDER_VERIZON"
	//   "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS"
	//   "PROVIDER_PROMAPS"
	//   "PROVIDER_CONSODATA"
	//   "PROVIDER_DE_AGOSTINI"
	//   "PROVIDER_FEDERPARCHI"
	//   "PROVIDER_NAVIGO"
	//   "PROVIDER_ITALIAMAPPE"
	//   "PROVIDER_CZECOT"
	//   "PROVIDER_NATURAL_EARTH"
	//   "PROVIDER_REGIO"
	//   "PROVIDER_SHIPWRECK_CENTRAL"
	//   "PROVIDER_RUTGERS_STATE_UNIVERSITY"
	//   "PROVIDER_TWINICE"
	//   "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD"
	//   "PROVIDER_INFOGROUP"
	//   "PROVIDER_TNET"
	//   "PROVIDER_CTT_CORREIOS_DE_PORTUGAL"
	//   "PROVIDER_EUROPARC"
	//   "PROVIDER_IUPPITER"
	//   "PROVIDER_MICHAEL_BAUER_INTERNATIONAL"
	//   "PROVIDER_LEPTON"
	//   "PROVIDER_MAPPOINT"
	//   "PROVIDER_GEODATA"
	//   "PROVIDER_RU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_RU_FNS_KLADR"
	//   "PROVIDER_BR_GOVERNMENT" - ABSTRACT
	//
	// "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU
	// RAIS_RENOVAVEIS" - IBAMA
	//   "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA
	//   "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA
	//   "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" -
	// IBGE
	//   "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI
	//
	// "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES"
	// - DNIT
	//   "PROVIDER_AZAVEA"
	//   "PROVIDER_NORTHSTAR"
	//   "PROVIDER_COMMEDI"
	//   "PROVIDER_NEXUS_GEOGRAFICS"
	//   "PROVIDER_INFOERA"
	//   "PROVIDER_AD_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography
	//   "PROVIDER_MAXXIMA"
	//   "PROVIDER_SI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT"
	//   "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS"
	//   "PROVIDER_L1_TECHNOLOGIES"
	//   "PROVIDER_TELEMEDIA"
	//   "PROVIDER_CDCOM_PROGOROD"
	//   "PROVIDER_MIT_CITYGUIDE"
	//   "PROVIDER_SUNCART"
	//   "PROVIDER_MICROMAPPER"
	//   "PROVIDER_RICHI"
	//   "PROVIDER_FORUM44"
	//   "PROVIDER_SEAT"
	//   "PROVIDER_VALASSIS"
	//   "PROVIDER_NAVICOM"
	//   "PROVIDER_COLTRACK"
	//   "PROVIDER_PSMA_AUSTRALIA"
	//   "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA"
	//   "PROVIDER_CA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_STATISTICS_CANADA"
	//   "PROVIDER_TOCTOC"
	//   "PROVIDER_RMSI"
	//   "PROVIDER_TRUE_TECHNOLOGY"
	//   "PROVIDER_INCREMENT_P_CORPORATION"
	//   "PROVIDER_GOJAVAS"
	//   "PROVIDER_GEOINFORMATION_GROUP"
	//   "PROVIDER_CYBERSOFT"
	//   "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not
	// to be used. OOO CET
	//   "PROVIDER_EE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_EE_MAA_AMET" - Estonian Land Board
	//   "PROVIDER_GASBUDDY"
	//   "PROVIDER_DK_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency
	//   "PROVIDER_MURCIA_REGION_GOVERNMENT"
	//   "PROVIDER_CORREIOS"
	//   "PROVIDER_WEST_WORLD_MEDIA"
	//   "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION"
	//   "PROVIDER_MEDICARE"
	//   "PROVIDER_POLARIS"
	//   "PROVIDER_TW_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER"
	//   "PROVIDER_NORDECA"
	//   "PROVIDER_AFRIMAPPING"
	//   "PROVIDER_OVERDRIVE"
	//   "PROVIDER_PROVIDER_NETWORK_DIRECTORIES"
	//   "PROVIDER_BR_MINISTERIO_DA_SAUDE"
	//   "PROVIDER_DIGITAL_EGYPT"
	//   "PROVIDER_INRIX"
	//   "PROVIDER_ARPINDO"
	//   "PROVIDER_IT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE"
	//   "PROVIDER_EAST_END_GROUP"
	//   "PROVIDER_INGEOLAN"
	//   "PROVIDER_SEMACONNECT"
	//   "PROVIDER_BLINK"
	//   "PROVIDER_EVGO"
	//   "PROVIDER_CHARGEPOINT"
	//   "PROVIDER_TPL_TRAKKER"
	//   "PROVIDER_OI"
	//   "PROVIDER_MAPARADAR"
	//   "PROVIDER_SINGAPORE_POST"
	//   "PROVIDER_CHARGEMASTER"
	//   "PROVIDER_TESLA"
	//   "PROVIDER_VISICOM"
	//   "PROVIDER_GEOLYSIS"
	//   "PROVIDER_ZEPHEIRA"
	//   "PROVIDER_HUBJECT"
	//   "PROVIDER_PODPOINT"
	//   "PROVIDER_CHARGEFOX"
	//   "PROVIDER_KR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and
	// transport, 국토교통부, Guktogyotongbu
	//   "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY"
	//   "PROVIDER_CRITCHLOW"
	//   "PROVIDER_EIFRIG"
	//   "PROVIDER_GIREVE"
	//   "PROVIDER_CN_NAVINFO"
	//   "PROVIDER_JAPAN_CHARGE_NETWORK"
	//   "PROVIDER_NOBIL"
	//   "PROVIDER_INDIA_BANKS"
	//   "PROVIDER_INDONESIA_ELECTION_KPU"
	//   "PROVIDER_CAREERS360"
	//   "PROVIDER_SOURCE_LONDON"
	//   "PROVIDER_EVBOX"
	//   "PROVIDER_JP_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT"
	//   "PROVIDER_YUMYUM"
	//   "PROVIDER_HWW_AUSTRALIA"
	//   "PROVIDER_CINERGY"
	//   "PROVIDER_MTIME"
	//   "PROVIDER_KULTUNAUT"
	//   "PROVIDER_BLITZ"
	//   "PROVIDER_PIA"
	//   "PROVIDER_INTERPARK"
	//   "PROVIDER_CINEMA_ONLINE"
	//   "PROVIDER_BELBIOS"
	//   "PROVIDER_MOVIESEER"
	//   "PROVIDER_SODAMEDYA"
	//   "PROVIDER_ATMOVIES"
	//   "PROVIDER_HOTELBEDS"
	//   "PROVIDER_VERICRED"
	//   "PROVIDER_CIRRANTIC"
	//   "PROVIDER_GOGO_LABS"
	//   "PROVIDER_ELECTRIFY_AMERICA"
	//   "PROVIDER_CMS_MPPUF"
	//   "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.
	//   "PROVIDER_KONTEX_GEOMATICS"
	//   "PROVIDER_NZ_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NZ_LINZ" - Land Information New Zealand
	//   "PROVIDER_NZ_DOC" - NZ Department of Conservation
	//   "PROVIDER_FASTNED"
	//   "PROVIDER_DESTINY_CS"
	//   "PROVIDER_IONITY"
	//   "PROVIDER_EV_CONNECT"
	//   "PROVIDER_PANPAGES"
	//   "PROVIDER_ETECNIC"
	//   "PROVIDER_VOLTA"
	//   "PROVIDER_NISSAN_MEXICO"
	//   "PROVIDER_BMW_GROUP_LATIN_AMERICA"
	//   "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO"
	//   "PROVIDER_VOLVO_CARS_BRASIL"
	//   "PROVIDER_CHARGE_AND_PARKING"
	//   "PROVIDER_DEDUCE_TECHNOLOGIES"
	//   "PROVIDER_SK_TELECOM"
	//   "PROVIDER_ECO_MOVEMENT"
	//   "PROVIDER_GOOGLE_GMS"
	//   "PROVIDER_EASYWAY"
	//   "PROVIDER_PHYSICIAN_COMPARE"
	//   "PROVIDER_HOSPITAL_COMPARE"
	//   "PROVIDER_ENDOLLA_BARCELONA"
	//   "PROVIDER_BE_CHARGE"
	//   "PROVIDER_ONE_NETWORK"
	//   "PROVIDER_CARENAV_DUPLEX"
	//   "PROVIDER_CARENAV_POI" - UMBRELLA
	//   "PROVIDER_IN_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SURVEY_OF_INDIA"
	//   "PROVIDER_E_ON"
	//   "PROVIDER_ELECTRIFY_CANADA"
	//   "PROVIDER_GRIDCARS"
	//   "PROVIDER_DRIVECO"
	//   "PROVIDER_GREEN_ACTION_STUDIOS"
	//   "PROVIDER_GREEN_ACTION_STUDIO"
	//   "PROVIDER_EVINY"
	//   "PROVIDER_MASTERCARD"
	//   "PROVIDER_VATTENFALL"
	//   "PROVIDER_VIETGIS"
	//   "PROVIDER_UNITE"
	//   "PROVIDER_NEOGY"
	//   "PROVIDER_AMPUP"
	//   "PROVIDER_LOOP"
	//   "PROVIDER_ZEST" - Note: Next available value is 0x1270B.
	Provider string `json:"provider,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dataset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dataset") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreInternalSourceSummaryProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreInternalSourceSummaryProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreIntersectionGroupProto: Our TYPE_INTERSECTION features model
// the point where one or more segments terminate. This is topological
// definition: it may not match what a typical user would think of as an
// "intersection". Consider the intersections where Hayes, Market,
// Larkin, and 9th Street meet near (37.77765, -122.41638) in San
// Francisco. Most people would probably consider this a single feature,
// even though we model it as four separate TYPE_INTERSECTION features.
// The TYPE_INTERSECTION_GROUP is used to model the user's concept of a
// real-world intersection, which also includes turn lanes or a whole
// roundabout (a logical intersection). For the purposes of modeling
// turn restrictions and lane connections, a smaller grouping is needed
// to model the "core" part of the intersection where there are no lane
// markings. This is called a core or artifact group. An intersection
// group must contain at least two intersections or add some information
// (e.g. a name or a polygon) compared to the intersection itself, or
// else must not exist. The standard feature properties are interpreted
// as follows: name - Can be used to specify any "special" names
// associated with this intersection (e.g. Reads Corner intersection,
// PEI, Canada). Intersections that are named according to their cross
// streets do not need to specify this field, since this can be
// determined by looking at the routes associated with each segment.
// address - This should always be empty. point - Specifies the center
// of the intersection. This is basically the point where the
// intersection name should be rendered. Can be omitted in favor of a
// polygon. polyline - This should always be empty. polygon - Specifies
// the two-dimensional extent of the intersection. This may substitute
// to the point field, though having a center set is desirable in this
// case. child - This should always be empty.
type GeostoreIntersectionGroupProto struct {
	// ChildGroup: All artifact intersection groups that are in this logical
	// group.
	ChildGroup []*GeostoreFeatureIdProto `json:"childGroup,omitempty"`

	// Possible values:
	//   "GROUP_ARTIFACT" - Groups intersections that bound segment
	// artifacts of centerline digitization. These segment artifacts do not
	// represent the geometry of actual vehicle travel through an
	// intersection group. This grouping is typically in the core or shared
	// area of an intersection where there are no lane markings (with the
	// exception of raised reflective white dots demarkating multiple turn
	// lanes through the real-world intersection). This is also the typical
	// grouping used for modeling STYLE_IN_OUT turn restrictions.
	//   "GROUP_LOGICAL" - Groups all intersections that form the logical
	// connection of roads. Also known as a cross road intersection group.
	// This group is usually larger than just the artifact grouping, since
	// it includes external turn lanes and roundabout external bypasses.
	GroupType string `json:"groupType,omitempty"`

	// Intersection: The list of TYPE_INTERSECTION features that form this
	// intersection group, but are NOT in any of this group's child groups.
	// This could be an empty list, though that is sub-optimal. Even an
	// empty list would allow the paint team to draw a label for a named
	// intersection, but a non-empty list would, for example, enable
	// PathFinder to generate better directions. Each of the
	// TYPE_INTERSECTION feature referred here must refer back to this
	// feature in its IntersectionProto.
	Intersection []*GeostoreFeatureIdProto `json:"intersection,omitempty"`

	// ParentGroup: Parent logical intersection group. An artifact group
	// that does not have an associated parent logical group is assumed to
	// be both an artifact and logical group.
	ParentGroup *GeostoreFeatureIdProto `json:"parentGroup,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChildGroup") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChildGroup") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreIntersectionGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreIntersectionGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreIntersectionProto: A TYPE_INTERSECTION feature represents a
// common endpoint of one or more segments in a transportation network
// at which the segments are connected. An intersection in the real
// world may be more complicated than that (e.g., comprise multiple
// segment endpoints or have extra attributes), which can be modeled
// with an additional TYPE_INTERSECTION_GROUP feature, if needed (see
// intersectiongroup.proto). The standard feature properties are
// interpreted as follows: name - This should always be empty.
// Intersections that have a "special" name (e.g. Reads Corner
// intersection, PEI, Canada) should point to a separate
// TYPE_INTERSECTION_GROUP feature that captures it. Intersections which
// are named according to their cross streets do not need this
// requirement, since their name can be determined by looking at the
// routes associated with each segment. address - This should always be
// empty. point - Specifies the center of the intersection. This should
// be the last vertex of all the segments which terminate at this
// intersection. polyline - This should always be empty. polygon - This
// should always be empty. child - This should always be empty.
type GeostoreIntersectionProto struct {
	// IntersectionGroup: The artifact or logical intersection group to
	// which this intersection belongs. If present, the intersection group
	// must also refer back to the intersection. If an intersection is
	// within both the artifact and logical group, then this reference
	// should be to the artifact group.
	IntersectionGroup *GeostoreFeatureIdProto `json:"intersectionGroup,omitempty"`

	// OutSegment: RESERVED
	OutSegment []*GeostoreFeatureIdProto `json:"outSegment,omitempty"`

	// Segment: The list of segments that terminate at this intersection, in
	// any order. Note that all segments are directed towards the
	// intersection, i.e. their endpoints indicate what sort of intersection
	// this is. This should not be empty because an intersection with no
	// associated segment is meaningless.
	Segment []*GeostoreFeatureIdProto `json:"segment,omitempty"`

	// TollClusterId: The toll cluster to which this intersection belongs.
	// If present, the toll cluster must also refer back to the
	// intersection.
	TollClusterId *GeostoreFeatureIdProto `json:"tollClusterId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntersectionGroup")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntersectionGroup") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreIntersectionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreIntersectionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreJobMetadata struct {
	// Duration: Describes how much time the service is going to take, e.g.
	// how long it takes to do a haircut. Value of seconds must be from +60
	// (1 min) to +31,536,000 (365 days) inclusive. Value of nanos must be
	// zero.
	Duration string `json:"duration,omitempty"`

	// JobRelatedCategories: Represents the name of a potential grouping of
	// items. For TYPE_JOB, this is the category names of the categories
	// that a user picked this job type from at the time of input.
	JobRelatedCategories []*GeostoreJobRelatedCategory `json:"jobRelatedCategories,omitempty"`

	// JobTypeId: Unique identifier for a job. This is required for standard
	// jobs and blank for free-form jobs. Job type ids are prefixed with
	// "job_type_id:". Notice this is a unique string representation of a
	// job across languages. E.g., “job_type_id:air_duct_repair”. The
	// existence of a job_type_id means the job type is a standard one, and
	// has a corresponding entry in the Standard Jobs Taxonomy.
	JobTypeId string `json:"jobTypeId,omitempty"`

	// JobTypeMid: Represents the MID corresponding to the job_category
	// entity in the Knowledge Graph. For example,
	// job_type_id="job_type_id:install_faucet",
	// job_type_mid="/g/11hzzxjv3f".
	JobTypeMid string `json:"jobTypeMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Duration") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Duration") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreJobMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreJobMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreJobRelatedCategory: This is the category that a user picked
// this job type from at the time of input. The field serves two
// purposes: 1) The name is used in consumer surface similar to the
// heading name today (i.e., grouping jobs under the category. 2) The
// gcid is needed mainly for free-formed entries, for which GMB needs to
// map them to corresponding categories in the frontend, if applicable.
// Notice that the name and the id are both not expected to be in sync
// with gcid deprecation or location category change per product
// decision. In other words, they are not guaranteed to stay in sync,
// only guaranteed true at time of creation.
type GeostoreJobRelatedCategory struct {
	Gcid string `json:"gcid,omitempty"`

	Language string `json:"language,omitempty"`

	// Name: Category name in the primary language of the feature. Generally
	// intended to be used as a fallback when we are unable to fetch the
	// name in the user's language.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Gcid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Gcid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreJobRelatedCategory) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreJobRelatedCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreKnowledgeGraphReferenceProto: The reference to an entity in
// the KnowledgeGraph. For details on the KnowledgeGraph see
// http://goto/kg.
type GeostoreKnowledgeGraphReferenceProto struct {
	// Id: KG Identifier (MID). For details, see
	// http://go/ke-bg-knowledge-graph#mids.
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreKnowledgeGraphReferenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreKnowledgeGraphReferenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLandmarkReferenceProto: This protocol buffer represents the
// association between a segment and a landmark feature. Notes: -
// References to TYPE_SEGMENT features should always point to the even
// sibling. - Self-references are allowed but the referencing segment's
// sibling is required to have a self-reference as well (the above
// requirement to always reference the even sibling still applies).
type GeostoreLandmarkReferenceProto struct {
	// FeatureType: The type of the landmark feature. Allowed types: -
	// TYPE_CARTOGRAPHIC e.g. a putting green or water hazard -
	// TYPE_COMPOUND e.g. - the Empire state building
	// (TYPE_COMPOUND_BUILDING) - a park (TYPE_COMPOUND_GROUNDS) - a section
	// of a retail store (TYPE_COMPOUND_SECTION) - TYPE_ESTABLISHMENT e.g. -
	// the Eiffel Tower (TYPE_ESTABLISHMENT_BUILDING) - a sports field
	// (TYPE_ESTABLISHMENT_GROUNDS) - Starbucks (TYPE_ESTABLISHMENT_POI) -
	// TYPE_INTERSECTION_GROUP e.g. a major intersection -
	// TYPE_NATURAL_FEATURE e.g. a river - TYPE_SEGMENT e.g. a bike trail or
	// train tracks
	FeatureType int64 `json:"featureType,omitempty"`

	// Landmark: The feature ID of the landmark feature.
	Landmark *GeostoreFeatureIdProto `json:"landmark,omitempty"`

	// TravelMode: The mode(s) of travel for which this landmark is useful.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "TRAVEL_MOTOR_VEHICLE"
	//   "TRAVEL_AUTO"
	//   "TRAVEL_TWO_WHEELER"
	//   "TRAVEL_BICYCLE"
	//   "TRAVEL_PEDESTRIAN"
	TravelMode []string `json:"travelMode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLandmarkReferenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLandmarkReferenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLaneMarkerProto: This proto contains attributes relevant to
// physical lane markers.
type GeostoreLaneMarkerProto struct {
	// BarrierMaterials: If this is a physical barrier marker, represent
	// materials found on the marker.
	BarrierMaterials *GeostoreBarrierLogicalMaterialProto `json:"barrierMaterials,omitempty"`

	// CrossingPattern: Pattern border and color for crossing markers. These
	// include crosswalks, stop, and yield lines.
	CrossingPattern *GeostoreCrossingStripePatternProto `json:"crossingPattern,omitempty"`

	// LinearPattern: Stripe pattern, spacing, and color for longitudinal
	// markers.
	LinearPattern *GeostoreLinearStripePatternProto `json:"linearPattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BarrierMaterials") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BarrierMaterials") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLaneMarkerProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLaneMarkerProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLaneProto: Describes an individual road lane. Not only
// driving lanes, but also parking and biking lanes are covered by this.
// Note that we may eventually add curbs and walking to this schema.
// MOTIVATION/DESIGN DISCUSSION The intent of this schema is to model a
// schematic representation of the road for a bunch of use cases within
// GMM, navigation, map tiles. For rendering, we do not want to
// represent the geometry of each lane exactly, but do want to model
// types/width/gaps/lane markings so that a schematic rendering can be
// made. For navigation, we model lane connectivity and restrictions per
// lane, so that Pathfinder can potentially pick routes based on lanes,
// and definitely use the lanes to better describe the path to the
// driver. This schema is driven by the GT team, which is likely to be
// the only provider of this data. It is based on compromises that we
// are working out with other teams, based on what our operators can
// reasonably collect and what is useful. See docs here:
// https://docs.google.com/a/google.com/document/d/11XJ1WvqS5Sm7MxWXzzc3tnsk49VhrR3BYFjiRMAzYm0/edit?hl=en_US
// https://docs.google.com/a/google.com/document/d/1nzdupynTUKE8xY8JcfvQbU-KWtCJ6IwHiTaCxuq40EM/edit?hl=en_US
// Note: Some lane information (width, surface type, etc) may duplicate
// or contradict information stored at the segment level.
type GeostoreLaneProto struct {
	// BoundingMarker: References to any gcid:physical_lane_marker features
	// that bound this lane.
	BoundingMarker []*GeostoreBoundingMarkerProto `json:"boundingMarker,omitempty"`

	// ConjoinedCategory: If the current lane is part of a merge/split area,
	// indicates the type (split or merge) and whether the current lane is
	// on the left or right or in the middle of the merge/split area, as
	// seen in the direction of traffic. See go/lane-split-merge-schema
	//
	// Possible values:
	//   "CONJOINED_NONE"
	//   "CONJOINED_SPLIT_LEFT"
	//   "CONJOINED_SPLIT_MIDDLE"
	//   "CONJOINED_SPLIT_RIGHT"
	//   "CONJOINED_MERGE_LEFT"
	//   "CONJOINED_MERGE_MIDDLE"
	//   "CONJOINED_MERGE_RIGHT"
	ConjoinedCategory string `json:"conjoinedCategory,omitempty"`

	// DistanceToNextLane: Gap between this lane and the next in meters.
	// This is relevant when the divider is physical, or a wide painted
	// area. For regular painted single or double lines, there is no gap.
	// This distance is duplicated between the innermost lanes for each
	// side. Note that this is not used to describe smallish islands - this
	// is only for long-running gaps. In particular, this models the median
	// width, the gap between HOV lanes/regular lanes on freeways, and the
	// road verge between a curb and sidewalk. Note on split roads: We can
	// model any split road with a median as a single sibling pair with this
	// distance set to the width of the median, or as two one-way sibling
	// pairs.
	DistanceToNextLane float64 `json:"distanceToNextLane,omitempty"`

	// Flow: The most logical path for the center of an object to travel
	// along within the lane. Typically, this is the lane's center line, but
	// doesn't have to be.
	Flow *GeostoreFlowLineProto `json:"flow,omitempty"`

	// LaneConnection: Connections to lanes of other segments at the end of
	// this segment. These connections model the connectivity where you
	// don't have to do a lane change maneuver. If any lane connection is
	// present, assume that all others are forbidden. Also note that segment
	// level restrictions do apply if present, and can disallow some turn
	// even if the lanes are connected. For instance, this can happen with
	// timed or vehicle type based restrictions on the segment. If lane
	// connectivity implies a segment-level restriction (can't transition to
	// some target segment), that restriction will also exist as a segment
	// level restriction. In effect - PathFinder does not have to look at
	// lane connectivity to figure out segment connectivity. Example:
	// Typically, lanes are just connected to one other lane. Example: A
	// splitting lane is connected to the two resulting lanes. Example: At
	// an intersection, a lane is connected to crossing lanes according to
	// how lanes are painted across the intersection. In the common case,
	// the target segment will be connected to the same intersection as this
	// segment. That will however NOT be true for complex intersections
	// where there is an intersection group. The connections will be across
	// the whole group, connecting to one of the outgoing segments from the
	// group. This is analogous to how we do turn restrictions around
	// intersection groups.
	LaneConnection []*GeostoreLaneProtoLaneConnection `json:"laneConnection,omitempty"`

	// LaneDividerCrossing: clang-format on Whether the divider to the
	// inside of this lane can be crossed. Note that we assume this is
	// symmetric, and that this also describes whether someone in the next
	// inside lane can cross to this one. The "inside" lane is the one with
	// a lower lane_number. Note on lane markers: We do not model the
	// painting, but only the resulting legality. There are many painted
	// marker styles and colors that lead to the same legality. We expect
	// Paint or Driveabout to render lanes stylized, with solid meaning
	// "can't cross", and dashed meaning "can cross". Note on varying
	// legality along segment: ALLOWED takes precedence - even if some small
	// portion has a restriction (such as right before an intersection) ,
	// the lane change will be ALLOWED.
	//
	// Possible values:
	//   "CROSSING_ALLOWED" - Cross at will.
	//   "CROSSING_DISALLOWED"
	//   "CROSSING_LEGALLY_DISALLOWED" - This is usually some painted
	// barrier
	//   "CROSSING_PHYSICALLY_IMPOSSIBLE" - This is either a patch of dirt,
	// or some barrier
	LaneDividerCrossing string `json:"laneDividerCrossing,omitempty"`

	// LaneFollowsSegmentBeginFraction: These indicate for what portion of
	// the segment the lane's flowline exactly follows the segment, and the
	// lane is of constant width. This will be set to not include the whole
	// segment where there is a split/turn/merge at either end of the lane.
	// The painting of the lane should completely synthesize the lane
	// geometry outside of this portion, connecting it to neighboring lanes
	// to make graphical nice.
	LaneFollowsSegmentBeginFraction float64 `json:"laneFollowsSegmentBeginFraction,omitempty"`

	LaneFollowsSegmentEndFraction float64 `json:"laneFollowsSegmentEndFraction,omitempty"`

	// LaneNumber: Lanes are numbered from inside of the road outward, i.e.
	// the lane next to the center line is lane 0. The lanes then stack
	// outwards, towards the side that one drives on this segment (right or
	// left). NOTE: do NOT use the lane_number as index for lookup.
	// Lane_number is not guaranteed to match the segment.lane repeated
	// field index.
	LaneNumber int64 `json:"laneNumber,omitempty"`

	// LaneToken: A token that can be used to identify the version of the
	// data about this lane.
	LaneToken string `json:"laneToken,omitempty"`

	// Metadata: Field-level metadata for this lane.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Restriction: Restrictions that apply to this lane only. Examples
	// include HOV lanes. If a lane restriction implies a segment-level
	// restriction (can't route on the segment at all), that restriction
	// will also exist as a segment level restriction. In effect -
	// PathFinder does not have to look at lane restrictions to figure out
	// segment restrictions.
	Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"`

	// Shared: True if this lane is usable in both directions (left-turn
	// lane, reversing lane, one-lane road, etc). To get the total number of
	// lanes for a road, add up the lanes in each direction counting 0.5 for
	// each shared lane.
	Shared bool `json:"shared,omitempty"`

	// StopLine: References to any gcid:physical_lane_marker features that
	// intersect this lane, with the implication that a moving vehicle
	// should stop there.
	StopLine []*GeostoreFeatureIdProto `json:"stopLine,omitempty"`

	// Surface: clang-format on
	// LINT.ThenChange(//depot/google3/geostore/base/proto/segment.proto)
	// Unlike the surface in SegmentProto, this field does not have a
	// default value. This is because the lane-level surface overrides the
	// segment-level surface. The lane's surface should be unset unless
	// explicitly overriding the segment's surface.
	//
	// Possible values:
	//   "SURFACE_UNKNOWN" - RESERVED
	//   "SURFACE_PAVED"
	//   "SURFACE_ASPHALT"
	//   "SURFACE_CONCRETE"
	//   "SURFACE_CHIPSEAL"
	//   "SURFACE_BRICK"
	//   "SURFACE_SETT"
	//   "SURFACE_COBBLESTONE"
	//   "SURFACE_UNPAVED"
	//   "SURFACE_GRAVEL"
	//   "SURFACE_DIRT"
	//   "SURFACE_SAND"
	Surface string `json:"surface,omitempty"`

	// Type: clang-format on
	//
	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "TYPE_NORMAL"
	//   "TYPE_PASSING" - These are usually shared lanes, usable for passing
	// by either direction.
	//   "TYPE_LEFT_TURN"
	//   "TYPE_LEFT_TURN_OFF" - Typical left turn at intersection.
	//   "TYPE_LEFT_TURN_ON_OFF" - Lane used both for cars turning left to a
	// side street, and for cars from side streets turning left onto the
	// larger road.
	//   "TYPE_RIGHT_TURN"
	//   "TYPE_RIGHT_TURN_OFF" - Typical right turn at intersection.
	//   "TYPE_RIGHT_TURN_ON_OFF" - Lane used both for cars turning right to
	// a side street, and for cars from side streets turning right onto the
	// larger road (in left-side driving countries).
	//   "TYPE_BICYCLE"
	//   "TYPE_PARKING"
	//   "TYPE_PARKING_IMPLIED" - This lane represents the common case of
	// parking along the curb. It is generally not a drivable lane.
	//   "TYPE_PARKING_MARKED" - Parking with marked stalls.
	//   "TYPE_EXIT_ENTRANCE" - Lanes that are temporary, for
	// acceleration/deceleration, or that will split off.
	//   "TYPE_EXIT_LANE" - A lane that is used for exiting the core road.
	//   "TYPE_ENTRANCE_LANE" - An acceleration/merging lane.
	//   "TYPE_PEDESTRIAN" - A bidirectional walking lane, such as a
	// sidewalk. The walking lane is implied to be on the side of the road
	// as specified by the segment's "on_right" flag. The pedestrian lane
	// should therefore be on the outside of a road's traffic lanes.
	// Presence of a pedestrian lane implies that we have a sidewalk or
	// other facility away from the road surface where pedestrians walk. If
	// a road does not have a pedestrian lane, this means there is no space
	// or facility for pedestrians to walk, or that pedestrians walk on the
	// wide shoulder. The pedestrian lane, width, and distance_to_next_lane
	// controls where Pathfinder draws the pedestrian polyline. As described
	// in go/hdwalking++, the polyline is computed as (pl = pedestrian lane,
	// s = segment): offset = s.distance_to_edge + pl.distance_to_next_lane
	// + pl.width / 2
	//   "TYPE_SIDEWALK_SHOULDER" - A special shoulder lane present on
	// narrow roads in Japan that may double as a sidewalk. This isn’t a
	// subset of TYPE_PEDESTRIAN since it may have either uses and is not
	// separated by a curb.
	//   "TYPE_VEHICLE_SHOULDER" - Represents a lane that is wide enough to
	// park or drive slowly on and is physically accessible from the main
	// roadway. This is part of road surface that’s not used for normal
	// flow of traffic but can be used for emergency purposes, such as
	// emergency stopping and parking or by emergency vehicles. These are
	// often known as emergency use lanes. This should generally be either
	// first or last lane on the road (not counting pedestrian lanes if
	// present). NOTE: In may cases, this may be colloquially called a
	// “shoulder”, but road shoulders may include other areas that are
	// not readily accessible, especially at speed.
	//   "TYPE_OFFSET" - This represents an “offset” lane that doesn’t
	// really carry useful semantics but can be used to fill in “gaps”
	// between the sum total of lane widths and the road as represented by
	// distance_to_edge.
	Type string `json:"type,omitempty"`

	// Width: Width of this lane in meters. In many cases, we will collect
	// this data by dividing the total road width by the number of lanes. On
	// accuracy: This is a rough average width along this segment. If and
	// when we wanted to be more accurate, we'd extend this schema to have
	// full polygons for segments/lanes rather than just this average width.
	Width float64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingMarker") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingMarker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLaneProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLaneProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreLaneProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreLaneProto
	var s1 struct {
		DistanceToNextLane              gensupport.JSONFloat64 `json:"distanceToNextLane"`
		LaneFollowsSegmentBeginFraction gensupport.JSONFloat64 `json:"laneFollowsSegmentBeginFraction"`
		LaneFollowsSegmentEndFraction   gensupport.JSONFloat64 `json:"laneFollowsSegmentEndFraction"`
		Width                           gensupport.JSONFloat64 `json:"width"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DistanceToNextLane = float64(s1.DistanceToNextLane)
	s.LaneFollowsSegmentBeginFraction = float64(s1.LaneFollowsSegmentBeginFraction)
	s.LaneFollowsSegmentEndFraction = float64(s1.LaneFollowsSegmentEndFraction)
	s.Width = float64(s1.Width)
	return nil
}

type GeostoreLaneProtoLaneConnection struct {
	// BoundingMarker: References to any gcid:physical_lane_marker features
	// that bound this lane connection.
	BoundingMarker []*GeostoreBoundingMarkerProto `json:"boundingMarker,omitempty"`

	// ConnectionToken: A token that can be used to identify the version of
	// the data about this lane connection.
	ConnectionToken string `json:"connectionToken,omitempty"`

	// Curve: Specifies how the flowline should be synthesized in this
	// connection region. If unspecified, heuristics may be used to pick a
	// sweep shape based on retraction values or neighboring curves.
	Curve *GeostoreCurveConnectionProto `json:"curve,omitempty"`

	// Flow: The most logical path for the center of an object to travel
	// along within the lane connection. Typically, this is the lane
	// connection's center line, but doesn't have to be.
	Flow *GeostoreFlowLineProto `json:"flow,omitempty"`

	// LaneNumber: This is the lane number on the target segment. This field
	// is not set if the target segment doesn't have lanes, or we don't know
	// the exact connectivity.
	LaneNumber int64 `json:"laneNumber,omitempty"`

	// PrimaryConnection: True if this connects to the unique, natural
	// continuation of the current lane. At most one LaneConnection per lane
	// can have this field set true. This attribute is of interest to ADAS
	// providers as a hint to which lane a vehicle is likely to follow, in
	// the absence of other information about the vehicle's planned path.
	PrimaryConnection bool `json:"primaryConnection,omitempty"`

	// Segment: This reference to the other segment is weak, since strong
	// would blow up bounds of all segments.
	Segment *GeostoreFeatureIdProto `json:"segment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingMarker") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingMarker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLaneProtoLaneConnection) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLaneProtoLaneConnection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLanguageTaggedTextProto: Represents a piece of text with an
// associated language.
type GeostoreLanguageTaggedTextProto struct {
	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See
	// http://go/geo-schema-reference/feature-properties/languages.md
	Language string `json:"language,omitempty"`

	// Text: The text (UTF-8 encoding).
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLanguageTaggedTextProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLanguageTaggedTextProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLevelProto: A feature used to represent a logical level, e.g.
// floor. A feature belonging to a given level should point to the level
// feature using relation RELATION_ON_LEVEL. The standard feature
// properties are interpreted as follows: name - Levels should have
// names according to the following: * Short, elevator-style names, such
// as "L" for "Lobby" and "2" for "Second floor", must be included and
// must be tagged with FLAG_ABBREVIATED. There must be an unambiguous
// "best" abbreviated name. * Longer names such as "Ticketing" or "Upper
// Level" may be present when the level has a specific name. *
// Non-abbreviated names should only be added if they are known to
// meaningfully expand upon the abbreviated name. For example, the long
// name "Observation Deck 2" for the abbreviated name "OD2" is a good
// additional name. In contrast, the name "Level 2" for the abbreviated
// name "2" is not desired. address - This should always be empty.
// point, polyline, polygon, center - These should never be set (since
// we are representing a logical entity). preferred_viewport - This
// should be the approximate extent of the level. child - This should
// always be empty.
type GeostoreLevelProto struct {
	// Building: The building(s) to which this level belongs. A level will
	// typically belong to a single building, but it is valid for a single
	// level to be shared by multiple buildings (for example, a large
	// underground parking lot). These buildings refer back to the level via
	// another strong reference (the BuildingProto.level field).
	Building []*GeostoreFeatureIdProto `json:"building,omitempty"`

	// Number: The elevation of this level relative to the ground level, in
	// levels. 0 = ground floor (even in locales that call the ground floor
	// "1st floor"); 0.5 = between ground and first floor, eg mezzanine; 1 =
	// first floor (one level above ground floor); -3 = three levels below
	// ground floor.
	Number float64 `json:"number,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Building") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Building") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLevelProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLevelProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreLevelProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreLevelProto
	var s1 struct {
		Number gensupport.JSONFloat64 `json:"number"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Number = float64(s1.Number)
	return nil
}

type GeostoreLinearStripePatternProto struct {
	// Line: A linear marker may consist of one or more parallel physical
	// lines. These are ordered left to right along the direction of the
	// marker core polyline.
	Line []*GeostorePhysicalLineProto `json:"line,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Line") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Line") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLinearStripePatternProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLinearStripePatternProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLocaleLanguageProto: This message describes the details of a
// single language within a locale.
type GeostoreLocaleLanguageProto struct {
	// Language: The language associated with this preference. The external
	// form of a Google International Identifiers Initiative (III)
	// LanguageCode object. See google3/i18n/identifiers/languagecode.h for
	// details. We place extra restrictions on languages in addition to what
	// the III library requires. See
	// http://go/geo-schema-reference/feature-properties/languages.md
	Language string `json:"language,omitempty"`

	// Official: Flag to indicate if the associated language is "official"
	// within a locale.
	Official bool `json:"official,omitempty"`

	// Preference: This value represents the preference of the associated
	// language within a locale. It must be between 0.0 and 1.0.
	Preference float64 `json:"preference,omitempty"`

	// SpeakingPercent: Percentage of population that can speak the
	// associated language within a locale. It must be between 0 and 100.
	SpeakingPercent float64 `json:"speakingPercent,omitempty"`

	// WritingPercent: Percentage of population that can write the
	// associated language within a locale. It must be between 0 and 100.
	WritingPercent float64 `json:"writingPercent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLocaleLanguageProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLocaleLanguageProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreLocaleLanguageProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreLocaleLanguageProto
	var s1 struct {
		Preference      gensupport.JSONFloat64 `json:"preference"`
		SpeakingPercent gensupport.JSONFloat64 `json:"speakingPercent"`
		WritingPercent  gensupport.JSONFloat64 `json:"writingPercent"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Preference = float64(s1.Preference)
	s.SpeakingPercent = float64(s1.SpeakingPercent)
	s.WritingPercent = float64(s1.WritingPercent)
	return nil
}

// GeostoreLocaleProto: A locale is a meta-feature that describes the
// geographic extent of localization preferences such as the local
// language, and formatting conventions for numbers, dates and monetary
// values. Multilingual areas may be contained by multiple locales. We
// try to model locales fine-grained enough for deciding which languages
// are typically used within a city. For example, while French is an
// official language for all of Switzerland, we would prefer to have
// Zurich contained by a separate (more fine-grained) Swiss-German
// locale indicating that German, not French, is the predominantly
// spoken language in this city. Note that language borders are
// frequently considered a political question and often don't have
// clearly defined extents. For example, California has a significant
// Spanish-speaking population, but Spanish is not an official language
// of California.
type GeostoreLocaleProto struct {
	// Language: This holds the list of languages spoken within a locale.
	Language []*GeostoreLocaleLanguageProto `json:"language,omitempty"`

	// LocalizationPolicyId: The ID of the localization policy (from
	// googledata/geostore/localization/localization_policies.textpb) to
	// apply to features that have this locale as their best match locale.
	// Localization policy IDs are arbitrary identifiers that uniquely
	// distinguish a set of language-selection rules.
	LocalizationPolicyId string `json:"localizationPolicyId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLocaleProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLocaleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreLogicalBorderProto: A logical border is a grouping of border
// features, which together model a divide between two regions. The
// borders within this grouping share common attributes, such as the
// regions they divide, and may represent a conceptual group of borders,
// of which may be wholly disputed, wholly undisputed, or a mixture of
// disputed and undisputed. Note that any borders within this group may
// be part of multiple logical borders. A logical border is required to
// have a name describing what the grouping represents (e.g. "US -
// Mexico Border", "Kosovo - Serbia Border (Disputed)").
type GeostoreLogicalBorderProto struct {
	// BorderSegment: All the border segments which make up this logical
	// border. Border segments must be TYPE_BORDER features which have the
	// same left/right features. This is a many-to-many bidirectional
	// relationship, so any border segment within this list might be part of
	// another logical border.
	BorderSegment []*GeostoreFeatureIdProto `json:"borderSegment,omitempty"`

	// Status: The logical border status identifies its legal status. This
	// is similar to the BorderStatus present within border segments, but
	// applies to the group as a whole.
	//
	// Possible values:
	//   "STATUS_UNSPECIFIED" - The logical border is neither entirely
	// composed of either normal nor disputed border segments. There are no
	// guarantees about the BorderStatus of its border segments.
	//   "STATUS_NORMAL" - This status should be used when both parties
	// agree on the location of the border. These might be called "de jure"
	// borders. Most borders will have this status. This status requires
	// that all border segments that make up this logical border have normal
	// border segments.
	//   "STATUS_DISPUTED" - This status should be used when the two parties
	// disagree on the location of the border. This status requires that all
	// border segments are themselves disputed.
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BorderSegment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BorderSegment") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreLogicalBorderProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreLogicalBorderProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreMediaItemProto: Media item attached to an element of price
// list.
type GeostoreMediaItemProto struct {
	// GoogleUrl: The FIFE url associated with the media. NOTE: This FIFE
	// URL must be PII-free, see go/product-catalogue-photo-storage
	GoogleUrl string `json:"googleUrl,omitempty"`

	// Possible values:
	//   "MEDIA_FORMAT_UNSPECIFIED" - Format unspecified.
	//   "MEDIA_FORMAT_PHOTO" - Media item is a photo.
	MediaFormat string `json:"mediaFormat,omitempty"`

	// MediaKey: The mediaKey associated with the media. NOTE: This media
	// key must be PII-free, see go/product-catalogue-photo-storage
	MediaKey string `json:"mediaKey,omitempty"`

	MediaSize *GeostoreMediaItemProtoMediaSize `json:"mediaSize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GoogleUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GoogleUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreMediaItemProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreMediaItemProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreMediaItemProtoMediaSize: Width and height of the original
// photo in pixels.
type GeostoreMediaItemProtoMediaSize struct {
	OriginalHeightPx int64 `json:"originalHeightPx,omitempty"`

	OriginalWidthPx int64 `json:"originalWidthPx,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OriginalHeightPx") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OriginalHeightPx") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreMediaItemProtoMediaSize) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreMediaItemProtoMediaSize
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreNameProto: A name for a Feature (street name, point of
// interest, city, building, etc). We currently use NameProto for two
// essentially disjoint purposes: 1. Common names, which can be
// language-specific, or have other kinds of variations. 2. Opaque IDs,
// such as postal codes, which only have the `text` field set, and
// potentially some flags. This includes internal-only features like
// template ids. Each NameProto representing a common name corresponds
// to an assertion that a fluent speaker or writer of a language would
// recognize NameProto.text to name the given feature in that language.
// As such, NameProtos are stored in a repeated field, often having: 1.
// multiple names with the same text and varying languages, and 2.
// multiple names with the same language and varying texts.
type GeostoreNameProto struct {
	// Flag: clang-format on The set of flags that apply to this name.
	//
	// Possible values:
	//   "FLAG_ANY" - ABSTRACT
	//   "FLAG_IN_LOCAL_LANGUAGE" - This name is in one of the local
	// languages. A local language is one readable by local people, where
	// all language/script/region subtags in the language field are local.
	// E.g. "ru" is local in Russia, but "ru-Latn" (transliterated in Latin
	// script) is not local. This is the opposite of
	// FLAG_NOT_IN_LOCAL_LANGUAGE. In general, a given name should have
	// either FLAG_IN_LOCAL_LANGUAGE or FLAG_NOT_IN_LOCAL_LANGUAGE
	// specified. Importers that are unsure should not set either flag. It
	// doesn't make sense to set this flag unless you also specify a
	// language. NOTE: unlike most other flags in this enumeration, this
	// flag has to do with the language field, NOT to the text (and
	// {raw,short}_text fields).
	//   "FLAG_PREFERRED" - This is the most commonly recognized name for
	// this feature (for a given language, when languages apply). This flag
	// is not compatible with the following flags: - FLAG_NEVER_DISPLAY -
	// FLAG_OBSCURE
	//   "FLAG_OFFICIAL" - This name is officially recognized by the
	// government. This flag is not compatible with FLAG_SUSPICIOUS.
	//   "FLAG_OBSCURE" - This name is not commonly known. This flag is used
	// on names that are not commonly known, or not "standard", but which we
	// wish to have so clients can search on them. An example would be
	// "Philly" instead of "Philadelphia".
	//   "FLAG_ON_SIGNS" - ABSTRACT
	//   "FLAG_EXIT_NAME_NUMBER" - This name is an exit name/number found on
	// signs.
	//   "FLAG_EXIT_NAME" - This flag is used to differentiate exit names
	// from exit numbers on signs that have both.
	//   "FLAG_INTERCHANGE_NAME" - The highway sign is labeling a highway
	// interchange instead of an exit. In several European countries
	// interchanges are differentiated from highway exits.
	//   "FLAG_EXIT_NUMBER" - This flag is used to differentiate exit
	// numbers from exit names on signs that have both. This flag is not
	// compatible with FLAG_ROUTE_NUMBER.
	//   "FLAG_INTERCHANGE_NUMBER" - The highway sign is labeling a highway
	// interchange the same manner as FLAG_INTERCHANGE_NAME.
	//   "FLAG_TRANSIT_HEADSIGN" - The headsign of a transit vehicle, often
	// the name of the destination.
	//   "FLAG_CONNECTS_DIRECTLY" - The road sign target is directly
	// connected (e.g., at end of ramp).
	//   "FLAG_CONNECTS_INDIRECTLY" - The road sign target is not directly
	// connected (e.g., must travel some additional distance).
	//   "FLAG_INTERSECTION_NAME" - This name is an intersection name found
	// on signs. Usually we can just use the name of a
	// TYPE_INTERSECTION_GROUP feature. However, there are road signs on
	// some intersections in Japan, especially in Hokkaido region where the
	// intersection name is considered "directional" (i.e. an intersection
	// could have multiple names depending on directions drivers or
	// pedestrians approach from). Many people think of them as
	// "intersection names", but that's not really what they are. We want to
	// model them as road signs, because that's really what they are. This
	// flag is supposed to be used by Pathfinder to generate the appropriate
	// maneuver texts where such a named intersection is involved.
	//   "FLAG_VANITY" - This is a vanity name (usually an alternate name
	// for a section of road in honor of some person).
	//   "FLAG_ROUTE_NUMBER" - This name is a route number from an official
	// numbering system for highways or similar routes (like bicycle
	// routes). Street names (even numbered ones like in Manhattan) are
	// excluded. The name (both text and short_text) should follow a
	// strictly-defined format determined by the official numbering system.
	// Route numbers may be assigned to segments on city streets as well as
	// highways. (US-101 passing through San Francisco is an example that
	// has both.) Historic route names that are no longer part of an
	// official numbering system (like the former US-66) are not route
	// numbers. This flag is not compatible with FLAG_EXIT_NUMBER.
	//   "FLAG_COUNTRY_CODE_2" - This name is a two-letter ISO 3166-1
	// country code. It has code 0x81 instead of 0x8 for historical reasons
	// (FLAG_COUNTRY_CODE and FLAG_COUNTRY_CODE_3 were removed in the belief
	// that we only want one way to represent a country code in the Geo
	// Schema).
	//   "FLAG_ABBREVIATED" - An abbreviated version of the name, for
	// example "CA" for California. This flag should be used for postal
	// abbreviations that one would expect to see in an address. It should
	// also be used for names where one of the component words is
	// abbreviated (e.g. "Mass." for Massachusetts, "NWFP" for the
	// North-West Frontier Province in Pakistan, or "L" for the Lobby level
	// in a building). Shortened forms of names (e.g. "Kingston" rather than
	// "Kingston-upon-Hull") should be marked obscure rather than
	// abbreviated. This flag should be used for names that are feature
	// specific abbreviations. For shortened name versions based on regular,
	// per-term transformations (ex: '1st Street' -> '1st St'), use the
	// short_text field instead.
	//   "FLAG_ID" - ABSTRACT
	//   "FLAG_DESIGNATED_MARKET_AREA_ID" - This name is a Designated Market
	// Area ID number (ex: 501)
	//   "FLAG_IATA_ID" - This name is a three-letter IATA airport code (ex
	// SFO, ZRH).
	//   "FLAG_ICAO_ID" - This name is a four-letter ICAO airport code (ex
	// KSFO, LSZH).
	//   "FLAG_ISO_3166_2" - This name is the ISO 3166-2 country subdivision
	// code.
	//   "FLAG_COUNTRY_SPECIFIC_ID" - This name is the country specific ID.
	// For example, China government specifies an admin code for each
	// administrative area (province, city and district).
	//   "FLAG_LANGUAGE_CODE" - This name is an IETF BCP 47 language code,
	// for example "fr-CA". Previously used for names of locales. See
	// locale.proto for new way of defining this information.
	//   "FLAG_TIMEZONE_ID" - This name is a timezone identifier in the
	// Olson database, for example "Europe/Zurich". All timezones have an
	// Olson identifier, understood by POSIX and Google's i18n/identifiers
	// libraries. This flag applies only to features of TYPE_TIMEZONE type
	// and at most one name should have this flag set
	//   "FLAG_PHONE_NUMBER_PREFIX" - This name is the prefix for a phone
	// number, starting with + and followed by a country code. This flag
	// applies only to features of TYPE_PHONE_NUMBER_PREFIX type and at most
	// one name should have this flag set.
	//   "FLAG_PHONE_NUMBER_AREA_CODE" - This name is the commonly used name
	// for the area code of a phone number, including the national prefix if
	// applicable. This flag applies only to features of
	// TYPE_PHONE_NUMBER_AREA_CODE type and at most one name should have
	// this flag set.
	//   "FLAG_TRANSLITERATED" - The flag used to indicate the name was
	// transliterated from some other character set. For example, this flag
	// would be set on names transliterated from the Cyrillic or Greek
	// alphabets to a Latin alphabet. The correct approach is to use the
	// Google III language code to specify the appropriate language. For
	// example, Greek transliterated into a Latin alphabet should have a
	// language code of "el-Latn".
	//   "FLAG_NOT_ON_SIGNS" - There are two kinds of street signs:
	// "location signs" and "guidance signs". Location signs are the ones
	// you see that tell you where you are. "Ah, I'm on 85th Street and I'm
	// crossing 6th Avenue." Guidance signs are the ones that give you hints
	// about how to get where you want to go. "Ah, I should go that way to
	// get on I-5 to Seattle." This flag is talking about location signs.
	// You'll find this flag on route names when then name is never posted
	// on location signs. This flag is not compatible with flags in the
	// FLAG_ON_SIGNS category.
	//   "FLAG_NOT_IN_LOCAL_LANGUAGE" - This name is not in one of the local
	// languages. A local language is one readable by local people, where
	// all language/script/region subtags in the language field are local.
	// E.g. "ru" is local in Russia, but "ru-Latn" (transliterated in Latin
	// script) is not local. This is the opposite of FLAG_IN_LOCAL_LANGUAGE.
	// In general, a given name should have either FLAG_IN_LOCAL_LANGUAGE or
	// FLAG_NOT_IN_LOCAL_LANGUAGE specified. Importers that are unsure
	// should not set either flag. It doesn't make sense to set this flag
	// unless you also specify a language. NOTE: unlike most other flags in
	// this enumeration, this flag has to do with the language field, NOT to
	// the text (and {raw,short}_text fields).
	//   "FLAG_ROUNDABOUT_ROUTE" - This flag is set on routes attached to
	// roundabout segments if and only if this name does not appear on any
	// of the segments incident on the roundabout. This flag can be used by
	// clients to determine which names on roundabouts are more useful than
	// others when displaying to users.
	//   "FLAG_NEVER_DISPLAY" - Never display this name to a user. This flag
	// is typically used for politically sensitive names such as "Taiwan,
	// Province of China". Any feature which has a name with this flag
	// should have another name without it so we have something to display
	// to the user.
	//   "FLAG_BICYCLE_ROUTE" - Routes with these names are common bicycle
	// routes. This includes bicycle trails and routes along shared roadways
	// to popular destinations for cyclists. Unnamed bicycle routes along
	// named shared roadways should not have names of this type. This flag
	// exists so that we can avoid showing bicycle route names in driving
	// directions, while still showing them in bicycling directions.
	//   "FLAG_MACHINE_GENERATED" - This name is generated automatically by
	// the transliteration pipeline based on an existing name in a different
	// language. Contact Maps Translation team (go/maps-translation) for
	// details.
	//   "FLAG_SUSPICIOUS" - This name may not be a correct name for a
	// feature. It communicates to clients that the name may not be
	// trustworthy. Examples are names of features that are too general
	// ("swimming pool", "hardware store" etc) or those that incorrectly
	// match names of prominent political features (businesses, transit
	// stations etc named after sublocalities). This flag is not compatible
	// with FLAG_OFFICIAL.
	Flag []string `json:"flag,omitempty"`

	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. These strings
	// should be treated as opaque blobs. You can use
	// LanguageCodeConverter::FromOther to convert the string to a
	// LanguageCode reference. You can then call methods on the LanguageCode
	// class to extract language/script/region subtags (if any). See also
	// http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See go/geo-schema-reference/feature-properties/languages.
	// This field may be missing if the name does not have a concept of
	// language but should be set if the language is unknown.
	Language string `json:"language,omitempty"`

	// Metadata: Field-level metadata for this name. NOTE: there are
	// multiple NameProto fields in the Geo Schema. Metadata here is only
	// expected to be present on FeatureProto.name[].
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// RawText: ** DEPRECATED ** The name text provided in the original
	// source data (UTF-8 encoding). This is the text provided in the source
	// data unmodified with the exception of being converted to UTF-8 and
	// stripping extra leading, trailing and duplicate whitespaces (if
	// necessary).
	RawText string `json:"rawText,omitempty"`

	// ShortText: The short name text (UTF-8 encoding).
	// Acronyms/abbreviations should be consistently used, for example "NE
	// 57th St" rather than "Northeast 57th Street", "N.E 57th St." or some
	// other variant. This field should be populated with the chosen
	// canonical version of the shortened name, based on per-term
	// transformations. For feature specific abbreviations (such as 'CA' for
	// 'California'), one should define a separate name with
	// FLAG_ABBREVIATED set. For other variants of the shortened name that
	// are not the canonical one, devise client based logic (ex: query
	// rewriting rules).
	ShortText string `json:"shortText,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// name. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// Text: The name text (UTF-8 encoding). Acronyms/abbreviations should
	// be fully expanded, for example "Northeast 57th Street" rather than
	// "NE 57th St". They can be shortened at display or geocode time. This
	// decision prevents ambiguity over such issues as whether "St"
	// represents "Street" or "Saint". However, it pushes language-specific
	// knowledge into code. We will have libraries and data files to
	// contract acronyms/abbreviations at run-time.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Flag") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Flag") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreNameProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreNameProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreOntologyRawGConceptInstanceContainerProto: The container for
// all GConceptInstances associated with a feature.
type GeostoreOntologyRawGConceptInstanceContainerProto struct {
	Instance []*GeostoreOntologyRawGConceptInstanceProto `json:"instance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Instance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Instance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreOntologyRawGConceptInstanceContainerProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreOntologyRawGConceptInstanceContainerProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreOntologyRawGConceptInstanceProto: A RawGConceptInstanceProto
// contains all data required by both internal and external clients. We
// store the 'public' data in a GConceptInstanceProto and the 'private'
// data inside of RawGConceptInstanceProto. NOTE: this doesn't really
// match the design we want anymore. Please talk to the Geo Schema team
// if you are planning to make use of the "private" fields below.
type GeostoreOntologyRawGConceptInstanceProto struct {
	// Instance: This is the 'public' section of the GConceptInstance.
	Instance *GeostoreGConceptInstanceProto `json:"instance,omitempty"`

	// IsAddedByEdit: ** DEPRECATED ** Was this GConcept explicitly added by
	// an edit? Examples of gconcepts not added by edits include those
	// inferred through geo ontology and those mapped from legacy category
	// forms by the feature updater. Note that it is possible for both
	// is_added_by_edit and is_inferred to be true - it means this gconcept
	// is added by an edit and there is also another more fine-grained
	// gconcept added by an edit.
	IsAddedByEdit bool `json:"isAddedByEdit,omitempty"`

	// IsInferred: RESERVED
	IsInferred bool `json:"isInferred,omitempty"`

	// Provider: ** DEPRECATED ** These two fields combined describe the
	// source of a GConceptInstance. They are based on
	// geostore/base/proto/datasourceprovider.proto. Their use has been
	// deprecated. Use the FieldMetadataProto inside instance instead.
	//
	// Possible values:
	//   "PROVIDER_ANY" - ABSTRACT The root of all provider types. This
	// should never be present on an actual feature, but can be useful when
	// calling InCategory.
	//   "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel
	//   "PROVIDER_NAVTEQ"
	//   "PROVIDER_TELE_ATLAS" - ABSTRACT
	//   "PROVIDER_TELE_ATLAS_MULTINET"
	//   "PROVIDER_TELE_ATLAS_CODEPOINT"
	//   "PROVIDER_TELE_ATLAS_GEOPOST"
	//   "PROVIDER_TELE_ATLAS_DATAGEO"
	//   "PROVIDER_TELE_ATLAS_ADDRESS_POINTS"
	//   "PROVIDER_TELCONTAR"
	//   "PROVIDER_EUROPA"
	//   "PROVIDER_ROYAL_MAIL"
	//   "PROVIDER_GOOGLE" - ABSTRACT
	//   "PROVIDER_GOOGLE_HAND_EDIT"
	//   "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must
	// be full ints. The next available ID is: 0x111730B1
	//   "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT
	//   "PROVIDER_GOOGLE_GT_FUSION"
	//   "PROVIDER_GOOGLE_ZAGAT_CMS"
	//   "PROVIDER_GOOGLE_PLACE_NAVBOOST"
	//   "PROVIDER_GOOGLE_FOOTPRINT"
	//   "PROVIDER_GOOGLE_PRODUCT_TERMS"
	//   "PROVIDER_GOOGLE_POINTCARDS"
	//   "PROVIDER_GOOGLE_BUSINESS_CHAINS"
	//   "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_PRONUNCIATIONS"
	//   "PROVIDER_GOOGLE_DUMPLING"
	//   "PROVIDER_GOOGLE_DISTILLERY"
	//   "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_RELATION_MINER"
	//   "PROVIDER_GOOGLE_MAPSPAM"
	//   "PROVIDER_GOOGLE_ROSE"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS"
	//   "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider
	// meant for sending wipeout requests to mapfacts.
	//   "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH"
	//   "PROVIDER_GOOGLE_BEEGEES"
	//   "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_GEO_WORLDMAPS"
	//   "PROVIDER_GOOGLE_GEO_MODERATION"
	//   "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_LOCAL_ALCHEMY"
	//   "PROVIDER_GOOGLE_KEROUAC"
	//   "PROVIDER_GOOGLE_MOBRANK"
	//   "PROVIDER_GOOGLE_RAPTURE"
	//   "PROVIDER_GOOGLE_CULTURAL_INSTITUTE"
	//   "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS"
	//   "PROVIDER_GOOGLE_TACTILE_MAPS"
	//   "PROVIDER_GOOGLE_MAPS_FOR_MOBILE"
	//   "PROVIDER_GOOGLE_GEO_REALTIME"
	//   "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos
	// with this provider to identify whether or not a feature is a
	// Prominent Place! Instead, use the proper API,
	// localsearch_clustering::QualityTierHelper::IsProminentPlace().
	//   "PROVIDER_GOOGLE_PLACE_ACTIONS"
	//   "PROVIDER_GOOGLE_GT_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_WAZE"
	//   "PROVIDER_GOOGLE_ONTHEGO"
	//   "PROVIDER_GOOGLE_GT_IMPORT"
	//   "PROVIDER_GOOGLE_STRUCTURED_DATA"
	//   "PROVIDER_GOOGLE_HELICOPTER"
	//   "PROVIDER_GOOGLE_ROLLBACK"
	//   "PROVIDER_GOOGLE_RIGHTS_REPAIR"
	//   "PROVIDER_GOOGLE_PERFUME"
	//   "PROVIDER_GOOGLE_MAPS_TRANSLATION"
	//   "PROVIDER_GOOGLE_CALL_ME_MAYBE"
	//   "PROVIDER_GOOGLE_LOCAL_UNIVERSAL"
	//   "PROVIDER_GOOGLE_CROUPIER"
	//   "PROVIDER_GOOGLE_SKYSMART"
	//   "PROVIDER_GOOGLE_RIDDLER"
	//   "PROVIDER_GOOGLE_ROADCLOSURES"
	//   "PROVIDER_GOOGLE_SPORE" - UMBRELLA
	//   "PROVIDER_GOOGLE_LOCALIZATION"
	//   "PROVIDER_GOOGLE_CATTERMS"
	//   "PROVIDER_GOOGLE_GT_FIELD_OPS"
	//   "PROVIDER_GOOGLE_MATCHMAKER"
	//   "PROVIDER_GOOGLE_ARBITRATION"
	//   "PROVIDER_GOOGLE_BIZBUILDER_OPS"
	//   "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS"
	//   "PROVIDER_GOOGLE_GT_DRAFTY"
	//   "PROVIDER_GOOGLE_HOTELADS_OPS"
	//   "PROVIDER_GOOGLE_MARKERS"
	//   "PROVIDER_GOOGLE_STATE_MACHINE"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE"
	//   "PROVIDER_GOOGLE_BIKESHARE"
	//   "PROVIDER_GOOGLE_GHOSTWRITER"
	//   "PROVIDER_GOOGLE_EDIT_PLATFORM"
	//   "PROVIDER_GOOGLE_BLUE_GINGER"
	//   "PROVIDER_GOOGLE_GEO_TIGER"
	//   "PROVIDER_GOOGLE_HYADES"
	//   "PROVIDER_GOOGLE_WEBQUARRY"
	//   "PROVIDER_GOOGLE_GEO_MADDEN"
	//   "PROVIDER_GOOGLE_ANDROID_PAY"
	//   "PROVIDER_GOOGLE_OPENING_HOURS_TEAM"
	//   "PROVIDER_GOOGLE_LOCAL_DISCOVERY"
	//   "PROVIDER_GOOGLE_LOCAL_HEALTH"
	//   "PROVIDER_GOOGLE_UGC_MAPS"
	//   "PROVIDER_GOOGLE_FIBER"
	//   "PROVIDER_GOOGLE_REVGEO"
	//   "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END"
	//   "PROVIDER_GOOGLE_GEO_UGC_TASKS"
	//   "PROVIDER_GOOGLE_GEOCODING"
	//   "PROVIDER_GOOGLE_SPYGLASS"
	//   "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES"
	//   "PROVIDER_GOOGLE_GEO_CHANGES"
	//   "PROVIDER_GOOGLE_HUME"
	//   "PROVIDER_GOOGLE_MEGAMIND"
	//   "PROVIDER_GOOGLE_GT_ROADSYNTH"
	//   "PROVIDER_GOOGLE_FIREBOLT"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS"
	//   "PROVIDER_GOOGLE_UGC_SERVICES"
	//   "PROVIDER_GOOGLE_GEOALIGN"
	//   "PROVIDER_GOOGLE_GT_COMPOUNDS"
	//   "PROVIDER_GOOGLE_FOOD_ORDERING"
	//   "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS"
	//   "PROVIDER_GOOGLE_URAW"
	//   "PROVIDER_GOOGLE_FLYEYE"
	//   "PROVIDER_GOOGLE_YOUKE"
	//   "PROVIDER_GOOGLE_GT_ZEPHYR"
	//   "PROVIDER_GOOGLE_USER_SAFETY"
	//   "PROVIDER_GOOGLE_ADDRESS_MAKER"
	//   "PROVIDER_GOOGLE_UGC_PHOTOS"
	//   "PROVIDER_GOOGLE_GT_WINDCHIME"
	//   "PROVIDER_GOOGLE_SNAG_FIXER"
	//   "PROVIDER_GOOGLE_GEO_DEALS"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS"
	//   "PROVIDER_GOOGLE_PROPERTY_INSIGHTS"
	//   "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS"
	//   "PROVIDER_GOOGLE_GEO_PORTKEY"
	//   "PROVIDER_GOOGLE_ROAD_MAPPER"
	//   "PROVIDER_GOOGLE_LOCATION_PLATFORM"
	//   "PROVIDER_GOOGLE_POSTTRIP"
	//   "PROVIDER_GOOGLE_TRAVEL_DESTINATION"
	//   "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP"
	//   "PROVIDER_GOOGLE_USER"
	//   "PROVIDER_GOOGLE_STATION"
	//   "PROVIDER_GOOGLE_GEO_FOOD"
	//   "PROVIDER_GOOGLE_GEO_AR"
	//   "PROVIDER_GOOGLE_GEO_TEMPORAL"
	//   "PROVIDER_GOOGLE_SERVICES_MARKETPLACE"
	//   "PROVIDER_GOOGLE_IMT_CLEANUP"
	//   "PROVIDER_GOOGLE_GEO_FOOD_MENU"
	//   "PROVIDER_GOOGLE_CARENAV"
	//   "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA
	//   "PROVIDER_GOOGLE_DRIVING_UGC"
	//   "PROVIDER_GOOGLE_POLAR"
	//   "PROVIDER_GOOGLE_TRIWILD"
	//   "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS"
	//   "PROVIDER_GOOGLE_SA_FROM_WEB"
	//   "PROVIDER_GOOGLE_POI_ALIGNMENT"
	//   "PROVIDER_GOOGLE_SA_FROM_HULK"
	//   "PROVIDER_GOOGLE_SERVICES_INTERACTIONS"
	//   "PROVIDER_GOOGLE_ROADS_UGC_EDITOR"
	//   "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_DRIVING_VIZ"
	//   "PROVIDER_GOOGLE_GEO_TASKING"
	//   "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKADS"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKMATE"
	//   "PROVIDER_GOOGLE_CROWDTASK_FURBALL"
	//   "PROVIDER_GOOGLE_CROWDTASK_ADAP"
	//   "PROVIDER_GOOGLE_GPAY"
	//   "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS"
	//   "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION"
	//   "PROVIDER_GOOGLE_GEOTRACKER"
	//   "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_CLOSED_LOOP"
	//   "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS"
	//   "PROVIDER_GOOGLE_CORE_DATA_RIGHTS"
	//   "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS"
	//   "PROVIDER_GOOGLE_GEO_CONTENT_FIXER"
	//   "PROVIDER_GOOGLE_POLYGON_REFINEMENT"
	//   "PROVIDER_GOOGLE_HANASU"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS"
	//   "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS"
	//   "PROVIDER_GOOGLE_SA_QUALITY"
	//   "PROVIDER_GOOGLE_GDCE_CLEANUP"
	//   "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_DISCOVERY" - Shopping Attributes
	// Discovery
	//   "PROVIDER_GOOGLE_GEO_LDE"
	//   "PROVIDER_GOOGLE_GEO_SIGNAL_TRACKING"
	//   "PROVIDER_GOOGLE_UGC_AGGREGATION"
	//   "PROVIDER_GOOGLE_3D_BASEMAP"
	//   "PROVIDER_GOOGLE_MAPFACTS_PRIVACY"
	//   "PROVIDER_GOOGLE_GT_ALF"
	//   "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE"
	//   "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider
	// entries should be placed above.
	//   "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA
	//   "PROVIDER_GOOGLE_GEOWIKI"
	//   "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM"
	//   "PROVIDER_GOOGLE_SYNTHESIZED"
	//   "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for
	// teams that wish to integrate with components of the Geo Data
	// Infrastructure that require a valid provider. No production data
	// should ever be sent using this provider.
	//   "PROVIDER_GOOGLE_DISPUTED_AREAS"
	//   "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA
	//   "PROVIDER_GOOGLE_GROUNDS_BUILDER"
	//   "PROVIDER_GOOGLE_SESAME"
	//   "PROVIDER_GOOGLE_GT"
	//   "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range
	// extends the PROVIDER_GOOGLE hierarchy.
	//   "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION"
	//   "PROVIDER_GOOGLE_TRAVELSEARCH"
	//   "PROVIDER_GOOGLE_PANORAMIO"
	//   "PROVIDER_GOOGLE_YOUTUBE"
	//   "PROVIDER_GOOGLE_OLD"
	//   "PROVIDER_GOOGLE_STREETVIEW"
	//   "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW"
	//   "PROVIDER_GOOGLE_ZIPIT"
	//   "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES"
	//   "PROVIDER_GOOGLE_GOLDEN"
	//   "PROVIDER_GOOGLE_INNERSPACE"
	//   "PROVIDER_GOOGLE_MAPSEARCH"
	//   "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of
	// PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and
	// PROVIDER_GOOGLE_GEO_TIGER (for categories).
	//   "PROVIDER_GOOGLE_CROWDSENSUS"
	//   "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not
	// be used, since its range further extends the PROVIDER_GOOGLE
	// hierarchy. aka Local AI.
	//   "PROVIDER_GOOGLE_FREEBASE"
	//   "PROVIDER_GOOGLE_HOTELADS"
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGES"
	//   "PROVIDER_GOOGLE_PLACES_API"
	//   "PROVIDER_GOOGLE_NAMEHEATMAP"
	//   "PROVIDER_GOOGLE_MAPMAKER"
	//   "PROVIDER_GOOGLE_MAPMAKER_MOBILE"
	//   "PROVIDER_GOOGLE_MAPMAKER_PANCAKE"
	//   "PROVIDER_GOOGLE_MAPMAKER_V2"
	//   "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE"
	//   "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from
	// this provider. It is only used to identify features that must be
	// served on MapMaker.
	//   "PROVIDER_GOOGLE_GT_LOCAL"
	//   "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS"
	//   "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS"
	//   "PROVIDER_GOOGLE_ENTITY_NAVBOOST"
	//   "PROVIDER_GOOGLE_RELATED_PLACES"
	//   "PROVIDER_GOOGLE_KNOWN_FOR_TERMS"
	//   "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used,
	// since its range further extends the PROVIDER_GOOGLE hierarchy.
	// Synthetically generated areas (sublocalities/neighborhoods/ postal
	// codes/etc) based on dropped terms from approximate geocoding. More
	// info on go/syntheticareas.
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS"
	//   "PROVIDER_GOOGLE_CROSS_STREETS"
	//   "PROVIDER_GOOGLE_CORRIDORS"
	//   "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a
	// provider that aggregates positions of bicycle rental points that we
	// have agreements with to show on maps
	//   "PROVIDER_GOOGLE_CONCRETE_URLS"
	//   "PROVIDER_GOOGLE_LEANBACK"
	//   "PROVIDER_GOOGLE_LOCKED_LISTINGS"
	//   "PROVIDER_GOOGLE_MONITORING"
	//   "PROVIDER_GOOGLE_SPROUT"
	//   "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY"
	//   "PROVIDER_GOOGLE_GOBY"
	//   "PROVIDER_GOOGLE_PROBLEM_REPORT"
	//   "PROVIDER_GOOGLE_CANDID"
	//   "PROVIDER_GOOGLE_BIZBUILDER"
	//   "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been
	// depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.
	//   "PROVIDER_MAPDATA_SCIENCES"
	//   "PROVIDER_MAPONICS"
	//   "PROVIDER_SKI_RESORTS"
	//   "PROVIDER_ZENRIN"
	//   "PROVIDER_SANBORN"
	//   "PROVIDER_URBAN_MAPPING"
	//   "PROVIDER_US_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_US_CENSUS"
	//   "PROVIDER_US_POSTAL_SERVICE"
	//   "PROVIDER_US_GEOLOGICAL_SURVEY"
	//   "PROVIDER_US_GNIS"
	//   "PROVIDER_US_LANDSAT"
	//   "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY"
	//   "PROVIDER_US_NGA_GNS"
	//   "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines
	//   "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS"
	//   "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" -
	// NOAA
	//   "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC
	//   "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA
	//   "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry
	//   "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS"
	//   "PROVIDER_DMTI_SPATIAL"
	//   "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION"
	//   "PROVIDER_MAPLINK"
	//   "PROVIDER_KINGWAY"
	//   "PROVIDER_GEOCENTRE"
	//   "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS"
	//   "PROVIDER_CN_MAPABC"
	//   "PROVIDER_SMITHSONIAN_INSTITUTE"
	//   "PROVIDER_TRACKS_FOR_AFRICA"
	//   "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO
	//   "PROVIDER_LEADDOG"
	//   "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG"
	//   "PROVIDER_GISRAEL"
	//   "PROVIDER_BASARSOFT"
	//   "PROVIDER_MAPINFO"
	//   "PROVIDER_MAPIT"
	//   "PROVIDER_GEOBASE"
	//   "PROVIDER_ORION"
	//   "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY"
	//   "PROVIDER_ANASAT"
	//   "PROVIDER_MINED_POSTCODES"
	//   "PROVIDER_DMAPAS"
	//   "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY"
	//   "PROVIDER_CH_SBB"
	//   "PROVIDER_SKENERGY"
	//   "PROVIDER_GBRMPA"
	//   "PROVIDER_KOREA_POST"
	//   "PROVIDER_CN_AUTONAVI"
	//   "PROVIDER_MINED_POI"
	//   "PROVIDER_ML_INFOMAP"
	//   "PROVIDER_SNOOPER"
	//   "PROVIDER_GEOSISTEMAS"
	//   "PROVIDER_AFRIGIS"
	//   "PROVIDER_TRANSNAVICOM"
	//   "PROVIDER_EASYCONNECT"
	//   "PROVIDER_LANTMATERIET"
	//   "PROVIDER_LOGICA"
	//   "PROVIDER_MAPKING"
	//   "PROVIDER_DIANPING"
	//   "PROVIDER_GEONAV"
	//   "PROVIDER_HEIBONSHA"
	//   "PROVIDER_DEUTSCHE_TELEKOM"
	//   "PROVIDER_LINGUISTIC_DATA_CONSORTIUM"
	//   "PROVIDER_ACXIOM"
	//   "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395
	//   "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION"
	//   "PROVIDER_INFOUSA"
	//   "PROVIDER_INFOUSA_NIXIE"
	//   "PROVIDER_THOMSON_LOCAL"
	//   "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION"
	//   "PROVIDER_WIKIPEDIA"
	//   "PROVIDER_INFOBEL"
	//   "PROVIDER_MX_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY"
	//   "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO"
	//   "PROVIDER_TELEGATE"
	//   "PROVIDER_TELELISTAS"
	//   "PROVIDER_MAPCITY"
	//   "PROVIDER_EXPLAINER_DC"
	//   "PROVIDER_DAIKEI"
	//   "PROVIDER_NL_CHAMBER_OF_COMMERCE"
	//   "PROVIDER_KOREA_INFO_SERVICE"
	//   "PROVIDER_WIKITRAVEL"
	//   "PROVIDER_FLICKR"
	//   "PROVIDER_DIANCO"
	//   "PROVIDER_VOLT_DELTA"
	//   "PROVIDER_SG_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY"
	//   "PROVIDER_MAPBAR"
	//   "PROVIDER_LONGTU"
	//   "PROVIDER_SA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SA_SAUDI_POST"
	//   "PROVIDER_PEAKLIST"
	//   "PROVIDER_LOCAL_BUSINESS_CENTER"
	//   "PROVIDER_LOCAL_FEED_XML" - UMBRELLA
	//   "PROVIDER_WEB"
	//   "PROVIDER_RAILS_TO_TRAILS"
	//   "PROVIDER_INDIACOM"
	//   "PROVIDER_INFOMEDIA"
	//   "PROVIDER_PICASA"
	//   "PROVIDER_AT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN"
	//   "PROVIDER_AT_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_AT_AUSTRIA_POST"
	//   "PROVIDER_NO_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON"
	//   "PROVIDER_NO_POSTEN_NORGE_AS"
	//   "PROVIDER_CH_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_CH_SWISS_POST"
	//   "PROVIDER_CH_SWISSTOPO"
	//   "PROVIDER_CH_SWISS_NATIONAL_PARK"
	//   "PROVIDER_NAVIT"
	//   "PROVIDER_GEOSEARCH"
	//   "PROVIDER_DE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE"
	//   "PROVIDER_BUNDESNETZAGENTUR"
	//   "PROVIDER_SCHOBER_GROUP"
	//   "PROVIDER_MIREO"
	//   "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO"
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY"
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE"
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA"
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA"
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK"
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN"
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO"
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA"
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV"
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX"
	//   "PROVIDER_SG_PUBLIC_MUNICIPALITY"
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO"
	//   "PROVIDER_MAPCUBE"
	//   "PROVIDER_3D_REALITYMAPS"
	//   "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT"
	//   "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA"
	//   "PROVIDER_DISNEY"
	//   "PROVIDER_CYBERCITY"
	//   "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS"
	//   "PROVIDER_VIRTUAL_HUNGARY_LIMITED"
	//   "PROVIDER_VIRTUEL_CITY"
	//   "PROVIDER_SCREAMPOINT_INTERNATIONAL"
	//   "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN"
	//   "PROVIDER_FR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL"
	//   "PROVIDER_FR_CADASTRE"
	//   "PROVIDER_DIADIEM"
	//   "PROVIDER_THE_WEATHER_CHANNEL"
	//   "PROVIDER_COWI"
	//   "PROVIDER_FALKPLAN_ANDES"
	//   "PROVIDER_NL_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NL_KADASTER"
	//   "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS"
	//   "PROVIDER_DIGITAL_MAP_PRODUCTS"
	//   "PROVIDER_SILICE_DIGITAL"
	//   "PROVIDER_TYDAC"
	//   "PROVIDER_ALBRECHT_GOLF"
	//   "PROVIDER_HEALTH_CH"
	//   "PROVIDER_VISITDENMARK"
	//   "PROVIDER_FLYHERE"
	//   "PROVIDER_DIGITAL_DATA_SERVICES"
	//   "PROVIDER_MECOMO"
	//   "PROVIDER_ZA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM"
	//   "PROVIDER_SENSIS"
	//   "PROVIDER_JJCONNECT"
	//   "PROVIDER_OPPLYSNINGEN"
	//   "PROVIDER_TELLUS"
	//   "PROVIDER_IQONIA"
	//   "PROVIDER_BE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT"
	//   "PROVIDER_BE_BRUSSELS_MOBILITY"
	//   "PROVIDER_YELLOWMAP_AG"
	//   "PROVIDER_STIFTUNG_GESUNDHEIT"
	//   "PROVIDER_GIATA"
	//   "PROVIDER_SANPARKS"
	//   "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE"
	//   "PROVIDER_INFOPORTUGAL"
	//   "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO"
	//   "PROVIDER_COLLINS_BARTHOLOMEW"
	//   "PROVIDER_PROTECT_PLANET_OCEAN"
	//   "PROVIDER_KARTTAKESKUS"
	//   "PROVIDER_FI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION"
	//   "PROVIDER_FI_NATIONAL_LAND_SURVEY"
	//   "PROVIDER_FI_STATISTICS_FINLAND"
	//   "PROVIDER_GB_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_GB_ORDNANCE_SURVEY"
	//   "PROVIDER_NATURAL_ENGLAND"
	//   "PROVIDER_WELSH_GOVERNMENT"
	//   "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS"
	//   "PROVIDER_EPSILON"
	//   "PROVIDER_PARTNER_FRONT_END"
	//   "PROVIDER_CARTESIA"
	//   "PROVIDER_SE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SE_TRAFIKVERKET"
	//   "PROVIDER_SE_NATURVARDSVERKET"
	//   "PROVIDER_IE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND"
	//   "PROVIDER_LU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_LU_P_AND_T_LUXEMBOURG"
	//   "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE"
	//   "PROVIDER_LU_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_MAPFLOW"
	//   "PROVIDER_TKARTOR"
	//   "PROVIDER_JUMPSTART"
	//   "PROVIDER_EPTISA"
	//   "PROVIDER_MC_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MC_PRINCIPAUTE_DE_MONACO"
	//   "PROVIDER_MONOLIT"
	//   "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE"
	//   "PROVIDER_MODIS"
	//   "PROVIDER_GEOX"
	//   "PROVIDER_GEODIRECTORY"
	//   "PROVIDER_GEOPLAN"
	//   "PROVIDER_INFODIREKT"
	//   "PROVIDER_GEOGLOBAL"
	//   "PROVIDER_DEUTSCHE_POST"
	//   "PROVIDER_TRACASA"
	//   "PROVIDER_CORREOS"
	//   "PROVIDER_ES_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA"
	//   "PROVIDER_EDIMAP"
	//   "PROVIDER_VERIZON"
	//   "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS"
	//   "PROVIDER_PROMAPS"
	//   "PROVIDER_CONSODATA"
	//   "PROVIDER_DE_AGOSTINI"
	//   "PROVIDER_FEDERPARCHI"
	//   "PROVIDER_NAVIGO"
	//   "PROVIDER_ITALIAMAPPE"
	//   "PROVIDER_CZECOT"
	//   "PROVIDER_NATURAL_EARTH"
	//   "PROVIDER_REGIO"
	//   "PROVIDER_SHIPWRECK_CENTRAL"
	//   "PROVIDER_RUTGERS_STATE_UNIVERSITY"
	//   "PROVIDER_TWINICE"
	//   "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD"
	//   "PROVIDER_INFOGROUP"
	//   "PROVIDER_TNET"
	//   "PROVIDER_CTT_CORREIOS_DE_PORTUGAL"
	//   "PROVIDER_EUROPARC"
	//   "PROVIDER_IUPPITER"
	//   "PROVIDER_MICHAEL_BAUER_INTERNATIONAL"
	//   "PROVIDER_LEPTON"
	//   "PROVIDER_MAPPOINT"
	//   "PROVIDER_GEODATA"
	//   "PROVIDER_RU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_RU_FNS_KLADR"
	//   "PROVIDER_BR_GOVERNMENT" - ABSTRACT
	//
	// "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU
	// RAIS_RENOVAVEIS" - IBAMA
	//   "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA
	//   "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA
	//   "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" -
	// IBGE
	//   "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI
	//
	// "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES"
	// - DNIT
	//   "PROVIDER_AZAVEA"
	//   "PROVIDER_NORTHSTAR"
	//   "PROVIDER_COMMEDI"
	//   "PROVIDER_NEXUS_GEOGRAFICS"
	//   "PROVIDER_INFOERA"
	//   "PROVIDER_AD_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography
	//   "PROVIDER_MAXXIMA"
	//   "PROVIDER_SI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT"
	//   "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS"
	//   "PROVIDER_L1_TECHNOLOGIES"
	//   "PROVIDER_TELEMEDIA"
	//   "PROVIDER_CDCOM_PROGOROD"
	//   "PROVIDER_MIT_CITYGUIDE"
	//   "PROVIDER_SUNCART"
	//   "PROVIDER_MICROMAPPER"
	//   "PROVIDER_RICHI"
	//   "PROVIDER_FORUM44"
	//   "PROVIDER_SEAT"
	//   "PROVIDER_VALASSIS"
	//   "PROVIDER_NAVICOM"
	//   "PROVIDER_COLTRACK"
	//   "PROVIDER_PSMA_AUSTRALIA"
	//   "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA"
	//   "PROVIDER_CA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_STATISTICS_CANADA"
	//   "PROVIDER_TOCTOC"
	//   "PROVIDER_RMSI"
	//   "PROVIDER_TRUE_TECHNOLOGY"
	//   "PROVIDER_INCREMENT_P_CORPORATION"
	//   "PROVIDER_GOJAVAS"
	//   "PROVIDER_GEOINFORMATION_GROUP"
	//   "PROVIDER_CYBERSOFT"
	//   "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not
	// to be used. OOO CET
	//   "PROVIDER_EE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_EE_MAA_AMET" - Estonian Land Board
	//   "PROVIDER_GASBUDDY"
	//   "PROVIDER_DK_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency
	//   "PROVIDER_MURCIA_REGION_GOVERNMENT"
	//   "PROVIDER_CORREIOS"
	//   "PROVIDER_WEST_WORLD_MEDIA"
	//   "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION"
	//   "PROVIDER_MEDICARE"
	//   "PROVIDER_POLARIS"
	//   "PROVIDER_TW_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER"
	//   "PROVIDER_NORDECA"
	//   "PROVIDER_AFRIMAPPING"
	//   "PROVIDER_OVERDRIVE"
	//   "PROVIDER_PROVIDER_NETWORK_DIRECTORIES"
	//   "PROVIDER_BR_MINISTERIO_DA_SAUDE"
	//   "PROVIDER_DIGITAL_EGYPT"
	//   "PROVIDER_INRIX"
	//   "PROVIDER_ARPINDO"
	//   "PROVIDER_IT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE"
	//   "PROVIDER_EAST_END_GROUP"
	//   "PROVIDER_INGEOLAN"
	//   "PROVIDER_SEMACONNECT"
	//   "PROVIDER_BLINK"
	//   "PROVIDER_EVGO"
	//   "PROVIDER_CHARGEPOINT"
	//   "PROVIDER_TPL_TRAKKER"
	//   "PROVIDER_OI"
	//   "PROVIDER_MAPARADAR"
	//   "PROVIDER_SINGAPORE_POST"
	//   "PROVIDER_CHARGEMASTER"
	//   "PROVIDER_TESLA"
	//   "PROVIDER_VISICOM"
	//   "PROVIDER_GEOLYSIS"
	//   "PROVIDER_ZEPHEIRA"
	//   "PROVIDER_HUBJECT"
	//   "PROVIDER_PODPOINT"
	//   "PROVIDER_CHARGEFOX"
	//   "PROVIDER_KR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and
	// transport, 국토교통부, Guktogyotongbu
	//   "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY"
	//   "PROVIDER_CRITCHLOW"
	//   "PROVIDER_EIFRIG"
	//   "PROVIDER_GIREVE"
	//   "PROVIDER_CN_NAVINFO"
	//   "PROVIDER_JAPAN_CHARGE_NETWORK"
	//   "PROVIDER_NOBIL"
	//   "PROVIDER_INDIA_BANKS"
	//   "PROVIDER_INDONESIA_ELECTION_KPU"
	//   "PROVIDER_CAREERS360"
	//   "PROVIDER_SOURCE_LONDON"
	//   "PROVIDER_EVBOX"
	//   "PROVIDER_JP_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT"
	//   "PROVIDER_YUMYUM"
	//   "PROVIDER_HWW_AUSTRALIA"
	//   "PROVIDER_CINERGY"
	//   "PROVIDER_MTIME"
	//   "PROVIDER_KULTUNAUT"
	//   "PROVIDER_BLITZ"
	//   "PROVIDER_PIA"
	//   "PROVIDER_INTERPARK"
	//   "PROVIDER_CINEMA_ONLINE"
	//   "PROVIDER_BELBIOS"
	//   "PROVIDER_MOVIESEER"
	//   "PROVIDER_SODAMEDYA"
	//   "PROVIDER_ATMOVIES"
	//   "PROVIDER_HOTELBEDS"
	//   "PROVIDER_VERICRED"
	//   "PROVIDER_CIRRANTIC"
	//   "PROVIDER_GOGO_LABS"
	//   "PROVIDER_ELECTRIFY_AMERICA"
	//   "PROVIDER_CMS_MPPUF"
	//   "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.
	//   "PROVIDER_KONTEX_GEOMATICS"
	//   "PROVIDER_NZ_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NZ_LINZ" - Land Information New Zealand
	//   "PROVIDER_NZ_DOC" - NZ Department of Conservation
	//   "PROVIDER_FASTNED"
	//   "PROVIDER_DESTINY_CS"
	//   "PROVIDER_IONITY"
	//   "PROVIDER_EV_CONNECT"
	//   "PROVIDER_PANPAGES"
	//   "PROVIDER_ETECNIC"
	//   "PROVIDER_VOLTA"
	//   "PROVIDER_NISSAN_MEXICO"
	//   "PROVIDER_BMW_GROUP_LATIN_AMERICA"
	//   "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO"
	//   "PROVIDER_VOLVO_CARS_BRASIL"
	//   "PROVIDER_CHARGE_AND_PARKING"
	//   "PROVIDER_DEDUCE_TECHNOLOGIES"
	//   "PROVIDER_SK_TELECOM"
	//   "PROVIDER_ECO_MOVEMENT"
	//   "PROVIDER_GOOGLE_GMS"
	//   "PROVIDER_EASYWAY"
	//   "PROVIDER_PHYSICIAN_COMPARE"
	//   "PROVIDER_HOSPITAL_COMPARE"
	//   "PROVIDER_ENDOLLA_BARCELONA"
	//   "PROVIDER_BE_CHARGE"
	//   "PROVIDER_ONE_NETWORK"
	//   "PROVIDER_CARENAV_DUPLEX"
	//   "PROVIDER_CARENAV_POI" - UMBRELLA
	//   "PROVIDER_IN_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SURVEY_OF_INDIA"
	//   "PROVIDER_E_ON"
	//   "PROVIDER_ELECTRIFY_CANADA"
	//   "PROVIDER_GRIDCARS"
	//   "PROVIDER_DRIVECO"
	//   "PROVIDER_GREEN_ACTION_STUDIOS"
	//   "PROVIDER_GREEN_ACTION_STUDIO"
	//   "PROVIDER_EVINY"
	//   "PROVIDER_MASTERCARD"
	//   "PROVIDER_VATTENFALL"
	//   "PROVIDER_VIETGIS"
	//   "PROVIDER_UNITE"
	//   "PROVIDER_NEOGY"
	//   "PROVIDER_AMPUP"
	//   "PROVIDER_LOOP"
	//   "PROVIDER_ZEST" - Note: Next available value is 0x1270B.
	Provider string `json:"provider,omitempty"`

	SourceDataset string `json:"sourceDataset,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Instance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Instance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreOntologyRawGConceptInstanceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreOntologyRawGConceptInstanceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreOpeningHoursProto: Message to represent opening hours
// including regular weekly hours and a set of exceptions.
type GeostoreOpeningHoursProto struct {
	// Exception: Date delimited exceptions to the typical recurring opening
	// hours. May only be present if regular weekly hours are also
	// specified.
	Exception []*GeostoreExceptionalHoursProto `json:"exception,omitempty"`

	// RegularHours: Typical recurring opening hours, expressed as a weekly
	// schedule. NOTE: this field was introduced to have a more
	// client-friendly format for representing weekly hours but, as of
	// November 2018, it's not used for the main opening hours of
	// TYPE_ESTABLISHMENT features (instead, the data is stored in the
	// `EstablishmentProto.hours` field, see b/23105782 tracking the
	// possible schema migration). It is however used in other contexts
	// where `OpeningHoursProto` appears in the Geo Schema. In
	// openinghours.h there is a utility function
	// `GetOpeningHoursFromFeature` that merges `EstablishmentProto.hours`
	// into this proto.
	RegularHours *GeostoreBusinessHoursProto `json:"regularHours,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Exception") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Exception") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreOpeningHoursProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreOpeningHoursProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreOperationsProto: Information about a feature's operations,
// e.g. when the feature is temporarily closed.
type GeostoreOperationsProto struct {
	// TemporaryClosure: Records temporary status change of the feature,
	// such as remodel, vacation, etc.: the feature is temporarily (but not
	// permanently) unavailable. This prevents users from going to the
	// feature. Supports an arbitrary number of past, present, and future
	// temporary closures, with the feature's data owner choosing which
	// range of past and future closures to permit or guarantee to keep. All
	// start and end dates must be unique from each other. If two
	// consecutive dates are a start and an end of a TemporaryClosureProto,
	// then the two dates must be from the same TemporaryClosureProto.
	// Otherwise, exact dates may be missing so long as there exist a
	// possible sequence of temporary closures with both exact start_date
	// and end_date that keeps any known exact start_date and end_date. The
	// earliest temporary closure must begin after whenever initial
	// operations begin. Likewise, the latest temporary closure must end
	// before whenever the permanent closure begins. NOTE: does *not*
	// guarantee chronological order.
	TemporaryClosure []*GeostoreTemporaryClosureProto `json:"temporaryClosure,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TemporaryClosure") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TemporaryClosure") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreOperationsProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreOperationsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreOverrideBorderStatusProto: This message captures a border
// status override. For instance, if the TYPE_BORDER feature between
// China and Hong Kong must be hidden on ditu.google.cn (the Chinese
// domain for Google Maps) but may be displayed on other domains, we
// will have a country override border status for "CN" set to
// STATUS_NEVER_DISPLAY. At least one override restriction must be
// defined. Currently the only supported restriction is by country code.
type GeostoreOverrideBorderStatusProto struct {
	// CountryCode: The two-letter ISO 3166-1 country code corresponding to
	// the domain this status override applies to, when rendering the border
	// polyline.
	CountryCode string `json:"countryCode,omitempty"`

	// Status: The override status, from the BorderStatus enumeration. The
	// value here must be different from the main status (otherwise there's
	// no point in providing the override).
	//
	// Possible values:
	//   "STATUS_NORMAL" - Most border lines have this status, which
	// typically means both parties agree on the location of the line. These
	// might be called "de jure" borders.
	//   "STATUS_DISPUTED" - This status is used when the two parties
	// disagree on the location of the line. There can be multiple border
	// lines in a given disputed area. One might be the line proposed by
	// country "A" and another the line proposed by country "B". A third
	// line might mark the de facto line of control. Other border lines
	// might indicate historical borders, e.g., "1949 Armistice Line".
	//   "STATUS_UNSURVEYED" - This is used for one section of border
	// between Argentina and Chile. Both parties agree that a border line
	// exists somewhere on the glacier, but the exact location has not been
	// determined.
	//   "STATUS_INTERNATIONAL_WATER" - This is a border line between a
	// country and international water.
	//   "STATUS_NEVER_DISPLAY" - This status is only used for the borders
	// that should never display to users. Typically it is for the borders
	// that we don't want to represent but that we would still like to use
	// to model country boundaries, e.g. Hong Kong and Macau.
	//   "STATUS_TREATY" - This is used for borders that refer to
	// well-defined boundaries which have been established by a specific
	// treaty, agreement, armistice or other such agreement between two or
	// more parties, yet the position and/or status is not considered to be
	// legal and final (e.g., the final demarcation of the exact position
	// has not occurred or the final political status is not resolved).
	//   "STATUS_PROVISIONAL" - This is used for borders for which a formal
	// agreement has not been established between the parties involved, yet
	// the existing line acts as a de facto functional border without
	// existence of any dispute.
	//   "STATUS_NO_LABEL" - This is used for borders which should not have
	// country labels to either side, but should otherwise be styled the
	// same as a border with STATUS_NORMAL. This is typically for borders
	// which are not themselves disputed but still form part of the boundary
	// around a disputed area that is not otherwise modeled or labeled as a
	// country, or as an override where we are obligated to remove labels
	// for region specific versions of Maps.
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreOverrideBorderStatusProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreOverrideBorderStatusProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePaintedElementLogicalColorProto: Painted element logical
// color. Most legal definitions only specify a color category (like
// "yellow") and don't specify an exact hue, rather stating that the
// colors must be distinguishable from each other. We refer to this as
// the "logical" color.
type GeostorePaintedElementLogicalColorProto struct {
	// Possible values:
	//   "UNKNOWN_LOGICAL_COLOR"
	//   "WHITE"
	//   "YELLOW"
	//   "RED"
	//   "GREEN"
	//   "BLUE"
	//   "BLACK"
	//   "GREY"
	//   "ORANGE"
	Color string `json:"color,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Color") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Color") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePaintedElementLogicalColorProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePaintedElementLogicalColorProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreParkingAllowanceProto: Describes the parking allowances for a
// feature, or the situations and requirements under which one may be
// permitted to park, such as certain vehicle types, valet parking, and
// permit parking. Also describes the cost of parking, which may vary
// based on the time and duration parked. Includes vehicle type, any
// other conditions for eligibility, and the cost of parking, which may
// vary based on the time and duration parked. If is_discount is set to
// true on a given allowance, that allowance represents a discount that
// can be applied to lower the cost of non-discount allowances specified
// on feature via parking_provider_feature. In this way, allowances can
// be 'layered,' i.e. appended, onto each other when denormalizing
// references via parking_provider_feature.
type GeostoreParkingAllowanceProto struct {
	// AllowanceType: The type of parking for this allowance. Allowance
	// details only apply to the type of parking specified.
	//
	// Possible values:
	//   "STANDARD" - Standard parking without qualifications. This is a
	// long-term allowance.
	//   "VALET" - This is a long-term allowance that only applies for valet
	// parking.
	//   "PERMIT" - The is a long-term allowance that applies to
	// permit-holders. See permit_type for details.
	//   "PICKUP_GOODS" - This is a short-term allowance that only applies
	// to picking up goods.
	//   "PICKUP_PASSENGERS" - This is a short-term allowance that only
	// applies to picking up passengers.
	AllowanceType string `json:"allowanceType,omitempty"`

	// IsDiscount: If true, this allowance represents a discount rather than
	// an individual rate; any rate values specified in this allowance
	// describe a discount to be applied to the non-discount allowances in
	// the ParkingProto.
	IsDiscount bool `json:"isDiscount,omitempty"`

	// MinPurchaseForValidation: If this rate requires validation, this
	// expresses the minimum purchase required for validation in each
	// applicable currency. Should have an ID of
	// /measurement_unit/money_value and consist of two properties: one with
	// an ID of /measurement_unit/money_value/amount and a float value with
	// the amount, and another with the ID
	// /measurement_unit/money_value/currency and an ID value with the MID
	// of the proper currency (from the /finance/currency type). A value of
	// 0 suggests that no purchase is required. If empty, this suggests that
	// no validation is required for this rate.
	MinPurchaseForValidation []*FreebaseTopic `json:"minPurchaseForValidation,omitempty"`

	// PermitType: Any additional details about the permit type; e.g.
	// “Zone A”. In any local languages. Should only be set if
	// allowance_type is PERMIT.
	PermitType []*GeostoreLanguageTaggedTextProto `json:"permitType,omitempty"`

	// ServiceType: The types of services that this parking allowance
	// applies to. For instance, some cities have streets that only allow
	// traditional taxis to pick up passengers.
	//
	// Possible values:
	//   "SERVICE_ALL" - Signifies that this restriction is always
	// applicable, regardless of the service type.
	//   "SERVICE_GENERAL_DRIVER" - Signifies that this restriction is
	// applicable to a general driver.
	//   "SERVICE_RIDESHARE" - Signifies that this restriction is applicable
	// to a ridesharing driver.
	//   "SERVICE_TAXI" - Signifies that this restriction is applicable to a
	// traditional taxi driver.
	//   "SERVICE_COMMERCIAL" - Signifies that this restriction is
	// applicable to a commercial vehicle. This generally applies to
	// vehicles used for carrying goods or fare-paying passengers. However,
	// the exact definition of a commercial vehicle can vary by locality.
	ServiceType []string `json:"serviceType,omitempty"`

	// TimeBasedRate: Describes the rate structures. Each TimeBasedRateProto
	// defines a rate which may apply based on a particular arrival,
	// departure or utilization time; for example, one rate might apply if
	// arriving before 9am, and another might apply regardless of arrival or
	// departure time.
	TimeBasedRate []*GeostoreTimeBasedRateProto `json:"timeBasedRate,omitempty"`

	// VehicleType: Restrictions on which vehicle type(s) the allowance
	// applies to. By default, the allowance applies to any vehicle types.
	//
	// Possible values:
	//   "ANY"
	//   "CAR"
	//   "MOTORCYCLE"
	//   "TRUCK" - Note: The exact definition of a truck varies by city, but
	// it usually refers to vehicles with three or more axles. This value
	// does not necessarily apply to all commercial vehicles or vehicles
	// colloquially referred to as trucks (eg. pickup trucks).
	VehicleType string `json:"vehicleType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowanceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowanceType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreParkingAllowanceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreParkingAllowanceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreParkingProto: Used to describe the parking facilities
// provided by or available to a feature. Features of TYPE_ROAD or
// TYPE_COMPOUND can have a ParkingProto (with parking_provider_feature
// unset) that describes the parking facilities provided by that
// feature. Features of TYPE_COMPOUND or TYPE_ESTABLISHMENT_POI can have
// a ParkingProto (with parking_provider_feature set) to indicate that
// the feature has dedicated parking and provide details about it, and
// defer some details of the parking facilities to the referent
// feature(s). ParkingProto is maintained by the Harbor Pilot team
// (go/harbor-pilot). Detailed modeling information is described at
// go/parking-schema.
type GeostoreParkingProto struct {
	// Allowance: Describes the parking allowances for the feature, which
	// are the situations and requirements under which one is permitted to
	// park at the feature’s parking facilities, or discounts that a user
	// may be eligible for.
	Allowance []*GeostoreParkingAllowanceProto `json:"allowance,omitempty"`

	// OpeningHours: Hours in which the parking facility is open; that is,
	// permits both arrivals and departures of the facility. Should only be
	// set on compounds (i.e. parking lots or garages); roads are considered
	// to always be “open,” though parking at certain times may be
	// prohibited via restrictions. If unset on a compound, this suggests we
	// don’t know the opening hours, or they are the same as the hours of
	// the entity for which this feature offers parking facilities.
	OpeningHours *GeostoreOpeningHoursProto `json:"openingHours,omitempty"`

	// ParkingAvailable: Indicates whether long-term parking is available at
	// the feature; if true, long-term parking is available at the feature
	// and parking allowances may be present on this feature, or
	// parking_provider_feature may indicate defered parking feature(s). If
	// false, this is an explicit statement that there is no long-term
	// parking associated with this feature. If unset, we don't know whether
	// there is long-term parking associated with this feature. If false or
	// unset, only additional restrictions or short-term allowances will be
	// populated.
	ParkingAvailable bool `json:"parkingAvailable,omitempty"`

	// ParkingProviderFeature: If empty, indicates that the feature
	// containing this ParkingProto provides parking facilities, which are
	// described by this proto. If nonempty, indicates that the feature with
	// this ParkingProto does not contain parking facilities itself, but
	// visitors of this feature may use the parking available to the
	// referent feature(s). The referent feature(s) may themselves contain
	// parking facilities or defer to other features. A ParkingProto may
	// defer parking details to another feature, but still include its own
	// data. This suggests that a visitor of the referrer feature is
	// eligible for different rates or discounts. The data in these fields
	// applies transitively, and any fields in a referrer may be applied to
	// the referent (for a visitor of the referrer).
	ParkingProviderFeature []*GeostoreFeatureIdProto `json:"parkingProviderFeature,omitempty"`

	// Restriction: Describes any parking restrictions that apply to this
	// feature. Should only be set on road segments for which parking is
	// explicitly prohibited for some or all times; for roads which do not
	// prohibit parking and for all other facilities, the ability to park
	// should be expressed using allowances. In the instance that both a
	// restriction and an allowance applies at a given time, restrictions
	// always have precedence over the same parking allowances. However,
	// explicit short-term allowances (PICKUP_GOODS, PICKUP_PASSENGERS) take
	// precedence over general NO_PARKING, NO_STANDING, or NO_STOPPING
	// restrictions.
	Restriction []*GeostoreParkingRestrictionProto `json:"restriction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Allowance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Allowance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreParkingProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreParkingProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreParkingRestrictionProto: Expresses a parking restriction on a
// road; i.e. times at which parking on the road is prohibited.
type GeostoreParkingRestrictionProto struct {
	// RestrictedHours: Times at which parking is prohibited.
	RestrictedHours *GeostoreTimeScheduleProto `json:"restrictedHours,omitempty"`

	// RestrictionType: clang-format on The type of restriction that applies
	// at this time.
	//
	// Possible values:
	//   "RESTRICTION_UNKNOWN" - Default value. Should never be set in
	// practice.
	//   "RESTRICTION_PARKING" - Parking is not allowed. This is a long-term
	// restriction.
	//   "RESTRICTION_STANDING" - No standing is allowed. This means a
	// vehicle cannot wait or stop to load/unload packages. A vehicle may
	// stop to drop-off passengers or to pick up passengers already waiting
	// at the location. This is a short-term restriction.
	//   "RESTRICTION_STOPPING" - A vehicle may not stop at this location at
	// any time. This is a short-term restriction.
	//   "RESTRICTION_PICKUP_GOODS" - A vehicle may not stop here to pick up
	// goods. This is a short-term restriction.
	//   "RESTRICTION_PICKUP_PASSENGERS" - A vehicle may not stop here to
	// pick up passengers. This is a short-term restriction.
	RestrictionType string `json:"restrictionType,omitempty"`

	// ServiceType: The types of services that this parking restriction
	// applies to. We expect most parking restrictions to apply to all
	// services, but some airports have specific rideshare parking or taxi
	// parking zones.
	//
	// Possible values:
	//   "SERVICE_ALL" - Signifies that this restriction is always
	// applicable, regardless of the service type.
	//   "SERVICE_GENERAL_DRIVER" - Signifies that this restriction is
	// applicable to a general driver.
	//   "SERVICE_RIDESHARE" - Signifies that this restriction is applicable
	// to a ridesharing driver.
	//   "SERVICE_TAXI" - Signifies that this restriction is applicable to a
	// traditional taxi driver.
	//   "SERVICE_COMMERCIAL" - Signifies that this restriction is
	// applicable to a commercial vehicle. This generally applies to
	// vehicles used for carrying goods or fare-paying passengers. However,
	// the exact definition of a commercial vehicle can vary by locality.
	ServiceType []string `json:"serviceType,omitempty"`

	// VehicleType: The types of vehicles that this parking restriction
	// applies to. For instance, some streets may allow motorcycles to park
	// but not automobiles or trucks.
	//
	// Possible values:
	//   "ANY"
	//   "CAR"
	//   "MOTORCYCLE"
	//   "TRUCK" - Note: The exact definition of a truck varies by city, but
	// it usually refers to vehicles with three or more axles. This value
	// does not necessarily apply to all commercial vehicles or vehicles
	// colloquially referred to as trucks (eg. pickup trucks).
	VehicleType []string `json:"vehicleType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RestrictedHours") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RestrictedHours") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreParkingRestrictionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreParkingRestrictionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePeakProto: This protocol buffer holds related data for
// features of type TYPE_PEAK and TYPE_VOLCANO.
type GeostorePeakProto struct {
	// ProminenceMeters: Topographic prominence in meters: the height of the
	// peak’s summit above the lowest contour line encircling it and no
	// higher summit.
	ProminenceMeters float64 `json:"prominenceMeters,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProminenceMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProminenceMeters") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePeakProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePeakProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePeakProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePeakProto
	var s1 struct {
		ProminenceMeters gensupport.JSONFloat64 `json:"prominenceMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ProminenceMeters = float64(s1.ProminenceMeters)
	return nil
}

// GeostorePedestrianCrossingProto: A crossing describes a path from the
// end point of a segment to the start point of its sibling. Each
// individual crossing should uniquely represent a physically distinct
// crossing in the real world. Pedestrian crossings are bidirectional.
// This proto represents "simple" crossings. More complicated crossings
// (such as the diagonal crosswalk at Shibuya Station in Tokyo) will be
// represented using a separate pedestrian network. Example 1: Standard
// four way crossing. Assume each road (A/B/C) has a crosswalk (denoted
// by a '-') right before intersection X. Assume crossing at D is
// prohibited (denoted by a '%'). Assume "prime" roads (A',B',...) are
// OUT segments relative to X. A\\A' B//B' \\ // \\ // - - X - % // \\
// // \\ C'//C D'\\D * A CROSSABLE PedestrianCrossing should be added to
// A, B and C. * An UNCROSSABLE PedestrianCrossing should be added to D.
// Example 2: Simple intersection with one crossing. Assume intersection
// X was added to accommodate the crosswalk (through X, denoted by '-').
// Assume "prime" roads (A',B',...) are OUT segments relative to X.
// A\\A' \\ \\ -X- \\ \\ B'\\B * A CROSSABLE PedestrianCrossing must be
// added to either A or B, but not both because each real-world crossing
// should be represented exactly once. Duplicative crossings may be
// arbitrarily removed.
type GeostorePedestrianCrossingProto struct {
	// AngleDegrees: This value specifies the angle of the crosswalk. Zero
	// degrees represents a crosswalk perpendicular to the direction of
	// travel, towards the right side of the segment. The crosswalk angle,
	// winds clockwise. Range [-90, 90]. The following crosswalk would have
	// a 15 degree angle: / / <--/-------------------------------- / /
	AngleDegrees float64 `json:"angleDegrees,omitempty"`

	// CrossAnywhere: This value enables crossing anywhere (not just at the
	// segment’s endpoint), typically used on long, low-traffic
	// residential streets. This attribute is only respected for trivial
	// segment -> sibling routes. All other routes can cross at a MapFacts
	// intersection.
	CrossAnywhere bool `json:"crossAnywhere,omitempty"`

	// CrossingType: Crossing type is used as a restriction and can also be
	// used for rendering.
	//
	// Possible values:
	//   "UNKNOWN" - RESERVED
	//   "CROSSABLE"
	//   "UNMARKED_CROSSING"
	//   "MARKED_CROSSING"
	//   "UNCROSSABLE"
	CrossingType string `json:"crossingType,omitempty"`

	// Offset: The crossing offset defines a fraction between the distance
	// from the segment endpoint to the centerline of the crosswalk and the
	// length of the segment. For example, the segment length is 20 meters
	// and the distance from segment end to center of crosswalk is 2 meters,
	// the value of offset will be 0.1.
	Offset float64 `json:"offset,omitempty"`

	// Restriction: Restrictions for this crossing (such as constructions on
	// the crosswalk). They must not have subpath or travel_mode.
	Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"`

	// Width: This value defines the full width of the crossing in the
	// direction perpendicular to the direction which pedestrians walk on
	// the crossing (in meters). The crossing is allowed to "spill" into the
	// next segment (0.5 * width can be greater than the offset). Cannot be
	// a negative value.
	Width float64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AngleDegrees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AngleDegrees") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePedestrianCrossingProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePedestrianCrossingProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePedestrianCrossingProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePedestrianCrossingProto
	var s1 struct {
		AngleDegrees gensupport.JSONFloat64 `json:"angleDegrees"`
		Offset       gensupport.JSONFloat64 `json:"offset"`
		Width        gensupport.JSONFloat64 `json:"width"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AngleDegrees = float64(s1.AngleDegrees)
	s.Offset = float64(s1.Offset)
	s.Width = float64(s1.Width)
	return nil
}

// GeostorePhysicalLineProto: Describes a single physical marker line.
type GeostorePhysicalLineProto struct {
	// DashLengthMeters: Applicable for DASHED and DOTTED_DASHED lines.
	DashLengthMeters float64 `json:"dashLengthMeters,omitempty"`

	// GapColor: This should be rarely needed, but can represent patterns of
	// alternating colors.
	GapColor *GeostorePaintedElementLogicalColorProto `json:"gapColor,omitempty"`

	// GapLengthMeters: Applicable for DASHED, DOTTED, and DOTTED_DASHED
	// lines.
	GapLengthMeters float64 `json:"gapLengthMeters,omitempty"`

	// Possible values:
	//   "UNKNOWN_STRIPE_MATERIAL"
	//   "PAINT_STRIPE" - Solid paint stripe.
	//   "ROUND_DOT" - Round dot, typically nonreflective.
	//   "SQUARE_DOT" - Square dot, typically reflective.
	Material []string `json:"material,omitempty"`

	// PaintColor: Color for the painted elements. Applicable to all types.
	PaintColor *GeostorePaintedElementLogicalColorProto `json:"paintColor,omitempty"`

	// Possible values:
	//   "UNKNOWN_DASH_PATTERN"
	//   "SOLID"
	//   "DASHED"
	//   "DOTTED"
	//   "DOTTED_DASHED"
	Pattern string `json:"pattern,omitempty"`

	// PhysicalLineToken: A token that can be used to identify the version
	// of the data about this marker line.
	PhysicalLineToken string `json:"physicalLineToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DashLengthMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DashLengthMeters") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePhysicalLineProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePhysicalLineProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePhysicalLineProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePhysicalLineProto
	var s1 struct {
		DashLengthMeters gensupport.JSONFloat64 `json:"dashLengthMeters"`
		GapLengthMeters  gensupport.JSONFloat64 `json:"gapLengthMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DashLengthMeters = float64(s1.DashLengthMeters)
	s.GapLengthMeters = float64(s1.GapLengthMeters)
	return nil
}

type GeostorePointProto struct {
	LatE7 int64 `json:"latE7,omitempty"`

	LngE7 int64 `json:"lngE7,omitempty"`

	// Metadata: NOTE: If removing metadata, remove 'option
	// objc_class_prefix = "GS";' together. See cl/189921100. Field-level
	// metadata for this point. NOTE: there are multiple PointProto fields
	// in the Geo Schema. Metadata here is only expected to be present on
	// FeatureProto.point[] and FeatureProto.center.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// point. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LatE7") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LatE7") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePointProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePointProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePointWithHeightProto: PointWithHeightProto encodes lat/lng
// through PointProto and contains altitude information.
type GeostorePointWithHeightProto struct {
	// AltitudeMeters: Altitude of this point is assumed to be relative to
	// the ground level.
	AltitudeMeters float64 `json:"altitudeMeters,omitempty"`

	Point *GeostorePointProto `json:"point,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AltitudeMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AltitudeMeters") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePointWithHeightProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePointWithHeightProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePointWithHeightProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePointWithHeightProto
	var s1 struct {
		AltitudeMeters gensupport.JSONFloat64 `json:"altitudeMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AltitudeMeters = float64(s1.AltitudeMeters)
	return nil
}

// GeostorePoliticalProto: This protocol buffer is included from
// feature.proto as an optional message. Political features represent
// the different ways that people are divided into geographical regions.
type GeostorePoliticalProto struct {
	// Capital: Many political regions have a conceptual center (capitals of
	// a country or a top-level division are examples). If set, the target
	// feature must be a TYPE_LOCALITY feature.
	Capital *GeostoreFeatureIdProto `json:"capital,omitempty"`

	// GrossDomesticProductUsdMillions: The Gross Domestic Product of the
	// political region measured in millions of current United States
	// dollars. It must not be negative.
	GrossDomesticProductUsdMillions float64 `json:"grossDomesticProductUsdMillions,omitempty"`

	// LiteracyPercent: Percentage of population that are literate within a
	// political region. It must be between 0 and 100.
	LiteracyPercent float64 `json:"literacyPercent,omitempty"`

	// Population: The number of people in this political region. This field
	// is intended to store accurate population, not an estimation such as
	// representative value for population range. It must not be negative.
	Population int64 `json:"population,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Capital") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Capital") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePoliticalProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePoliticalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePoliticalProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePoliticalProto
	var s1 struct {
		GrossDomesticProductUsdMillions gensupport.JSONFloat64 `json:"grossDomesticProductUsdMillions"`
		LiteracyPercent                 gensupport.JSONFloat64 `json:"literacyPercent"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GrossDomesticProductUsdMillions = float64(s1.GrossDomesticProductUsdMillions)
	s.LiteracyPercent = float64(s1.LiteracyPercent)
	return nil
}

type GeostorePolyLineProto struct {
	// Metadata: Field-level metadata for this polyline. NOTE: there are
	// multiple PolyLineProto fields in the Geo Schema. Metadata here is
	// only expected to be present on FeatureProto.polyline[].
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// polyline. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// Vertex: A sequence of vertices connected by geodesics (the equivalent
	// of straight lines on the sphere). Adjacent vertices are connected by
	// the shorter of the two geodesics that connect them, i.e. all edges
	// are 180 degrees or less. Note that the edge definition becomes
	// numerically unstable as the arc length approaches 180 degrees.
	// Polylines are generally expected to be non-self-intersecting, but any
	// such restriction is imposed by the user of the polyline rather than
	// the polyline itself.
	Vertex []*GeostorePointProto `json:"vertex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePolyLineProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePolyLineProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePolygonProto: A general non-self-intersecting spherical
// polygon, consisting of one or more loops defining multiple
// disconnected regions possibly with holes. All loops should be
// oriented CCW around the region they define. This applies to the
// exterior loop(s) as well as any holes. Within MapFacts (and
// underlying infrastructure) the data fields may be replaced by a
// single shape_id; see comments on shape_id below. Any such
// PolygonProtos shouldn't be expected to work with public functions in
// //geostore/base/public/polygon.h.
type GeostorePolygonProto struct {
	// BaseMeters: The polygon loops above are basically flat: each point
	// has a latitude and a longitude but no altitude. We don't want to
	// build real 3D models here, but we do want to be able to generate 2.5D
	// models. A 2.5D model is built by translating the flat polygon upward
	// some distance (base) then extruding it upward some additional
	// distance (height). The elevation of the bottom of the extruded
	// polygon (above ground level).
	BaseMeters float64 `json:"baseMeters,omitempty"`

	// CellId: ** DEPRECATED ** This is part of a splitting strategy for
	// large polygons, which was never fully launched and we decided not to
	// pursue. For features with very complex polygonal geometry, we break
	// up the polygon into pieces that align with S2 cells at various
	// levels. We do this for performance reasons as some geometry
	// operations have quadratic complexity with regards to the total number
	// of vertices. In these cases, we store the S2 cell ID corresponding to
	// the piece of the overall polygon that is described by this specific
	// PolygonProto message. Each polygon piece is expected to be fully
	// contained by the S2 cell corresponding to this cell ID. However, note
	// that the S2 cell ID is not required to correspond to the smallest S2
	// cell that fully contains the polygon (and often won't be). In
	// addition, polygon pieces are required to not have any overlap (which
	// translates to having entirely disjoint S2 cell IDs, i.e. one can not
	// be parent (or grand parent, etc.) of another).
	CellId uint64 `json:"cellId,omitempty,string"`

	// Encoded: Encoding of the polygon using S2Polygon::Encode()'s
	// compressed representation.
	Encoded string `json:"encoded,omitempty"`

	// HeightMeters: The distance from the bottom of the extruded polygon to
	// the top.
	HeightMeters float64 `json:"heightMeters,omitempty"`

	// Loop: ** DEPRECATED ** We have switched to using exclusively the
	// encoded form in the wire format to and from MapFacts, so this field
	// should never be populated there. See go/encoded-polygons for more
	// info. "Classic" polygon representation, defined by one or more loops.
	// The last vertex of each polyline is implicitly connected to the first
	// vertex. All loops should be specified in CCW order.
	Loop []*GeostorePolyLineProto `json:"loop,omitempty"`

	// Metadata: Field-level metadata for this polygon.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// ShapeId: A unique identifier for this polygon's data which is being
	// held externally in Shapestore (see go/shapestore). This is only ever
	// set internally within MapFacts or underlying infrastructure and if
	// set is set in lieu of other fields. Clients of MapFacts (or anyone
	// downstream of them) can rely on the guarantee that this field will
	// never be set and that the actual data for the polygon will be present
	// instead. This field has been deprecated in favor of
	// FeatureProto.internal.polygon_shape_id
	ShapeId string `json:"shapeId,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// polygon. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// UnsuitableForDisplay: Some polygons are known to be rough proxies for
	// a feature's "real" polygonal representation. Such polygons are
	// generally unsuitable for display. Rendering clients should not show
	// these in most cases. Polygons unsuitable for display do have other
	// uses, such as user location or containment analysis, or as an input
	// to learning algorithms. This is an orthogonal concept to
	// FeatureProto.synthetic_geometry, which only pertains to the method by
	// which a polygon was created, rather than its fidelity to ground
	// truth. For features that have multiple polygons, this bit should be
	// consistently set to the same value on all polygons.
	UnsuitableForDisplay bool `json:"unsuitableForDisplay,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BaseMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseMeters") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePolygonProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePolygonProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePolygonProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePolygonProto
	var s1 struct {
		BaseMeters   gensupport.JSONFloat64 `json:"baseMeters"`
		HeightMeters gensupport.JSONFloat64 `json:"heightMeters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BaseMeters = float64(s1.BaseMeters)
	s.HeightMeters = float64(s1.HeightMeters)
	return nil
}

// GeostorePoseProto: A pose is an object's position in space, as well
// as its orientation. All fields except lat and lng are optional. All
// fields are in the WGS-84 ellipsoid, and rotations are right-hand rule
// (i.e. if the right hand thumb points along a vector, curled fingers
// indicate positive rotation direction). An un-rotated pose would be
// pointing due North, along the surface of the ellipsoid. Rotations are
// applied in the order: yaw, pitch, roll. Note that the rotation axes
// are rotated along with the model for each rotation step. WARNING:
// This proto is not meant to be used directly. Please use the provided
// libraries: //geostore/base/public/pose.h
// //java/com/google/geostore/base/Pose.java
type GeostorePoseProto struct {
	// Altitude: The height of the poses above the WGS-84 ellipsoid in
	// meters.
	Altitude float64 `json:"altitude,omitempty"`

	// Index: The index of the PoseProto in a list of PoseProtos.
	Index int64 `json:"index,omitempty"`

	// Lat: The latitude of the pose in degrees [-90, 90].
	Lat float64 `json:"lat,omitempty"`

	// Lng: The longitude of the pose in degrees (-180,180].
	Lng float64 `json:"lng,omitempty"`

	// Pitch: The rotation around the longitude line East tangent in degrees
	// [-90, 90].
	Pitch float64 `json:"pitch,omitempty"`

	// Roll: The rotation around the latitude line North tangent in degrees
	// (-180, 180].
	Roll float64 `json:"roll,omitempty"`

	// Yaw: The rotation around the Up vector, from North, in degrees (-180,
	// 180].
	Yaw float64 `json:"yaw,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Altitude") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Altitude") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePoseProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePoseProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePoseProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePoseProto
	var s1 struct {
		Altitude gensupport.JSONFloat64 `json:"altitude"`
		Lat      gensupport.JSONFloat64 `json:"lat"`
		Lng      gensupport.JSONFloat64 `json:"lng"`
		Pitch    gensupport.JSONFloat64 `json:"pitch"`
		Roll     gensupport.JSONFloat64 `json:"roll"`
		Yaw      gensupport.JSONFloat64 `json:"yaw"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Altitude = float64(s1.Altitude)
	s.Lat = float64(s1.Lat)
	s.Lng = float64(s1.Lng)
	s.Pitch = float64(s1.Pitch)
	s.Roll = float64(s1.Roll)
	s.Yaw = float64(s1.Yaw)
	return nil
}

// GeostorePriceInfoFoodNutritionFacts: This message represents
// nutrition facts for a food dish.
type GeostorePriceInfoFoodNutritionFacts struct {
	Calories *GeostorePriceInfoFoodNutritionFactsCaloriesFact `json:"calories,omitempty"`

	// Cholesterol: Cholesterol information for a given food dish.
	Cholesterol *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"cholesterol,omitempty"`

	// Protein: Protein information for a given food dish.
	Protein *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"protein,omitempty"`

	// Sodium: Sodium information for a given food dish.
	Sodium *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"sodium,omitempty"`

	// TotalCarbohydrate: Carbohydrate information for a given food dish.
	TotalCarbohydrate *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"totalCarbohydrate,omitempty"`

	// TotalFat: Fat information for a given food dish.
	TotalFat *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"totalFat,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Calories") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Calories") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceInfoFoodNutritionFacts) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceInfoFoodNutritionFacts
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceInfoFoodNutritionFactsCaloriesFact: This message denotes
// calories information with an upper bound and lower bound range.
type GeostorePriceInfoFoodNutritionFactsCaloriesFact struct {
	LowerAmount int64 `json:"lowerAmount,omitempty"`

	// Unit: Unit of the given calories information.
	//
	// Possible values:
	//   "UNDEFINED_ENERGY_UNIT"
	//   "CALORIE"
	//   "JOULE"
	Unit string `json:"unit,omitempty"`

	UpperAmount int64 `json:"upperAmount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LowerAmount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LowerAmount") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceInfoFoodNutritionFactsCaloriesFact) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceInfoFoodNutritionFactsCaloriesFact
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceInfoFoodNutritionFactsNutritionFact: This message
// denotes nutrition information with an upper bound and lower bound
// range and can be represented by mass unit.
type GeostorePriceInfoFoodNutritionFactsNutritionFact struct {
	LowerAmount float64 `json:"lowerAmount,omitempty"`

	// Unit: Unit of the given nutrition information.
	//
	// Possible values:
	//   "UNDEFINED_MASS_UNIT"
	//   "GRAM"
	//   "MILLIGRAM"
	Unit string `json:"unit,omitempty"`

	UpperAmount float64 `json:"upperAmount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LowerAmount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LowerAmount") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceInfoFoodNutritionFactsNutritionFact) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceInfoFoodNutritionFactsNutritionFact
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePriceInfoFoodNutritionFactsNutritionFact) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePriceInfoFoodNutritionFactsNutritionFact
	var s1 struct {
		LowerAmount gensupport.JSONFloat64 `json:"lowerAmount"`
		UpperAmount gensupport.JSONFloat64 `json:"upperAmount"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LowerAmount = float64(s1.LowerAmount)
	s.UpperAmount = float64(s1.UpperAmount)
	return nil
}

type GeostorePriceInfoProto struct {
	// PriceList: The actual food menus. This is a repeated field because a
	// restaurant may offer multiple menus, e.g. for different language or
	// for different available time, such as holidays vs non-holidays.
	PriceList []*GeostorePriceListProto `json:"priceList,omitempty"`

	// PriceListUrl: All URLs that give price list information for this
	// establishment. For food menus, this would represent menu_urls. Note
	// that this field is a repeated list of UrlListProtos. Each
	// UrlListProto instance in the list is intended to hold lists of URLs
	// that are translations of the same URL.
	PriceListUrl []*GeostoreUrlListProto `json:"priceListUrl,omitempty"`

	// Status: Message containing metadata about the verified status of the
	// PriceInfo. Only verified listings should be displayed.
	Status *GeostorePriceInfoStatus `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PriceList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PriceList") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceInfoProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceInfoProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceInfoStatus: Providers of PriceInfo (e.g. SinglePlatform,
// YEXT) send verified and unverified listings. PriceInfoStatus is used
// to encapsulate this information.
type GeostorePriceInfoStatus struct {
	IsVerified bool `json:"isVerified,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsVerified") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsVerified") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceInfoStatus) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceInfoStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceListNameInfoProto: A PriceListNameInfoProto is used by
// PriceListProto and fields and messages contained in it for storing
// names, descriptions, languages, and IDs. The name field and the
// description field must be in the same language, as specified by the
// language field. None of the fields in this proto is required,
// although it is not expected to have the language field set unless
// there is a name or description. When the language field is not set,
// it is understood to be the preferred language of the locale where the
// establishment is located. An empty string for any of the fields is
// not allowed (as enforced by lints).
type GeostorePriceListNameInfoProto struct {
	Description string `json:"description,omitempty"`

	// Id: IDs are intended to be unique identifiers of PriceInfoLists,
	// Sections, and Menu items. This is enforced by the
	// ID_DUPLICATE_PRICE_LIST_ID lint.
	Id string `json:"id,omitempty"`

	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See go/geo-schema-reference/feature-properties/languages.
	Language string `json:"language,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceListNameInfoProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceListNameInfoProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceListProto: A PriceListProto can be used to represent any
// type of price lists, one of which is a menu of food and drinks. It
// contains names and descriptions, together with its source URL list if
// it is extracted or attributed to that URL. The names and descriptions
// are represented using repeated PriceListNameInfo fields to allow
// versions in different languages. A PriceListProto may contain
// multiple sections; in the context of a food menu, this would be
// multiple menu sections, e.g. for breakfast, lunch, dinner, prix fixe,
// or dinner for two, etc. At least one menu section must be present.
// Each section contains a number of items; for food menus, it may be
// FoodMenuItems defined below. At least one item must be present in
// each section.
type GeostorePriceListProto struct {
	// AggregatorId: For third party lists, represents the ID of the
	// aggregator which provided this data. Optional.
	AggregatorId uint64 `json:"aggregatorId,omitempty,string"`

	// AvailableTime: The time period when this price list is available.
	// Establishments are not required to give available_time for any given
	// price list, however, when this field is not set, the price list is
	// understood as available any time the establishment is open.
	AvailableTime *GeostoreTimeScheduleProto `json:"availableTime,omitempty"`

	// Cuisines: Cuisine information if the location the price lists
	// attached to is an eligible feature for a food menu price list.
	// Cuisine information should also only show up in a food price list.
	//
	// Possible values:
	//   "CUISINE_UNDEFINED"
	//   "FAST_FOOD"
	//   "AMERICAN"
	//   "JAPANESE"
	//   "BREAK_FAST"
	//   "PIZZA"
	//   "HAMBURGER"
	//   "ITALIAN"
	//   "SEAFOOD"
	//   "FAMILY"
	//   "MEXICAN"
	//   "CHINESE"
	//   "VEGETARIAN"
	//   "SUSHI"
	//   "CHICKEN"
	//   "INDIAN"
	//   "ASIAN"
	//   "MEDITERRANEAN"
	//   "FRENCH"
	//   "BRUNCH"
	//   "KOREAN"
	//   "THAI"
	//   "SPANISH"
	//   "VIETNAMESE"
	//   "LATIN_AMERICAN"
	//   "INDONESIAN"
	//   "GREEK"
	//   "GERMAN"
	//   "TURKISH"
	//   "BRAZILIAN"
	//   "PAKISTANI"
	//   "OTHER_CUISINE"
	Cuisines []string `json:"cuisines,omitempty"`

	// NameInfo: The repeated name_info field is for price lists listed in
	// multiple languages. When a price list has no names or descriptions,
	// the size of the repeated field name_info may be 0. There should be at
	// most one name_info for any given language.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// Section: Each price list may have multiple sections. Note that these
	// sections within the same price list should most times contain only
	// the same type of items for sale, e.g. all sections should usually
	// contain only food items if the enclosing price list is representing
	// food menu. However, sometimes such a requirement may be wrong, for
	// example, McDonald's may sell burgers as well as toys, and the toys
	// may be in its own section. Thus we don't enforce any requirement that
	// all sections contain only the same type of items.
	Section []*GeostorePriceListSectionProto `json:"section,omitempty"`

	// SourceUrl: Where this price list comes from. If set, this must also
	// be a member of the price_list_url field, and represents translations
	// of a single URL.
	SourceUrl *GeostoreUrlListProto `json:"sourceUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregatorId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatorId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceListProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceListProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceListSectionProto: A PriceListSectionProto is used to
// store a section of a PriceListProto. For example, for a
// PriceListProto representing a food menu, a PriceListSectionProto
// represents a menu section. Each PriceListSectionProto contains a
// repeated list of items for sale; these items can be products or
// services. Right now every section should contain items of one type.
type GeostorePriceListSectionProto struct {
	// CallToAction: Call to action for the section.
	CallToAction *GeostoreCallToActionProto `json:"callToAction,omitempty"`

	// FoodItem: To store food and drink items when the containing
	// PriceListSectionProto is a food menu section.
	FoodItem []*GeostoreFoodMenuItemProto `json:"foodItem,omitempty"`

	// Item: To store any items when the containing PriceListSectionProto is
	// not food / legacy services.
	Item []*GeostoreComposableItemProto `json:"item,omitempty"`

	// ItemType: This has to have at most one value.
	//
	// Possible values:
	//   "TYPE_ANY" - Abstract type, and the root of all types. Not a
	// meaningful type and likewise should never be present in a geostore
	// repository.
	//   "TYPE_FOOD" - For food and drink items, stored in
	// FoodMenuItemProto.
	//   "TYPE_SERVICE" - For service items (stored in FoodMenuItemProto).
	// TYPE_SERVICE is being deprecated. Please use TYPE_JOB for the new
	// services See b/147253790 for more information. data.
	//   "TYPE_PRODUCT" - For product items (stored in ComposableItemProto).
	//   "TYPE_JOB" - For "1P" jobs data (stored in ComposableItemProto),
	// summarized from a variety of sources such as GMB/NMX, web crawling,
	// and Structured Reviews.
	//   "TYPE_3P_JOB" - For third party jobs data sourced from 3P partner
	// feeds, which need to remain separate from the TYPE_JOB list.
	ItemType []string `json:"itemType,omitempty"`

	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See go/geo-schema-reference/feature-properties/languages.
	// When set, represents the language of the section and its items. Any
	// section and item level name infos must match this language. Optional.
	Language string `json:"language,omitempty"`

	// Media: One or more media items (photos, videos, etc.) describing this
	// section / category.
	Media []*GeostoreMediaItemProto `json:"media,omitempty"`

	// NameInfo: The repeated name_info field is for price list sections
	// listed in multiple languages. When a price list section has no names
	// or descriptions, the size of the repeated field name_info may be 0.
	// There should be at most one name_info for any given language.
	NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallToAction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallToAction") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceListSectionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceListSectionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostorePriceRangeProto: This message represents a price range of an
// attribute. The meaning of the price bounds is domain specific. But
// mainly they are soft bounds for a normal usage. E.g. "restaurant
// prices" are subject to an higher level of "soft" bounds than "museum
// admission price"
type GeostorePriceRangeProto struct {
	// Currency: Currency code for the price range: a valid currency code
	// from i18n/identifiers/currencycode.h. Lower and upper price are both
	// assumed to use the same currency.
	Currency string `json:"currency,omitempty"`

	// LowerPrice: This message allows unbounded price ranges. e.g.
	// Lower_price is undefined. At least one of the two prices must be set
	// for the price range to be meaningful.
	LowerPrice float64 `json:"lowerPrice,omitempty"`

	// Units: clang-format on
	//
	// Possible values:
	//   "ANY_UNITS" - ABSTRACT The root of the hierarchy. It's an abstract
	// value and shouldn't be present in the repository.
	//   "PER_USE"
	//   "PER_PHONE_CALL"
	//   "PER_RIDE" - e.g. for the price of a ferry or aeroplane flight.
	//   "PER_TIME_UNIT"
	//   "PER_SECOND"
	//   "PER_MINUTE"
	//   "PER_HOUR"
	//   "PER_DAY"
	//   "PER_NIGHT" - e.g. for the price of a hotel room.
	//   "PER_WEEK"
	//   "PER_MONTH"
	//   "PER_YEAR"
	//   "PER_VOLUME_UNIT"
	//   "PER_LITER" - e.g. for the price of petrol.
	//   "PER_GLASS" - The following units (PER_GLASS, PER_BOTTLE, and
	// PER_POT) are intended to represent price units for restaurant menus
	// and do not specify how much volume the unit contains. e.g. for wine
	// sold by glass.
	//   "PER_BOTTLE" - e.g. for wine sold by bottle.
	//   "PER_POT" - e.g. for tea sold by pot
	//   "PER_LENGTH_UNIT"
	//   "PER_CENTIMETER"
	//   "PER_METER"
	//   "PER_KILOMETER" - e.g. for the price of a taxi.
	//   "PER_MASS_UNIT" - To simplify the categories for units, we put both
	// mass and weight units under PER_MASS_UNIT, as a lot of times they are
	// used interchangeably in real life anyway.
	//   "PER_GRAM"
	//   "PER_KILOGRAM"
	//   "PER_OUNCE"
	//   "PER_POUND"
	Units string `json:"units,omitempty"`

	UpperPrice float64 `json:"upperPrice,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Currency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Currency") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePriceRangeProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePriceRangeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostorePriceRangeProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostorePriceRangeProto
	var s1 struct {
		LowerPrice gensupport.JSONFloat64 `json:"lowerPrice"`
		UpperPrice gensupport.JSONFloat64 `json:"upperPrice"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LowerPrice = float64(s1.LowerPrice)
	s.UpperPrice = float64(s1.UpperPrice)
	return nil
}

// GeostorePropertyValueStatusProto: PropertyValueStatusProto specifies
// what we know about a field corresponding to FeaturePropertyId's value
// in the absence of any specific value. For now, it just indicates when
// we know that there is no value. Eventually it might also indicate
// that we know it has value, just not what it is, etc.
type GeostorePropertyValueStatusProto struct {
	// PropertyId: The property ID whose value status is defined by this
	// proto.
	PropertyId *GeostoreFeaturePropertyIdProto `json:"propertyId,omitempty"`

	// ValueStatus: `value_status` specifies whether the feature has a value
	// for the property. This should always be set to something other than
	// the default value (`PROPERTY_VALUE_STATUS_UNSPECIFIED`).
	//
	// Possible values:
	//   "PROPERTY_VALUE_STATUS_UNSPECIFIED" - The default value means the
	// property's value status is encoded in the property itself: if the
	// property has a value, it has a value. If it doesn't, it may or may
	// not have a value. It is OK to interpret that as having no value. Note
	// that in `PropertyValueStatusProto`, this value is not allowed. We
	// include it and define it to match the default behavior so that it can
	// be used in other protos.
	//   "HAS_NO_VALUE" - `HAS_NO_VALUE` means that we know that the
	// property has no value.
	//   "HAS_UNKNOWN_VALUE" - 'HAS_UNKNOWN_VALUE' means that we know that
	// the property has a value but that we don't know what that value is.
	ValueStatus string `json:"valueStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PropertyId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PropertyId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostorePropertyValueStatusProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostorePropertyValueStatusProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreProvenanceProto: This is a minimal version of
// SourceInfoProto.
type GeostoreProvenanceProto struct {
	// Dataset: The dataset from which this the referenced data was created.
	// The content of this string will be determined by the data provider,
	// and may encode extra information, such as data confidence.
	Dataset string `json:"dataset,omitempty"`

	// Provider: The data provider from which the referenced data was
	// generated.
	//
	// Possible values:
	//   "PROVIDER_ANY" - ABSTRACT The root of all provider types. This
	// should never be present on an actual feature, but can be useful when
	// calling InCategory.
	//   "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel
	//   "PROVIDER_NAVTEQ"
	//   "PROVIDER_TELE_ATLAS" - ABSTRACT
	//   "PROVIDER_TELE_ATLAS_MULTINET"
	//   "PROVIDER_TELE_ATLAS_CODEPOINT"
	//   "PROVIDER_TELE_ATLAS_GEOPOST"
	//   "PROVIDER_TELE_ATLAS_DATAGEO"
	//   "PROVIDER_TELE_ATLAS_ADDRESS_POINTS"
	//   "PROVIDER_TELCONTAR"
	//   "PROVIDER_EUROPA"
	//   "PROVIDER_ROYAL_MAIL"
	//   "PROVIDER_GOOGLE" - ABSTRACT
	//   "PROVIDER_GOOGLE_HAND_EDIT"
	//   "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must
	// be full ints. The next available ID is: 0x111730B1
	//   "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT
	//   "PROVIDER_GOOGLE_GT_FUSION"
	//   "PROVIDER_GOOGLE_ZAGAT_CMS"
	//   "PROVIDER_GOOGLE_PLACE_NAVBOOST"
	//   "PROVIDER_GOOGLE_FOOTPRINT"
	//   "PROVIDER_GOOGLE_PRODUCT_TERMS"
	//   "PROVIDER_GOOGLE_POINTCARDS"
	//   "PROVIDER_GOOGLE_BUSINESS_CHAINS"
	//   "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_PRONUNCIATIONS"
	//   "PROVIDER_GOOGLE_DUMPLING"
	//   "PROVIDER_GOOGLE_DISTILLERY"
	//   "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_RELATION_MINER"
	//   "PROVIDER_GOOGLE_MAPSPAM"
	//   "PROVIDER_GOOGLE_ROSE"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS"
	//   "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider
	// meant for sending wipeout requests to mapfacts.
	//   "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH"
	//   "PROVIDER_GOOGLE_BEEGEES"
	//   "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION"
	//   "PROVIDER_GOOGLE_GEO_WORLDMAPS"
	//   "PROVIDER_GOOGLE_GEO_MODERATION"
	//   "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_LOCAL_ALCHEMY"
	//   "PROVIDER_GOOGLE_KEROUAC"
	//   "PROVIDER_GOOGLE_MOBRANK"
	//   "PROVIDER_GOOGLE_RAPTURE"
	//   "PROVIDER_GOOGLE_CULTURAL_INSTITUTE"
	//   "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS"
	//   "PROVIDER_GOOGLE_TACTILE_MAPS"
	//   "PROVIDER_GOOGLE_MAPS_FOR_MOBILE"
	//   "PROVIDER_GOOGLE_GEO_REALTIME"
	//   "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos
	// with this provider to identify whether or not a feature is a
	// Prominent Place! Instead, use the proper API,
	// localsearch_clustering::QualityTierHelper::IsProminentPlace().
	//   "PROVIDER_GOOGLE_PLACE_ACTIONS"
	//   "PROVIDER_GOOGLE_GT_AUTO_EDITS"
	//   "PROVIDER_GOOGLE_WAZE"
	//   "PROVIDER_GOOGLE_ONTHEGO"
	//   "PROVIDER_GOOGLE_GT_IMPORT"
	//   "PROVIDER_GOOGLE_STRUCTURED_DATA"
	//   "PROVIDER_GOOGLE_HELICOPTER"
	//   "PROVIDER_GOOGLE_ROLLBACK"
	//   "PROVIDER_GOOGLE_RIGHTS_REPAIR"
	//   "PROVIDER_GOOGLE_PERFUME"
	//   "PROVIDER_GOOGLE_MAPS_TRANSLATION"
	//   "PROVIDER_GOOGLE_CALL_ME_MAYBE"
	//   "PROVIDER_GOOGLE_LOCAL_UNIVERSAL"
	//   "PROVIDER_GOOGLE_CROUPIER"
	//   "PROVIDER_GOOGLE_SKYSMART"
	//   "PROVIDER_GOOGLE_RIDDLER"
	//   "PROVIDER_GOOGLE_ROADCLOSURES"
	//   "PROVIDER_GOOGLE_SPORE" - UMBRELLA
	//   "PROVIDER_GOOGLE_LOCALIZATION"
	//   "PROVIDER_GOOGLE_CATTERMS"
	//   "PROVIDER_GOOGLE_GT_FIELD_OPS"
	//   "PROVIDER_GOOGLE_MATCHMAKER"
	//   "PROVIDER_GOOGLE_ARBITRATION"
	//   "PROVIDER_GOOGLE_BIZBUILDER_OPS"
	//   "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS"
	//   "PROVIDER_GOOGLE_GT_DRAFTY"
	//   "PROVIDER_GOOGLE_HOTELADS_OPS"
	//   "PROVIDER_GOOGLE_MARKERS"
	//   "PROVIDER_GOOGLE_STATE_MACHINE"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE"
	//   "PROVIDER_GOOGLE_BIKESHARE"
	//   "PROVIDER_GOOGLE_GHOSTWRITER"
	//   "PROVIDER_GOOGLE_EDIT_PLATFORM"
	//   "PROVIDER_GOOGLE_BLUE_GINGER"
	//   "PROVIDER_GOOGLE_GEO_TIGER"
	//   "PROVIDER_GOOGLE_HYADES"
	//   "PROVIDER_GOOGLE_WEBQUARRY"
	//   "PROVIDER_GOOGLE_GEO_MADDEN"
	//   "PROVIDER_GOOGLE_ANDROID_PAY"
	//   "PROVIDER_GOOGLE_OPENING_HOURS_TEAM"
	//   "PROVIDER_GOOGLE_LOCAL_DISCOVERY"
	//   "PROVIDER_GOOGLE_LOCAL_HEALTH"
	//   "PROVIDER_GOOGLE_UGC_MAPS"
	//   "PROVIDER_GOOGLE_FIBER"
	//   "PROVIDER_GOOGLE_REVGEO"
	//   "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END"
	//   "PROVIDER_GOOGLE_GEO_UGC_TASKS"
	//   "PROVIDER_GOOGLE_GEOCODING"
	//   "PROVIDER_GOOGLE_SPYGLASS"
	//   "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES"
	//   "PROVIDER_GOOGLE_GEO_CHANGES"
	//   "PROVIDER_GOOGLE_HUME"
	//   "PROVIDER_GOOGLE_MEGAMIND"
	//   "PROVIDER_GOOGLE_GT_ROADSYNTH"
	//   "PROVIDER_GOOGLE_FIREBOLT"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS"
	//   "PROVIDER_GOOGLE_UGC_SERVICES"
	//   "PROVIDER_GOOGLE_GEOALIGN"
	//   "PROVIDER_GOOGLE_GT_COMPOUNDS"
	//   "PROVIDER_GOOGLE_FOOD_ORDERING"
	//   "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS"
	//   "PROVIDER_GOOGLE_URAW"
	//   "PROVIDER_GOOGLE_FLYEYE"
	//   "PROVIDER_GOOGLE_YOUKE"
	//   "PROVIDER_GOOGLE_GT_ZEPHYR"
	//   "PROVIDER_GOOGLE_USER_SAFETY"
	//   "PROVIDER_GOOGLE_ADDRESS_MAKER"
	//   "PROVIDER_GOOGLE_UGC_PHOTOS"
	//   "PROVIDER_GOOGLE_GT_WINDCHIME"
	//   "PROVIDER_GOOGLE_SNAG_FIXER"
	//   "PROVIDER_GOOGLE_GEO_DEALS"
	//   "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS"
	//   "PROVIDER_GOOGLE_PROPERTY_INSIGHTS"
	//   "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS"
	//   "PROVIDER_GOOGLE_GEO_PORTKEY"
	//   "PROVIDER_GOOGLE_ROAD_MAPPER"
	//   "PROVIDER_GOOGLE_LOCATION_PLATFORM"
	//   "PROVIDER_GOOGLE_POSTTRIP"
	//   "PROVIDER_GOOGLE_TRAVEL_DESTINATION"
	//   "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP"
	//   "PROVIDER_GOOGLE_USER"
	//   "PROVIDER_GOOGLE_STATION"
	//   "PROVIDER_GOOGLE_GEO_FOOD"
	//   "PROVIDER_GOOGLE_GEO_AR"
	//   "PROVIDER_GOOGLE_GEO_TEMPORAL"
	//   "PROVIDER_GOOGLE_SERVICES_MARKETPLACE"
	//   "PROVIDER_GOOGLE_IMT_CLEANUP"
	//   "PROVIDER_GOOGLE_GEO_FOOD_MENU"
	//   "PROVIDER_GOOGLE_CARENAV"
	//   "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA
	//   "PROVIDER_GOOGLE_DRIVING_UGC"
	//   "PROVIDER_GOOGLE_POLAR"
	//   "PROVIDER_GOOGLE_TRIWILD"
	//   "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS"
	//   "PROVIDER_GOOGLE_SA_FROM_WEB"
	//   "PROVIDER_GOOGLE_POI_ALIGNMENT"
	//   "PROVIDER_GOOGLE_SA_FROM_HULK"
	//   "PROVIDER_GOOGLE_SERVICES_INTERACTIONS"
	//   "PROVIDER_GOOGLE_ROADS_UGC_EDITOR"
	//   "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_DRIVING_VIZ"
	//   "PROVIDER_GOOGLE_GEO_TASKING"
	//   "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKADS"
	//   "PROVIDER_GOOGLE_CROWDTASK_TASKMATE"
	//   "PROVIDER_GOOGLE_CROWDTASK_FURBALL"
	//   "PROVIDER_GOOGLE_CROWDTASK_ADAP"
	//   "PROVIDER_GOOGLE_GPAY"
	//   "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS"
	//   "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION"
	//   "PROVIDER_GOOGLE_GEOTRACKER"
	//   "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE"
	//   "PROVIDER_GOOGLE_GEO_CLOSED_LOOP"
	//   "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS"
	//   "PROVIDER_GOOGLE_CORE_DATA_RIGHTS"
	//   "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS"
	//   "PROVIDER_GOOGLE_GEO_CONTENT_FIXER"
	//   "PROVIDER_GOOGLE_POLYGON_REFINEMENT"
	//   "PROVIDER_GOOGLE_HANASU"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD"
	//   "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD"
	//   "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS"
	//   "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS"
	//   "PROVIDER_GOOGLE_SA_QUALITY"
	//   "PROVIDER_GOOGLE_GDCE_CLEANUP"
	//   "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS"
	//   "PROVIDER_GOOGLE_ATTRIBUTES_DISCOVERY" - Shopping Attributes
	// Discovery
	//   "PROVIDER_GOOGLE_GEO_LDE"
	//   "PROVIDER_GOOGLE_GEO_SIGNAL_TRACKING"
	//   "PROVIDER_GOOGLE_UGC_AGGREGATION"
	//   "PROVIDER_GOOGLE_3D_BASEMAP"
	//   "PROVIDER_GOOGLE_MAPFACTS_PRIVACY"
	//   "PROVIDER_GOOGLE_GT_ALF"
	//   "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE"
	//   "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider
	// entries should be placed above.
	//   "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA
	//   "PROVIDER_GOOGLE_GEOWIKI"
	//   "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM"
	//   "PROVIDER_GOOGLE_SYNTHESIZED"
	//   "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for
	// teams that wish to integrate with components of the Geo Data
	// Infrastructure that require a valid provider. No production data
	// should ever be sent using this provider.
	//   "PROVIDER_GOOGLE_DISPUTED_AREAS"
	//   "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA
	//   "PROVIDER_GOOGLE_GROUNDS_BUILDER"
	//   "PROVIDER_GOOGLE_SESAME"
	//   "PROVIDER_GOOGLE_GT"
	//   "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA
	//   "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range
	// extends the PROVIDER_GOOGLE hierarchy.
	//   "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION"
	//   "PROVIDER_GOOGLE_TRAVELSEARCH"
	//   "PROVIDER_GOOGLE_PANORAMIO"
	//   "PROVIDER_GOOGLE_YOUTUBE"
	//   "PROVIDER_GOOGLE_OLD"
	//   "PROVIDER_GOOGLE_STREETVIEW"
	//   "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW"
	//   "PROVIDER_GOOGLE_ZIPIT"
	//   "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES"
	//   "PROVIDER_GOOGLE_GOLDEN"
	//   "PROVIDER_GOOGLE_INNERSPACE"
	//   "PROVIDER_GOOGLE_MAPSEARCH"
	//   "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of
	// PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and
	// PROVIDER_GOOGLE_GEO_TIGER (for categories).
	//   "PROVIDER_GOOGLE_CROWDSENSUS"
	//   "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not
	// be used, since its range further extends the PROVIDER_GOOGLE
	// hierarchy. aka Local AI.
	//   "PROVIDER_GOOGLE_FREEBASE"
	//   "PROVIDER_GOOGLE_HOTELADS"
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGES"
	//   "PROVIDER_GOOGLE_PLACES_API"
	//   "PROVIDER_GOOGLE_NAMEHEATMAP"
	//   "PROVIDER_GOOGLE_MAPMAKER"
	//   "PROVIDER_GOOGLE_MAPMAKER_MOBILE"
	//   "PROVIDER_GOOGLE_MAPMAKER_PANCAKE"
	//   "PROVIDER_GOOGLE_MAPMAKER_V2"
	//   "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE"
	//   "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from
	// this provider. It is only used to identify features that must be
	// served on MapMaker.
	//   "PROVIDER_GOOGLE_GT_LOCAL"
	//   "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS"
	//   "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS"
	//   "PROVIDER_GOOGLE_ENTITY_NAVBOOST"
	//   "PROVIDER_GOOGLE_RELATED_PLACES"
	//   "PROVIDER_GOOGLE_KNOWN_FOR_TERMS"
	//   "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used,
	// since its range further extends the PROVIDER_GOOGLE hierarchy.
	// Synthetically generated areas (sublocalities/neighborhoods/ postal
	// codes/etc) based on dropped terms from approximate geocoding. More
	// info on go/syntheticareas.
	//   "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS"
	//   "PROVIDER_GOOGLE_CROSS_STREETS"
	//   "PROVIDER_GOOGLE_CORRIDORS"
	//   "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a
	// provider that aggregates positions of bicycle rental points that we
	// have agreements with to show on maps
	//   "PROVIDER_GOOGLE_CONCRETE_URLS"
	//   "PROVIDER_GOOGLE_LEANBACK"
	//   "PROVIDER_GOOGLE_LOCKED_LISTINGS"
	//   "PROVIDER_GOOGLE_MONITORING"
	//   "PROVIDER_GOOGLE_SPROUT"
	//   "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY"
	//   "PROVIDER_GOOGLE_GOBY"
	//   "PROVIDER_GOOGLE_PROBLEM_REPORT"
	//   "PROVIDER_GOOGLE_CANDID"
	//   "PROVIDER_GOOGLE_BIZBUILDER"
	//   "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been
	// depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.
	//   "PROVIDER_MAPDATA_SCIENCES"
	//   "PROVIDER_MAPONICS"
	//   "PROVIDER_SKI_RESORTS"
	//   "PROVIDER_ZENRIN"
	//   "PROVIDER_SANBORN"
	//   "PROVIDER_URBAN_MAPPING"
	//   "PROVIDER_US_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_US_CENSUS"
	//   "PROVIDER_US_POSTAL_SERVICE"
	//   "PROVIDER_US_GEOLOGICAL_SURVEY"
	//   "PROVIDER_US_GNIS"
	//   "PROVIDER_US_LANDSAT"
	//   "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY"
	//   "PROVIDER_US_NGA_GNS"
	//   "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines
	//   "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS"
	//   "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" -
	// NOAA
	//   "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC
	//   "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA
	//   "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry
	//   "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS"
	//   "PROVIDER_DMTI_SPATIAL"
	//   "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION"
	//   "PROVIDER_MAPLINK"
	//   "PROVIDER_KINGWAY"
	//   "PROVIDER_GEOCENTRE"
	//   "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS"
	//   "PROVIDER_CN_MAPABC"
	//   "PROVIDER_SMITHSONIAN_INSTITUTE"
	//   "PROVIDER_TRACKS_FOR_AFRICA"
	//   "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO
	//   "PROVIDER_LEADDOG"
	//   "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG"
	//   "PROVIDER_GISRAEL"
	//   "PROVIDER_BASARSOFT"
	//   "PROVIDER_MAPINFO"
	//   "PROVIDER_MAPIT"
	//   "PROVIDER_GEOBASE"
	//   "PROVIDER_ORION"
	//   "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY"
	//   "PROVIDER_ANASAT"
	//   "PROVIDER_MINED_POSTCODES"
	//   "PROVIDER_DMAPAS"
	//   "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY"
	//   "PROVIDER_CH_SBB"
	//   "PROVIDER_SKENERGY"
	//   "PROVIDER_GBRMPA"
	//   "PROVIDER_KOREA_POST"
	//   "PROVIDER_CN_AUTONAVI"
	//   "PROVIDER_MINED_POI"
	//   "PROVIDER_ML_INFOMAP"
	//   "PROVIDER_SNOOPER"
	//   "PROVIDER_GEOSISTEMAS"
	//   "PROVIDER_AFRIGIS"
	//   "PROVIDER_TRANSNAVICOM"
	//   "PROVIDER_EASYCONNECT"
	//   "PROVIDER_LANTMATERIET"
	//   "PROVIDER_LOGICA"
	//   "PROVIDER_MAPKING"
	//   "PROVIDER_DIANPING"
	//   "PROVIDER_GEONAV"
	//   "PROVIDER_HEIBONSHA"
	//   "PROVIDER_DEUTSCHE_TELEKOM"
	//   "PROVIDER_LINGUISTIC_DATA_CONSORTIUM"
	//   "PROVIDER_ACXIOM"
	//   "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395
	//   "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION"
	//   "PROVIDER_INFOUSA"
	//   "PROVIDER_INFOUSA_NIXIE"
	//   "PROVIDER_THOMSON_LOCAL"
	//   "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION"
	//   "PROVIDER_WIKIPEDIA"
	//   "PROVIDER_INFOBEL"
	//   "PROVIDER_MX_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY"
	//   "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO"
	//   "PROVIDER_TELEGATE"
	//   "PROVIDER_TELELISTAS"
	//   "PROVIDER_MAPCITY"
	//   "PROVIDER_EXPLAINER_DC"
	//   "PROVIDER_DAIKEI"
	//   "PROVIDER_NL_CHAMBER_OF_COMMERCE"
	//   "PROVIDER_KOREA_INFO_SERVICE"
	//   "PROVIDER_WIKITRAVEL"
	//   "PROVIDER_FLICKR"
	//   "PROVIDER_DIANCO"
	//   "PROVIDER_VOLT_DELTA"
	//   "PROVIDER_SG_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY"
	//   "PROVIDER_MAPBAR"
	//   "PROVIDER_LONGTU"
	//   "PROVIDER_SA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SA_SAUDI_POST"
	//   "PROVIDER_PEAKLIST"
	//   "PROVIDER_LOCAL_BUSINESS_CENTER"
	//   "PROVIDER_LOCAL_FEED_XML" - UMBRELLA
	//   "PROVIDER_WEB"
	//   "PROVIDER_RAILS_TO_TRAILS"
	//   "PROVIDER_INDIACOM"
	//   "PROVIDER_INFOMEDIA"
	//   "PROVIDER_PICASA"
	//   "PROVIDER_AT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN"
	//   "PROVIDER_AT_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_AT_AUSTRIA_POST"
	//   "PROVIDER_NO_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON"
	//   "PROVIDER_NO_POSTEN_NORGE_AS"
	//   "PROVIDER_CH_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_CH_SWISS_POST"
	//   "PROVIDER_CH_SWISSTOPO"
	//   "PROVIDER_CH_SWISS_NATIONAL_PARK"
	//   "PROVIDER_NAVIT"
	//   "PROVIDER_GEOSEARCH"
	//   "PROVIDER_DE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE"
	//   "PROVIDER_BUNDESNETZAGENTUR"
	//   "PROVIDER_SCHOBER_GROUP"
	//   "PROVIDER_MIREO"
	//   "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA"
	//   "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO"
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY"
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG"
	//   "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE"
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT"
	//   "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA"
	//   "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA"
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA"
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK"
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN"
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA"
	//   "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO"
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA"
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV"
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER"
	//   "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX"
	//   "PROVIDER_SG_PUBLIC_MUNICIPALITY"
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT
	//   "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO"
	//   "PROVIDER_MAPCUBE"
	//   "PROVIDER_3D_REALITYMAPS"
	//   "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT"
	//   "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA"
	//   "PROVIDER_DISNEY"
	//   "PROVIDER_CYBERCITY"
	//   "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS"
	//   "PROVIDER_VIRTUAL_HUNGARY_LIMITED"
	//   "PROVIDER_VIRTUEL_CITY"
	//   "PROVIDER_SCREAMPOINT_INTERNATIONAL"
	//   "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN"
	//   "PROVIDER_FR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL"
	//   "PROVIDER_FR_CADASTRE"
	//   "PROVIDER_DIADIEM"
	//   "PROVIDER_THE_WEATHER_CHANNEL"
	//   "PROVIDER_COWI"
	//   "PROVIDER_FALKPLAN_ANDES"
	//   "PROVIDER_NL_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NL_KADASTER"
	//   "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS"
	//   "PROVIDER_DIGITAL_MAP_PRODUCTS"
	//   "PROVIDER_SILICE_DIGITAL"
	//   "PROVIDER_TYDAC"
	//   "PROVIDER_ALBRECHT_GOLF"
	//   "PROVIDER_HEALTH_CH"
	//   "PROVIDER_VISITDENMARK"
	//   "PROVIDER_FLYHERE"
	//   "PROVIDER_DIGITAL_DATA_SERVICES"
	//   "PROVIDER_MECOMO"
	//   "PROVIDER_ZA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM"
	//   "PROVIDER_SENSIS"
	//   "PROVIDER_JJCONNECT"
	//   "PROVIDER_OPPLYSNINGEN"
	//   "PROVIDER_TELLUS"
	//   "PROVIDER_IQONIA"
	//   "PROVIDER_BE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT"
	//   "PROVIDER_BE_BRUSSELS_MOBILITY"
	//   "PROVIDER_YELLOWMAP_AG"
	//   "PROVIDER_STIFTUNG_GESUNDHEIT"
	//   "PROVIDER_GIATA"
	//   "PROVIDER_SANPARKS"
	//   "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE"
	//   "PROVIDER_INFOPORTUGAL"
	//   "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO"
	//   "PROVIDER_COLLINS_BARTHOLOMEW"
	//   "PROVIDER_PROTECT_PLANET_OCEAN"
	//   "PROVIDER_KARTTAKESKUS"
	//   "PROVIDER_FI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION"
	//   "PROVIDER_FI_NATIONAL_LAND_SURVEY"
	//   "PROVIDER_FI_STATISTICS_FINLAND"
	//   "PROVIDER_GB_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_GB_ORDNANCE_SURVEY"
	//   "PROVIDER_NATURAL_ENGLAND"
	//   "PROVIDER_WELSH_GOVERNMENT"
	//   "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS"
	//   "PROVIDER_EPSILON"
	//   "PROVIDER_PARTNER_FRONT_END"
	//   "PROVIDER_CARTESIA"
	//   "PROVIDER_SE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SE_TRAFIKVERKET"
	//   "PROVIDER_SE_NATURVARDSVERKET"
	//   "PROVIDER_IE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND"
	//   "PROVIDER_LU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_LU_P_AND_T_LUXEMBOURG"
	//   "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE"
	//   "PROVIDER_LU_NATIONAL_TOURIST_OFFICE"
	//   "PROVIDER_MAPFLOW"
	//   "PROVIDER_TKARTOR"
	//   "PROVIDER_JUMPSTART"
	//   "PROVIDER_EPTISA"
	//   "PROVIDER_MC_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_MC_PRINCIPAUTE_DE_MONACO"
	//   "PROVIDER_MONOLIT"
	//   "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE"
	//   "PROVIDER_MODIS"
	//   "PROVIDER_GEOX"
	//   "PROVIDER_GEODIRECTORY"
	//   "PROVIDER_GEOPLAN"
	//   "PROVIDER_INFODIREKT"
	//   "PROVIDER_GEOGLOBAL"
	//   "PROVIDER_DEUTSCHE_POST"
	//   "PROVIDER_TRACASA"
	//   "PROVIDER_CORREOS"
	//   "PROVIDER_ES_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA"
	//   "PROVIDER_EDIMAP"
	//   "PROVIDER_VERIZON"
	//   "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS"
	//   "PROVIDER_PROMAPS"
	//   "PROVIDER_CONSODATA"
	//   "PROVIDER_DE_AGOSTINI"
	//   "PROVIDER_FEDERPARCHI"
	//   "PROVIDER_NAVIGO"
	//   "PROVIDER_ITALIAMAPPE"
	//   "PROVIDER_CZECOT"
	//   "PROVIDER_NATURAL_EARTH"
	//   "PROVIDER_REGIO"
	//   "PROVIDER_SHIPWRECK_CENTRAL"
	//   "PROVIDER_RUTGERS_STATE_UNIVERSITY"
	//   "PROVIDER_TWINICE"
	//   "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD"
	//   "PROVIDER_INFOGROUP"
	//   "PROVIDER_TNET"
	//   "PROVIDER_CTT_CORREIOS_DE_PORTUGAL"
	//   "PROVIDER_EUROPARC"
	//   "PROVIDER_IUPPITER"
	//   "PROVIDER_MICHAEL_BAUER_INTERNATIONAL"
	//   "PROVIDER_LEPTON"
	//   "PROVIDER_MAPPOINT"
	//   "PROVIDER_GEODATA"
	//   "PROVIDER_RU_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_RU_FNS_KLADR"
	//   "PROVIDER_BR_GOVERNMENT" - ABSTRACT
	//
	// "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU
	// RAIS_RENOVAVEIS" - IBAMA
	//   "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA
	//   "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA
	//   "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" -
	// IBGE
	//   "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI
	//
	// "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES"
	// - DNIT
	//   "PROVIDER_AZAVEA"
	//   "PROVIDER_NORTHSTAR"
	//   "PROVIDER_COMMEDI"
	//   "PROVIDER_NEXUS_GEOGRAFICS"
	//   "PROVIDER_INFOERA"
	//   "PROVIDER_AD_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography
	//   "PROVIDER_MAXXIMA"
	//   "PROVIDER_SI_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT"
	//   "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS"
	//   "PROVIDER_L1_TECHNOLOGIES"
	//   "PROVIDER_TELEMEDIA"
	//   "PROVIDER_CDCOM_PROGOROD"
	//   "PROVIDER_MIT_CITYGUIDE"
	//   "PROVIDER_SUNCART"
	//   "PROVIDER_MICROMAPPER"
	//   "PROVIDER_RICHI"
	//   "PROVIDER_FORUM44"
	//   "PROVIDER_SEAT"
	//   "PROVIDER_VALASSIS"
	//   "PROVIDER_NAVICOM"
	//   "PROVIDER_COLTRACK"
	//   "PROVIDER_PSMA_AUSTRALIA"
	//   "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA"
	//   "PROVIDER_CA_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_STATISTICS_CANADA"
	//   "PROVIDER_TOCTOC"
	//   "PROVIDER_RMSI"
	//   "PROVIDER_TRUE_TECHNOLOGY"
	//   "PROVIDER_INCREMENT_P_CORPORATION"
	//   "PROVIDER_GOJAVAS"
	//   "PROVIDER_GEOINFORMATION_GROUP"
	//   "PROVIDER_CYBERSOFT"
	//   "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not
	// to be used. OOO CET
	//   "PROVIDER_EE_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_EE_MAA_AMET" - Estonian Land Board
	//   "PROVIDER_GASBUDDY"
	//   "PROVIDER_DK_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency
	//   "PROVIDER_MURCIA_REGION_GOVERNMENT"
	//   "PROVIDER_CORREIOS"
	//   "PROVIDER_WEST_WORLD_MEDIA"
	//   "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION"
	//   "PROVIDER_MEDICARE"
	//   "PROVIDER_POLARIS"
	//   "PROVIDER_TW_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER"
	//   "PROVIDER_NORDECA"
	//   "PROVIDER_AFRIMAPPING"
	//   "PROVIDER_OVERDRIVE"
	//   "PROVIDER_PROVIDER_NETWORK_DIRECTORIES"
	//   "PROVIDER_BR_MINISTERIO_DA_SAUDE"
	//   "PROVIDER_DIGITAL_EGYPT"
	//   "PROVIDER_INRIX"
	//   "PROVIDER_ARPINDO"
	//   "PROVIDER_IT_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE"
	//   "PROVIDER_EAST_END_GROUP"
	//   "PROVIDER_INGEOLAN"
	//   "PROVIDER_SEMACONNECT"
	//   "PROVIDER_BLINK"
	//   "PROVIDER_EVGO"
	//   "PROVIDER_CHARGEPOINT"
	//   "PROVIDER_TPL_TRAKKER"
	//   "PROVIDER_OI"
	//   "PROVIDER_MAPARADAR"
	//   "PROVIDER_SINGAPORE_POST"
	//   "PROVIDER_CHARGEMASTER"
	//   "PROVIDER_TESLA"
	//   "PROVIDER_VISICOM"
	//   "PROVIDER_GEOLYSIS"
	//   "PROVIDER_ZEPHEIRA"
	//   "PROVIDER_HUBJECT"
	//   "PROVIDER_PODPOINT"
	//   "PROVIDER_CHARGEFOX"
	//   "PROVIDER_KR_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and
	// transport, 국토교통부, Guktogyotongbu
	//   "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY"
	//   "PROVIDER_CRITCHLOW"
	//   "PROVIDER_EIFRIG"
	//   "PROVIDER_GIREVE"
	//   "PROVIDER_CN_NAVINFO"
	//   "PROVIDER_JAPAN_CHARGE_NETWORK"
	//   "PROVIDER_NOBIL"
	//   "PROVIDER_INDIA_BANKS"
	//   "PROVIDER_INDONESIA_ELECTION_KPU"
	//   "PROVIDER_CAREERS360"
	//   "PROVIDER_SOURCE_LONDON"
	//   "PROVIDER_EVBOX"
	//   "PROVIDER_JP_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT"
	//   "PROVIDER_YUMYUM"
	//   "PROVIDER_HWW_AUSTRALIA"
	//   "PROVIDER_CINERGY"
	//   "PROVIDER_MTIME"
	//   "PROVIDER_KULTUNAUT"
	//   "PROVIDER_BLITZ"
	//   "PROVIDER_PIA"
	//   "PROVIDER_INTERPARK"
	//   "PROVIDER_CINEMA_ONLINE"
	//   "PROVIDER_BELBIOS"
	//   "PROVIDER_MOVIESEER"
	//   "PROVIDER_SODAMEDYA"
	//   "PROVIDER_ATMOVIES"
	//   "PROVIDER_HOTELBEDS"
	//   "PROVIDER_VERICRED"
	//   "PROVIDER_CIRRANTIC"
	//   "PROVIDER_GOGO_LABS"
	//   "PROVIDER_ELECTRIFY_AMERICA"
	//   "PROVIDER_CMS_MPPUF"
	//   "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.
	//   "PROVIDER_KONTEX_GEOMATICS"
	//   "PROVIDER_NZ_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_NZ_LINZ" - Land Information New Zealand
	//   "PROVIDER_NZ_DOC" - NZ Department of Conservation
	//   "PROVIDER_FASTNED"
	//   "PROVIDER_DESTINY_CS"
	//   "PROVIDER_IONITY"
	//   "PROVIDER_EV_CONNECT"
	//   "PROVIDER_PANPAGES"
	//   "PROVIDER_ETECNIC"
	//   "PROVIDER_VOLTA"
	//   "PROVIDER_NISSAN_MEXICO"
	//   "PROVIDER_BMW_GROUP_LATIN_AMERICA"
	//   "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO"
	//   "PROVIDER_VOLVO_CARS_BRASIL"
	//   "PROVIDER_CHARGE_AND_PARKING"
	//   "PROVIDER_DEDUCE_TECHNOLOGIES"
	//   "PROVIDER_SK_TELECOM"
	//   "PROVIDER_ECO_MOVEMENT"
	//   "PROVIDER_GOOGLE_GMS"
	//   "PROVIDER_EASYWAY"
	//   "PROVIDER_PHYSICIAN_COMPARE"
	//   "PROVIDER_HOSPITAL_COMPARE"
	//   "PROVIDER_ENDOLLA_BARCELONA"
	//   "PROVIDER_BE_CHARGE"
	//   "PROVIDER_ONE_NETWORK"
	//   "PROVIDER_CARENAV_DUPLEX"
	//   "PROVIDER_CARENAV_POI" - UMBRELLA
	//   "PROVIDER_IN_GOVERNMENT" - ABSTRACT
	//   "PROVIDER_SURVEY_OF_INDIA"
	//   "PROVIDER_E_ON"
	//   "PROVIDER_ELECTRIFY_CANADA"
	//   "PROVIDER_GRIDCARS"
	//   "PROVIDER_DRIVECO"
	//   "PROVIDER_GREEN_ACTION_STUDIOS"
	//   "PROVIDER_GREEN_ACTION_STUDIO"
	//   "PROVIDER_EVINY"
	//   "PROVIDER_MASTERCARD"
	//   "PROVIDER_VATTENFALL"
	//   "PROVIDER_VIETGIS"
	//   "PROVIDER_UNITE"
	//   "PROVIDER_NEOGY"
	//   "PROVIDER_AMPUP"
	//   "PROVIDER_LOOP"
	//   "PROVIDER_ZEST" - Note: Next available value is 0x1270B.
	Provider string `json:"provider,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dataset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dataset") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreProvenanceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreProvenanceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRankDetailsProto: This message is embedded within a
// FeatureProto. It has rank calculation details such as available rank
// signals and rank signal mixer used to compute final rank. For more
// details, see the Oyster Rank wiki page:
// http://wiki.corp.google.com/twiki/bin/view/Main/OysterRank
type GeostoreRankDetailsProto struct {
	// Signal: A list of signals. Each one is extracted separately by a
	// SignalExtractor.
	Signal []*GeostoreRankSignalProto `json:"signal,omitempty"`

	// SignalMixerType: The signal mixer that was used to calculate the
	// rank.
	//
	// Possible values:
	//   "MIXER_INVALID"
	//   "MIXER_MISSING"
	//   "MIXER_ADDRESS_AREA"
	//   "MIXER_ROUTE_SEGMENT_INTERSECTION"
	//   "MIXER_POLITICAL_EUROPA"
	//   "MIXER_POLITICAL_AREA"
	//   "MIXER_POLITICAL"
	//   "MIXER_COUNTRY_EUROPA"
	//   "MIXER_COUNTRY_AREA"
	//   "MIXER_COUNTRY"
	//   "MIXER_LOCALITY"
	//   "MIXER_LOCALITY_GEOWIKI" - DEPRECATED
	//   "MIXER_LOCALITY_EUROPA" - DEPRECATED
	//   "MIXER_LOCALITY_AREA" - DEPRECATED
	//   "MIXER_RIVER"
	//   "MIXER_LENGTH_WEBSCORE"
	//   "MIXER_SKENERGY"
	//   "MIXER_GEOCENTRE_GEOCODED_ADDRESS" - DEPRECATED
	//   "MIXER_PLACERANK"
	//   "MIXER_TRANSIT"
	//   "MIXER_LOCALITY_EUROPA_AREA" - DEPRECATED
	//   "MIXER_WEBSCORE"
	//   "MIXER_LOCALITY_MAPDATA_SCIENCES" - DEPRECATED
	//   "MIXER_SUBLOCALITY_MAPDATA_SCIENCES" - DEPRECATED
	//   "MIXER_PEAK"
	//   "MIXER_BUILDING"
	//   "MIXER_RESERVATION"
	//   "MIXER_AIRPORT"
	//   "MIXER_AREA"
	//   "MIXER_MANAGER" - These should never be present on a feature.
	//   "MIXER_TEST_1"
	//   "MIXER_TEST_2"
	//   "MIXER_TEST_3"
	//   "MIXER_TEST_4"
	//   "MIXER_TEST_5"
	SignalMixerType string `json:"signalMixerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Signal") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Signal") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRankDetailsProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRankDetailsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRankSignalProto: This message is embedded in the
// RankDetailsProto (below). It represents one rank signal, which is a
// floating point value estimating the Oyster Rank of the feature.
type GeostoreRankSignalProto struct {
	// Metadata: Field-level metadata for this signal.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Rank: A value in the range [0, 1] estimating Oyster Rank according to
	// this signal. Non-provider specific signals (e.g. SIGNAL_POPULATION)
	// are interpreted by some common code in the ranking pipeline. Because
	// of that, data providers should leave this field empty when setting
	// such signals (so that the rank assignment can be uniform across all
	// features regardless of contributing data providers). On the other
	// hand, provider-specific signals (e.g. SIGNAL_ZENRIN_CITY_CATEGORY)
	// are required to specify the rank field (it is not optional for them).
	// That is because no code other than that of the provider itself will
	// be able to fill in a meaningful value later on. We don't want clients
	// to be reading from the raw_scalar / raw_string fields to interpret
	// the data.
	Rank float64 `json:"rank,omitempty"`

	// RawScalar: The raw scalar value that was used to compute 'rank'
	// above. The meaning of this attribute changes depending on the signal
	// type.
	RawScalar float64 `json:"rawScalar,omitempty"`

	// RawString: The raw string value that was used to compute 'rank'
	// above. The meaning of this attribute changes depending on the signal
	// type.
	RawString string `json:"rawString,omitempty"`

	// Possible values:
	//   "SIGNAL_UNKNOWN" - This is reserved as a sentinel value. It should
	// never be used. An unknown signal.
	//   "SIGNAL_LENGTH" - Magnitude for one-dimensional features like
	// segments.
	//   "SIGNAL_AREA" - Magnitude for features with polygonal geometry.
	// Derived from the number of other features that use this feature as an
	// address component.
	//   "SIGNAL_ADDRESS" - DEPRECATED Derived from the number of local
	// business listings that, once reverse-geocoded, have this feature as
	// an address component.
	//   "SIGNAL_LISTING" - DEPRECATED
	//   "SIGNAL_ROAD_PRIORITY" - This signal will be set on all routes and
	// is derived by the value of the priority of all segments composing the
	// route. It is a "derived" signal instead of a canonical one because it
	// is not only about inheriting some child segment's priority. We
	// actually take into consideration the priorities of all children
	// segments to come up with a raw value for this signal. Derived from
	// the number of POI that use this feature as an address component.
	//   "SIGNAL_POI_COUNT" - DEPRECATED
	//   "SIGNAL_WEBSCORE" - This signal derived from the number of
	// documents in DocJoin, which contains keywords of the source feature.
	// For each raw feature, we extract keywords from the feature's name and
	// address. We search the keywords in DocJoin (now only 4B) to get the
	// number of webpages which contains all the keywords of the feature,
	// eg, for Quanjude in Beijing which is a famous restaurant in China, we
	// consider Beijing and Quanjude as its keywords, the page containing
	// both Beijing and Quanjude will be counted in. The number will be
	// mapped by logarithm function into [0, 1]. This signal is based on a
	// simple assumption: the more the name appears in webpage, the more
	// famous it is. These signals are calculated by the Path Radius
	// algorithm, using Pathfinder to figure out in how big a neighborhood
	// this segment is used as a thoroughfare. The popularity is simply the
	// fraction of all paths that use this segment.
	//   "SIGNAL_PATHRADIUS_LENGTH_METERS" - DEPRECATED
	//   "SIGNAL_PATHRADIUS_LENGTH_SEGMENTS" - DEPRECATED
	//   "SIGNAL_PATHRADIUS_POPULARITY" - DEPRECATED
	//   "SIGNAL_PEAK_ELEVATION_PROMINENCE" - Signal based on elevation and
	// prominence values of peaks.
	//   "SIGNAL_ROAD_SEGMENT_COUNT" - Signal based on the number of road
	// segments referring a feature. The number could be obtained by either
	// looking RELATION_CONTAINED_BY relation or counting children of the
	// feature.
	//   "SIGNAL_POI_SCORE" - Signal based on placerank values of
	// establishments that use this feature as an address or located within
	// it (as determined by relations).
	//   "SIGNAL_ATTRACTIONS_SCORE" - Signal based on placerank values of
	// (tourist) attraction establishments that are related to this feature
	// through containment.
	//   "SIGNAL_HAND_RANKED_LOCALITY_PROMINENCE" - Signal indicating a city
	// of particular prominence independent of its other attributes.
	// Currently only implemented for Japanese localities, primarily based
	// on official government city statuses.
	//   "SIGNAL_POPULATION"
	//   "SIGNAL_GDP"
	//   "SIGNAL_EUROPA_CLASS" - NOTE(jdkim): All rank signals below are
	// provider specific ones, so we use this enum value to identify the
	// enum range for provider specific signals.
	//   "SIGNAL_RMF_SOURCE_RANK" - DEPRECATED
	//   "SIGNAL_MDS_SOURCE_RANK" - DEPRECATED
	//   "SIGNAL_MULTINET_SOURCE_RANK" - DEPRECATED
	//   "SIGNAL_LOCALXML_MANUAL_RANK" - DEPRECATED
	//   "SIGNAL_TRANSIT_LINE" - DEPRECATED
	//   "SIGNAL_TRANSIT_TRAIN_DEPARTURE_COUNT"
	//   "SIGNAL_TRANSIT_METRO_DEPARTURE_COUNT"
	//   "SIGNAL_TRANSIT_BUS_DEPARTURE_COUNT"
	//   "SIGNAL_TRANSIT_OTHER_DEPARTURE_COUNT"
	//   "SIGNAL_TRANSIT_TRAIN_LINE_COUNT"
	//   "SIGNAL_TRANSIT_METRO_LINE_COUNT"
	//   "SIGNAL_TRANSIT_BUS_LINE_COUNT"
	//   "SIGNAL_TRANSIT_OTHER_LINE_COUNT"
	//   "SIGNAL_TRANSIT_STATION_LOCAL_RANK" - Score of a particular station
	// in relation to the stations near it. E.g., when displaying list of
	// nearby stations we could prioritize the higher ranked ones.
	//   "SIGNAL_TRANSIT_STATION_GLOBAL_RANK" - Score of a particular
	// station in relation to all the stations globally. This is valuable
	// for data cleanups, modeling, and proactive checks that could be
	// targeted at the "Top Stations" to ensure high impact.
	//   "SIGNAL_ORION_LEVEL"
	//   "SIGNAL_GEOCENTRE_ADDRESS_RANK" - DEPRECATED
	//   "SIGNAL_GOOGLE_3DWAREHOUSE_RANK" - DEPRECATED
	//   "SIGNAL_SKENERGY_CATEGORY" - Rank derived from feature popularity
	// asserted by users. Higher rank values are almost always moderated to
	// verify accuracy, hence reliable.
	//   "SIGNAL_GOOGLE_GEOWIKI_USER_RANK" - DEPRECATED
	//   "SIGNAL_WIKIPEDIA_ARTICLES" - These are primarily used for
	// computing Placerank, which is now signal 3200.
	//   "SIGNAL_WIKIPEDIA_ARTICLES_IN_OFFICIAL_LANGUAGE" - DEPRECATED
	//   "SIGNAL_KML_PLACEMARKS"
	//   "SIGNAL_KML_SOURCES"
	//   "SIGNAL_PANORAMIO_USERS" - DEPRECATED
	//   "SIGNAL_GOOGLE_MAPSHOP_USERS"
	//   "SIGNAL_GOOGLE_LOCALSEARCH_DIRECTORY_INFOS" - DEPRECATED
	//   "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKS" - DEPRECATED
	//   "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKTHROUGH_RATE" - DEPRECATED
	//   "SIGNAL_GOOGLE_RBL_CLICKS"
	//   "SIGNAL_GOOGLE_RBL_CLICK_FRACTION"
	//   "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK" - DEPRECATED
	//   "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK_CONFIDENCE"
	//   "SIGNAL_GOOGLE_REVIEWS"
	//   "SIGNAL_GOOGLE_WEB_QUERYVOL"
	//   "SIGNAL_GOOGLE_WEBPAGE_REFERENCE_DOMAINS" - DEPRECATED
	//   "SIGNAL_GOOGLE_LISTING_IMPRESSIONS"
	//   "SIGNAL_GOOGLE_INFOWINDOW_VIEWS"
	//   "SIGNAL_GOOGLE_DIRECTION_REQUESTS"
	//   "SIGNAL_GOOGLE_HOMEPAGE_CLICKS"
	//   "SIGNAL_GOOGLE_CHAIN_STORES"
	//   "SIGNAL_FLICKR_USERS" - DEPRECATED
	//   "SIGNAL_GOOGLE_LEANBACK_TOURS"
	//   "SIGNAL_GOOGLE_LOCALSEARCH_PLACERANK"
	//   "SIGNAL_WIKIPEDIA_WIKI_SCORE" - Signal based on WIKI_SCORE, which
	// is brought by DataSourceProvider::PROVIDER_WIKIPEDIA.
	//   "SIGNAL_ZENRIN_CITY_CATEGORY" - DEPRECATED Signal for buildings in
	// Japan. This signal is a scale of the map this building label should
	// be rendered.
	//   "SIGNAL_ZENRIN_BUILDING_CLASS" - DEPRECATED Signal for peaks in
	// Japan. This signal is a scale of the map this peak label should be
	// rendered.
	//   "SIGNAL_ZENRIN_PEAK_CLASS" - DEPRECATED
	//   "SIGNAL_PLACE_INSIGHTS_LANDMARK" - Place Insights landmarkiness
	// fundamental aspect. This score combines the popularity and prominence
	// aspects below with the Kerouac tourist score. Details:
	// go/plank-landmark
	//   "SIGNAL_PLACE_INSIGHTS_POPULARITY" - Place Insights popularity
	// fundamental aspect. This score combines physical visits (Hulk) and
	// direction searches. Details: go/plank-popularity
	//   "SIGNAL_PLACE_INSIGHTS_PROMINENCE" - Place Insights prominence
	// fundamental aspect. This score is based on WebRef and the number of
	// photos of a place. Details: go/plank-prominence DEPRECATED: No longer
	// populated, because the data sources were deprecated. Not yet marked
	// as deprecated because some features might still contain the data.
	//   "SIGNAL_PLACE_INSIGHTS_APPROACHABILITY" - Place Insights
	// approachability fundamental aspect. This score indicates whether
	// users can interact with a place without appointment. It is computed
	// from the GCIDs of the place. Details: go/plank-approachability
	//   "SIGNAL_PLACE_INSIGHTS_TOTAL_ROAD_SEGMENT_USAGE" - Number of times
	// a user drives the entire length of the segment according to snapped
	// GLS tracks. This is obtained by aggregating the snapped GLS data
	// generated by the traffic team. Design document:
	// go/aggregated-road-traffic-mapfacts
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRankSignalProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRankSignalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreRankSignalProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreRankSignalProto
	var s1 struct {
		Rank      gensupport.JSONFloat64 `json:"rank"`
		RawScalar gensupport.JSONFloat64 `json:"rawScalar"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Rank = float64(s1.Rank)
	s.RawScalar = float64(s1.RawScalar)
	return nil
}

// GeostoreRawDataProto: A RawDataProto is a key-value pair that
// represents arbitrary source data from a particular provider. Raw data
// can be attached to features using their source_info field.
type GeostoreRawDataProto struct {
	// Key: The key associated with this data item. For source data in shape
	// file format, this will typically be a column name. Keys need to be
	// unique with respect to a particular data source (see
	// DataSourceProto), but they do not need to be globally unique. You can
	// look up the documentation for a key (e.g. a longer label and
	// description) by following the source_id link of the parent
	// SourceInfoProto, which takes you to a TYPE_DATA_SOURCE feature, and
	// then looking up the corresponding RawMetadataProto object for this
	// key in that feature's optional data_source field.
	Key string `json:"key,omitempty"`

	// ValueString: All data items are represented as strings, the logic
	// being that it is easy to convert other data types to strings, and
	// there is no need to access this data efficiently.
	ValueString string `json:"valueString,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRawDataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRawDataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreRawMetadataProto struct {
	// ConflationMethod: Method to use when conflating together RawDataProto
	// values at the same key NB: If you add a new ConflationMethod, then
	// you must add the corresponding logic to MergeRawData to conflate the
	// RawDataProto values using this method.
	//
	// Possible values:
	//   "CONFLATION_PICK_FIRST_VALUE" - Simply picks first value from the
	// set of values to be conflated together. If target feature already has
	// a value, then that is the value kept.
	//   "CONFLATION_UNION_CSV" - Parses all values as a comma-separated
	// lists and takes the union of all elements from all lists (e.g. no
	// duplicates) to create a new comma- separated list.
	//   "CONFLATION_SUM" - Parses all values as int32s and outputs their
	// sum as the final value.
	ConflationMethod string `json:"conflationMethod,omitempty"`

	// Description: Self-contained documentation about what this field
	// represents and how its values are encoded.
	Description string `json:"description,omitempty"`

	// Key: The key being described.
	Key string `json:"key,omitempty"`

	// Label: A longer, human-readable name associated with this key. The
	// label might be used in a data explorer tool, for example.
	Label string `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConflationMethod") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConflationMethod") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRawMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRawMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRectProto: A latitude-longitude rectangle, represented as two
// diagonally opposite points "lo" and "hi". The rectangle is considered
// to be a closed region, i.e. it includes its boundary. The latitude
// bounds must be in the range -90 to 90 degrees inclusive, and the
// longitude bounds must be in the range -180 to 180 degrees inclusive.
// Various cases include: - If lo == hi, the rectangle consists of a
// single point. - If lo.longitude > hi.longitude, the longitude range
// is "inverted" (the rectangle crosses the 180 degree longitude line).
// - If lo.longitude == -180 degrees and hi.longitude = 180 degrees, the
// rectangle includes all longitudes. - If lo.longitude = 180 degrees
// and hi.longitude = -180 degrees, the longitude range is empty. - If
// lo.latitude > hi.latitude, the latitude range is empty.
type GeostoreRectProto struct {
	Hi *GeostorePointProto `json:"hi,omitempty"`

	Lo *GeostorePointProto `json:"lo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hi") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hi") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRectProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRectProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRegulatedAreaProto: A collection of information that applies
// to a polygonal area.
type GeostoreRegulatedAreaProto struct {
	// Restriction: The set of restrictions that apply to a zone. These
	// restrictions may limit the routability of every segment contained
	// within the defined feature.polygon. Repeated restrictions are treated
	// collectively as an OR meaning that segments in the zone are only
	// routable if none of the restrictions apply. If any segments within
	// the defined polygon should not have these restrictions applied, they
	// must list this regulated area's feature id in their
	// feature.exempt_regulated_area field.
	Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Restriction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Restriction") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRegulatedAreaProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRegulatedAreaProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRelationProto: This message is embedded within a
// FeatureProto, and represents a geographic or logical relationship of
// that feature to some other feature. Note that some relation types are
// there purely for the purpose of grouping together other relation
// types. They are noted as ABSTRACT in comments. Other relation types
// are no longer supported / in use. They are noted as DEPRECATED in
// comments (and marked with the standard deprecated option, too). Other
// relation types are reserved for future use or just not intended for
// use at all, for various internal reasons. They are noted as RESERVED
// in comments. WARNING: Updates to this proto within a FeatureProto's
// related_feature field handled by standalone pipelines and are NOT
// atomic with regard to updates to the features being referenced; we do
// not guarantee that a given MapFacts snapshot will be consistent
// between this field and the related features.
type GeostoreRelationProto struct {
	// Metadata: Field-level metadata for this relation.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// OtherFeatureCountryCode: If and only if the other feature is of
	// TYPE_COUNTRY, the 2-letter country code. This is the
	// FLAG_COUNTRY_CODE_2 name of the country component.
	OtherFeatureCountryCode string `json:"otherFeatureCountryCode,omitempty"`

	// OtherFeatureId: The feature ID of the feature to which we're
	// relating. WARNING: the related feature does not necessarily have a
	// bound that encloses this feature, so in a bucketing MapReduce, you
	// may not be able to follow all relationships. Relations that use
	// strong references are annotated above but you can also refer to
	// IsRelationStrong() in geostore/base/public/relation.h.
	OtherFeatureId *GeostoreFeatureIdProto `json:"otherFeatureId,omitempty"`

	// OtherFeatureName: RESERVED
	OtherFeatureName []*GeostoreNameProto `json:"otherFeatureName,omitempty"`

	// OtherFeatureTerritorialAdministrator: If and only if the other
	// feature is of TYPE_DISPUTED_AREA, the territorial administrator found
	// in its GeopoliticalAttachmentProto.administered_by field, if any.
	// Since this string is copied exactly, it may be a 2-letter country
	// code or another type of descriptive string.
	OtherFeatureTerritorialAdministrator string `json:"otherFeatureTerritorialAdministrator,omitempty"`

	// OtherFeatureType: The type of the feature to which we're relating.
	OtherFeatureType int64 `json:"otherFeatureType,omitempty"`

	// OverlapFraction: ** DEPRECATED ** If relation is exactly
	// RELATION_OVERLAPS but not any of its subcategories, overlap_fraction
	// contains an estimate of the fraction of the geometry of this feature
	// that intersects with the other feature, ranging from 0.0 to 1.0. Note
	// that this is a rough estimate based on cell coverings, and may not be
	// very accurate. In particular, values of 0.0 and 1.0 are possible,
	// even though in principle they should not be.
	OverlapFraction float64 `json:"overlapFraction,omitempty"`

	// Relation: The relationship of the feature that contains this
	// RelationProto to the feature other_feature_id. Note the
	// relation_is_reversed field below. Some relations imply weak
	// references, other strong ones. Strong references are annotated above
	// but you can also refer to IsRelationStrong() in
	// geostore/base/public/relation.h.
	//
	// Possible values:
	//   "RELATION_OVERLAPS" - In the real world, this feature's geographic
	// extent intersects the other feature's, but does not contain it. Note
	// that the presence or absence of a relation may contradict the actual
	// geometry in the FeatureProto. In these cases, the client should
	// assume that the geometry of the feature is imprecise. Certain pairs
	// of features are considered disjoint even if the geometries overlap.
	// Allowed source types: - TYPE_ANY (but with geometry or children)
	// Allowed destination types: - TYPE_ANY (but with polygonal geometry)
	//   "RELATION_CONTAINED_BY" - In the real world, the geographical
	// extent of the feature is contained by that of the other feature. Note
	// that this relation implies overlap. As with overlap, the
	// frame-of-reference is the real world, not necessarily the (imprecise)
	// geometry in the FeatureProtos. There may be other semantic rules that
	// govern the assignment of this relation. Two features cannot contain
	// each other - instead they will have a RELATION_EQUAL_TO relation (see
	// below). strong reference
	//   "RELATION_EQUAL_TO" - In the real world, this feature's geographic
	// extent is exactly equal to the other feature's geographic extent.
	// Note that this relation implies containment and overlap.
	//   "RELATION_POLITICAL_DEPRECATED" - DEPRECATED
	//   "RELATION_CAPITAL_OF" - This feature is the capital of the other
	// feature. Allowed source types: - TYPE_POLITICAL Allowed destination
	// types: - TYPE_POLITICAL (of higher political level) strong reference
	//   "RELATION_DISAMBIGUATED_BY" - ABSTRACT, RESERVED
	//   "RELATION_NEIGHBOR_OF" - RESERVED
	//   "RELATION_OPPOSITE_TO" - RESERVED
	//   "RELATION_NEXT_TO" - RESERVED
	//   "RELATION_RIGHT_OF" - RESERVED
	//   "RELATION_LEFT_OF" - RESERVED
	//   "RELATION_BEHIND" - RESERVED
	//   "RELATION_IN_FRONT_OF" - RESERVED
	//   "RELATION_SAME_BUILDING" - RESERVED
	//   "RELATION_ABOVE" - RESERVED
	//   "RELATION_BELOW" - RESERVED
	//   "RELATION_NEAR" - RESERVED
	//   "RELATION_ORGANIZATIONALLY_PART_OF" - ABSTRACT
	//   "RELATION_DEPARTMENT_OF" - Used primarily to list co-existing
	// departments of businesses such as universities, hospitals, department
	// stores, etc. This is set from feature A to feature B when A is
	// physically located within the boundaries of the compound feature
	// occupied by B, AND A is a subsidiary or department of B (i.e. both
	// have the same management/ownership). e.g. department -> hospital,
	// department -> university Allowed source types: -
	// TYPE_ESTABLISHMENT_POI Allowed destination types: -
	// TYPE_ESTABLISHMENT_POI
	//   "RELATION_WORKS_AT" - Used to relate an individual practitioner
	// (doctor, lawyer, etc.) with the business they work at (hospital, law
	// firm, etc.) Allowed source types: - TYPE_ESTABLISHMENT_POI -
	// TYPE_ESTABLISHMENT_SERVICE Allowed destination types: -
	// TYPE_ESTABLISHMENT_POI
	//   "RELATION_INDEPENDENT_ESTABLISHMENT_IN" - Used primarily for the
	// "mall directory" use-case, this is set from feature A to feature B
	// when A is physically located within the boundaries of the compound
	// feature occupied by B AND A as an entity is independent of B, i.e. A
	// and B have different management/ownership. e.g. store -> mall Allowed
	// source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: -
	// TYPE_ESTABLISHMENT_POI
	//   "RELATION_ON_LEVEL" - The feature that represents the level/floor
	// the feature exists on. Allowed source types: - TYPE_CARTOGRAPHIC (at
	// most 1 such relation) - TYPE_COMPOUND_SECTION (at most 1 such
	// relation) - TYPE_ENTRANCE (at most 1 such relation) -
	// TYPE_ESTABLISHMENT_POI - TYPE_INTERSECTION (at most 1 such relation)
	// - TYPE_SEGMENT (at most 2 such relations) - TYPE_TERMINAL_POINT (at
	// most 1 such relations) Allowed destination types: - TYPE_LEVEL strong
	// reference
	//   "RELATION_OCCUPIES" - This feature physically occupies the other
	// feature. Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed
	// destination types: - TYPE_COMPOUND Consumers should use the geometry
	// of the target feature instead of the geometry of this feature. strong
	// reference
	//   "RELATION_BUSINESS_LIFE_CYCLE" - ABSTRACT
	//   "RELATION_BUSINESS_MOVED" - e.g. “espn zone" moved from Times
	// Square to Boston. The feature representing the business at the old
	// location, or with the old service area, will refer to the one
	// representing the business at the new location, or with the new
	// service area, with this relation type. If a feature has this
	// relation, its existence should show that the feature has closed and
	// the close reason should be set to MOVED. Allowed source types: -
	// TYPE_ESTABLISHMENT Allowed destination types: - TYPE_ESTABLISHMENT
	//   "RELATION_BUSINESS_REBRANDED" - e.g. "Holiday Inn" rebranded to
	// "Double Tree". The feature representing "Holiday Inn" will refer to
	// the feature representing "Double Tree" with this relation type. If a
	// feature has this relation, its existence should show that the feature
	// has closed and the close reason should be set to REBRANDED. Allowed
	// source types: - TYPE_ESTABLISHMENT Allowed destination types: -
	// TYPE_ESTABLISHMENT
	//   "RELATION_MEMBER_OF_CHAIN" - Used by specific chain
	// stores/franchises to refer to their parent chain. e.g. an individual
	// Walmart store is a member of the "Walmart" chain. Transit stations
	// can be members of multiple chains (transit agencies). All other
	// establishments can have at most one explicit RELATION_MEMBER_OF_CHAIN
	// relation. Subtypes may have different requirements.
	// TYPE_TRANSIT_AGENCY is a temporarily allowed destination type while
	// we migrate transit stations <-> transit agencies to a new
	// representation (b/197741661) Allowed source types: -
	// TYPE_ESTABLISHMENT Allowed destination types: - TYPE_BUSINESS_CHAIN -
	// TYPE_TRANSIT_AGENCY strong reference
	//   "RELATION_AUTHORIZED_DEALER_FOR_CHAIN" - Indicates that a feature
	// sells merchandise for a given brand chain (e.g. Honda vehicles).
	// Source currently restricted to features with gcid:car_dealer. strong
	// reference
	//   "RELATION_SUBSIDIARY_OF" - Used by specific sub chain to refer to
	// their parent chain. e.g. "Walmart Pharmacy" chain is a member of the
	// "Walmart" chain. Currently this is only used by transit agencies.
	// Talk to chains-eng team before using this relation type on other
	// chains. A business chain can have at most one such relation. Allowed
	// source types: - TYPE_BUSINESS_CHAIN Allowed destination types: -
	// TYPE_BUSINESS_CHAIN strong reference
	//   "RELATION_PRIMARILY_OCCUPIED_BY" - Indicates which logical entity
	// is the main occupant of a compound. A compound can have at most one
	// such relation, and the target feature for that relation must refer
	// back to the compound via a RELATION_OCCUPIES relation. Allowed source
	// types: - TYPE_COMPOUND Allowed destination types: -
	// TYPE_ESTABLISHMENT_POI strong reference
	//   "RELATION_VARIATION" - ABSTRACT, DEPRECATED
	//   "RELATION_HAS_VARIANT" - DEPRECATED
	//   "RELATION_VARIANT_OF" - DEPRECATED
	//   "RELATION_VARIANT_SIBLING" - DEPRECATED
	//   "RELATION_CLIENT_DEFINED" - RESERVED
	Relation string `json:"relation,omitempty"`

	// RelationIsReversed: RESERVED
	RelationIsReversed bool `json:"relationIsReversed,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// relation. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRelationProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRelationProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreRelationProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreRelationProto
	var s1 struct {
		OverlapFraction gensupport.JSONFloat64 `json:"overlapFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.OverlapFraction = float64(s1.OverlapFraction)
	return nil
}

// GeostoreRestrictionGroupProto: A restriction group represents common
// properties of a set of restrictions on segments that are associated
// with the same underlying cause across a geographic region. Every
// segment referenced by this restriction group should have at least one
// restriction that refers backs to this restriction group. The standard
// feature properties have the following interpretations: name - A name
// that represents the name for this restriction group. kg_property - A
// reference back to a KG event in case this restriction group belongs
// to an event in KG. /geo/type/restriction_group/associated_event
// contains a mid to the associated event.
type GeostoreRestrictionGroupProto struct {
	// Metadata: Field-level metadata for this restriction group.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Segment: FeatureId of all segments that have a RestrictionProto
	// referring back to this RestrictionGroup.
	Segment []*GeostoreFeatureIdProto `json:"segment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRestrictionGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRestrictionGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRestrictionProto: A restriction is an expression that limits
// when an action can be taken. Each restriction has a set of
// conditions. If all of the conditions are true, then the restriction
// applies and the action cannot be taken. For example, the restriction
// "no turns 3-5pm except buses" would have two conditions: "time is
// 3-5pm" and "vehicle is not a bus". If both of these conditions apply,
// the restriction is true, and the turn is prohibited. Multiple
// restrictions may apply to the same action. Clients handle this by
// always declaring RestrictionProto as a "repeated" element. The
// semantics of having multiple restrictions are that if any restriction
// applies, then the action cannot be taken. In other words,
// restrictions are OR-ed together. Putting all of this together, a set
// of RestrictionProtos can be interpreted as an bool expression in
// disjunctive normal form: (A and B) or (D and E and F) or (G and H)
// The action is prohibited if this expression is true. Note that a
// restriction with no conditions is always true, i.e. its action is
// always prohibited.
type GeostoreRestrictionProto struct {
	// AutonomousDrivingProducts: The restriction only applies in these
	// specific autonomous driving product scenarios. NOTE: This should only
	// be set on restrictions with TRAVEL_AUTONOMOUS_VEHICLE travel mode.
	//
	// Possible values:
	//   "UNKNOWN" - Indicates that specific product requirements are
	// unknown. It is best to assume that this applies to all autonomous
	// driving scenarios.
	//   "HD_L4" - HD Maps Level 4 product.
	//   "HD_L2" - HD Maps Level 2 product.
	//   "ADAS" - General advanced driver assist scenario.
	//   "AUTO_DRIVING_EXPERIENCE" - Geo Auto Driving Experience products
	// (go/dx).
	AutonomousDrivingProducts []string `json:"autonomousDrivingProducts,omitempty"`

	// IntersectionGroup: Actually *required* if style=STYLE_IN_OUT,
	// otherwise forbidden. Typically the intersection group type is
	// artifact, but either artifact or logical groups can be used for
	// STYLE_IN_OUT restrictions.
	IntersectionGroup *GeostoreFeatureIdProto `json:"intersectionGroup,omitempty"`

	// Metadata: Field-level metadata for this restriction.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// RestrictionGroup: Restriction group this restriction belongs to.
	RestrictionGroup *GeostoreFeatureIdProto `json:"restrictionGroup,omitempty"`

	// Schedule: When specified, restriction applies only at particular
	// times (operating hours or times of the year: reversing lanes,
	// seasonal roads, no left turns from 3-5pm Mon-Fri except holidays).
	// Otherwise, restriction is in effect at all times.
	Schedule *GeostoreTimeScheduleProto `json:"schedule,omitempty"`

	// Scope: The scope that the restriction applies to. - SCOPE_DIRECTION
	// means the segment/sibling pair is restricted in the direction of the
	// segment that contains this RestrictionProto. For segment/sibling
	// pairs with pedestrian facilities (and thus side-of-road routing) the
	// RestrictionProto restricts both facilities in the direction of the
	// segment (assuming that the restriction applies to travel mode
	// TRAVEL_PEDESTRIAN). - SCOPE_SIDE means the RestrictionProto applies
	// only to the side of road that the containing segment represents. That
	// sibling's pedestrian facility is restricted in both directions.
	// Schema constraints: - SCOPE_SIDE must be set if and only if
	// travel_mode == [TRAVEL_PEDESTRIAN] and the segment containing the
	// restriction has PEDESTRIAN_FACILITY_PRESENT. Such restrictions must
	// have no subpath. - All other restrictions must have this field set to
	// SCOPE_DIRECTION (whether explicitly or implicitly). This distinction
	// is necessary for cases such as pedestrian facility on one-way
	// segment/sibling roads.
	//
	// Possible values:
	//   "SCOPE_DIRECTION"
	//   "SCOPE_SIDE"
	Scope string `json:"scope,omitempty"`

	// Style: Restriction Style defines the semantics of the subpath field,
	// as defined above in the documentation of subpath.
	//
	// Possible values:
	//   "STYLE_CONTIGUOUS"
	//   "STYLE_SINGLE"
	//   "STYLE_TURN"
	//   "STYLE_IN_OUT"
	Style string `json:"style,omitempty"`

	// Subpath: "subpath" specifies the GeoStore segments that this
	// restriction applies to, according to the restriction_style field
	// below. Segments that are referenced by this subpath field also refer
	// to this feature back via the same subpath field. For all styles of
	// restriction, all segments in the subpath must have identical copies
	// of the restriction. In other words, restrictions are duplicated along
	// every segment in the subpath. Note that subpaths of length 1 do not
	// have any purpose and are disallowed. Note that it is possible to
	// represent restrictions either using STYLE_CONTIGUOUS, or depending on
	// the length of the subpath, one of the more specific STYLE_SINGLE,
	// STYLE_TURN, or STYLE_IN_OUT. New code should use the more specific
	// alternatives if possible, as they support instant updates. For
	// restriction_style == STYLE_CONTIGUOUS (the default): "subpath" can
	// either be empty, for a single-segment restriction, or it specifies
	// exactly the sequence of segments which this restriction applies to.
	// The subpath may be used to specify a turn restriction (a subpath of
	// length 2) or to prohibit more complex maneuvers. For example, when
	// merging onto a road from the right-hand side it may not be possible
	// to make an immediate left turn due to insufficient time to cross the
	// intervening lanes or the presence of a physical barrier. This would
	// be indicated by a subpath restriction of length 3 or more. For
	// restriction_style == STYLE_SINGLE: The subpath field of the
	// Restriction must be empty. The restriction applies only to the
	// segment it is attached to. There must not be an intersection group
	// specified. For restriction_style == STYLE_TURN: The subpath field of
	// the Restriction must contain exactly two segments. The first is
	// called the "in_segment", the second is the "out_segment". They must
	// be contiguous, i.e. the end intersection of the in_segment is the
	// start intersection of the out_segment. The restriction applies only
	// to a direct maneuver from the in_segment to the out_segment. Other
	// paths from the in_segment to the out_segment are not restricted.
	// There must not be an intersection group specified. For
	// restriction_style == STYLE_IN_OUT: The subpath field of the
	// Restriction must contain exactly two segments. The first is called
	// the "in_segment", the second is the "out_segment". Note that the two
	// segments define paths, but may not actually be one. The end
	// intersection of the in_segment must be in an intersection group which
	// also contains the start intersection of the out_segment. The in- and
	// out-segments are not required to be adjacent, but may be. Either way,
	// the restriction applies to any path from the in_segment to the
	// out_segment through the intersection group, not just direct turns.
	// The intersection_group must be specified. Note that clients which
	// read restrictions and need to know which paths are restricted by a
	// given IN_OUT restriction must expand the IN_OUT restriction by
	// finding all paths through the intersection group from the in_segment
	// to the out_segment.
	Subpath []*GeostoreFeatureIdProto `json:"subpath,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// restriction. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// TravelMode: Restriction applies only to the given travel modes. This
	// field should always be set, but may be missing in old data. WARNING:
	// Restrictions with no travel modes are DEPRECATED. Historically, no
	// travel modes has meant "all travel modes", except they didn't really
	// even mean that, because Pathfinder would use a complex set of
	// heuristics to interpret the "correct" travel modes. Pathfinder
	// currently (last updated August 2013) has heuristics to cope with
	// incomplete data that reduce or extend application of the specified
	// restrictions to pedestrians or bicycles. We are actively working to
	// remove these heuristics and replace them with explicit, correct
	// travel modes in the data. See b/8746491.
	//
	// Possible values:
	//   "TRAVEL_ANY" - ABSTRACT
	//   "TRAVEL_MOTOR_VEHICLE"
	//   "TRAVEL_AUTO"
	//   "TRAVEL_CARPOOL"
	//   "TRAVEL_MOTORCYCLE"
	//   "TRAVEL_BUS"
	//   "TRAVEL_TRUCK"
	//   "TRAVEL_DELIVERY"
	//   "TRAVEL_TAXI"
	//   "TRAVEL_EMERGENCY"
	//   "TRAVEL_THROUGH_TRAFFIC"
	//   "TRAVEL_AUTONOMOUS_VEHICLE"
	//   "TRAVEL_PEDESTRIAN"
	//   "TRAVEL_BICYCLE"
	TravelMode []string `json:"travelMode,omitempty"`

	// Type: clang-format on The type of restriction. This is not a
	// condition, but rather tells you what kind of restriction it is. This
	// field should always be set.
	//
	// Possible values:
	//   "RESTRICTION_TRAVEL_RESTRICTED" - Travel or maneuver is prohibited
	// or extremely limited. This type's value may be used for restrictions
	// which do not fall into a more specific subcategory, but the effect is
	// that travel or maneuver is prohibited.
	//   "RESTRICTION_ILLEGAL" - Travel or maneuver is prohibited due to
	// traffic regulations. Includes restrictions due to explicit road
	// markings. E.g., U-turns prohibited in marked intersections. NOTE: In
	// the event that a restriction by regulations is enforced by a physical
	// barrier, use RESTRICTION_PHYSICAL instead.
	//   "RESTRICTION_PHYSICAL" - A permanent physical barrier prevents
	// maneuver. This restriction type may not be used for restrictions with
	// empty subpaths.
	//   "RESTRICTION_LOGICAL" - Maneuver is prohibited based on logical
	// inference from other restrictions on segments or lanes. This
	// restriction type may not be used for restrictions with empty
	// subpaths. DEPRECATED
	//   "RESTRICTION_GATE" - A gate or other moveable barrier prevents
	// direct access. NOTE: Travel may still be allowed in certain
	// circumstances. Use RESTRICTION_PRIVATE in lieu of RESTRICTION_GATE
	// for segments that may still be routed on in certain circumstances.
	// DEPRECATED
	//   "RESTRICTION_CONSTRUCTION" - Road is closed due to road maintenance
	// (e.g. repaving, adding more lanes) and cannot be used for routing.
	//   "RESTRICTION_SEASONAL_CLOSURE" - Travel is prohibited for the
	// duration of some season. E.g., due to ice/snow in the winter.
	//   "RESTRICTION_PRIVATE" - Road has signage discouraging or
	// prohibiting use by the general public. E.g., roads with signs that
	// say "Private", or "No trespassing." NOTE: Use this type if travel is
	// still be allowed in certain circumstances (e.g., legitimate visits to
	// a place reachable by restricted roads only). Use RESTRICTION_ILLEGAL
	// if travel is forbidden under all circumstances. This restriction type
	// may not be used for restrictions with non-empty subpaths.
	//   "RESTRICTION_WRONG_WAY" - Travel over this segment is prohibited
	// because of signage indicating one-way directionality in the opposite
	// direction. This restriction type may not be used for restrictions
	// with non-empty subpaths. Travel over this segment should be avoided
	// at all costs unless the destination is on the segment. This
	// restriction type may be used only for restrictions of STYLE_SINGLE.
	//   "RESTRICTION_TERMINAL" - RESERVED
	//   "RESTRICTION_PAYMENT_REQUIRED"
	//   "RESTRICTION_TOLL_BOOTH" - This restriction type may be used only
	// for restrictions of STYLE_TURN, or STYLE_CONTIGUOUS with a subpath of
	// length 2. The intersection at which the turn is restricted is the
	// place of the toll booth.
	//   "RESTRICTION_USAGE_FEE_REQUIRED" - Traveling on the associated
	// subpath requires a fee to be paid.
	//   "RESTRICTION_ENTRANCE_FEE_REQUIRED" - Similar to
	// RESTRICTION_USAGE_FEE_REQUIRED but instead of a fee for the usage,
	// the fee is required for entering a special area (e.g. an amusement
	// park). Also in contrast to RESTRICTION_USAGE_FEE_REQUIRED this
	// restriction is supposed to be applied only to the segments that enter
	// into the isolated restricted area from the outer world. Therefore
	// there are two important points to consider when modeling data this
	// way: 1) Every path that (exactly once) enters the restricted area
	// should have exactly one such restriction (it does not matter whether
	// it is a segment or subpath restriction). 2) All entrances have to be
	// modeled consistently. It is recommended that the restriction is
	// consistently applied to paths entering the area and not applied to
	// paths leaving the area. NOTE: The above points are important because
	// an additive penalty is applied for each individual restriction that
	// appear on a path.
	//   "RESTRICTION_ADVISORY" - Restrictions in the RESTRICTION_ADVISORY
	// category refer to paths where travel is permitted, but may not be
	// prudent or is cumbersome. Since this is often a matter of opinion,
	// clients may choose not to make use of this information or not display
	// it directly to the user.
	//   "RESTRICTION_HIGH_CRIME"
	//   "RESTRICTION_POLITICALLY_SENSITIVE"
	//   "RESTRICTION_DISTURBED_BY_MAINTENANCE" - Segments with
	// RESTRICTION_DISTURBED_BY_MAINTENANCE indicate that the road undergoes
	// maintenance, however (unlike RESTRICTION_CONSTRUCTION) the segment
	// will be used for routing.
	//   "RESTRICTION_CHECKPOINT" - An inland location where travelling is
	// expected to be interrupted by authorities to inspect passengers
	// and/or goods. This restriction type may only be used for restrictions
	// with style STYLE_SINGLE.
	//   "RESTRICTION_REGION_SPECIFIC" - Restrictions with the
	// RESTRICTION_REGION_SPECIFIC category signify restrictions that are
	// unique to a particular region, cannot currently be modeled through
	// RestrictionProto, and/or have semantics that differ if in a
	// particular region (such as car emission restrictions). These
	// restrictions are specified on their restriction group, a traffic
	// zone. Evaluating applicability of these restrictions requires an
	// additional library located in the
	// geostore/base/internal/specialized_restriction/ directory. That
	// library controls the application of the restriction and will
	// generally disregard data on this RestrictionProto. For example,
	// go/cabrio-restriction-schema specifies that this proto should set
	// TRAVEL_MOTOR_VEHICLE because other values have no effect; likewise,
	// TimeScheduleProto has no effect. In truth this restriction's only job
	// is to carry a restriction_group reference.
	Type string `json:"type,omitempty"`

	// VehicleAttributeFilter: The restriction only applies to vehicles that
	// meet all of the attributes defined here. If this is empty, it does
	// not affect the scope of the restriction.
	VehicleAttributeFilter *GeostoreVehicleAttributeFilterProto `json:"vehicleAttributeFilter,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AutonomousDrivingProducts") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AutonomousDrivingProducts") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRestrictionProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRestrictionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRightsStatusProto: Proto used to represent rights for
// FeatureProto. See go/geo-rights for more details. NOTE: Use
// google3/geostore/provenance/public/rights.h or
// google3/java/com/google/geostore/provenance/rights/Rights.swig
// instead of accessing this proto directly.
type GeostoreRightsStatusProto struct {
	FieldWithRights []*GeostoreFieldWithRightsProto `json:"fieldWithRights,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldWithRights") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldWithRights") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRightsStatusProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRightsStatusProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRoadConditionalProto: A RoadConditionalProto defines
// conditions that affect when the road traversal information is
// applicable.
type GeostoreRoadConditionalProto struct {
	// TimeSchedule: Specifies what times the information is applicable.
	// This can be specific times (3-5 PM) or days of the week (Mon - Fri),
	// as well as more general times like school hours, dusk to dawn, etc.
	// If no value is set, the restriction is applicable at all times.
	TimeSchedule *GeostoreTimeScheduleProto `json:"timeSchedule,omitempty"`

	// VehicleAttribute: Additional attributes that apply to the applied
	// vehicle types.
	VehicleAttribute *GeostoreVehicleAttributeFilterProto `json:"vehicleAttribute,omitempty"`

	// VehicleType: Restrictions applying to specific types of vehicles.
	//
	// Possible values:
	//   "UNKNOWN" - Default proto value, this value will never be set in
	// MapFacts.
	//   "ANY"
	//   "CAR"
	//   "MOTORCYCLE"
	//   "TRUCK" - Note: The exact definition of a truck varies by city, but
	// it usually refers to vehicles with three or more axles. This value
	// does not necessarily apply to all commercial vehicles or vehicles
	// colloquially referred to as trucks (eg. pickup trucks).
	//   "BUS"
	VehicleType []string `json:"vehicleType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TimeSchedule") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TimeSchedule") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRoadConditionalProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRoadConditionalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRoadMonitorProto: A road monitor is a device that observes
// traffic for road violations like speeding or running a red light.
// These are modeled within MapFacts so that navigation services can
// warn users when they drive along road segments that are monitored.
type GeostoreRoadMonitorProto struct {
	// MonitoredRoad: The TYPE_ROAD segment features that this road monitor
	// may observe.
	MonitoredRoad []*GeostoreFeatureIdProto `json:"monitoredRoad,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MonitoredRoad") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MonitoredRoad") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRoadMonitorProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRoadMonitorProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRoadSignComponentProto: Below is some horrible ASCII art and
// a description of the components of a road sign. +-------------------+
// | A11 E50 Paris | | Chartres | +-------------------+ This sign would
// be composed of four components (all of them text components, the only
// option we support for now). The three in the first row would all have
// a "major_position" of zero. Their "minor_position" values would be
// zero for "A11", one for "E50", and two for "Paris". The component in
// the second row would have "major_position" value of one. This message
// provides the details of a single component of a road sign. A
// component defines its position within a sign, its type, and its
// content.
type GeostoreRoadSignComponentProto struct {
	// FeatureId: The id of the feature referred to by this component,
	// typically the route or locality feature this sign points towards. In
	// the ASCII art example above, this field would contain the id for the
	// routes A11 and E50 and the localities Chartres and Paris in the
	// corresponding component.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// FeatureType: The type of the feature referred to by this component.
	// If feature_id is specified type of that feature should be the same as
	// this field.
	FeatureType int64 `json:"featureType,omitempty"`

	// MajorPosition: This is the "major" position of this component within
	// the set of components that make up a sign. This number can be thought
	// of as the "row" of the sign on which the component appears, but no
	// guarantees are made that there is a one-to-one mapping between
	// "major_position" and the rows of information on the actual sign being
	// modeled. A "major_position" value of zero would indicate that the
	// component is near the top of the sign.
	MajorPosition int64 `json:"majorPosition,omitempty"`

	// MinorPosition: This is the position of a component within the
	// components of a sign that share a common "major_position". It can be
	// though of as the "column" of the component, but like
	// "major_position", no guarantees are made regarding its mapping to
	// reality. For data sources that don't provide enough information to
	// determine a component's major and minor positions, major position
	// should be populated and minor position should not be present. A
	// "minor_position" value of zero would indicate that the component is
	// near the "beginning" of the sign. In countries where signs are read
	// from left to right, "minor_position" zero would be near the left side
	// of the sign.
	MinorPosition int64 `json:"minorPosition,omitempty"`

	// RouteDirection: The direction of traffic for the referenced
	// TYPE_ROUTE feature.
	//
	// Possible values:
	//   "DIRECTION_NONE" - DIRECTION_NONE value is reserved and only
	// present there to avoid using a meaningful entry as the default value.
	// RESERVED
	//   "DIRECTION_NORTH"
	//   "DIRECTION_EAST"
	//   "DIRECTION_SOUTH"
	//   "DIRECTION_WEST"
	//   "DIRECTION_NORTHEAST"
	//   "DIRECTION_NORTHWEST"
	//   "DIRECTION_SOUTHEAST"
	//   "DIRECTION_SOUTHWEST"
	//   "DIRECTION_INNER" - Inner/Outer loop. Short names are not
	// supported. The actual direction depends on the local driving rule
	// (right-handed vs. left-handed). TODO(b/161314216) If you need an
	// explicit loop direction or a road sign uses
	// clockwise/counterclockwise, don't use INNER/OUTER but consider adding
	// DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead.
	//   "DIRECTION_OUTER"
	RouteDirection string `json:"routeDirection,omitempty"`

	// Text: If this sign component is of type "TYPE_TEXT", this field
	// contains the text of the component. A NameProto is used to allow
	// language and flags to be associated with the text.
	Text *GeostoreNameProto `json:"text,omitempty"`

	// Type: This type of content represented by this sign component.
	//
	// Possible values:
	//   "TYPE_TEXT" - This component is comprised of a single piece of
	// text. The "text" field must be present on sign components of this
	// type.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRoadSignComponentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRoadSignComponentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRoadSignProto: A RoadSignProto holds the details of a road
// sign. Currently this is simply a list of the items that appear on the
// sign and their relative position.
type GeostoreRoadSignProto struct {
	// Component: The list of components for a single road sign. A sign may
	// be composed of multiple components, each with its own position and
	// content.
	Component []*GeostoreRoadSignComponentProto `json:"component,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Component") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Component") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRoadSignProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRoadSignProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRouteAssociationProto: This protocol buffer holds metadata
// about the association between a segment and a route.
type GeostoreRouteAssociationProto struct {
	// DisplayPreference: clang-format on
	//
	// Possible values:
	//   "DISPLAY_PREFERRED" - These routes should be displayed along this
	// segment.
	//   "DISPLAY_BEST" - Among the preferred routes, this is the best one
	// to display. There can be at most one of these per segment.
	//   "DISPLAY_OK" - These are also valid route names to display, but
	// clients should choose PREFERRED routes if available.
	//   "DISPLAY_HIDE" - These routes should not be displayed.
	DisplayPreference string `json:"displayPreference,omitempty"`

	// Metadata: Field-level metadata for the route association.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Route: Identifies the route feature to which this metadata applies.
	// This is one of the routes the segment refers to via the
	// SegmentProto.route field.
	Route *GeostoreFeatureIdProto `json:"route,omitempty"`

	// RouteDirection: The direction of the TYPE_ROUTE feature in this route
	// association. A small number of countries (mostly just the United
	// States, Mexico, and Canada) use directional routes. For example, in
	// the United States highway US-1 is referred to as US-1 North or US-1
	// South on the sides where flow of traffic moves in those directions.
	//
	// Possible values:
	//   "DIRECTION_NONE" - DIRECTION_NONE value is reserved and only
	// present there to avoid using a meaningful entry as the default value.
	// RESERVED
	//   "DIRECTION_NORTH"
	//   "DIRECTION_EAST"
	//   "DIRECTION_SOUTH"
	//   "DIRECTION_WEST"
	//   "DIRECTION_NORTHEAST"
	//   "DIRECTION_NORTHWEST"
	//   "DIRECTION_SOUTHEAST"
	//   "DIRECTION_SOUTHWEST"
	//   "DIRECTION_INNER" - Inner/Outer loop. Short names are not
	// supported. The actual direction depends on the local driving rule
	// (right-handed vs. left-handed). TODO(b/161314216) If you need an
	// explicit loop direction or a road sign uses
	// clockwise/counterclockwise, don't use INNER/OUTER but consider adding
	// DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead.
	//   "DIRECTION_OUTER"
	RouteDirection string `json:"routeDirection,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayPreference")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayPreference") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRouteAssociationProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRouteAssociationProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreRouteProto: A route is a collection of segments that forms a
// logical group - usually a named road or highway. Segments can belong
// to more than one route, and the segments of one route may be a subset
// of the segments of another route (e.g. I-5 N is a subset of I-5).
// Segments in the collection that define the route do not need to
// constitute a single uninterrupted line, there can be disconnects. The
// standard feature properties are interpreted as follows: name - Routes
// should have one or more names. (While unnamed roads certainly exist
// in the real world, we choose not to create route features for such
// roads. Instead, the unnamed segments are merely not part of any
// route.) address - This should always be empty. type - Specifies a
// particular route subtype, see feature.proto. point - This should
// always be empty. polyline - This should always be empty. polygon -
// This should always be empty. child - The pairs of segments that
// belong to this route (a given route should always reference segments
// in both travel directions).
type GeostoreRouteProto struct {
	// ChildType: The feature type of the route children. Should be set if
	// and only if all children are of the same feature type.
	ChildType int64 `json:"childType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChildType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChildType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreRouteProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreRouteProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSchoolDistrictProto: This protocol buffer holds school
// district specific attributes for features of TYPE_SCHOOL_DISTRICT.
type GeostoreSchoolDistrictProto struct {
	// Possible values:
	//   "TYPE_UNIFIED"
	//   "TYPE_ELEMENTARY"
	//   "TYPE_SECONDARY"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSchoolDistrictProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSchoolDistrictProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSegmentPathProto: A segment path describes a path through a
// short set of segments. The segment path can be used for any purpose.
// At the moment, only TYPE_ROAD_SIGN features can have associated
// segment paths: The segment path lists the segments that refer to the
// sign. These are the segments for which the sign is applicable. The
// sign's physical location is independent of the segments in the path.
type GeostoreSegmentPathProto struct {
	// Subpath: Specifies a sequence of feature ids of GeoStore segments.
	// The feature ids are ordered. The path "AB" is not the same as the
	// path "BA". The segments along the path are assumed to be connected
	// via the appropriate intersections. The segment features that are
	// referenced by this subpath refer to this feature back via the
	// road_sign field in segment proto extension.
	Subpath []*GeostoreFeatureIdProto `json:"subpath,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Subpath") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Subpath") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSegmentPathProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSegmentPathProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSegmentProto:
// ----------------------------------------------------------------------
// ----- WARNING - if you add new fields to SegmentProto (or to other
// protos used by SegmentProto), you need to: - ensure that the
// ShortSegmentsMerger class (in
// geostore/tools/internal/mr-mergesegments.cc) is aware of them,
// otherwise the new fields will be discarded randomly. - consider
// whether they should be cleared in the ClearFeature() function (in
// maps/render/process-high-priority-roads.cc) if they are irrelevant
// for rendering high priority roads at far-out zoom levels. - update
// the test cases that ensure these two packages know all the
// SegmentProto fields in both mr-mergesegments_test.cc and
// maps/render/process-high-priority-roads_test.cc or you will break the
// VersaTile build.
// ----------------------------------------------------------------------
// -----
type GeostoreSegmentProto struct {
	AdvisoryMaximumSpeed []*GeostoreAppliedSpeedLimitProto `json:"advisoryMaximumSpeed,omitempty"`

	// Altitude: RESERVED
	Altitude []float64 `json:"altitude,omitempty"`

	// AvgSpeedKph: The average speed that should be expected along this
	// route under normal conditions, in kilometers per hour. (Hopefully
	// we'll replace this with something a lot more sophisticated.)
	AvgSpeedKph float64 `json:"avgSpeedKph,omitempty"`

	// AvgSpeedKphMetadata: Field-level metadata for the average speed.
	AvgSpeedKphMetadata *GeostoreFieldMetadataProto `json:"avgSpeedKphMetadata,omitempty"`

	// Barrier: clang-format on
	//
	// Possible values:
	//   "BARRIER_NONE" - Some barrier which prevents turns in the middle of
	// a segment, but the details are not known (or the tester doesn't care
	// to distinguish between legal and physical barriers).
	//   "BARRIER_PRESENT"
	//   "BARRIER_LEGAL" - An example of this in the United States would be
	// a pair of double-yellow lines. This pattern indicates that all turns
	// are legally prohibited.
	//   "BARRIER_PHYSICAL" - A concrete strip, island, planter, or other
	// physical barrier. This category is also used when we model the
	// roadways are separated.
	Barrier string `json:"barrier,omitempty"`

	// BarrierMetadata: Field-level metadata for the barrier.
	BarrierMetadata *GeostoreFieldMetadataProto `json:"barrierMetadata,omitempty"`

	// BicycleFacility: clang-format on
	//
	// Possible values:
	//   "BICYCLE_FACILITY_SEPARATE_TRAIL" - This segment has a detached
	// trail or path running alongside it, suitable for the use of cyclists.
	// When a segment has this attribute, there should never be a distinct
	// segment for the trail, because the road and trail are part of the
	// same logical segment. In other words, the trail is modeled by this
	// attribute on its associated road, rather than by a separate segment.
	//   "BICYCLE_FACILITY_PEDESTRIAN_PATH" - This segment has a sidewalk or
	// other pedestrian pathway that permits bicycles.
	//   "BICYCLE_FACILITY_SHARED_ROAD" - This segment allows bicycles to
	// share the road with motor vehicles. It may or may not provide special
	// accommodation for cyclists.
	//   "BICYCLE_FACILITY_BIKE_LANE" - This segment has a striped bicycle
	// lane.
	//   "BICYCLE_FACILITY_WIDE_SHOULDER" - This segment has a wide shoulder
	// or curb lane.
	//   "BICYCLE_FACILITY_SHARROW" - This segment has pavement markings to
	// make motorists aware of bicycles in a shared lane.
	BicycleFacility string `json:"bicycleFacility,omitempty"`

	// Possible values:
	//   "BICYCLE_SAFETY_RECOMMENDED" - This segment is explicitly
	// recommended as suitable for biking, for instance by a sign, by a city
	// bike map, or by a user.
	//   "BICYCLE_SAFETY_NEUTRAL" - This segment is similarly suitable for
	// biking as nearby segments with the same 'bicycle_facility'.
	//   "BICYCLE_SAFETY_CAUTION" - Cyclists should use extra caution on
	// these segments, as they may be inferior in suitability for biking.
	BicycleSafety string `json:"bicycleSafety,omitempty"`

	// Possible values:
	//   "CONDITION_GOOD"
	//   "CONDITION_POOR"
	Condition string `json:"condition,omitempty"`

	// ConditionMetadata: Field-level metadata for the condition.
	ConditionMetadata *GeostoreFieldMetadataProto `json:"conditionMetadata,omitempty"`

	// ConstructionBeginDate: If known, the date that construction is
	// scheduled to begin.
	ConstructionBeginDate *GeostoreDateTimeProto `json:"constructionBeginDate,omitempty"`

	// ConstructionEndDate: If known, the date that construction is
	// scheduled to end.
	ConstructionEndDate *GeostoreDateTimeProto `json:"constructionEndDate,omitempty"`

	// Possible values:
	//   "CONSTRUCTION_PLANNED"
	//   "CONSTRUCTION_STARTED"
	//   "CONSTRUCTION_COMPLETE"
	//   "CONSTRUCTION_CLOSED_FOR_MAINTENANCE"
	//   "CONSTRUCTION_DISTURBED_BY_MAINTENANCE"
	ConstructionStatus string `json:"constructionStatus,omitempty"`

	// ConstructionStatusMetadata: Field-level metadata for the construction
	// status.
	ConstructionStatusMetadata *GeostoreFieldMetadataProto `json:"constructionStatusMetadata,omitempty"`

	// Covered: Whether the segment is covered by a roof etc. If this field
	// is missing, the status is unknown.
	Covered bool `json:"covered,omitempty"`

	// DistanceToEdge: Average distance between the segment's polyline and
	// edge of the road on this side in meters. It need not be equal to the
	// sum of width of all lanes in this direction. This width includes
	// on-street bicycle lanes but excludes off-street lanes such as
	// sidewalks. The edge of the road is the rightmost edge for segments in
	// right side driving countries and leftmost edge for left side driving
	// countries. Width of the road is sum of this and sibling's
	// distance_to_edge.
	DistanceToEdge float64 `json:"distanceToEdge,omitempty"`

	// DistanceToEdgeMetadata: Field-level metadata for distance_to_edge.
	DistanceToEdgeMetadata *GeostoreFieldMetadataProto `json:"distanceToEdgeMetadata,omitempty"`

	// EdgeFollowsSegmentBeginFraction: These indicate for what portion of
	// the segment does the outer curb of the segment follow the segment
	// polyline - i.e., where do the sweep curves connect along the outer
	// curb. If unspecified, may be assumed to be equal to lane retraction,
	// preferring outermost lane.
	EdgeFollowsSegmentBeginFraction float64 `json:"edgeFollowsSegmentBeginFraction,omitempty"`

	EdgeFollowsSegmentEndFraction float64 `json:"edgeFollowsSegmentEndFraction,omitempty"`

	// Elevation: clang-format on
	//
	// Possible values:
	//   "ELEVATION_NORMAL"
	//   "ELEVATION_BRIDGE"
	//   "ELEVATION_TUNNEL"
	//   "ELEVATION_SKYWAY" - A skyway is a road that is raised on supports
	// for an extended length.
	//   "ELEVATION_STAIRWAY" - Sample path description: "Go up/down the
	// stairs." PedestrianGradeCategory provides information about
	// "up/down".
	//   "ELEVATION_ESCALATOR" - Sample path description: "Go up/down the
	// escalator." PedestrianGradeCategory provides information about
	// "up/down".
	//   "ELEVATION_ELEVATOR" - Sample path description: "Take the elevator
	// up/down to the xth floor." PedestrianGradeCategory provides
	// information about "up/down".
	//   "ELEVATION_SLOPEWAY" - Sample path description: "Ascend/descend the
	// slope" PedestrianGradeCategory provides information about
	// "ascend/descend".
	//   "ELEVATION_MOVING_WALKWAY" - Sample path description: "Get on the
	// moving walkway."
	Elevation string `json:"elevation,omitempty"`

	// ElevationMetadata: Field-level metadata for the elevation.
	ElevationMetadata *GeostoreFieldMetadataProto `json:"elevationMetadata,omitempty"`

	// Endpoint: clang-format on
	//
	// Possible values:
	//   "ENDPOINT_UNKNOWN"
	//   "ENDPOINT_UNRESTRICTED" - This category is used in cases where
	// traffic on this segment always has the right-of-way (e.g. passing a
	// side street, fork in road).
	//   "ENDPOINT_UNCONTROLLED"
	//   "ENDPOINT_STOP_SIGN"
	//   "ENDPOINT_ALL_WAY_STOP"
	//   "ENDPOINT_TRAFFIC_LIGHT"
	//   "ENDPOINT_THREE_WAY" - Three-way in this direction
	//   "ENDPOINT_FLASHING_RED" - Flashing red light (stop)
	//   "ENDPOINT_FLASHING_YELLOW" - Flashing yellow light (yield)
	//   "ENDPOINT_YIELD" - Traffic on this segment has to give way to
	// oncoming traffic, but does not necessarily have to come to a full
	// stop. This category is used where there exists a physical yield sign
	// and/or road painting (triangles), but also where circumstances and
	// applicable local traffic laws require traffic on such segment to give
	// way (e.g. coming from a dirt road onto a paved road).
	//   "ENDPOINT_MERGE"
	//   "ENDPOINT_ROUNDABOUT" - This segment leads to a roundabout
	// entrance. Note this category is not used for segments themselves
	// inside a roundabout. See USAGE_ROUNDABOUT for these.
	//   "ENDPOINT_RAILROAD_CROSSING"
	//   "ENDPOINT_NO_EXIT" - This category denotes a dead-end. Useful to
	// explicitly exclude connections to other data-sets, for example at
	// country borders and building entrances in countries where the indoor
	// and outdoor routing networks are provided by different providers.
	//   "ENDPOINT_WRONG_WAY" - DEPRECATED Use RESTRICTION_WRONG_WAY
	//   "ENDPOINT_TOLL_BOOTH" - This segment directly ends at a toll booth.
	// The intersection capturing these segments represents the location of
	// the toll booth. If it has a name, this is captured in the
	// TYPE_INTERSECTION_GROUP that contains the intersection.
	Endpoint string `json:"endpoint,omitempty"`

	// EndpointMetadata: Field-level metadata for the endpoint.
	EndpointMetadata *GeostoreFieldMetadataProto `json:"endpointMetadata,omitempty"`

	// GradeLevel: Detailed information about grade levels along the
	// segment. If a GradeLevelProto is not present for any point (index)
	// along the segment, the default grade level is zero. In between two
	// points (indexes), the grade level of the segment is taken to be the
	// max of the grade levels on either side of it. See gradelevel.proto
	// for semantics of repeated indexes.
	GradeLevel []*GeostoreGradeLevelProto `json:"gradeLevel,omitempty"`

	// Internal: Internal-only data.
	Internal *GeostoreInternalSegmentProto `json:"internal,omitempty"`

	// InterpolationOffsetMeters: If specified, the perpendicular offset in
	// meters from a road segment to an interpolated address along that road
	// segment. See go/synthetic-address-positions.
	InterpolationOffsetMeters float64 `json:"interpolationOffsetMeters,omitempty"`

	// Intersection: The intersection feature corresponding to the
	// destination of this segment. Intersections are used to represent the
	// connectivity between segments. Each intersection stores the segment
	// ids of all the incoming and outgoing segments that meet at that
	// intersection. Turns can be made from this segment to any of the
	// outgoing segments of its intersection, unless there is a restriction
	// that explicitly disallows the turn (see below). Every segment has an
	// intersection object, even if there are no other segments to connect
	// to (i.e., a cul-de-sac or dead end).
	Intersection *GeostoreFeatureIdProto `json:"intersection,omitempty"`

	// IsMaxPermittedSpeedDerived: Specifies whether the
	// max_permitted_speed_kph was derived from a heuristic as opposed to
	// coming from an authoritative source.
	IsMaxPermittedSpeedDerived bool `json:"isMaxPermittedSpeedDerived,omitempty"`

	// Lane: Detailed information about each lane in this direction, if
	// available. Lanes are numbered from inside of the road outward, i.e.
	// the lane next to the center line is lane 0. Note that lanes that are
	// valid for travel in both directions appear in both segments of a
	// segment pair (left turn lanes, one-lane roads, some passing lanes,
	// reversing lanes). Some lanes may not be usable by cars, such as bike
	// lanes. Also, some lanes may not exist along the entire segment, e.g.
	// left- or right-turn lanes that appear just before the intersection.
	Lane []*GeostoreLaneProto `json:"lane,omitempty"`

	// LegalMaximumSpeed: The legal maximum, legal minimum, and advisory
	// (recommended but non-legally binding) maximum speed limits that are
	// permitted on this segment. These should be the segment's legal
	// limits; however, note that it may contain estimated values based on
	// country-wide defaults and other heuristics (see
	// 'AppliedSpeedLimitProto.trust_level'). Before exposing these fields
	// to users as the legal speed limit please consult with Google lawyers.
	LegalMaximumSpeed []*GeostoreAppliedSpeedLimitProto `json:"legalMaximumSpeed,omitempty"`

	LegalMinimumSpeed []*GeostoreAppliedSpeedLimitProto `json:"legalMinimumSpeed,omitempty"`

	// MaxPermittedSpeedKph: The maximum speed that is permitted on this
	// segment, in kilometers per hour. This should be the segment's legal
	// speed limit; however, note that it may contain estimated values based
	// on country-wide defaults and other heuristics (see
	// 'is_max_permitted_speed_derived' below). Before exposing this field
	// to users as the legal speed limit please consult with Google lawyers.
	MaxPermittedSpeedKph float64 `json:"maxPermittedSpeedKph,omitempty"`

	// MaxPermittedSpeedKphMetadata: Field-level metadata for the maximum
	// permitted speed.
	MaxPermittedSpeedKphMetadata *GeostoreFieldMetadataProto `json:"maxPermittedSpeedKphMetadata,omitempty"`

	// OnRight: Specifies whether this segment carries right-hand traffic
	// (cars keep to the right side of the road) instead of left-hand
	// traffic (cars keep to the left side). This is true for US roads and
	// false for UK roads, for example. See
	// go/wikip/Left-_and_right-hand_traffic.
	OnRight bool `json:"onRight,omitempty"`

	// PedestrianCrossing: Defines the pedestrian crossing(s) between the
	// end point of this segment and the start point of this segment's
	// sibling.
	PedestrianCrossing *GeostorePedestrianCrossingProto `json:"pedestrianCrossing,omitempty"`

	// PedestrianFacility: clang-format on
	//
	// Possible values:
	//   "PEDESTRIAN_FACILITY_UNKNOWN" - No data about pedestrian facility
	// is available.
	//   "PEDESTRIAN_FACILITY_NONE" - No special pedestrian facilities are
	// available on this segment.
	//   "PEDESTRIAN_FACILITY_PRESENT" - The segment has some kind of
	// pedestrian facility, like a sidewalk or wide shoulder, that separates
	// pedestrians from motor vehicle traffic.
	//   "PEDESTRIAN_FACILITY_SIDEWALK" - Deprecated. Sidewalks are
	// represented via a TYPE_PEDESTRIAN lane.
	//   "PEDESTRIAN_FACILITY_WIDE_SHOULDER" - Deprecated. Wide shoulder is
	// implied when segment.pedestrian_facility =
	// PEDESTRIAN_FACILITY_PRESENT and segment.lane does not include a
	// TYPE_PEDESTRIAN lane.
	PedestrianFacility string `json:"pedestrianFacility,omitempty"`

	// Possible values:
	//   "PEDESTRIAN_GRADE_FLAT"
	//   "PEDESTRIAN_GRADE_UP"
	//   "PEDESTRIAN_GRADE_DOWN"
	PedestrianGrade string `json:"pedestrianGrade,omitempty"`

	// Priority:
	// LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment-
	// categories.cc)
	//
	// Possible values:
	//   "PRIORITY_UNKNOWN" - The priority of the segment is unknown. This
	// is not actually allowed to be set in MapFacts, but best-practice is
	// to have a default 0 value for enums.
	//   "PRIORITY_NON_TRAFFIC" - A non-traffic segment is not intended for
	// normal vehicles, e.g. a pedestrian mall. 0x10
	//   "PRIORITY_TERMINAL" - A terminal road is not intended to carry
	// through traffic, e.g. a narrow residential street or an access road
	// to a point of interest. 0x20
	//   "PRIORITY_LOCAL" - A small city street, typically for travel in a
	// residential neighborhood, or a small rural road. This is the lowest
	// priority suitable for through traffic. 0x30
	//   "PRIORITY_MINOR_ARTERIAL" - A moderate-capacity "collector" that
	// funnels traffic from local roads towards arterial roads or business
	// areas. 0x40
	//   "PRIORITY_MAJOR_ARTERIAL" - A high-capacity road that carries large
	// volumes of traffic between different neighborhoods or towns. 0x50
	//   "PRIORITY_SECONDARY_ROAD" - Roads that act as conduits a) between
	// primary highways (and above), or b) from major/minor arterial roads
	// to primary highways (and above). They may be state highways, for
	// example. 0x60
	//   "PRIORITY_PRIMARY_HIGHWAY" - These highways are major preferred
	// roads that connect between regions, but that do not have significant
	// access restrictions. Most crossings are level grade (traffic light,
	// stop sign) and there may be driveways and local roads that connect
	// directly to the highway. NOTE: Where a dense network of
	// limited/controlled access roads carries most of the traffic between
	// regions, this priority may be infrequent. 0x70
	//   "PRIORITY_LIMITED_ACCESS" - Limited access highways have some
	// access restrictions, but are not fully access controlled. Typically
	// driveways and local roads connect to a separate "frontage road" that
	// is connected to the highway via spaced traffic lights, interchanges,
	// or stop signs. Limited access roads are sometimes called expressways.
	// 0x80
	//   "PRIORITY_CONTROLLED_ACCESS" - Controlled access highways have
	// grade-separated crossings and are accessed exclusively by ramps. They
	// are usually called "freeways" or "motorways". 0x90
	Priority string `json:"priority,omitempty"`

	// PriorityMetadata: Field-level metadata for the priority.
	PriorityMetadata *GeostoreFieldMetadataProto `json:"priorityMetadata,omitempty"`

	// Restriction: The set of restrictions that apply to this segment.
	// Restrictions may make a single segment, turn, or more complex
	// maneuver along a set of segments unroutable for the specified travel
	// modes, or may only add penalties or warnings, depending on the
	// restriction type. Turn restrictions are one example of a restriction.
	// By default, turns are allowed onto all outgoing segments from this
	// segment's intersection (including the sibling of this segment, i.e.
	// U-turns are allowed by default). If any of these turns are disallowed
	// they will be listed as "subpath restrictions". A subpath restriction
	// disallows travel on given sequence of segments. In the case of a
	// disallowed turn, the subpath simply consists of the source and
	// destination feature ids. There may also be restrictions that apply to
	// all travel on this segment (e.g. chains required, or closed in
	// winter), or restrictions that just apply to certain lanes (e.g. high
	// occupancy vehicle lanes).
	Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"`

	// RoadMonitor: The road monitors that monitor this segment for traffic
	// violations.
	RoadMonitor []*GeostoreFeatureIdProto `json:"roadMonitor,omitempty"`

	// RoadSign: The road sign(s) which this segment refers to. These are
	// features of TYPE_ROAD_SIGN that are applicable to this segment. For
	// example, a sign that says "TO KIRKLAND" might apply to several
	// segments on a freeway off-ramp (until the end of the ramp). Note that
	// this field makes it easy to find the signs for a given road segment.
	// The feature for the sign lists the segments that refer to it.
	RoadSign []*GeostoreFeatureIdProto `json:"roadSign,omitempty"`

	// Route: The route(s) to which this segment belongs.
	Route []*GeostoreFeatureIdProto `json:"route,omitempty"`

	// RouteAssociation: Holds metadata about the associations between this
	// segment and the route features listed in the route field. This
	// metadata need not be present; the only consistency requirement is
	// that every feature ID that appears inside 'route_association' must
	// also appear in the repeated 'route' field. If a route does not appear
	// in route_association, consumers should assume that it has a default
	// initialized RouteAssociationProto.
	RouteAssociation []*GeostoreRouteAssociationProto `json:"routeAssociation,omitempty"`

	// SeparatedRoadways: Indicates whether the segment's opposing lanes of
	// traffic are separated from this segment, and hence have been
	// represented in a separate feature. This means that there are two
	// pairs of siblings instead of one.
	SeparatedRoadways bool `json:"separatedRoadways,omitempty"`

	// Sibling: The other segment of this segment pair (see above). The
	// segment that is referenced by the sibling field refers to this
	// feature back via the same sibling field. Both segment and sibling
	// should have the same properties such as geometry, country code,
	// elevation, level relation, priority etc. Since routes are required to
	// have segment and sibling at the same time, the set of routes on a
	// segment is same to that of the sibling.
	Sibling *GeostoreFeatureIdProto `json:"sibling,omitempty"`

	// Surface: clang-format on
	// LINT.ThenChange(//depot/google3/geostore/base/proto/lane.proto) If
	// this option is missing it means that the surface is unknown. Specific
	// lanes may override this segment-level surface type.
	//
	// Possible values:
	//   "SURFACE_UNKNOWN" - RESERVED
	//   "SURFACE_PAVED"
	//   "SURFACE_ASPHALT"
	//   "SURFACE_CONCRETE"
	//   "SURFACE_CHIPSEAL"
	//   "SURFACE_BRICK"
	//   "SURFACE_SETT"
	//   "SURFACE_COBBLESTONE"
	//   "SURFACE_UNPAVED"
	//   "SURFACE_GRAVEL"
	//   "SURFACE_DIRT"
	//   "SURFACE_SAND"
	Surface string `json:"surface,omitempty"`

	// SurfaceMetadata: Field-level metadata for the surface.
	SurfaceMetadata *GeostoreFieldMetadataProto `json:"surfaceMetadata,omitempty"`

	// Sweep: The geometric sweeps between this segment and nearby segments,
	// used for real road width rendering. A sweep describes the surface
	// that connects to segments.
	Sweep []*GeostoreSweepProto `json:"sweep,omitempty"`

	// TollRoad: If this segment is part of a toll road. It would be nice to
	// have data about the toll cost, locations of toll booths, and so
	// forth. Sadly, we don't have this data at this time.
	TollRoad bool `json:"tollRoad,omitempty"`

	// Usage: clang-format on
	// LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment-
	// categories.cc)
	//
	// Possible values:
	//   "USAGE_ANY" - Not a true usage category--this value was added just
	// to ease the transition from proto1 to proto2.
	//   "USAGE_RAMP" - Ramps are connecting segments to or between limited
	// access roads. They are often called "slip roads" in Europe.
	//   "USAGE_ON_RAMP"
	//   "USAGE_OFF_RAMP"
	//   "USAGE_ON_OFF_RAMP"
	//   "USAGE_INTERCHANGE"
	//   "USAGE_SPECIAL_TRAFFIC_FIGURE" - This road segment is part of a
	// special traffic figure, which is like a roundabout or traffic circle,
	// but doesn't meet all of the requirements of USAGE_ROUNDABOUT. It has
	// a round shape but, e.g., there may be higher priority roads within
	// the interior of the figure (also known as a hamburger roundabout), or
	// the figure doesn't complete an entire circuit.
	//   "USAGE_ROUNDABOUT" - This road segment forms part of a roundabout
	// or traffic circle (these terms don't have the exact same meaning, but
	// the schema doesn't distinguish and captures both). Roundabouts
	// complete one entire circuit, and are one-way through their entire
	// circuit. Sample wording in directions: "At the roundabout, take the
	// 2nd exit", or "Go through 1 roundabout".
	//   "USAGE_ROUNDABOUT_BYPASS" - This road segment is part of a bypass
	// associated with, but not part of, a roundabout or traffic circle,
	// that shortcuts the outer ring.
	//   "USAGE_ROUNDABOUT_INTERNAL_BYPASS" - This road segment is part of a
	// special traffic figure that allows traffic to go straight through the
	// roundabout without entering the circle part of the roundabout.
	// Divides the roundabout into two halves.
	//   "USAGE_ROUNDABOUT_EXTERNAL_BYPASS" - Shortcut from the entrance of
	// a roundabout to the same destination as the first exit from the
	// roundabout relative to that entrance.
	//   "USAGE_ENCLOSED_TRAFFIC_AREA" - A parking lot or parking structure,
	// possibly with multiple entrances that can be significant for routing.
	//   "USAGE_PEDESTRIAN_MALL" - A stretch of road closed to normal
	// traffic (trams, buses, delivery vehicles may be allowed).
	//   "USAGE_MAJOR_PEDESTRIAN_MALL"
	//   "USAGE_MINOR_PEDESTRIAN_MALL"
	//   "USAGE_WALKWAY" - "Non-traffic" segments that are roughly
	// associated with the road network but that are being modeled
	// separately from the road network, e.g., a sidewalk or wide shoulder.
	// In contrast, walkways modeled using segments that are part of the
	// road network should be marked with pedestrian and bicycle facilities.
	// NOTE: Separately modeled walkways are unusual and have issues;
	// consult with oyster-team before using this in new data.
	//   "USAGE_TRAIL" - A non-road segment that can be described as a major
	// path or a trail. A trail is often part of a dedicated network of
	// named biking or walking trails, is not particularly short, and
	// typically has scenic value or facilitates crossing rough terrain.
	// USAGE_TRAIL implies that PRIORITY_NON_TRAFFIC must be set, but
	// compared to a segment with no usage at all, is suitable for extra
	// emphasis by clients as a more desirable segment to travel on. Minor
	// paths, such as pedestrian shortcuts, walkways through building
	// complexes, and short walkways through a city park should be modeled
	// as PRIORITY_NON_TRAFFIC with no usage. Sample path description: "Take
	// the trail."
	//   "USAGE_STATION_PATH" - Segment between toll gate and station center
	// which represents logical location trains stop at. The segment's
	// AddressComponent should have a route name which includes appropriate
	// station name whenever possible. This segment should usually be
	// restricted by RESTRICTION_USAGE_FEE_REQUIRED in order to penalize
	// walking directions that just go through this segment. Sample path
	// description: "Get in Shibuya station, and take the path to the
	// platform." NOTE: This attribute is unusual; it should not be set in
	// new data.
	//   "USAGE_ACCESS_PATH" - Alley in park, backyard of communal
	// facilities such as museum, or kind of private properties open to
	// public. The segment's AddressComponent should have a route name which
	// includes the property's name whenever possible. This is different
	// from trails as the purpose of the access path is more specific than
	// trails. Sample path description: "Go through the access path to the
	// National Museum." NOTE: This attribute is unusual and not clearly
	// defined; it should not be set in new data.
	//   "USAGE_CROSSING" - A segment that connects separately modeled
	// walkways (or other non-traffic segments) across a road. NOTE:
	// USAGE_CROSSING segments make sense only where pedestrian segments are
	// modeled separately. They cannot be used in the common case of
	// sidewalks modeled as pedestrian facilities on road. Using a
	// USAGE_CROSSING segment without connection to other non-traffic
	// segments only to mark the location of a crossing is wrong.
	//   "USAGE_MARKED_CROSSING" - Crossing with mark. We assume zebra
	// marking for now. Sample path description: "Take the crosswalk."
	//   "USAGE_UNMARKED_CROSSING" - Crossing with no mark Sample path
	// description: "Cross the road."
	//   "USAGE_OVERPASS" - This is different from ELEVATION_SKYWAY as this
	// implies "non-traffic". Sample path description: "Take the pedestrian
	// overpass."
	//   "USAGE_UNDERPASS" - Underground crossing paths and implies
	// "non-traffic". Sample path description: "Take the pedestrian
	// underpass."
	//   "USAGE_HALLWAY" - Sample path description: "Go through the
	// hallway." NOTE: This attribute is unusual and not clearly defined; it
	// should not be set in new data.
	//   "USAGE_TURN_SEGMENT" - Turn segments are connecting segments
	// between lower priority roads that bypass the direct intersection of
	// the roads. They are the preferred route, or perhaps the only valid
	// route, for turns between the roads. For example, in the US this would
	// be a segment that would allow a vehicle to take a free right-turn
	// without having to go through the intersection. Similarly in the UK,
	// this would be a segment that allows a free left-turn. Also, the small
	// segment next to the island of a channelized turn lane would fall
	// under this category.
	//   "USAGE_INDOOR_CONNECTION_PATH" - Usage to explicitly indicate that
	// the segment connects walking networks on indoor levels in different
	// buildings.
	Usage string `json:"usage,omitempty"`

	// VisibleLandmark: A collection of landmarks that are visible when
	// traveling along this segment and useful for wayfinding to users
	// following routes using this segment. The landmark need not be on the
	// segment. Each segment in a pair of siblings specifies its landmarks
	// independently. A landmark applicable to both appears in both.
	VisibleLandmark []*GeostoreLandmarkReferenceProto `json:"visibleLandmark,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdvisoryMaximumSpeed") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdvisoryMaximumSpeed") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSegmentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSegmentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreSegmentProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreSegmentProto
	var s1 struct {
		AvgSpeedKph                     gensupport.JSONFloat64 `json:"avgSpeedKph"`
		DistanceToEdge                  gensupport.JSONFloat64 `json:"distanceToEdge"`
		EdgeFollowsSegmentBeginFraction gensupport.JSONFloat64 `json:"edgeFollowsSegmentBeginFraction"`
		EdgeFollowsSegmentEndFraction   gensupport.JSONFloat64 `json:"edgeFollowsSegmentEndFraction"`
		InterpolationOffsetMeters       gensupport.JSONFloat64 `json:"interpolationOffsetMeters"`
		MaxPermittedSpeedKph            gensupport.JSONFloat64 `json:"maxPermittedSpeedKph"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AvgSpeedKph = float64(s1.AvgSpeedKph)
	s.DistanceToEdge = float64(s1.DistanceToEdge)
	s.EdgeFollowsSegmentBeginFraction = float64(s1.EdgeFollowsSegmentBeginFraction)
	s.EdgeFollowsSegmentEndFraction = float64(s1.EdgeFollowsSegmentEndFraction)
	s.InterpolationOffsetMeters = float64(s1.InterpolationOffsetMeters)
	s.MaxPermittedSpeedKph = float64(s1.MaxPermittedSpeedKph)
	return nil
}

// GeostoreServiceAreaProto: This proto represents the geographic area
// served by an establishment. WARNING: This proto is not meant to be
// used directly. Please use the provided libraries.
// http://google3/geostore/base/public/service_area.h
// http://google3/java/com/google/geostore/base/ServiceArea.java
type GeostoreServiceAreaProto struct {
	// ServedFeature: The features that make up the service area for this
	// establishment. These features are subject to the following
	// constraints applied by editing middleware (notably, not strictly
	// enforced by lints in storage): 1. The following feature types (and
	// their subtypes) may be used: + TYPE_ISLAND + TYPE_POLITICAL, except
	// the following prohibited subtypes: - TYPE_CONSTITUENCY -
	// TYPE_LAND_PARCEL + TYPE_POSTAL 2. There is a maximum limit (currently
	// 20) to the number of areas which may be provided. This is due to
	// serving efficiency limitations. 3. There are no additional geometry
	// requirements for these features beyond the requirements based on the
	// feature types above. In practice this means that these features will
	// either have polygonal or point-based geometries. 4. These referenced
	// features are generally required to have names, though this is not
	// strictly enforced.
	ServedFeature []*GeostoreFeatureIdProto `json:"servedFeature,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ServedFeature") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ServedFeature") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreServiceAreaProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreServiceAreaProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreServicedStopProto: Defines an ordered reference to a line
// variant’s stop.
type GeostoreServicedStopProto struct {
	// Id: Reference to a Transit POI feature (gcid:transit_station) or
	// platform compound section (gcid:railway_platform) serviced by the
	// line variant.
	Id *GeostoreFeatureIdProto `json:"id,omitempty"`

	// Index: An index representing the order in which the above station is
	// serviced by the line variant.
	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreServicedStopProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreServicedStopProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSkiBoundaryProto: This protocol buffer holds attributes for
// features of TYPE_SKI_BOUNDARY.
type GeostoreSkiBoundaryProto struct {
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_DANGER" - The boundary line for a danger area. This is used
	// to mark lines that should not be crossed for reasons of safety.
	//   "TYPE_SKI_AREA" - The boundary line for a ski area. This is
	// generally used to specify the line at which the ski resort ends,
	// rather than a line enclosing a single ski run.
	//   "TYPE_SLOW_ZONE" - An area signposted for slow skiing only.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSkiBoundaryProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSkiBoundaryProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSkiLiftProto: This protocol buffer holds attributes for
// features of TYPE_SKI_LIFT.
type GeostoreSkiLiftProto struct {
	// Type: clang-format on
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_SURFACE" - Surface lifts are those that pull or carry a skier
	// along the ground; rope tows are a common example.
	//   "TYPE_T_BAR"
	//   "TYPE_J_BAR"
	//   "TYPE_ROPE_TOW"
	//   "TYPE_POMA"
	//   "TYPE_CARPET"
	//   "TYPE_FUNICULAR"
	//   "TYPE_GONDOLA" - An aerial lift, such as a gondola or funitel, that
	// moves enclosed cars along a continuously circulating set of cables.
	//   "TYPE_CHAIR" - An open-air chair lift.
	//   "TYPE_AERIAL" - Aerial lifts are those that run along cables
	// suspended above the ground
	//   "TYPE_TRAM" - An aerial tram system that shuttles back and forth
	// along a fixed set of cables.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSkiLiftProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSkiLiftProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSkiTrailProto: This protocol buffer holds attributes for
// features of TYPE_SKI_TRAIL.
type GeostoreSkiTrailProto struct {
	// Possible values:
	//   "DIFFICULTY_EASIEST" - The easiest ski trail. In the US, this would
	// be marked with double-green circles.
	//   "DIFFICULTY_EASY" - A novice ski trail. In the US, this would be
	// marked with a single green circle.
	//   "DIFFICULTY_INTERMEDIATE" - An intermediate-level ski trail. In the
	// US, this would be marked with a single blue square.
	//   "DIFFICULTY_ADVANCED_INTERMEDIATE" - An advanced-intermediate level
	// ski trail. In the US, this would be marked with double-blue squares.
	//   "DIFFICULTY_DIFFICULT" - A difficult-level ski trail. In the US,
	// this would be marked with a single black diamond.
	//   "DIFFICULTY_ADVANCED_DIFFICULT" - An advanced-difficult level ski
	// trail. In the US, this would be marked with double-black diamonds.
	Difficulty string `json:"difficulty,omitempty"`

	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_GLADE" - Glade trails are ski paths that traverse wooded
	// areas; they may be well-defined or not, and groomed or ungroomed.
	// Ideally, they should be rendered differently on map tiles to
	// distinguish them from standard ski trails.
	//   "TYPE_TRAIL_TERRAIN" - A terrain-park area, usually containing
	// special features such as jumps or half-pipes.
	//   "TYPE_TRAIL" - A regular ski-trail.
	//   "TYPE_RACE_COURSE" - A trail specifically used for ski races.
	//   "TYPE_BOWL" - Bowls are large open areas, usually steep and often
	// rocky, that are open for skiing but don't have defined trails. They
	// are frequented mostly by expert skiers.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Difficulty") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Difficulty") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSkiTrailProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSkiTrailProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSocialReferenceProto: MapFacts GAIA ID assigned to this
// feature. These values are virtual GAIA IDs from MapFacts, and as such
// are not stored in Focus.
type GeostoreSocialReferenceProto struct {
	// BaseGaiaId: WARNING: Please do NOT introduce new uses; treat this
	// field as if it were deprecated.
	BaseGaiaId int64 `json:"baseGaiaId,omitempty,string"`

	// ClaimedGaiaId: GAIA ID used when a business has been claimed. This
	// value is a robot GAIA ID. Robots are a special type of GAIA account
	// used to denote identity for a user or a group of users, but are not
	// logged-in directly by a user.
	ClaimedGaiaId int64 `json:"claimedGaiaId,omitempty,string"`

	// GaiaIdForDisplay: WARNING: Please do NOT introduce new uses; treat
	// this field as if it were deprecated.
	GaiaIdForDisplay int64 `json:"gaiaIdForDisplay,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "BaseGaiaId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseGaiaId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSocialReferenceProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSocialReferenceProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSourceInfoProto: Source infos are the canonical way to
// establish data provenance. They can currently be set on features,
// edits, and issues. Every feature has a repeated list of
// SourceInfoProto messages to describe the source data that was used in
// building this feature. The data includes a feature id that points to
// additional data about the data source (version, copyright notice,
// etc), and optional "raw data" that is taken directly from the
// provider's format and has not been converted to a canonical form.
type GeostoreSourceInfoProto struct {
	// AttributionUrl: This is the URL of a page representing all the data
	// from this source in this feature. It may have be the ultimate source
	// of the data (in case of scraping) or merely the same data styled
	// according the provider's taste. There is a similar field in
	// DataSourceProto which is NOT cached in this field, since it has a
	// different meaning.
	AttributionUrl []*GeostoreUrlProto `json:"attributionUrl,omitempty"`

	// CollectionDate: The time that this particular piece of data was
	// collected. If different attributes were collected on different dates,
	// this is the date of the most recent edit.
	CollectionDate *GeostoreDateTimeProto `json:"collectionDate,omitempty"`

	// Cookie: A source info may have a magic cookie whose content and
	// semantics are defined by the specific import process or third-party
	// feed. For feeds that are processed by Distillery, the cookie, when
	// set, should contain the unique identifier for the feature as provided
	// by the feed.
	Cookie string `json:"cookie,omitempty"`

	// Dataset: The dataset from which this SourceInfoProto was created. The
	// content of this string will be determined by the data provider (e.g.
	// for MultiNet data, "fra" would indicate the dataset for France). This
	// field is unnecessary for providers that deliver a single dataset per
	// release (e.g. Basarsoft).
	Dataset string `json:"dataset,omitempty"`

	// GaiaId: The Gaia ID of the user who provided us with this data. This
	// field should never be set on source infos present on features, but
	// may be set on source infos present on edits. DEPRECATED: Most clients
	// should use the "user" field instead where Gaia IDs are encrypted.
	GaiaId int64 `json:"gaiaId,omitempty,string"`

	// ImpersonationUser: Information about an internal user or system that
	// is operating on behalf of `user` by way of impersonation.
	ImpersonationUser *GeostoreUserProto `json:"impersonationUser,omitempty"`

	// Layer: The name of the layer from which this SourceInfoProto was
	// created.
	Layer string `json:"layer,omitempty"`

	// OgrFid: The OGR feature identifier from which this SourceInfoProto
	// was created. This is an internal OGR record identifier and has
	// nothing to do with any of the feature's fields or the FeatureIdProto
	// for the FeatureProto containing this SourceInfoProto. This field is
	// present only for debugging purposes and possible use in the match
	// pattern of a FeatureChangeProto designed to fix bad source data very
	// early in the importing process.
	OgrFid int64 `json:"ogrFid,omitempty,string"`

	// Provider: The data provider from which this source info was
	// generated. The value must be equal to the one on the TYPE_DATA_SOURCE
	// feature referenced by this source info via the source_id reference
	// (see above).
	Provider int64 `json:"provider,omitempty"`

	// RawData: A source info may optionally have a set of key-value pairs
	// that provide "raw data" specific to that source. The types of raw
	// data available will vary from one provider to another and should not
	// be used in production code. Instead, new fields and/or protocol
	// buffers should be defined to represent this information in a
	// canonical form, and the relevant importers should be modified to
	// populate these new fields.
	RawData []*GeostoreRawDataProto `json:"rawData,omitempty"`

	// Release: The data release from which this SourceInfoProto was
	// created. The format for this string is provider-dependent (e.g. a
	// MultiNet release would look like "2008.01").
	Release string `json:"release,omitempty"`

	// SourceId: A source info may have a corresponding TYPE_DATA_SOURCE
	// feature that describes it (provider, copyright information, date of
	// release, etc). In the context of edits and issues, this field should
	// not be set.
	SourceId *GeostoreFeatureIdProto `json:"sourceId,omitempty"`

	// TemporaryData: A place for clients to attach arbitrary data to a
	// source info. Never set in MapFacts.
	TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"`

	// User: RESERVED
	User *GeostoreUserProto `json:"user,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributionUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributionUrl") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSourceInfoProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSourceInfoProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSourceTrustProto: Trust related information about the input
// source (feed or user) to help feature summarization. Typically, the
// values in this proto are either based on source's previous
// observations (e.g., a blocked LBC user or a trusted feed) or their
// status (Google hired operator or admin user). The proto can later
// contain a more granular trust score or correctness probabilities. A
// higher enum value indicates a more trusted source. Leaving room in
// the value space for adding more granular enums, if they become
// necessary later.
type GeostoreSourceTrustProto struct {
	// Level: The level of trust for the source of the observation.
	//
	// Possible values:
	//   "UNKNOWN" - Value not set
	//   "BLOCKED" - Should not be used (e.g. known spammer, 404 url)
	//   "NOT_TRUSTED" - Edits from external users.
	//   "YP_FEEDS" - Trusted feeds like IUSA etc. (See note below).
	//   "TRUSTED" - Internal operators, approved edits.
	//   "SUPER_TRUSTED" - Internal admin operators
	Level string `json:"level,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Level") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Level") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSourceTrustProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSourceTrustProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSpeedLimitProto: A speed limit, containing both the limit and
// the conditions in which it applies.
type GeostoreSpeedLimitProto struct {
	// Category: The type of speed limit.
	//
	// Possible values:
	//   "SPEED_LIMIT_CATEGORY_UNKNOWN" - Default proto value, this value
	// will never be set in MapFacts.
	//   "NONE" - Speed limits that apply outside of any particular category
	// (contrast to the following categories.)
	//   "SCHOOL" - Speed limits that apply in a school zone.
	//   "CONSTRUCTION" - Speed limits that apply in a construction zone.
	Category string `json:"category,omitempty"`

	// Condition: The conditions under which this speed limit is applicable.
	// If multiple conditions are set, at least one of them must be true.
	Condition []*GeostoreRoadConditionalProto `json:"condition,omitempty"`

	// SpeedWithUnit: A constant speed limit.
	SpeedWithUnit *GeostoreSpeedProto `json:"speedWithUnit,omitempty"`

	// UnlimitedSpeed: A speed limit with no limit value. When there is no
	// speed limit in place.
	UnlimitedSpeed *GeostoreUnlimitedSpeedProto `json:"unlimitedSpeed,omitempty"`

	// VariableSpeed: A dynamic speed limit that can vary within a range of
	// values based on road conditions.
	VariableSpeed *GeostoreVariableSpeedProto `json:"variableSpeed,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSpeedLimitProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSpeedLimitProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSpeedProto: A speed value and unit.
type GeostoreSpeedProto struct {
	Speed float64 `json:"speed,omitempty"`

	// Possible values:
	//   "UNIT_UNKNOWN" - Default proto value, this value will never be set
	// in MapFacts.
	//   "MILES_PER_HOUR"
	//   "KILOMETERS_PER_HOUR"
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Speed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Speed") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSpeedProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSpeedProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreSpeedProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreSpeedProto
	var s1 struct {
		Speed gensupport.JSONFloat64 `json:"speed"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Speed = float64(s1.Speed)
	return nil
}

// GeostoreStableFieldPathProto: Represents a way to traverse nested
// fields by referencing their token fields. Everything starts relative
// to a known root message, specified externally. E.g., suppose we have
// a feature proto that has a lane with token 0x123 which in turn has a
// lane connection with token 0x456 for which we want to assert
// something about flowline altitudes. The field path in that case will
// look like: field_path: { field_num: 31 # segment } field_path: {
// field_num: 6 # lane version_token: "0x123" } field_path: { field_num:
// 8 # lane_connection version_token: "0x456" } field_path: { field_num:
// 3 # flow } field_path: { field_num: 1 # track } field_path: { # Note:
// pose is repeated. By not specifying a token we refer to all poses #
// in a track. field_num: 2 # pose } field_path: { field_num: 4 #
// altitude } This path could also be represented succinctly in a more
// human-friendly form as something like:
// segment.lane[@0x123].lane_connection[@0x456].flow.track.pose[*].altitu
// de
type GeostoreStableFieldPathProto struct {
	// FieldPath: A sequence of field selectors to be traversed starting
	// from the root message.
	FieldPath []*GeostoreStableFieldPathProtoStableFieldSelector `json:"fieldPath,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldPath") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldPath") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreStableFieldPathProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreStableFieldPathProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreStableFieldPathProtoStableFieldSelector struct {
	// FieldNum: Field number to select.
	FieldNum int64 `json:"fieldNum,omitempty"`

	// VersionToken: Select repeated field entry by its version token. If
	// this is used, then the message referenced by field_num must have a
	// token field annotated with the (version_token) field option. Must be
	// omitted for leaf non-repeated fields. If unset for a repeated field,
	// we consider this selector to apply equally to all descendants.
	VersionToken string `json:"versionToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldNum") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldNum") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreStableFieldPathProtoStableFieldSelector) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreStableFieldPathProtoStableFieldSelector
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreSweepProto: This protocol buffer represents the 2D polygon
// connecting two segments at an intersection. Collectively, sweep
// polygons represent intersections for real road width rendering.
// Notes: - Sweeps represent geometry between the *end* of one segment
// and the *end* of the other segment (modulo retraction values). -
// Sweeps are strongly referenced, meaning geometry is stored on both
// segments involved in the sweep. For example, in the diagram below,
// the sweep between A and B would be stored on both segment A and
// segment B. | B | v --A--> - Sweeps are not strictly stored on
// adjacent segments. Disconnected segments (e.g., segments separated by
// an intersection group) may also contain sweeps.
type GeostoreSweepProto struct {
	// OtherSegmentFeatureId: The segment feature connected to this segment
	// via the sweep geometry.
	OtherSegmentFeatureId *GeostoreFeatureIdProto `json:"otherSegmentFeatureId,omitempty"`

	// Polygon: Polygonal geometry representing the area between this
	// segment and the other segment.
	Polygon *GeostorePolygonProto `json:"polygon,omitempty"`

	// SweepCurve: Describes parameters for generating the edge of this
	// sweep that starts at edge_follows_segment_end_fraction. The other
	// side of the sweep should be described on the sweep present on the
	// sibling pair.
	SweepCurve *GeostoreCurveConnectionProto `json:"sweepCurve,omitempty"`

	// SweepToken: A token that can be used to identify the version of the
	// data about this sweep.
	SweepToken string `json:"sweepToken,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "OtherSegmentFeatureId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OtherSegmentFeatureId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreSweepProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreSweepProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTelephoneProto: This protocol buffer is used to represent
// telephone numbers and related information.
type GeostoreTelephoneProto struct {
	// CallRate: RESERVED
	CallRate []*GeostorePriceRangeProto `json:"callRate,omitempty"`

	// ContactCategory: Disambiguates between the types of information or
	// service a caller might seek when contacting this phone number.
	//
	// Possible values:
	//   "CONTACT_CATEGORY_UNSPECIFIED"
	//   "CUSTOMER_SERVICE" - Provides service to customers before, during,
	// or after a purchase. /m/03w5xm
	//   "RESERVATIONS" - Allows customers to reserve a seat, ticket, room,
	// etc. /m/0n9nm2h
	//   "SALES" - Provides information about a purchase of a product or
	// service. /m/014dgf
	ContactCategory string `json:"contactCategory,omitempty"`

	// Possible values:
	//   "FLAG_NO_COLD_CALLS" - DEPRECATED
	//   "FLAG_PREFERRED" - This number is (one of) the preferred numbers to
	// call. It should be displayed before other numbers in maps/placepage,
	// for example. For each language served, there shall be at most 1
	// preferred phone (i.e., if there are two preferred phones, then the
	// intersection between the "language" array should be empty). Note that
	// the presence of a "preferred" phone doesn't state that we have no
	// confidence on the other numbers of this establishment. The preference
	// is based on the fact that this number is the primary customer service
	// number, reservation hot line, etc.
	Flag []string `json:"flag,omitempty"`

	// IsSharedNumber: True if this phone number is not unique to this
	// establishment and might be shared with other features. In case an
	// establishment shares a phone number with a business chain of which it
	// is a member, and the number canonically belongs to that chain, it
	// should be marked as shared for the establishment but not shared for
	// the chain.
	IsSharedNumber bool `json:"isSharedNumber,omitempty"`

	// Label: RESERVED
	Label []*GeostoreNameProto `json:"label,omitempty"`

	// Language: RESERVED
	Language []string `json:"language,omitempty"`

	// Metadata: Field-level metadata for this telephone number.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Number: ** DEPRECATED ** This is deprecated in favor of phone_number
	// below. An internationalized representation of a phone number. See
	// //location/country/telephonenumber.proto
	Number *TelephoneNumber `json:"number,omitempty"`

	// PhoneNumber: An internationalized representation of a phone number.
	// See //java/com/google/i18n/phonenumbers/phonenumber.proto
	PhoneNumber *I18nPhonenumbersPhoneNumber `json:"phoneNumber,omitempty"`

	// ServiceLocationFeature: The features from which this phone number can
	// be called from. For instance, if a phone number can only be called
	// from Europe, this field will contain a reference to the
	// TYPE_CONTINENT feature of Europe. This field is analogous to
	// http://kg/schema/common/phone_number/service_location. The only valid
	// destination feature types are TYPE_CONTINENT and TYPE_POLITICAL. If
	// empty, this phone number can be called from anywhere in Earth (this
	// is the case for the majority of phones).
	ServiceLocationFeature []*GeostoreFeatureIdProto `json:"serviceLocationFeature,omitempty"`

	// Possible values:
	//   "VOICE"
	//   "FAX"
	//   "TDD"
	//   "DATA"
	//   "MOBILE" - The MESSAGING type should not be used in FeatureProto,
	// but will be used in the context of KG /common/phone_number/type.
	//   "MESSAGING" - RESERVED
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CallRate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CallRate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTelephoneProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTelephoneProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTemporaryClosureProto: This protocol buffer stores
// information related to temporary closure of a feature. The only
// allowed precisions for a date is PRECISION_DAY. DateTimeProto.seconds
// should have the lowest legal value for the desired date/time and
// precision. E.g. for PRECISION_MONTH, 2019-02-15 21:10:30 is not
// valid, it should be 2019-02-01 00:00:00 instead. NOTE: Each date is
// stored in UTC but should be interpreted as being in the local
// timezone. So clients should convert the DateTimeProto to local
// (civil) time using UTC+0, and then treat the result as local to the
// feature.
type GeostoreTemporaryClosureProto struct {
	// EndAsOfDate: The latest when this closure may end, if the exact date
	// is unknown. If set, the feature is operational again no later than
	// this date.
	EndAsOfDate *GeostoreDateTimeProto `json:"endAsOfDate,omitempty"`

	// EndDate: RESERVED
	EndDate *GeostoreDateTimeProto `json:"endDate,omitempty"`

	// StartAsOfDate: The latest when this closure may start, if the exact
	// date is unknown. If set, the feature is temporarily closed starting
	// no later than this date.
	StartAsOfDate *GeostoreDateTimeProto `json:"startAsOfDate,omitempty"`

	// StartDate: RESERVED
	StartDate *GeostoreDateTimeProto `json:"startDate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndAsOfDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndAsOfDate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTemporaryClosureProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTemporaryClosureProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTextAffixProto: Represents text (with an associated language)
// that is affixed to the beginning and/or end of a primary text.
type GeostoreTextAffixProto struct {
	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. These strings
	// should be treated as opaque blobs. You can use
	// LanguageCodeConverter::FromOther to convert the string to a
	// LanguageCode reference. You can then call methods on the LanguageCode
	// class to extract language/script/region subtags (if any). See also
	// http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See
	// http://go/geo-schema-reference/feature-properties/languages.md
	Language string `json:"language,omitempty"`

	// Prefix: Text to prepend to the primary text, including any necessary
	// trailing whitespace. At least one of prefix or suffix is required.
	Prefix string `json:"prefix,omitempty"`

	// Suffix: Text to append to the end of the primary text, including any
	// necessary leading whitespace. At least one of prefix or suffix is
	// required.
	Suffix string `json:"suffix,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTextAffixProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTextAffixProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreThreeDimensionalModelProto struct {
	// PointIndices: Triangle vertex indices, each triple defines a
	// triangle.
	PointIndices []int64 `json:"pointIndices,omitempty"`

	// Points: We store a triangular mesh in indexed format. Points array.
	Points []*GeostorePointWithHeightProto `json:"points,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PointIndices") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PointIndices") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreThreeDimensionalModelProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreThreeDimensionalModelProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTimeBasedRateProto: A rate which applies based on the precise
// times of utilization. Defines a rate, as well as restrictions on the
// start and end times which must be satisfied in order to be eligible
// for the rate. See go/rate-schema for more details.
type GeostoreTimeBasedRateProto struct {
	// DurationBasedRate: The rates for this rule. Each duration_based_rate
	// defines the costs associated with a particular duration of a stay.
	// There must be at least one rate with range_start_seconds set to 0 and
	// there cannot be gaps between durations (i.e. there should be no
	// interval uncovered between 0 and the largest range_end_seconds of any
	// duration-based rate).
	DurationBasedRate []*GeostoreDurationBasedRateProto `json:"durationBasedRate,omitempty"`

	// TaxIncluded: If true, tax is included in the prices in this rate. If
	// false, additional taxes may apply.
	TaxIncluded bool `json:"taxIncluded,omitempty"`

	ValidEndWithin *GeostoreTimeScheduleProto `json:"validEndWithin,omitempty"`

	// ValidStartWithin: Time period during which utilization of this rate
	// must start in order to be eligible for the rate. If not set, there is
	// no restriction on the time when the utilization starts.
	ValidStartWithin *GeostoreTimeScheduleProto `json:"validStartWithin,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DurationBasedRate")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DurationBasedRate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimeBasedRateProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimeBasedRateProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreTimeComponentProto struct {
	// Possible values:
	//   "COMPONENT_TYPE_POSITIVE" - Indicates that this time component is
	// set with regards to what the component is trying to model. For
	// instance, if this time component models opening hours for a business
	// then COMPONENT_TYPE_POSITIVE means open and if it models a road
	// restriction COMPONENT_TYPE_POSITIVE means the road is closed.
	//   "COMPONENT_TYPE_MISSING_DATA" - Indicates that data for this time
	// component is absent and that making assumptions about data over the
	// time period this component represents may be unsafe. For instance, if
	// this time component models opening hours for a business then
	// COMPONENT_TYPE_MISSING_DATA can be used to explicitly record that we
	// are missing data (eg. Sunday is not listed in the hours). NOTE: Not
	// all uses of this proto support the COMPONENT_TYPE_MISSING_DATA
	// component_type.
	ComponentType string `json:"componentType,omitempty"`

	// Interval: The time component is the intersection of these intervals
	Interval []*GeostoreTimeIntervalProto `json:"interval,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComponentType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComponentType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimeComponentProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimeComponentProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTimeEndpointProto: Not all combinations of optional fields in
// TimeEndpointProto are allowed. The granularity of time is a path
// along the directed graph with these edges: second -> minute minute ->
// hour hour -> day of week hour -> day of month hour -> day of year day
// of week -> week of month day of week -> week of year day of month ->
// month day of year -> year week of month -> month week of year -> year
// month -> year A TimeEndpointProto may not specify two fields that are
// unordered with respect to each other ("day of year" and "day of
// week", for instance). The absence of fields larger than any specified
// field indicates repetition (e.g. no year indicates that the interval
// occurs every year). The absence of units that are "smaller" than the
// largest specified unit indicates a default lowest value (no hour
// means midnight (0)). When intersecting time intervals, "smaller"
// units repeat within the "larger" unit as many times as necessary. For
// example, the intersection of the interval from hour 0 to hour 24 with
// the interval from second 0 to second 1 is equivalent to the union of
// the set of intervals which represents the first second of every
// minute of every hour of every day.
// ----------------------------------------------------------------------
// ------- WARNING - if you add new fields to TimeEndpointProto you need
// to: - ensure AreTimeEndpointsEquivalent considers the new fields (and
// update the corresponding tests)
// ----------------------------------------------------------------------
// -------
type GeostoreTimeEndpointProto struct {
	// Day: Valid ranges are 0-7, 1-31, and 1-366 (see day_type below)
	Day int64 `json:"day,omitempty"`

	// Possible values:
	//   "DAY_OF_WEEK" - Valid day range 0-7. (see enum DayOfWeek)
	//   "DAY_OF_MONTH" - Valid day range 1-31, must be valid day in month
	//   "DAY_OF_YEAR" - Eg day = 31 is not valid if month = September Valid
	// day range 1-366
	DayType string `json:"dayType,omitempty"`

	// Hour: Valid range is 0-24. Because it could be unclear what wrapping
	// hours mean in relation to days, 24 is used to denote midnight at the
	// end of a day.
	Hour int64 `json:"hour,omitempty"`

	// Minute: Valid range is 0-59, except when a repetitive minute interval
	// ends at the end of an hour, in which case 60 is a legal end value.
	Minute int64 `json:"minute,omitempty"`

	// Possible values:
	//   "JANUARY"
	//   "FEBRUARY"
	//   "MARCH"
	//   "APRIL"
	//   "MAY"
	//   "JUNE"
	//   "JULY"
	//   "AUGUST"
	//   "SEPTEMBER"
	//   "OCTOBER"
	//   "NOVEMBER"
	//   "DECEMBER"
	//   "NEXT_JANUARY" - The following value is used to define the end of a
	// recurring interval that ends at the end of the year. It can be used
	// without a day to represent the end of an interval with month
	// resolution (e.g. November through December) or with a day of month of
	// 1 to represent the end of an interval with day resolution (e.g.
	// November 15th through December 31th). This is similar to using hour
	// 24 to represent the end of a recurring interval with hour resolution
	// that ends at midnight. Also see
	// http://g/pathfinder-team/NFS3S4L2lhs/tdMSGr0H9r4J for a real example.
	Month string `json:"month,omitempty"`

	// Second: Valid range is 0-59, except when a repetitive second interval
	// ends at the end of a minute, in which case 60 is a legal end value.
	Second int64 `json:"second,omitempty"`

	// Week: Valid ranges are 0-5 and 1-53 (depending on the value of
	// week_type, see below).
	Week int64 `json:"week,omitempty"`

	// Possible values:
	//   "WEEK_OF_MONTH" - Valid week range 0-5.
	//   "WEEK_OF_YEAR" - Note: Weeks of this type are numbered such that
	// week 0 begins on the 1st of the month and extends for 7 days. This
	// has the consequence that week 4 never has a full 7 days. For example,
	// for a month with 31 days, dates 1-7 are in week 0, 8-14 in week 1,
	// 15-21 in week 2, 22-28 in week 3, and 29-31 in week 4. Week 5 is
	// considered the first week of next month, and much like using `24` for
	// the hour field or `NEXT_JANUARY` for the month field, is meant only
	// to denote that an interval includes week 4. Valid week range 1-53.
	WeekType string `json:"weekType,omitempty"`

	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimeEndpointProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimeEndpointProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreTimeIntervalProto struct {
	// Begin: Begin and end are used to specify a range of times: [begin,
	// end). If one is present, the other must be present as well.
	// Additionally, both must have matching time granularities - all fields
	// specified in the begin TimeEndpointProto must be present in the end
	// TimeEndpointProto and vice-versa. Hours are not allowed to wrap
	// (begin.hour() <= end.hour()).
	Begin *GeostoreTimeEndpointProto `json:"begin,omitempty"`

	End *GeostoreTimeEndpointProto `json:"end,omitempty"`

	// Inverted: If true, then this interval actually encodes the complement
	// of the specified occasion or range. For example, the following
	// TimeIntervalProto encodes all times other than the month of May.
	// TimeIntervalProto[ type = TYPE_RANGE inverted = true begin =
	// TimeEndpointProto[ month = MAY ] end = TimeEndpointProto[ month =
	// JUNE ] ]
	Inverted bool `json:"inverted,omitempty"`

	// Occasion: clang-format on
	//
	// Possible values:
	//   "OCCASION_SEASON" - NavTeq just uses "seasonal closure = yes".
	//   "OCCASION_SEASON_WINTER"
	//   "OCCASION_SEASON_SUMMER" - "Ski season" appears in Tele Atlas once.
	// Use OCCASION_SEASON_WINTER instead.
	//   "OCCASION_DAYS"
	//   "OCCASION_DAYS_SCHOOL"
	//   "OCCASION_DAYS_HOLIDAY"
	//   "OCCASION_DAYS_PRE_HOLIDAY"
	//   "OCCASION_HOURS"
	//   "OCCASION_HOURS_PEAK"
	//   "OCCASION_HOURS_SCHOOL" - OCCASION_HOURS_OFF_PEAK doesn't exist
	// because it's the inverse of OCCASION_HOURS_PEAK.
	//   "OCCASION_HOURS_MARKET"
	//   "OCCASION_HOURS_BUSINESS" - Business hours appears only three
	// times.
	//   "OCCASION_HOURS_DUSK_TO_DAWN"
	//   "OCCASION_HOURS_HIGH_TIDE" - OCCASION_HOURS_DAWN_TO_DUSK doesn't
	// exist because it's the inverse of OCCASION_HOURS_DUSK_TO_DAWN.
	//   "OCCASION_CONDITIONS"
	//   "OCCASION_CONDITIONS_HIGH_WATER"
	//   "OCCASION_CONDITIONS_ADVERSE" - Adverse conditions include rain,
	// storms, and fog.
	//   "OCCASION_CONDITIONS_ADVERSE_RAIN"
	//   "OCCASION_CONDITIONS_ADVERSE_WET"
	//   "OCCASION_CONDITIONS_ADVERSE_FOG"
	//   "OCCASION_CONDITIONS_WINTERY" - Wintery conditions include snow and
	// ice.
	//   "OCCASION_CONDITIONS_WINTERY_AVALANCHE"
	//   "OCCASION_CONDITIONS_WINTERY_SNOW"
	//   "OCCASION_CONDITIONS_WINTERY_ICE"
	//   "OCCASION_CONDITIONS_EVENT"
	//   "OCCASION_CONDITIONS_POLLUTION"
	//   "OCCASION_CONDITIONS_LOW_WATER"
	//   "OCCASION_UNDEFINED"
	//   "OCCASION_UNDEFINED_REGULAR"
	//   "OCCASION_UNDEFINED_SELDOM"
	Occasion string `json:"occasion,omitempty"`

	// Possible values:
	//   "TYPE_OCCASION" - Indicates a fuzzy interval using one of the
	// occasion constants.
	//   "TYPE_RANGE" - Indicates a range of times between two endpoints, as
	// specified in TimeEndpointProto. The endpoint is NOT inclusive.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimeIntervalProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimeIntervalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreTimeScheduleProto struct {
	// Component: The schedule is the union of these components.
	Component []*GeostoreTimeComponentProto `json:"component,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Component") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Component") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimeScheduleProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimeScheduleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTimezoneProto: A TimezoneProto holds information about a
// feature's related time zone.
type GeostoreTimezoneProto struct {
	// Id: i18n recognized time zone identifier. For the full list of
	// identifiers, see google3/i18n/identifiers/data/timezones.txt.
	Id string `json:"id,omitempty"`

	// Metadata: Field-level metadata for this relation.
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTimezoneProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTimezoneProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTollClusterProto: A collection of information that applies to
// a toll cluster.
type GeostoreTollClusterProto struct {
	// Intersection: The list of TYPE_INTERSECTION features that are toll
	// points and form this toll cluster. A toll cluser can consist of
	// either a single or a group of intersection points called toll points
	// at the end of various road segments in MapFacts that represent one or
	// more lanes passing through a toll fixture that all go to the same
	// routing destination. This relationship is reciprocal, as a toll point
	// intersection also stores a reference to the toll cluster it belongs
	// to. A toll cluster must have reference to one or more toll points
	// i.e. toll_cluster.intersection should always be populated.
	Intersection []*GeostoreFeatureIdProto `json:"intersection,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Intersection") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Intersection") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTollClusterProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTollClusterProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreTrackProto struct {
	// Index: The index of this TrackProto in a list of TrackProtos.
	Index int64 `json:"index,omitempty"`

	// Pose: The instantaneous pose of points along this track. The fields
	// set inside each pose must be set consistently along the track.
	Pose []*GeostorePoseProto `json:"pose,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTrackProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTrackProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTransitLineProto: A transit line is a named set of transit
// trips that are advertised to passengers under a common name, and a
// number of attributes that are true for all those trips. There is no
// requirement for each trip to travel through the same list of stops or
// use the same legs, so a line can contain trips in opposite directions
// or with variations in the sequence of stops. See go/oysterpedia for
// an overview of the transit feature types. The standard feature
// properties are interpreted as follows: name - The names of this line,
// including both long and short names, if available. Short names like
// "10" or "Blue" should carry the FLAG_ABBREVIATED, long names like
// "Dublin/Pleasanton line" should not. The preferred name (one per
// language) for displaying the line on its own (e.g., as a search
// result for the line) should carry the FLAG_PREFERRED. website - The
// official web page describing this line. Repeated if multilingual.
// Line features have no geometry (neither points nor polylines nor
// polygons). Within Transit Oyster, geometry can be found in legs.
// Additional data only in Transit Oyster: child - The legs of this
// line, in no particular order. source_info - Specifies the GTFS routes
// that match this feature. Each is given as a PROVIDER_GOOGLE_TRANSIT
// source_info where dataset is the feed name and cookie is the
// route_id.
type GeostoreTransitLineProto struct {
	// Agency: The transit agencies responsible for operating this line. All
	// lines should have at least one agency, and most will have exactly
	// one. The following cases are reasons for multiple agencies: - Code
	// share: Two or more agencies share trips - Alternations: Each trip is
	// run by one of multiple agencies - Additional: All trips run by one
	// agency, but a second one sells tickets In all cases the order has no
	// meaning. Clarification comes from the trips.
	Agency []*GeostoreFeatureIdProto `json:"agency,omitempty"`

	// LabelBackgroundColor: The background color of labels for that transit
	// line. The encoding is like in HTML or CSS, eg. 0x11ff00 means a bit
	// of red, full green, no blue, in sRGB color space. The most
	// significant byte must be zero, i.e. no transparency.
	LabelBackgroundColor int64 `json:"labelBackgroundColor,omitempty"`

	// LabelTextColor: The text color of labels for that transit line.
	// Encoding like label_background_color.
	LabelTextColor int64 `json:"labelTextColor,omitempty"`

	// Stations: The transit stations (establishment POIs with
	// gcid:transit_station) which this transit line can go through, in no
	// particular order. Usage note: The source of truth are the transit leg
	// features in Transit Oyster. In MapFacts, that information is cached
	// in two locations: in this field, and in transit station attachments
	// on POIs. Do not assume these locations are always up to date and/or
	// synchronized with each other.
	Stations []*GeostoreFeatureIdProto `json:"stations,omitempty"`

	// VehicleType: The type of vehicle that applies to all trips that use
	// this line.
	//
	// Possible values:
	//   "VEHICLE_TYPE_ANY" - ABSTRACT
	//   "VEHICLE_TYPE_RAIL" - ABSTRACT Metropolitan railway transport,
	// mostly for local transit.
	//   "VEHICLE_TYPE_METRO_RAIL" - ABSTRACT
	//   "VEHICLE_TYPE_SUBWAY" - Subways run mainly or completely
	// underground.
	//   "VEHICLE_TYPE_TRAM" - Trams run mainly or completely along streets.
	//   "VEHICLE_TYPE_MONORAIL" - Monorails run on track consisting of a
	// single rail, e.g. suspended monorail.
	//   "VEHICLE_TYPE_HEAVY_RAIL" - Heavy rail is rail transit that
	// consists of larger vehicles, typically to transport more people
	// across longer distances.
	//   "VEHICLE_TYPE_COMMUTER_TRAIN" - Commuter trains connect the city
	// with the suburbs. They tend to stop often and run short distances.
	//   "VEHICLE_TYPE_HIGH_SPEED_TRAIN" - High speed trains operate at much
	// higher speed than normal trains. They can also run long distances.
	// Typically with speeds upwards of 200 km/h. Examples are TGV, ICE,
	// Shinkansen.
	//   "VEHICLE_TYPE_LONG_DISTANCE_TRAIN" - Long distance trains connect
	// multiple cities/regions of a country or even multiple countries. They
	// run faster, but not high-speed. Typically speeds under 200 km/h.
	//   "VEHICLE_TYPE_BUS" - Buses cover mass transit over roads.
	//   "VEHICLE_TYPE_INTERCITY_BUS" - A bus that connects cities to each
	// other.
	//   "VEHICLE_TYPE_TROLLEYBUS" - A bus powered by electricity obtained
	// from overhead wires by means of a pole.
	//   "VEHICLE_TYPE_SHARE_TAXI" - Share taxi is sort of bus transport
	// with ability to drop off and pick up passengers anywhere on it route.
	// Generally share taxi uses minibus vehicles.
	//   "VEHICLE_TYPE_FERRY" - Ferries are a means of transit over water,
	// often operated on regular, frequent, return services.
	//   "VEHICLE_TYPE_CABLE_CAR" - Cable cars are a form of transit used in
	// the mountains.
	//   "VEHICLE_TYPE_GONDOLA_LIFT" - An aerial lift (colloquially called
	// "gondola lift") is a means of cable transport in which cabins, cars,
	// gondolas or open chairs are hauled above the ground by means of one
	// or more cables. Examples: gondola lift, aerial tramway. Funicular is
	// a cable railway in which a pair of tram-like vehicles use each other
	// as counter balance to ascend and descend.
	//   "VEHICLE_TYPE_FUNICULAR"
	//   "VEHICLE_TYPE_SPECIAL" - Used for easter eggs.
	//   "VEHICLE_TYPE_HORSE_CARRIAGE"
	//   "VEHICLE_TYPE_AIRPLANE"
	VehicleType string `json:"vehicleType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Agency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Agency") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTransitLineProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTransitLineProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTransitLineVariantProto: A line variant is a specific
// instantiation of a line concept, denoted by the ordered set of stops
// and collection of segments that it traverses. Line variants are
// modeled as TYPE_ROUTE features with gcid:transit_line_variant. This
// proto stores line-variant-specific information that is not generally
// applicable to all routes. Schema Design Doc:
// go/transit-line-concepts-and-variants
type GeostoreTransitLineVariantProto struct {
	// LineConcept: Reference to the line variant’s line concept.
	LineConcept *GeostoreFeatureIdProto `json:"lineConcept,omitempty"`

	// Stops: Ordered list of stations or platforms serviced by this line
	// variant. The order is captured by the ServicedStopProto.index field.
	Stops []*GeostoreServicedStopProto `json:"stops,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LineConcept") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LineConcept") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTransitLineVariantProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTransitLineVariantProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreTransitStationProto: Encapsulates information related to an
// individual transit station.
type GeostoreTransitStationProto struct {
	// Agencies: Transit agencies which service this transit station. A
	// station can be serviced by one or more transit agencies. See
	// go/transit-agency-relation-migration for more information.
	Agencies []*GeostoreFeatureIdProto `json:"agencies,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Agencies") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Agencies") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTransitStationProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTransitStationProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GeostoreTrustSignalsProto struct {
	// SourceTrust: Trust signals for the source of a given observation,
	// typically based on historical evidences or status (like internal
	// Google operator).
	SourceTrust *GeostoreSourceTrustProto `json:"sourceTrust,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceTrust") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceTrust") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreTrustSignalsProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreTrustSignalsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreUnlimitedSpeedProto: A speed limit without a limit value.
// Used to indicate the absence of a speed limit.
type GeostoreUnlimitedSpeedProto struct {
}

// GeostoreUrlListProto: Hold a list of URLs, usually to contain
// translations of a single URL.
type GeostoreUrlListProto struct {
	Url []*GeostoreUrlProto `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Url") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Url") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreUrlListProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreUrlListProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreUrlProto: A web location for a Feature. URLs should always be
// stored in repeated fields because some objects (eg. transit schedules
// in Brussels) have different URLs for different languages.
type GeostoreUrlProto struct {
	// Language: The external form of a Google International Identifiers
	// Initiative (III) LanguageCode object. See
	// google3/i18n/identifiers/languagecode.h for details. We place extra
	// restrictions on languages in addition to what the III library
	// requires. See
	// http://go/geo-schema-reference/feature-properties/languages.md This
	// field represents the language of the content of the web site. It may
	// be missing if the web site is language-independent or if the language
	// is unknown.
	Language string `json:"language,omitempty"`

	// Metadata: Field-level metadata for this URL. NOTE: there are multiple
	// UrlProto fields in the Geo Schema. Metadata here is only expected to
	// be present on FeatureProto.website[].
	Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"`

	// Pagerank: ** DEPRECATED ** The pagerank of this URL. Valid values [0,
	// 65535] See http://wiki/Main/NearestSeeds for more information.
	Pagerank int64 `json:"pagerank,omitempty"`

	// Url: The URL.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreUrlProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreUrlProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreUserProto: UserProto identifies a (human) user of Geo Data.
// Its primary use is in describing the source of pieces of data (e.g.
// edits). It could be a simple identifier, but isn't so that we can
// store it in the clear while still preventing correlation between a
// user's contribution.
type GeostoreUserProto struct {
	// EncryptedGaiaId: The user Gaia ID in encrypted form. Wipeout ids take
	// value of "" in bytes.
	EncryptedGaiaId string `json:"encryptedGaiaId,omitempty"`

	// EncryptionKeyName: Required. The name of the key used to encrypt the
	// Gaia ID.
	EncryptionKeyName string `json:"encryptionKeyName,omitempty"`

	// KeystoreConfigId: Required (valid default provided). The config ID of
	// the owner of the above encryption_key_name. This field must be set if
	// the encryption key name is *not* "mapfacts_gaia_id_encryption_key".
	KeystoreConfigId int64 `json:"keystoreConfigId,omitempty"`

	// Username: If possible, writers should set this to a full user email,
	// including the domain. Readers should not assume that this is a
	// well-formed email address. This field may only be set by Atlas,
	// Pushpin and OneRing because they are internal tools which have a PWG
	// exception to store textual usernames in the clear.
	Username string `json:"username,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EncryptedGaiaId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncryptedGaiaId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreVariableSpeedProto: A speed limit whose value can change
// based on road, traffic, and weather conditions.
type GeostoreVariableSpeedProto struct {
}

// GeostoreVehicleAttributeFilterProto: A set of vehicle attribute
// conditionals (ex: weight >= 20T && num_trailers = 2) used to define a
// slice of all possible vehicles. This can be useful for filtering one
// or more vehicles by a predicate.
type GeostoreVehicleAttributeFilterProto struct {
	// AxleCount: A repeated value here is treated as an AND operation. This
	// allows for ranges to be represented by two values (ex: "count < 4"
	// AND "count >= 2" means "2 <= count < 4").
	AxleCount []*GeostoreCountComparisonProto `json:"axleCount,omitempty"`

	// HasTrailer: Whether the applied vehicle types have a trailer attached
	// to them.
	HasTrailer bool `json:"hasTrailer,omitempty"`

	// HazardousGoods: List of prohibited hazardous goods for a vehicle to
	// carry. A repeated value here is treated as an OR operation, meaning
	// that they may not carry ANY of the goods listed.
	//
	// Possible values:
	//   "HAZARDOUS_GOODS_TYPE_UNSPECIFIED"
	//   "EXPLOSIVES"
	//   "GASES"
	//   "FLAMMABLE"
	//   "COMBUSTIBLE"
	//   "ORGANIC"
	//   "POISON"
	//   "RADIOACTIVE"
	//   "CORROSIVE"
	//   "ASPIRATION_HAZARD"
	//   "ENVIRONMENTAL_HAZARD"
	//   "OTHER"
	HazardousGoods []string `json:"hazardousGoods,omitempty"`

	// NumTrailers: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "count <=
	// 4" AND "count > 2" means "2 < count <= 4").
	NumTrailers []*GeostoreCountComparisonProto `json:"numTrailers,omitempty"`

	// TrailerLength: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "length
	// <= 53ft" AND "length > 48ft" means "48ft < length <= 53ft").
	TrailerLength []*GeostoreDimensionComparisonProto `json:"trailerLength,omitempty"`

	// VehicleHeight: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "height >
	// 3m" AND "height <= 5m" means "3m < height <= 5m").
	VehicleHeight []*GeostoreDimensionComparisonProto `json:"vehicleHeight,omitempty"`

	// VehicleLength: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "length
	// <= 40m" AND "length > 35m" means "35m < length <= 40m").
	VehicleLength []*GeostoreDimensionComparisonProto `json:"vehicleLength,omitempty"`

	// VehicleWeight: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "weight <
	// 8T" AND "weight >= 3T" means "3T <= weight < 8T").
	VehicleWeight []*GeostoreWeightComparisonProto `json:"vehicleWeight,omitempty"`

	// VehicleWidth: A repeated value here is treated as an AND operation.
	// This allows for ranges to be represented by two values (ex: "width <
	// 4m" AND "width >= 2m" means "2m <= width < 4m").
	VehicleWidth []*GeostoreDimensionComparisonProto `json:"vehicleWidth,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AxleCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AxleCount") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreVehicleAttributeFilterProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreVehicleAttributeFilterProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreVerticalOrderingProto: A proto representing a vertical
// ordering of a feature. NOTE: This shouldn’t be used if a more
// specific field can be used instead. E.g., for TYPE_SEGMENT features
// grade_level field should be preferred. For indoor features
// RELATION_ON_LEVEL should be preferred. See go/aboutgrades for
// comparison of various types of levels available.
type GeostoreVerticalOrderingProto struct {
	// Level: The level represents the relative vertical ordering of a
	// feature among all overlapping features. For example, we may have
	// features along freeway surface have level = 0, and features on an
	// overpass have level = 1. NOTE: It’s assumed that all features have
	// level 0 by default, so that it’s not necessary for all overlapping
	// features to have this set.
	Level float64 `json:"level,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Level") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Level") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreVerticalOrderingProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreVerticalOrderingProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreVerticalOrderingProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreVerticalOrderingProto
	var s1 struct {
		Level gensupport.JSONFloat64 `json:"level"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Level = float64(s1.Level)
	return nil
}

// GeostoreWeightComparisonProto: A weight value tagged with a
// comparison operator.
type GeostoreWeightComparisonProto struct {
	// Possible values:
	//   "COMPARISONOPERATOR_UNKNOWN" - Default proto value, this value will
	// never be set in Mapfacts.
	//   "LESS_THAN"
	//   "GREATER_THAN"
	Comparison string `json:"comparison,omitempty"`

	// Possible values:
	//   "UNSPECIFIED"
	//   "EQUAL"
	//   "LESS_THAN"
	//   "LESS_THAN_OR_EQUAL"
	//   "GREATER_THAN"
	//   "GREATER_THAN_OR_EQUAL"
	ComparisonOperator string `json:"comparisonOperator,omitempty"`

	WeightWithUnit *GeostoreWeightProto `json:"weightWithUnit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Comparison") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Comparison") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreWeightComparisonProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreWeightComparisonProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GeostoreWeightProto: A weight with a numerical value and unit.
type GeostoreWeightProto struct {
	// Possible values:
	//   "UNIT_UNKNOWN" - Default proto value, this value will never be set
	// in Mapfacts.
	//   "METRIC_TON"
	//   "LONG_TON"
	//   "SHORT_TON"
	//   "POUND"
	//   "KILOGRAM"
	Unit string `json:"unit,omitempty"`

	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Unit") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Unit") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GeostoreWeightProto) MarshalJSON() ([]byte, error) {
	type NoMethod GeostoreWeightProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GeostoreWeightProto) UnmarshalJSON(data []byte) error {
	type NoMethod GeostoreWeightProto
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

// GoodocAnchorLabel: An anchor label can be attached to any element to
// give it a reference address. LogicalEntity links (see
// goodoc-semantics.proto) may use anchor labels to point to goodoc
// elements (they may also use indices to locate the element, but the
// indices could become invalid if the goodocs are allowed to mutate).
// Multiple elements may have the same anchor.
type GoodocAnchorLabel struct {
	// Anchor: There is a generic method for composing such strings. Please
	// take a look at GoodocUtils::GenerateUniqueAnchorName(...) in
	// ocr/goodoc/goodoc-utils.h.
	Anchor string `json:"Anchor,omitempty"`

	AnchorScope int64 `json:"anchorScope,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchor") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocAnchorLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocAnchorLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocBoundingBox: Bounding box for page structural elements:
// pictures, paragraphs, characters, etc.
type GoodocBoundingBox struct {
	Height int64 `json:"Height,omitempty"`

	// Label: Optional magic label, so objects can be sorted on bounding box
	// dimensions easily
	Label int64 `json:"Label,omitempty"`

	// Left: BoundingBox coordinates and sizes are expressed in pixels
	Left int64 `json:"Left,omitempty"`

	Top int64 `json:"Top,omitempty"`

	Width int64 `json:"Width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocBoxPartitions: A way to specify a simple partitioning of a
// BoundingBox into a sequence of sub-boxes.
// +----------------------------------------------------+ | | | | | | |
// span(0) | (1) | (2) | (3) | (4) | | | | | | |
// +----------------------------------------------------+ This
// representation can, for example, be used to store coarse Symbol
// boundaries within a Word (see Word.CompactSymbolBoxes below) instead
// of per-Symbol BoundingBoxes, for saving space.
type GoodocBoxPartitions struct {
	Direction int64 `json:"direction,omitempty"`

	// Span: "span" is width or height, determined by "direction". If there
	// are k partitions, then there are k - 1 "span" values, one for each
	// except the last symbol (which is redundant).
	Span []int64 `json:"span,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Direction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Direction") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocBoxPartitions) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocBoxPartitions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocBreakLabel: Break label
type GoodocBreakLabel struct {
	BreakLabelType int64 `json:"BreakLabelType,omitempty"`

	// IsPrefix: True if break prepends the element
	IsPrefix bool `json:"isPrefix,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BreakLabelType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BreakLabelType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocBreakLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocBreakLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocCharLabel: Font label
type GoodocCharLabel struct {
	// BaseLine: The shift of a character from the base line of the string
	// in pixels
	BaseLine int64 `json:"BaseLine,omitempty"`

	// CharacterHeight: Height of small characters in pixels on the source
	// image
	CharacterHeight int64 `json:"CharacterHeight,omitempty"`

	// Color: The foreground color of the symbol; the default color is 0
	// (black)
	Color int64 `json:"Color,omitempty"`

	// Confidence: Symbol recognition confidence from OCR. Range depends
	// upon OCR Engine.
	Confidence int64 `json:"Confidence,omitempty"`

	// FontId: The font ID refers to the fonts table in the document header
	FontId int64 `json:"FontId,omitempty"`

	// FontSize: Size in points (JFYI: point is 1/72"). This is rounded to
	// the nearest whole number.
	FontSize int64 `json:"FontSize,omitempty"`

	// FontSizeFloat: Size in points represented as float.
	FontSizeFloat float64 `json:"FontSizeFloat,omitempty"`

	FontType int64 `json:"FontType,omitempty"`

	// HasUncertainHeight: If CharacterHeight is defined uncertainly
	HasUncertainHeight bool `json:"HasUncertainHeight,omitempty"`

	// HorizontalScale: The horizontal scaling for a character, in percents.
	// The default value for this property is 100, which corresponds to no
	// scaling.
	HorizontalScale int64 `json:"HorizontalScale,omitempty"`

	IsBold bool `json:"IsBold,omitempty"`

	IsItalic bool `json:"IsItalic,omitempty"`

	IsSmallCaps bool `json:"IsSmallCaps,omitempty"`

	IsStrikeout bool `json:"IsStrikeout,omitempty"`

	IsSubscript bool `json:"IsSubscript,omitempty"`

	IsSuperscript bool `json:"IsSuperscript,omitempty"`

	// IsSuspicious: If OCR Engine marked the character as "suspicious"
	// (this character is likely to be recognized incorrectly).
	IsSuspicious bool `json:"IsSuspicious,omitempty"`

	IsUnderlined bool `json:"IsUnderlined,omitempty"`

	// NotOcrablePerQA: True if a QA operator has marked this as not
	// OCRable. This is used for complex equations, scripts that the
	// operator can't type, or handwriting.
	NotOcrablePerQA bool `json:"NotOcrablePerQA,omitempty"`

	// Penalty: Symbol-level penalty from the garbage text detector. Lower
	// is better; range = [0,100].
	Penalty int64 `json:"Penalty,omitempty"`

	// SerifProbability: The probability that a character is written with a
	// Serif font
	SerifProbability int64 `json:"SerifProbability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BaseLine") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseLine") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocCharLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocCharLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocCharLabel) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocCharLabel
	var s1 struct {
		FontSizeFloat gensupport.JSONFloat64 `json:"FontSizeFloat"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FontSizeFloat = float64(s1.FontSizeFloat)
	return nil
}

// GoodocDocument: Top-level representation of OCRed document
type GoodocDocument struct {
	// EditingHistory: Debug info, recording the history of any editing done
	// through the interface in goodoc-editing.h. The strings look like
	// "MoveParagraph(page_index = 0, source_block_index = 3, ...);
	EditingHistory []string `json:"EditingHistory,omitempty"`

	// LogicalEntity: Logical entities are stored as blobs. Depending on the
	// kind of thing this is a goodoc of, a separate .proto file is expected
	// to define the logical entity structure. Hence we can still parse this
	// as a goodoc for people who dont care about this, and people who care
	// about this can parse it specifically.
	// ocr/goodoc/logical-entity-utils.h has methods to read and write
	// these. See Goodoc++ doc
	LogicalEntity []string `json:"LogicalEntity,omitempty"`

	// LogicalEntityMessageName: The names of the proto messages serialized
	// in LogicalEntity, one for each LogicalEntity. The repetitions should
	// number 0 to leave this unspecified, or they should equal the number
	// of LogicalEntity strings.
	LogicalEntityMessageName []string `json:"LogicalEntityMessageName,omitempty"`

	// SubDocuments: For multi-goodoc documents
	SubDocuments []*GoodocDocument `json:"SubDocuments,omitempty"`

	Header *GoodocDocumentHeader `json:"header,omitempty"`

	Page []*GoodocDocumentPage `json:"page,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EditingHistory") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EditingHistory") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocument) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoodocDocumentHeader struct {
	OcrEngineId string `json:"OcrEngineId,omitempty"`

	OcrEngineVersion string `json:"OcrEngineVersion,omitempty"`

	Font []*GoodocDocumentHeaderFont `json:"font,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OcrEngineId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OcrEngineId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocumentHeader) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocumentHeader
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoodocDocumentHeaderFont struct {
	FontId int64 `json:"FontId,omitempty"`

	FontName string `json:"FontName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FontId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FontId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocumentHeaderFont) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocumentHeaderFont
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoodocDocumentPage struct {
	// GarbageDetectorChangeList: If the garbage text detector was run, the
	// changelist that the binary was sync'ed to (or -1 if unknown), and
	// whether the settings had their production values (or false if
	// unknown).
	GarbageDetectorChangeList int64 `json:"GarbageDetectorChangeList,omitempty"`

	GarbageDetectorWasProduction bool `json:"GarbageDetectorWasProduction,omitempty"`

	// Height: Height in pixels
	Height int64 `json:"Height,omitempty"`

	// HorizontalDpi: Horizontal resolution in DPI.
	HorizontalDpi int64 `json:"HorizontalDpi,omitempty"`

	Label *GoodocLabel `json:"Label,omitempty"`

	// PornScore: Score of porn classifier from analyzing images on page.
	// Note: This should be named porn_score, but we use PornScore as the
	// name in order to be consistent with the rest of this proto.
	PornScore float64 `json:"PornScore,omitempty"`

	// TextConfidence: Page text recognition confidence. Range depends on
	// the algorithm but should be consistent in a given volume. 0 is bad,
	// 100 is good.
	TextConfidence int64 `json:"TextConfidence,omitempty"`

	// VerticalDpi: Vertical resolution in DPI.
	VerticalDpi int64 `json:"VerticalDpi,omitempty"`

	// Width: Width in pixels
	Width int64 `json:"Width,omitempty"`

	Block []*GoodocDocumentPageBlock `json:"block,omitempty"`

	Mergedpageinfo []*GoodocDocumentPageMergedPageInfo `json:"mergedpageinfo,omitempty"`

	// PostOcrConfidence: Whether page-level text confidences and other
	// summary data were computed by PostOcrUtils instead of the
	// now-obsolete GarbageTextDetector
	PostOcrConfidence bool `json:"postOcrConfidence,omitempty"`

	// Stats: Page level stats (font size, line spacing, etc.)
	Stats *GoodocSummaryStats `json:"stats,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GarbageDetectorChangeList") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "GarbageDetectorChangeList") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocumentPage) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocumentPage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocDocumentPage) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocDocumentPage
	var s1 struct {
		PornScore gensupport.JSONFloat64 `json:"PornScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PornScore = float64(s1.PornScore)
	return nil
}

type GoodocDocumentPageBlock struct {
	BlockType int64 `json:"BlockType,omitempty"`

	Box *GoodocBoundingBox `json:"Box,omitempty"`

	Label *GoodocLabel `json:"Label,omitempty"`

	// OrientationLabel: Which way is upright for this block, and what is
	// the reading order (applicable if there is text here).
	OrientationLabel *GoodocOrientationLabel `json:"OrientationLabel,omitempty"`

	Paragraph []*GoodocParagraph `json:"Paragraph,omitempty"`

	// RotatedBox: If RotatedBox is set, Box must be set as well. See
	// RotatedBoundingBox.
	RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"`

	// TextConfidence: Block text recognition confidence. Range depends on
	// the algorithm but should be consistent in a given volume. 0 is bad,
	// 100 is good.
	TextConfidence int64 `json:"TextConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlockType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlockType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocumentPageBlock) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocumentPageBlock
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocDocumentPageMergedPageInfo: If we have merged text from another
// goodoc into this one (for example, from a PDF text layer goodoc into
// an OCR'd goodoc), we record some source goodoc info here.
type GoodocDocumentPageMergedPageInfo struct {
	OcrEngineId string `json:"OcrEngineId,omitempty"`

	OcrEngineVersion string `json:"OcrEngineVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OcrEngineId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OcrEngineId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocDocumentPageMergedPageInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocDocumentPageMergedPageInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocFontSizeStats: Statistics about a particular font size (from
// CharLabel.FontSize) aggregated over a range of symbols
type GoodocFontSizeStats struct {
	// FontId: CharLabel.FontId and FontSize
	FontId int64 `json:"fontId,omitempty"`

	FontSize int64 `json:"fontSize,omitempty"`

	// MedianHeight: The measurements are in pixels
	MedianHeight int64 `json:"medianHeight,omitempty"`

	// MedianLineHeight: top to bottom
	MedianLineHeight int64 `json:"medianLineHeight,omitempty"`

	// MedianLineSpace: bottom to next top in para
	MedianLineSpace int64 `json:"medianLineSpace,omitempty"`

	// MedianLineSpan: top to next top in para
	MedianLineSpan int64 `json:"medianLineSpan,omitempty"`

	MedianWidth int64 `json:"medianWidth,omitempty"`

	// NumLineSpaces: Lines (out of num_lines) that have a successor line
	// within their para
	NumLineSpaces int64 `json:"numLineSpaces,omitempty"`

	// NumLines: Line stats for this font. "top" corresponds to the highest
	// ascender and "bottom" to the lowest descender. num_lines = # lines
	// with > 50% symbols having this font
	NumLines int64 `json:"numLines,omitempty"`

	NumSymbols int64 `json:"numSymbols,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FontId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FontId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocFontSizeStats) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocFontSizeStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocLabel: Label aggregates all kinds of optional characteristics
// of page elements.
type GoodocLabel struct {
	// AnchorLabel: AnchorLabel identifies a link target.
	AnchorLabel []*GoodocAnchorLabel `json:"AnchorLabel,omitempty"`

	BreakLabel *GoodocBreakLabel `json:"BreakLabel,omitempty"`

	// CharLabel: CharLabel is specifically intended for symbols
	CharLabel *GoodocCharLabel `json:"CharLabel,omitempty"`

	// LanguageLabel: Languages used in the element (page, block, paragraph
	// or word). Ordered by dominant-language first. Note: content scanjobs
	// processed by the garbage_text_detector before CL 9223538 (Dec. 2008)
	// have LanguageLabels in arbitrary order (within Page and Block
	// elements) -- the confidence value should be inspected to find the
	// dominant language guess for these, rather than just taking the first.
	LanguageLabel []*GoodocLanguageLabel `json:"LanguageLabel,omitempty"`

	// SemanticLabel: SemanticLabel is defined in goodoc-semantics.proto, it
	// allows rich annotation of content, identifying the nature of page
	// elements.
	SemanticLabel *GoodocSemanticLabel `json:"SemanticLabel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorLabel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorLabel") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocLanguageCombinationLanguage: Weighted language
type GoodocLanguageCombinationLanguage struct {
	// Bcp47Tag: Bcp47 language code. Note, this is not the same as
	// OceanCode used by goodoc::Document.
	Bcp47Tag string `json:"bcp47Tag,omitempty"`

	// Weight: Weight of language. This specifies how likely it is to see
	// the language in the input text. The values don't have to add up to 1.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bcp47Tag") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bcp47Tag") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocLanguageCombinationLanguage) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocLanguageCombinationLanguage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocLanguageCombinationLanguage) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocLanguageCombinationLanguage
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

// GoodocLanguageLabel: Language label
type GoodocLanguageLabel struct {
	// ClosestLanguageId: Closest id from
	// i18n/languages/proto/languages.proto; caveat: may not accurately
	// capture the language. GoodocLanguageCodeToLanguage() declared in
	// ocr/goodoc/goodoc-utils.h may be used to convert a Language enum
	// (i18n/languages/proto/languages.proto) to a string suitable for this
	// field.
	ClosestLanguageId int64 `json:"ClosestLanguageId,omitempty"`

	// Confidence: Confidence level on that language, between 0 and 100
	Confidence int64 `json:"Confidence,omitempty"`

	// LanguageCode: Old (Ocean) Language Code Usage: The language code is
	// inferred during the running of the Garbage Text Detector and gets set
	// at the paragraph, block and page level. Language code is a string of
	// 3 or more characters. The first 3 letters specify the language,
	// according to ISO 639. Optionally, the 3-letter code can be extended
	// with an underscore and a language variant specifier. Specifiers exist
	// for regional variants or for different forms of language spelling.
	// The regional variants are specified as 2-letter country code,
	// according to ISO 3166. Some examples: Standard "por" - Portuguese,
	// standard "rus" - Russian, standard Regional variants: "por_br" -
	// Portuguese, Brazilian "eng_us" - English, United States Variants of
	// spelling: "rus_old" - Russian, old spelling "chi_tra" - Chinese,
	// traditional "ger_new" - German, new spelling
	// LanguageToGoodocLanguageCode() declared in ocr/goodoc/goodoc-utils.h
	// may be used to convert a Language enum
	// (i18n/languages/proto/languages.proto) to a string suitable for this
	// field. New Language Code Usage: Most of the usages described above
	// were standardized in BCP 47, and these codes are the new stanadard to
	// be used in this field. To load either new or old language codes to
	// form LanguageCode objects, use the function FromOceanCode() in
	// ocr/quality/lang_util.h Note that the function ocr::FromOceanCode is
	// capable of transforming either version of the LanguageCode to a C++
	// i18n_identifiers::LanguageCode.
	LanguageCode string `json:"LanguageCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClosestLanguageId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClosestLanguageId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocLanguageLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocLanguageLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocLogicalEntity: A logical entity in the abstract is just a group
// of links to the goodoc. Depending on the kind of item, a separate
// proto file should extend this to define the logical structure for
// that kind. For example. newspapers.proto defines the logical entity
// for newspapers. LogicalEntity is also used within some
// SemanticLabels, for example, for a table-of-contents link.
type GoodocLogicalEntity struct {
	Metadata string `json:"Metadata,omitempty"`

	Link []*GoodocLogicalEntityLink `json:"link,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocLogicalEntity) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocLogicalEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocLogicalEntityLink: NOTE(gponcin) 2008/11 This is repeated for
// articles where we may have multiple links in one entity. From Vivek
// (Atlantis): "The block segmenter outputs a list of headlines on a
// page as a single logical entity that we attach to the
// logicalentity(1) for the goodoc."
type GoodocLogicalEntityLink struct {
	// Anchor: The preferred way to link to an element is to create an
	// AnchorLabel in the target element and name it here. Multiple elements
	// may contain the same Anchor string.
	Anchor string `json:"Anchor,omitempty"`

	BlockId int64 `json:"BlockId,omitempty"`

	// DocId: Links may also specifically locate the target element with the
	// following indices. Note that during the course of layout analysis,
	// goodoc elements may move around, so such hard links should be created
	// only very late (or not at all -- Anchors would be more reliable
	// target addresses).
	DocId int64 `json:"DocId,omitempty"`

	PageId int64 `json:"PageId,omitempty"`

	ParagraphId int64 `json:"ParagraphId,omitempty"`

	RouteId int64 `json:"RouteId,omitempty"`

	SymbolId int64 `json:"SymbolId,omitempty"`

	// Url: If not defined, link points to the current doc
	Url string `json:"Url,omitempty"`

	WordId int64 `json:"WordId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchor") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocLogicalEntityLink) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocLogicalEntityLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocOrdinal: An Ordinal message represents a single ordinal
// component of a page number. It encodes the printed or inferred
// numbering style (Roman, ASCII, etc.) and the ordinal value of the
// component. An optional set of variable is defined in order to express
// a sectioned ordinal. A sectioned ordinal may appear in certain page
// numbering styles, for example "12-1" where "12" identifies a chapter
// and "1" identifies the page within it. This case will be encoded with
// value 1 and section_value 12 both of type ASCII.
type GoodocOrdinal struct {
	// Possible values:
	//   "UNKNOWN_IMPLICIT"
	//   "IMPLICIT"
	//   "EXPLICIT"
	Implicit string `json:"implicit,omitempty"`

	SectionStringValue string `json:"sectionStringValue,omitempty"`

	SectionValue int64 `json:"sectionValue,omitempty"`

	// SectionValueType: The following vars describe the section component
	// of an ordinal (if exists). They are used to express situation where a
	// page number has a section component, usually denoating the chapter
	// number. For example pages 5-14, 5-15 will both have the common
	// section 5. (If exists). The semantcis of the section variables
	// correspond to that of the primary part of the ordinal. (Described
	// above).
	//
	// Possible values:
	//   "UNKNOWN_VALUE_TYPE"
	//   "LEGACY_PRE_VALUE" - Not to be used
	//   "ROMAN" - Roman numeral
	//   "ASCII" - ASCII numeral (i.e. 1,2,3)
	//   "ALPHA" - Alphabetic, as in the first part of "A-11".
	//   "LEGACY_POST_VALUE" - Not to be used
	//   "UNDEFINED_VALUE_TYPE"
	//   "CHINESE"
	//   "JAPANESE"
	//   "KOREAN"
	//   "ARABIC_ARABIC" - Arabic numeral as used in Arabic. (Not to be
	// confused with the ASCII numeral a.k.a Arabic numberal.)
	SectionValueType string `json:"sectionValueType,omitempty"`

	// StringValue: The string page value.
	StringValue string `json:"stringValue,omitempty"`

	// Value: The numeric page value.
	Value int64 `json:"value,omitempty"`

	// ValueDelta: The delta in which the value increases between pages.
	//
	// Possible values:
	//   "DELTA_HALF" - appears in typewritten documents
	//   "DELTA_ONE" - the usual numbering scenario
	//   "DELTA_TWO" - appears in documents with two ordinals per page
	ValueDelta string `json:"valueDelta,omitempty"`

	// ValueType: A value type from the Type enum above.
	//
	// Possible values:
	//   "UNKNOWN_VALUE_TYPE"
	//   "LEGACY_PRE_VALUE" - Not to be used
	//   "ROMAN" - Roman numeral
	//   "ASCII" - ASCII numeral (i.e. 1,2,3)
	//   "ALPHA" - Alphabetic, as in the first part of "A-11".
	//   "LEGACY_POST_VALUE" - Not to be used
	//   "UNDEFINED_VALUE_TYPE"
	//   "CHINESE"
	//   "JAPANESE"
	//   "KOREAN"
	//   "ARABIC_ARABIC" - Arabic numeral as used in Arabic. (Not to be
	// confused with the ASCII numeral a.k.a Arabic numberal.)
	ValueType string `json:"valueType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Implicit") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Implicit") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocOrdinal) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocOrdinal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocOrientationLabel: OrientationLabel groups the details about
// orientation and reading order.
type GoodocOrientationLabel struct {
	// DeskewAngle: After rotating so that the text orientation is upright,
	// how many radians does one have to rotate the block anti-clockwise for
	// it to be level? We guarantee: -Pi/4 <= deskew_angle <= Pi/4
	DeskewAngle float64 `json:"deskewAngle,omitempty"`

	// Mirrored: Whether a text line is mirrored (e.g. reflected in a shiny
	// surface or seen through the opposite side of a storefront window).
	// The intent is that this is a quality of the text line image. It needs
	// to be reflected according to a vertical axis along the direction of
	// upright characters to make it readable. This does not affect the
	// shape of the bounding box. A mirrored line with top to bottom writing
	// remains top to bottom. A mirrored horizontal line will flip left to
	// right. However any child entities (symbols) will remain in the same
	// order, and the writing direction imposed by the language (ltr or rtl)
	// will remain the same.
	Mirrored bool `json:"mirrored,omitempty"`

	// Possible values:
	//   "ORIENTATION_PAGE_UP"
	//   "ORIENTATION_PAGE_RIGHT"
	//   "ORIENTATION_PAGE_DOWN"
	//   "ORIENTATION_PAGE_LEFT"
	Orientation string `json:"orientation,omitempty"`

	// Possible values:
	//   "TEXTLINE_ORDER_LEFT_TO_RIGHT"
	//   "TEXTLINE_ORDER_RIGHT_TO_LEFT"
	//   "TEXTLINE_ORDER_TOP_TO_BOTTOM"
	TextlineOrder string `json:"textlineOrder,omitempty"`

	// Possible values:
	//   "WRITING_DIRECTION_LEFT_TO_RIGHT"
	//   "WRITING_DIRECTION_RIGHT_TO_LEFT"
	//   "WRITING_DIRECTION_TOP_TO_BOTTOM"
	WritingDirection string `json:"writingDirection,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeskewAngle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeskewAngle") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocOrientationLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocOrientationLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocOrientationLabel) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocOrientationLabel
	var s1 struct {
		DeskewAngle gensupport.JSONFloat64 `json:"deskewAngle"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DeskewAngle = float64(s1.DeskewAngle)
	return nil
}

// GoodocOverrides: This message specifies structure "overrides" to
// apply: it can be used to force certain kinds of GoodocToHTML
// renderings of elements.
type GoodocOverrides struct {
	// BlockImagination: For text blocks only: do not allow this block to be
	// turned into an image when rendering, even if your algorithms want to
	// do so:
	//
	// Possible values:
	//   "LEAVE_ALONE"
	//   "FORCE_TRUE"
	//   "FORCE_FALSE"
	BlockImagination string `json:"blockImagination,omitempty"`

	// DoNotExpandGraphicBox: For graphic blocks, we often expand the block
	// a bit for rendering, to compensate for bad image segmentation.
	// do_not_expand_graphic_box forces this behavior to be turned off.
	DoNotExpandGraphicBox bool `json:"doNotExpandGraphicBox,omitempty"`

	// FullPageAsImage: For Pages only: explicitly specify whether or not
	// this page should be rendered fully as an image
	//
	// Possible values:
	//   "LEAVE_ALONE"
	//   "FORCE_TRUE"
	//   "FORCE_FALSE"
	FullPageAsImage string `json:"fullPageAsImage,omitempty"`

	// FullPageLineated: For Pages only: explicitly specify whether or not
	// all text on this page should be treated as "LINEATED"
	//
	// Possible values:
	//   "LEAVE_ALONE"
	//   "FORCE_TRUE"
	//   "FORCE_FALSE"
	FullPageLineated string `json:"fullPageLineated,omitempty"`

	// FullPageSkipped: For Pages only: explicitly specify whether or not
	// this page should be skipped.
	//
	// Possible values:
	//   "LEAVE_ALONE"
	//   "FORCE_TRUE"
	//   "FORCE_FALSE"
	FullPageSkipped string `json:"fullPageSkipped,omitempty"`

	// NeedNotSuppressPhoto: This GRAPHIC block's image can be shown even
	// when GoodocToHTMLOptions.suppress_photos_with_this is specified.
	NeedNotSuppressPhoto bool `json:"needNotSuppressPhoto,omitempty"`

	// PageBreakBefore: For blocks: explicitly specify whether or not this
	// block should get a page-break before it.
	//
	// Possible values:
	//   "LEAVE_ALONE"
	//   "FORCE_TRUE"
	//   "FORCE_FALSE"
	PageBreakBefore string `json:"pageBreakBefore,omitempty"`

	Style []*GoodocOverridesStyle `json:"style,omitempty"`

	// WordHtml: For Words only: replace the rendered HTML by this:
	WordHtml string `json:"wordHtml,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlockImagination") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlockImagination") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocOverrides) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocOverrides
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocOverridesStyle: Extra css styles to apply
type GoodocOverridesStyle struct {
	// Name: css attribute name: "margin-left", for eg.
	Name string `json:"name,omitempty"`

	// Value: css attribute vale: "1em", for eg.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocOverridesStyle) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocOverridesStyle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocParagraph: Represents a paragraph of text in OCRed content.
type GoodocParagraph struct {
	Box *GoodocBoundingBox `json:"Box,omitempty"`

	FirstLineIndent int64 `json:"FirstLineIndent,omitempty"`

	Label *GoodocLabel `json:"Label,omitempty"`

	LeftIndent int64 `json:"LeftIndent,omitempty"`

	LineSpacing int64 `json:"LineSpacing,omitempty"`

	// OrientationLabel: Which way is upright for this paragraph and what is
	// the dominant reading order?
	OrientationLabel *GoodocOrientationLabel `json:"OrientationLabel,omitempty"`

	RightIndent int64 `json:"RightIndent,omitempty"`

	// RotatedBox: If RotatedBox is set, Box must be set as well. See
	// RotatedBoundingBox.
	RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"`

	SpaceAfter int64 `json:"SpaceAfter,omitempty"`

	SpaceBefore int64 `json:"SpaceBefore,omitempty"`

	// SubsumedParagraphProperties: If we merge any paragraphs into this one
	// (through the MergeParagraphWithNext() interface in goodoc-editing.h),
	// then we append the properties of the merged paragraph here, for
	// debugging and to avoid losing any info. Note that the
	// SubsumedParagraphProperties Paragraphs do not contain Routes.
	SubsumedParagraphProperties []*GoodocParagraph `json:"SubsumedParagraphProperties,omitempty"`

	// TextConfidence: Paragraph text recognition confidence. Range depends
	// on the algorithm but should be consistent in a given volume. 0 is
	// bad, 100 is good.
	TextConfidence int64 `json:"TextConfidence,omitempty"`

	Width int64 `json:"Width,omitempty"`

	Alignment int64 `json:"alignment,omitempty"`

	Droppedcap *GoodocParagraphDroppedCap `json:"droppedcap,omitempty"`

	Route []*GoodocParagraphRoute `json:"route,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocParagraph) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocParagraph
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocParagraphDroppedCap: Information about the paragraph's dropped
// capital letter
type GoodocParagraphDroppedCap struct {
	Box *GoodocBoundingBox `json:"Box,omitempty"`

	LettersCount int64 `json:"LettersCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocParagraphDroppedCap) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocParagraphDroppedCap
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoodocParagraphRoute struct {
	// EndPoint: Route end point
	EndPoint *GoodocRoutePoint `json:"EndPoint,omitempty"`

	// StartPoint: Route start point
	StartPoint *GoodocRoutePoint `json:"StartPoint,omitempty"`

	// Weight: Route weight, i.e. route
	Weight int64 `json:"Weight,omitempty"`

	// Word: The array of words on this route
	Word []*GoodocWord `json:"Word,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndPoint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndPoint") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocParagraphRoute) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocParagraphRoute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocRotatedBoundingBox: Similar to goodoc.BoundingBox, but
// containing an angle of rotation, thus able to represent
// non-axis-aligned boxes. RotatedBoundingBox can be used in combination
// with BoundingBox to better represent non-axis-aligned page structural
// elements. In such case, two bounding boxes can be used per element. A
// RotatedBoundingBox that is rotated to tightly encompass the element;
// embedded (as tightly as possible) inside an axis-aligned BoundingBox.
// Note that there is some amount of ambiguity regarding what angle and
// vertex to use. Consider a square with axis-aligned diagonals: B / \ A
// C \ / D This can either be represented as a -45 degree rotation
// around A, a 45 degree rotation around B, a 135 degree rotation around
// C, or a -135 degree rotation around D. Which one you use depends on
// your use case, but one recommendation is to use the vertex that would
// be top left if the reader was reading it in the 'natural'
// orientation.
type GoodocRotatedBoundingBox struct {
	// Angle: Angle of rotation of the original non-rotated box around the
	// top left corner of the original non-rotated box, in clockwise degrees
	// from the horizontal.
	Angle float64 `json:"Angle,omitempty"`

	Height int64 `json:"Height,omitempty"`

	// Left: Coordinates and sizes are expressed in pixels, where the
	// top-left pixel is (0, 0). The coordinates refer to the corner of the
	// top-left vertex of the unrotated version of the box.
	Left int64 `json:"Left,omitempty"`

	Top int64 `json:"Top,omitempty"`

	Width int64 `json:"Width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Angle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Angle") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocRotatedBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocRotatedBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocRotatedBoundingBox) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocRotatedBoundingBox
	var s1 struct {
		Angle gensupport.JSONFloat64 `json:"Angle"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Angle = float64(s1.Angle)
	return nil
}

type GoodocRoutePoint struct {
	// RouteIndex: The sequential route number, starts at 0
	RouteIndex int64 `json:"RouteIndex,omitempty"`

	// WordIndex: The sequential word number, starts at 0
	WordIndex int64 `json:"WordIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RouteIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RouteIndex") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocRoutePoint) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocRoutePoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSemanticLabel: Label identifying a logical part of the page
// content. This applies mostly at Block level or Paragraph level (but
// can apply to Words or to arbitrary spans if needed).
type GoodocSemanticLabel struct {
	// AlternateText: Alternate text for a sequence of the Goodoc, just for
	// the element containing this label, or for a sequence starting from
	// this element to the EndOfSpanningLabel. Typically this is inserted by
	// automatic or manual OCR correction. We use text instead of editing
	// the Goodoc directly since we dont usually have accurate symbol level
	// bboxes for the alternate text. Also the original values from OCR are
	// preserved. It is upto the application to do anything more intelligent
	// like mapping words and finding potential symbol/word bboxes.
	AlternateText string `json:"AlternateText,omitempty"`

	// Attribute: Page elements can be given Attributes refining
	// meaning/role. We keep this flexible by using strings instead of
	// pre-determined enum values. But it is useful to list all such
	// Attributes in use in ocr/goodoc/goodoc-semantics-attributes.h
	Attribute []string `json:"Attribute,omitempty"`

	// ChapterStart: Blocks that are at the beginning of chapters have this
	// set:
	ChapterStart bool `json:"ChapterStart,omitempty"`

	CleanupAnnotation []int64 `json:"CleanupAnnotation,omitempty"`

	ContinuesFromPreviousPage bool `json:"ContinuesFromPreviousPage,omitempty"`

	// ContinuesFromPreviousPageHyphenated: When
	// ContinuesFromPreviousPage=true, this bit can be set to note that the
	// word fragment on the previous page ends in a hyphen.
	ContinuesFromPreviousPageHyphenated bool `json:"ContinuesFromPreviousPageHyphenated,omitempty"`

	// ContinuesOnNextPage: Paragraphs that span across pages can be
	// identified with the following flags. Note that flows just connect
	// Blocks across pages. These continuation flags imply something more
	// specific -- the case of a single logical paragraph split over pages.
	// Only the last Paragraph in the last Block within a given FlowThread()
	// on a page can have ContinuesOnNextPage set. Similarly, only the first
	// Paragraph in the first Block with a given FlowThread() on a page may
	// have ContinuesFromPreviousPage set.
	ContinuesOnNextPage bool `json:"ContinuesOnNextPage,omitempty"`

	// EndOfSpanningLabel: Normally, a SemanticLabel applies exactly to the
	// goodoc element that it is contained in (usually Block or Paragraph,
	// sometimes Word). Occasionally, we need a SemanticLabel to span across
	// the boundary or end before the boundary. For example, a URL may just
	// be a few words within a Paragraph. In such cases, the SemanticLabel
	// is added to the first element of the span and contains this
	// LogicalEntity pointing to the last element of the span:
	EndOfSpanningLabel *GoodocLogicalEntity `json:"EndOfSpanningLabel,omitempty"`

	// ExperimentalData: Message set for experimental algorithm data. Use
	// case: We keep a set of features that was computed for the
	// unsupervised caption extraction and store it here. Agora question
	// producer will consume this message set to be embedded in a question.
	// The experimental feature set can then be used later to pair up with
	// ground truth labels for designing a supervised algorithm. Currently
	// holding: o ocean/analysis/content/caption_data.proto's TextualElement
	ExperimentalData *Proto2BridgeMessageSet `json:"ExperimentalData,omitempty"`

	// Flow: Flow identifies a single sequential unit of text (or other
	// content). It is only set on Blocks -- a flow identifies a sequence of
	// Blocks. The default, main flow is just the empty string. The
	// "FlowThread" of a block is the flow (if non-empty), suffixed with the
	// block appearance. This is computed by GoodocUtils::FlowThread().
	// Paragraphs may be split over blocks in the same FlowThread, across
	// pages. The following table shows how FlowThread gets computed: ##
	// Flow Appearance FlowThread (empty) UNSPECIFIED "UNSPECIFIED" foo BODY
	// "foo:BODY" Please use lower-case strings for flows (such as
	// article-33-box). One useful way to think of flows is this: A logical
	// unit of interest in a a Document (for example, an article) would be
	// identified by a starting block, an ending block, and a list of flows
	// of interest within the [start, end) span. message Article { (page#,
	// block#): article_start; (page#, block#): article_end; repeated string
	// flows; } The reading order of blocks, paragraphs/etc within this
	// article would be the same order as present in the goodoc itself. Some
	// applications (such as rendering) may want to process the article by
	// running over all the flows together, others (such as indexing) may
	// want to deal with the FlowThreads one after the other.
	Flow string `json:"Flow,omitempty"`

	// ModificationRecord: This field can be used to record the steps by
	// which AlternateText for a sequence of the Goodoc is generated.
	ModificationRecord string `json:"ModificationRecord,omitempty"`

	// PageNumberOrdinal: If Appearence is PAGE_NUMBER:
	PageNumberOrdinal *GoodocOrdinal `json:"PageNumberOrdinal,omitempty"`

	Appearance int64 `json:"appearance,omitempty"`

	Columndetails *GoodocSemanticLabelColumnDetails `json:"columndetails,omitempty"`

	Contentlink *GoodocSemanticLabelContentLink `json:"contentlink,omitempty"`

	Editcorrectioncandidate []*GoodocSemanticLabelEditCorrectionCandidate `json:"editcorrectioncandidate,omitempty"`

	// Overrides: Structure overrides: typically manual corrections to
	// goodoc renderings.
	Overrides *GoodocOverrides `json:"overrides,omitempty"`

	Snippetfilter []*GoodocSemanticLabelSnippetFilter `json:"snippetfilter,omitempty"`

	Tablecelldetails *GoodocSemanticLabelTableCellDetails `json:"tablecelldetails,omitempty"`

	Tabledetails *GoodocSemanticLabelTableDetails `json:"tabledetails,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlternateText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlternateText") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabel) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSemanticLabelColumnDetails: If Appearance is COLUMN:
type GoodocSemanticLabelColumnDetails struct {
	Column int64 `json:"Column,omitempty"`

	Columns int64 `json:"Columns,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Column") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Column") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelColumnDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelColumnDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSemanticLabelContentLink: If the label is for something that
// links to another piece of content (in this volume, outside, a url, a
// citation, etc.).
type GoodocSemanticLabelContentLink struct {
	// UrlTarget: For URL labels, we note the url here directly (it's also
	// available by grabbing all text symbols within the labeled span).
	// SCHOLARLY_CITATION labels or even CAPTION labels may occasionally
	// contain URLs.
	UrlTarget string `json:"UrlTarget,omitempty"`

	Citationtarget *GoodocSemanticLabelContentLinkCitationTarget `json:"citationtarget,omitempty"`

	Involumetarget *GoodocSemanticLabelContentLinkInVolumeTarget `json:"involumetarget,omitempty"`

	// ForceSendFields is a list of field names (e.g. "UrlTarget") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UrlTarget") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelContentLink) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelContentLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSemanticLabelContentLinkCitationTarget: For SCHOLARLY_CITATION
// labels:
type GoodocSemanticLabelContentLinkCitationTarget struct {
	// Authors: separated by semicolons
	Authors string `json:"Authors,omitempty"`

	BibKey string `json:"BibKey,omitempty"`

	Confidence float64 `json:"Confidence,omitempty"`

	Title string `json:"Title,omitempty"`

	Year int64 `json:"Year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Authors") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Authors") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelContentLinkCitationTarget) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelContentLinkCitationTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocSemanticLabelContentLinkCitationTarget) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocSemanticLabelContentLinkCitationTarget
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"Confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoodocSemanticLabelContentLinkInVolumeTarget: For CAPTION or
// FOOTNOTE_POINTER or TOC_ENTRY or INDEX_ENTRY or CONTINUATION labels:
type GoodocSemanticLabelContentLinkInVolumeTarget struct {
	Confidence float64 `json:"Confidence,omitempty"`

	// LogicalEntity: The CAPTION label typically targets the previous or
	// the next Block. The FOOTNOTE_POINTER label typically targets a
	// paragraph in a FOOTNOTE Block. TOC_ENTRY and INDEX_ENTRY labels are
	// links that point to a different page within the volume. CONTINUATION
	// labels also are links that point to a different page within the
	// volume, or maybe even a particular block or paragraph.
	LogicalEntity *GoodocLogicalEntity `json:"LogicalEntity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelContentLinkInVolumeTarget) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelContentLinkInVolumeTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocSemanticLabelContentLinkInVolumeTarget) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocSemanticLabelContentLinkInVolumeTarget
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"Confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoodocSemanticLabelEditCorrectionCandidate: If there is more than one
// edit correction candidate, store all the candidates here. This helps
// a manual correction utility fire the right kind of question with the
// relevant options.
type GoodocSemanticLabelEditCorrectionCandidate struct {
	EditedWord string `json:"EditedWord,omitempty"`

	Probability float64 `json:"Probability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EditedWord") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EditedWord") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelEditCorrectionCandidate) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelEditCorrectionCandidate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocSemanticLabelEditCorrectionCandidate) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocSemanticLabelEditCorrectionCandidate
	var s1 struct {
		Probability gensupport.JSONFloat64 `json:"Probability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Probability = float64(s1.Probability)
	return nil
}

// GoodocSemanticLabelSnippetFilter: Recording the output of the snippet
// filter. We run through a series of snippet filters and store all the
// conditions that this article passed. A condition is denoted by the
// "badword_fraction_allowed" in a running window of size -
// "window_size". If ARTICLE_SNIPPET_NOT_CLEAN annotation is set, this
// group has 0 items. It can be a part of article logicalentity, but
// keeping it here for consistency and coherence as SemanticLabel holds
// all other article metadata.
type GoodocSemanticLabelSnippetFilter struct {
	BadwordFraction float64 `json:"badwordFraction,omitempty"`

	WindowSize int64 `json:"windowSize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BadwordFraction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BadwordFraction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelSnippetFilter) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelSnippetFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoodocSemanticLabelSnippetFilter) UnmarshalJSON(data []byte) error {
	type NoMethod GoodocSemanticLabelSnippetFilter
	var s1 struct {
		BadwordFraction gensupport.JSONFloat64 `json:"badwordFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BadwordFraction = float64(s1.BadwordFraction)
	return nil
}

// GoodocSemanticLabelTableCellDetails: If Appearance is TABLE_CELL:
type GoodocSemanticLabelTableCellDetails struct {
	Column int64 `json:"Column,omitempty"`

	ColumnSpan int64 `json:"ColumnSpan,omitempty"`

	// Row: Row and Column are 0-based
	Row int64 `json:"Row,omitempty"`

	RowSpan int64 `json:"RowSpan,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Column") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Column") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelTableCellDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelTableCellDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSemanticLabelTableDetails: If Appearance is TABLE:
type GoodocSemanticLabelTableDetails struct {
	Columns int64 `json:"Columns,omitempty"`

	Rows int64 `json:"Rows,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Columns") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Columns") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSemanticLabelTableDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSemanticLabelTableDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSummaryStats: Goodoc stats for a range of elements, such as one
// page or a whole book. These stats can be computed using the
// SummaryStatsCollector class. Some range stats are pre-computed and
// stored in goodocs/volumes (eg., Page.stats below, and Ocean's
// CA_VolumeResult.goodoc_stats).
type GoodocSummaryStats struct {
	// EstimatedFontSizes: This flag is set if the histogram above has been
	// derived by estimating font sizes from CharLabel.CharacterHeight; that
	// happens if the FontSize field is constant, as has happened with Abbyy
	// 9.
	EstimatedFontSizes bool `json:"estimatedFontSizes,omitempty"`

	// FontSizeHistogram: Symbol counts (and other attributes) for each
	// distinct CharLabel.FontId and FontSize; histogram is in decreasing
	// order of symbol count
	FontSizeHistogram []*GoodocFontSizeStats `json:"fontSizeHistogram,omitempty"`

	MeanSymbolsPerBlock int64 `json:"meanSymbolsPerBlock,omitempty"`

	MeanSymbolsPerLine int64 `json:"meanSymbolsPerLine,omitempty"`

	MeanSymbolsPerParagraph int64 `json:"meanSymbolsPerParagraph,omitempty"`

	MeanSymbolsPerWord int64 `json:"meanSymbolsPerWord,omitempty"`

	MeanWordsPerBlock int64 `json:"meanWordsPerBlock,omitempty"`

	MeanWordsPerLine int64 `json:"meanWordsPerLine,omitempty"`

	MeanWordsPerParagraph int64 `json:"meanWordsPerParagraph,omitempty"`

	// MedianBlockSpace: bottom to next top in flow on page
	MedianBlockSpace int64 `json:"medianBlockSpace,omitempty"`

	// MedianEvenPrintedBox: 0,2,4..
	MedianEvenPrintedBox *GoodocBoundingBox `json:"medianEvenPrintedBox,omitempty"`

	MedianFullEvenPrintedBox *GoodocBoundingBox `json:"medianFullEvenPrintedBox,omitempty"`

	MedianFullOddPrintedBox *GoodocBoundingBox `json:"medianFullOddPrintedBox,omitempty"`

	// MedianFullPrintedBox: Each median_full*_printed_box includes page
	// header/footer but still excludes all graphic blocks
	MedianFullPrintedBox *GoodocBoundingBox `json:"medianFullPrintedBox,omitempty"`

	MedianHeight int64 `json:"medianHeight,omitempty"`

	MedianHorizontalDpi int64 `json:"medianHorizontalDpi,omitempty"`

	// MedianLineHeight: top to bottom
	MedianLineHeight int64 `json:"medianLineHeight,omitempty"`

	// MedianLineSpace: bottom to next top in para
	MedianLineSpace int64 `json:"medianLineSpace,omitempty"`

	// MedianLineSpan: top to next top in para
	MedianLineSpan int64 `json:"medianLineSpan,omitempty"`

	// MedianOddPrintedBox: 1,3,5..
	MedianOddPrintedBox *GoodocBoundingBox `json:"medianOddPrintedBox,omitempty"`

	// MedianParagraphIndent: leading space on first line
	MedianParagraphIndent int64 `json:"medianParagraphIndent,omitempty"`

	// MedianParagraphSpace: bottom to next top in block
	MedianParagraphSpace int64 `json:"medianParagraphSpace,omitempty"`

	// MedianPrintedBox: Each median*_printed_box excludes page
	// header/footer and all graphic blocks
	MedianPrintedBox *GoodocBoundingBox `json:"medianPrintedBox,omitempty"`

	MedianSymbolsPerBlock int64 `json:"medianSymbolsPerBlock,omitempty"`

	MedianSymbolsPerLine int64 `json:"medianSymbolsPerLine,omitempty"`

	MedianSymbolsPerParagraph int64 `json:"medianSymbolsPerParagraph,omitempty"`

	MedianSymbolsPerWord int64 `json:"medianSymbolsPerWord,omitempty"`

	MedianVerticalDpi int64 `json:"medianVerticalDpi,omitempty"`

	MedianWidth int64 `json:"medianWidth,omitempty"`

	MedianWordsPerBlock int64 `json:"medianWordsPerBlock,omitempty"`

	MedianWordsPerLine int64 `json:"medianWordsPerLine,omitempty"`

	MedianWordsPerParagraph int64 `json:"medianWordsPerParagraph,omitempty"`

	// NumBlockSpaces: blocks that have a successor block within their flow
	// on their page
	NumBlockSpaces int64 `json:"numBlockSpaces,omitempty"`

	// NumBlocks: ------ Block stats Median symbols and words omit junk,
	// header and footer blocks; they are intended to be a measure of the
	// typical "content" block. There can still be substantial differences
	// between means and medians; however, block values will generally
	// exceed paragraph values (not the case when headers and footers are
	// included).
	NumBlocks int64 `json:"numBlocks,omitempty"`

	// NumLineSpaces: Lines (out of num_lines) that have a successor line
	// within their para
	NumLineSpaces int64 `json:"numLineSpaces,omitempty"`

	// NumLines: ------ Line stats "top" corresponds to the highest ascender
	// and "bottom" to the lowest descender.
	NumLines int64 `json:"numLines,omitempty"`

	NumNonGraphicBlocks int64 `json:"numNonGraphicBlocks,omitempty"`

	// NumPages: ------ Page stats.
	NumPages int64 `json:"numPages,omitempty"`

	// NumParagraphSpaces: paras that have a successor para within their
	// block
	NumParagraphSpaces int64 `json:"numParagraphSpaces,omitempty"`

	// NumParagraphs: ------ Paragraph stats Median symbols and words omit
	// junk, header and footer blocks; they are intended to be a measure of
	// the typical "content" paragraph. There can still be substantial
	// differences between means and medians, particularly if a table is
	// present (every cell is a paragraph).
	NumParagraphs int64 `json:"numParagraphs,omitempty"`

	// NumSymbols: ------ Symbol stats
	NumSymbols int64 `json:"numSymbols,omitempty"`

	// NumWords: ------ Word stats
	NumWords int64 `json:"numWords,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EstimatedFontSizes")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EstimatedFontSizes") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSummaryStats) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSummaryStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocSymbol: A single symbol representation
type GoodocSymbol struct {
	Box *GoodocBoundingBox `json:"Box,omitempty"`

	// Code: The unicode character code in UTF-32
	Code int64 `json:"Code,omitempty"`

	Label *GoodocLabel `json:"Label,omitempty"`

	// RotatedBox: If RotatedBox is set, Box must be set as well. See
	// RotatedBoundingBox.
	RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"`

	Symbolvariant []*GoodocSymbolSymbolVariant `json:"symbolvariant,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSymbol) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSymbol
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoodocSymbolSymbolVariant struct {
	Code int64 `json:"Code,omitempty"`

	Confidence int64 `json:"Confidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocSymbolSymbolVariant) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocSymbolSymbolVariant
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocWord: A word representation
type GoodocWord struct {
	// Baseline: The baseline's y-axis offset from the bottom of the word's
	// bounding box, given in pixels. (A value of 2, for instance, indicates
	// the baseline is 2px above the bottom of the box.)
	Baseline int64 `json:"Baseline,omitempty"`

	Box *GoodocBoundingBox `json:"Box,omitempty"`

	// Capline: The capline is the y-axis offset from the top of the word
	// bounding box. A positive value n indicates that capline is n-pixels
	// above the top of this word.
	Capline int64 `json:"Capline,omitempty"`

	// CompactSymbolBoxes: For space efficiency, we sometimes skip the
	// detailed per-symbol bounding boxes in Symbol.Box, and use this
	// coarser representation instead, where we just store Symbol boundaries
	// within the Word box. Most client code should not have to worry
	// directly about this, it should be handled in the deepest layers of
	// writing/reading goodocs (for example, see Compress() and Uncompress()
	// in ocean/goodoc/goovols-bigtable-volume.h). Note(viresh): I
	// experimented with this compression, and here are some numbers for
	// reference. If the zlib-compressed page goodoc string size was 100 to
	// start with, then this compaction makes it 65. As a possible future
	// relaxation to consider: if we add in, for each symbol, a "top" and
	// "bottom" box offset then the size would be 75 (that's with "repeated
	// int32 top/bottom_offset" fields inside BoxPartitions, instead of
	// inside each symbol).
	CompactSymbolBoxes *GoodocBoxPartitions `json:"CompactSymbolBoxes,omitempty"`

	// Confidence: Word recognition confidence. Range depends upon OCR
	// Engine.
	Confidence int64 `json:"Confidence,omitempty"`

	// IsFromDictionary: word. The meaning and range depends on the OCR
	// engine or subsequent processing. Specifies whether the word was found
	IsFromDictionary bool `json:"IsFromDictionary,omitempty"`

	// IsIdentifier: a number True if word represents
	IsIdentifier bool `json:"IsIdentifier,omitempty"`

	// IsLastInSentence: True if the word is the last word in any
	// sub-paragraph unit that functions at the same level of granularity as
	// a sentence. Examples: "She hit the ball." (regular sentence) "Dewey
	// defeats Truman" (heading) "The more, the merrier." (no verb) Note:
	// not currently used. Code to set this was introduced in CL 7038338 and
	// removed in OCL=10678722.
	IsLastInSentence bool `json:"IsLastInSentence,omitempty"`

	// IsNumeric: in the dictionary True if the word represents
	IsNumeric bool `json:"IsNumeric,omitempty"`

	Label *GoodocLabel `json:"Label,omitempty"`

	// Penalty: Penalty for discordance of characters in a
	Penalty int64 `json:"Penalty,omitempty"`

	// RotatedBox: If RotatedBox is set, Box must be set as well. See
	// RotatedBoundingBox.
	RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"`

	// Symbol: Word characters, the text may
	Symbol []*GoodocSymbol `json:"Symbol,omitempty"`

	Alternates *GoodocWordAlternates `json:"alternates,omitempty"`

	// Text: As a shortcut, the content API provides the text of words
	// instead of individual symbols (NOTE: this is experimental). This is
	// UTF8. And the main font for the word is stored in Label.CharLabel.
	Text string `json:"text,omitempty"`

	// WritingDirection: Writing direction for this word.
	//
	// Possible values:
	//   "WRITING_DIRECTION_LEFT_TO_RIGHT"
	//   "WRITING_DIRECTION_RIGHT_TO_LEFT"
	//   "WRITING_DIRECTION_TOP_TO_BOTTOM"
	WritingDirection string `json:"writingDirection,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Baseline") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Baseline") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocWord) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocWord
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocWordAlternates: Alternate OCR words for Ptolemy OCR Correction.
// This is the output of the Ptolemy error estimator. See
// http://go/Ptolemy.
type GoodocWordAlternates struct {
	// ErrorProbability: The probability that the main OCR engine (Abbyy)
	// string is incorrect; range is 0 (definitely correct) to 100
	// (definitely incorrect).
	ErrorProbability int64 `json:"ErrorProbability,omitempty"`

	Alternate []*GoodocWordAlternatesAlternate `json:"alternate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ErrorProbability") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ErrorProbability") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoodocWordAlternates) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocWordAlternates
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoodocWordAlternatesAlternate: An alternate word provided by another
// OCR engine, used for OCR Correction. This iteration only supports
// simple substitution errors (exhanging one word for another), but with
// minor modifications (e.g. adding a word count for each alternate), it
// could support repairing word segmentation and text detection errors.
type GoodocWordAlternatesAlternate struct {
	// OcrEngineId: See Document.Header
	OcrEngineId string `json:"OcrEngineId,omitempty"`

	// OcrEngineVersion: See Document.Header
	OcrEngineVersion string `json:"OcrEngineVersion,omitempty"`

	// Word: In order to compile, this recursive message needs to be
	// optional, even though it's within an optional group.
	Word *GoodocWord `json:"Word,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OcrEngineId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OcrEngineId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoodocWordAlternatesAlternate) MarshalJSON() ([]byte, error) {
	type NoMethod GoodocWordAlternatesAlternate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantAccessoryV1AudioOutConfig: Specifies the desired
// format for the server to use when it returns `audio_out` messages.
type GoogleAssistantAccessoryV1AudioOutConfig struct {
	// AudioMode: Current audio mode on the device while issuing the query.
	//
	// Possible values:
	//   "AUDIO_MODE_UNSPECIFIED" - No audio mode specified. The Assistant
	// may respond as if in `AUDIO_SILENT` mode.
	//   "MUTED" - Device's audio mute mode has been activated by user. The
	// Assistant will typically not return an audio response.
	//   "SILENT" - No audio is currently playing, and device's audio mute
	// mode has NOT been activated by user. The Assistant will typically
	// return an audio response.
	//   "PLAYING" - Audio is currently playing, such as a video or music.
	// The Assistant will typically not return an audio response, but may
	// for certain queries that are inherently audio (such as "what sound
	// does a cow make?" or "how do you say 'something' in Korean". This
	// mode should also typically be used when the screen is on and a
	// screen-reader is activated for accessibility, as the screen-reader
	// will read the contents of the visual response and manage navigation.
	AudioMode string `json:"audioMode,omitempty"`

	// AudioRoutingMode: Current audio routing on the device while issuing
	// the query.
	//
	// Possible values:
	//   "AUDIO_ROUTING_MODE_UNSPECIFIED" - No audio routing mode specified.
	//   "BLUETOOTH_HEADPHONES" - Audio routes to headphones connected over
	// BLUETOOTH.
	AudioRoutingMode string `json:"audioRoutingMode,omitempty"`

	// Encoding: *Required* The encoding of audio data to be returned in all
	// `audio_out` messages.
	//
	// Possible values:
	//   "ENCODING_UNSPECIFIED" - Not specified. Will return result
	// google.rpc.Code.INVALID_ARGUMENT.
	//   "LINEAR16" - Uncompressed 16-bit signed little-endian samples
	// (Linear PCM).
	//   "MP3" - MP3 audio encoding. The sample rate is encoded in the
	// payload.
	//   "OGG_OPUS" - Opus-encoded audio wrapped in an ogg container. The
	// result will be a file which can be played natively on Android and in
	// some browsers (such as Chrome). The quality of the encoding is
	// considerably higher than MP3 while using the same bitrate. The sample
	// rate is encoded in the payload.
	//   "MULAW" - Mulaw encoded 8-bit samples, typically used only by
	// telephony. `sample_rate_hertz` must be 8000.
	//   "OPUS_CONTAINERLESS" - Opus encoded audio without a container.
	Encoding string `json:"encoding,omitempty"`

	// PreferredBitrateBps: *Optional* Specifies preferred encoding bitrate
	// (bits-per-second). Currently this is only implemented for OGG_OPUS
	// for bitrates of 12000, 16000, 24000, 32000. If not specified,
	// OGG_OPUS defaults to 32000.
	PreferredBitrateBps int64 `json:"preferredBitrateBps,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioMode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioMode") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1AudioOutConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1AudioOutConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantAccessoryV1DeviceConfig: *Required* Fields that
// identify the device to the Assistant. See also: * Register a Device -
// REST API (https: //developers.google.com/assistant/sdk/re //
// ference/device-registration/register-device-manual) * Device Model
// and Instance Schemas (https: //developers.google.com/assistant/sdk/re
// // ference/device-registration/model-and-instance-schemas) * Device
// Proto (https: //developers.google.com/assistant/sdk/re //
// ference/rpc/google.assistant.devices.v1#device)
type GoogleAssistantAccessoryV1DeviceConfig struct {
	// DeviceBuild: *Required* Identifier for the device which sent the
	// request.
	DeviceBuild *GoogleAssistantEmbeddedV1DeviceBuild `json:"deviceBuild,omitempty"`

	// DeviceModelCapabilitiesOverride: Device model capabilities from
	// client to override capabilities in the primary device model.
	DeviceModelCapabilitiesOverride *GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride `json:"deviceModelCapabilitiesOverride,omitempty"`

	// HeterodyneToken: *Optional* An encrypted heterodyne_experiment_token
	// containing the list of experiment_ids (go/ph-server-tokens).
	HeterodyneToken string `json:"heterodyneToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceBuild") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceBuild") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1DeviceConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1DeviceConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantAccessoryV1DeviceState: Information about the state of
// the device. This contains any state that Assistant may need to know
// about in order to fulfill requests, for example which timers and
// alarms are set. Next ID: 9
type GoogleAssistantAccessoryV1DeviceState struct {
	// AlarmState: *Optional* Information about on-device alarms. For
	// devices that support alarms, all on-device alarms must be sent up
	// with the DeviceState in order for Assistant Server to be able to
	// perform operations on them.
	AlarmState *GoogleAssistantEmbeddedV1Alarms `json:"alarmState,omitempty"`

	// ContextParams: Other context params to be sent to Assistant. This is
	// a assistant.embedded.v1.ContextParams message in serialized binary
	// proto format.
	ContextParams string `json:"contextParams,omitempty"`

	// DeviceTime: A timestamp of the current device time when the request
	// was made. This field is required if your device supports alarms or
	// timers. This ensures that requests are fulfilled relative to the
	// current device time and regardless of any clock skew between the
	// client and the server.
	DeviceTime string `json:"deviceTime,omitempty"`

	// DeviceTimeZone: The time zone where the device is currently located.
	// This helps the Assistant answer time-related queries relative to the
	// device's time zone. Generally speaking, mobile devices that support
	// alarms or timers should supply device_time_zone. This field is
	// required if your device supports alarms or timers and the device's
	// location cannot reliably be determined. (See the comment above
	// google.assistant.embedded.v1.DeviceLocation for a description of how
	// the device's location is determined.) If the time zone cannot be
	// determined, some queries for creating or modifying timers or alarms
	// may fail with a generic error such as, "Sorry, I don't know how to
	// help with that."
	DeviceTimeZone *GoogleTypeTimeZone `json:"deviceTimeZone,omitempty"`

	// DoNotDisturb: Indicate whether do not disturb mode is turned on.
	DoNotDisturb bool `json:"doNotDisturb,omitempty"`

	// FitnessActivitiesState: Information about on-device fitness
	// activities. For devices that support fitness activities, all
	// on-device fitness activities must be sent up with the DeviceState in
	// order for Assistant Server to be able to perform operations on them.
	FitnessActivitiesState *GoogleAssistantEmbeddedV1FitnessActivities `json:"fitnessActivitiesState,omitempty"`

	// TimerState: *Optional* Information about on-device timers. For
	// devices that support timers, all on-device timers must be sent up
	// with the DeviceState in order for Assistant Server to be able to
	// perform operations on them.
	TimerState *GoogleAssistantEmbeddedV1Timers `json:"timerState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlarmState") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlarmState") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1DeviceState) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1DeviceState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantAccessoryV1ResponseConfig: Configuration for the
// response. Next Id: 11
type GoogleAssistantAccessoryV1ResponseConfig struct {
	// AudioOutConfig: Specifies the current audio mode on the device.
	AudioOutConfig *GoogleAssistantAccessoryV1AudioOutConfig `json:"audioOutConfig,omitempty"`

	// DeviceConfig: Configuration related to a specific device.
	DeviceConfig *GoogleAssistantAccessoryV1DeviceConfig `json:"deviceConfig,omitempty"`

	// DeviceInteraction: The client interaction to be sent to Assistant.
	// This is a assistant.embedded.v1.DeviceInteraction message in
	// serialized binary proto format.
	DeviceInteraction string `json:"deviceInteraction,omitempty"`

	// DeviceState: Device state to pass to the Assistant server to use in
	// calculating the response.
	DeviceState *GoogleAssistantAccessoryV1DeviceState `json:"deviceState,omitempty"`

	// InitialAudioBytes: Specifies the initial bytes of TTS audio to send.
	InitialAudioBytes int64 `json:"initialAudioBytes,omitempty"`

	// IsNewConversation: If true, the server will treat the request as a
	// new conversation and not use state from the prior request. Set this
	// field to true when the conversation should be restarted, such as
	// after a device reboot, or after a significant lapse of time since the
	// prior query.
	IsNewConversation bool `json:"isNewConversation,omitempty"`

	// OutputSampleRateHz: Specifies the desired audio sample rate of the
	// output TTS stream in Hz.
	OutputSampleRateHz int64 `json:"outputSampleRateHz,omitempty"`

	// ResponseType: Specifies the requested response type.
	//
	// Possible values:
	//   "RESPONSE_TYPE_UNSPECIFIED" - No response type specified. This is
	// invalid and the host will send a state update indicating an error.
	//   "TEXT" - Requests an Assistant text response.
	//   "TRANSCRIPTION" - Requests a voice transcription only.
	ResponseType string `json:"responseType,omitempty"`

	// ScreenOutConfig: Specifies the desired format to use when server
	// returns a visual screen response.
	ScreenOutConfig *GoogleAssistantAccessoryV1ScreenOutConfig `json:"screenOutConfig,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioOutConfig") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioOutConfig") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1ResponseConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1ResponseConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantAccessoryV1ScreenOutConfig: Specifies the desired
// format for the server to use when it returns `screen_out` response.
type GoogleAssistantAccessoryV1ScreenOutConfig struct {
	// Dimensions: Device dimensions.
	Dimensions *GoogleAssistantAccessoryV1ScreenOutConfigDimensions `json:"dimensions,omitempty"`

	// FontScaleFactor: The scale factor used to convert Scalable Pixel (SP)
	// units to Density-independent Pixel (DP) units (DP = SP * scale
	// factor). Fonts are measured in units of SP, and on some platforms
	// such as Android the SP to DP scale factor can be affected by the font
	// size a user selects in accessibility settings.
	FontScaleFactor float64 `json:"fontScaleFactor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dimensions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dimensions") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1ScreenOutConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1ScreenOutConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleAssistantAccessoryV1ScreenOutConfig) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleAssistantAccessoryV1ScreenOutConfig
	var s1 struct {
		FontScaleFactor gensupport.JSONFloat64 `json:"fontScaleFactor"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FontScaleFactor = float64(s1.FontScaleFactor)
	return nil
}

// GoogleAssistantAccessoryV1ScreenOutConfigDimensions: This contains
// physical and logical characteristics about the device (e.g. screen
// size and DPI, etc).
type GoogleAssistantAccessoryV1ScreenOutConfigDimensions struct {
	// ScreenDpi: Dots (pixels) per inch of the screen.
	ScreenDpi float64 `json:"screenDpi,omitempty"`

	// ScreenHeightPx: Height of the device's screen in pixels. If 0 or not
	// specified, it's assumed to be the same as screen_width_px. For a
	// square or round screen, it's recommended to leave this field empty as
	// a bandwidth optimization.
	ScreenHeightPx int64 `json:"screenHeightPx,omitempty"`

	// ScreenShape: The shape of the device's screen
	//
	// Possible values:
	//   "SCREEN_SHAPE_UNSPECIFIED" - Screen shape is undefined.
	//   "SCREEN_SHAPE_OVAL" - A round screen (typically found on most Wear
	// devices).
	//   "SCREEN_SHAPE_RECT" - Rectangular screens.
	ScreenShape string `json:"screenShape,omitempty"`

	// ScreenWidthPx: Width of the device's screen in pixels.
	ScreenWidthPx int64 `json:"screenWidthPx,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ScreenDpi") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ScreenDpi") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantAccessoryV1ScreenOutConfigDimensions) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantAccessoryV1ScreenOutConfigDimensions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleAssistantAccessoryV1ScreenOutConfigDimensions) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleAssistantAccessoryV1ScreenOutConfigDimensions
	var s1 struct {
		ScreenDpi gensupport.JSONFloat64 `json:"screenDpi"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ScreenDpi = float64(s1.ScreenDpi)
	return nil
}

// GoogleAssistantEmbeddedV1Alarm: Alarms are clocks that ring at a
// specified time on one or more days. The client schedules a time to
// ring based on the date/time pattern. When it rings, it may be
// rescheduled off the original time by snoozing or it may be replaced
// by the next occurrence.
type GoogleAssistantEmbeddedV1Alarm struct {
	// AlarmId: A string key used as an identifier to this alarm. This key
	// needs to be unique amongst all alarms on the device. The client can
	// choose a mechanism of its choice to ensure this. If the server
	// suggests an alarm_id, the client can either use the suggestion or
	// create a new unique alarm_id of its choosing.
	AlarmId string `json:"alarmId,omitempty"`

	// DatePattern: For single alarms: the one date the alarm should next be
	// scheduled for.
	DatePattern *GoogleTypeDate `json:"datePattern,omitempty"`

	// Label: A user-provided name for this alarm.
	Label string `json:"label,omitempty"`

	// RecurrencePattern: For recurring alarms: a description of the dates
	// when the alarm should recur.
	RecurrencePattern *GoogleAssistantEmbeddedV1AlarmRecurrence `json:"recurrencePattern,omitempty"`

	// ScheduledTime: When SCHEDULED or SNOOZED, the absolute time the alarm
	// will fire next. When SNOOZED, this time includes the additional time
	// added by snoozing the alarm. When FIRING, the absolute time the alarm
	// had been scheduled to fire. When DISABLED, this field is undefined
	// and should be ignored.
	ScheduledTime string `json:"scheduledTime,omitempty"`

	// Status: Describes the part of the lifecycle that an alarm is in.
	//
	// Possible values:
	//   "ALARM_STATUS_UNSPECIFIED"
	//   "SCHEDULED" - The alarm is scheduled to fire at some point in the
	// future.
	//   "FIRING" - The alarm is currently firing.
	//   "SNOOZED" - Like SCHEDULED; the alarm has been snoozed after
	// firing.
	//   "DISABLED" - Alarm is disabled, i.e., it won't ring. Scheduled time
	// is undefined for disabled alarms and should be ignored.
	Status string `json:"status,omitempty"`

	// TimePattern: The time of day the alarm should be scheduled for. This
	// value does not change when an alarm enters the SNOOZED state; instead
	// the scheduled_time field should be adjusted to the new alarm time.
	TimePattern *GoogleTypeTimeOfDay `json:"timePattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlarmId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlarmId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1Alarm) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1Alarm
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1AlarmRecurrence: A description of the dates
// when an alarm should recur.
type GoogleAssistantEmbeddedV1AlarmRecurrence struct {
	// DayOfWeek: Specifies a weekly or daily recurrence. Constraint: The
	// date falls on one of these days of the week, in 0...6
	// (Sunday...Saturday). Should not be empty.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	DayOfWeek []string `json:"dayOfWeek,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DayOfWeek") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DayOfWeek") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1AlarmRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1AlarmRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1Alarms: Contains information about on-device
// alarms for devices that support alarms.
type GoogleAssistantEmbeddedV1Alarms struct {
	// Alarms: Information about all on-device alarms.
	Alarms []*GoogleAssistantEmbeddedV1Alarm `json:"alarms,omitempty"`

	// SnoozeDuration: The amount of time for which alarms should be
	// snoozed. If not specified, the productivity vertical applies a
	// default snooze duration, which may be seen here:
	// http://google3/assistant/verticals/productivity/utils/alarm_utils.cc;l=2734;rcl=415933085
	SnoozeDuration string `json:"snoozeDuration,omitempty"`

	// StateFetchError: Indicates if an error occurred while fetching alarm
	// state. If this value is missing, it can be assumed that the state
	// fetch was successful.
	//
	// Possible values:
	//   "STATE_FETCH_ERROR_UNSPECIFIED" - Equivalent to no errors from
	// fetching state (i.e. success).
	//   "STATE_FETCH_ERROR_TIMEOUT" - The time taken to fetch state
	// exceeded the allowed maximum time.
	StateFetchError string `json:"stateFetchError,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alarms") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alarms") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1Alarms) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1Alarms
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1DeviceBuild: Contains fields to identify the
// device which sent the request.
type GoogleAssistantEmbeddedV1DeviceBuild struct {
	// UserAgentSuffix: * Fully formed user agent suffix string.
	UserAgentSuffix string `json:"userAgentSuffix,omitempty"`

	// ForceSendFields is a list of field names (e.g. "UserAgentSuffix") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UserAgentSuffix") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1DeviceBuild) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1DeviceBuild
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride: Device
// model capabilities override from client.
type GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride struct {
	// DeviceModelCapabilities: Device model capabilities from client.
	DeviceModelCapabilities string `json:"deviceModelCapabilities,omitempty"`

	// UpdateMask: If present, overrides only fields specified in the mask.
	// When doing so, selected message and repeated fields will be replaced
	// rather than merged. Performs a regular proto MergeFrom if no mask is
	// specified.
	UpdateMask string `json:"updateMask,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceModelCapabilities") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceModelCapabilities")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1FitnessActivities: Contains information
// about on-device fitness activities for devices that support fitness.
type GoogleAssistantEmbeddedV1FitnessActivities struct {
	// FitnessActivities: Information about all on-device activities.
	FitnessActivities []*GoogleAssistantEmbeddedV1FitnessActivity `json:"fitnessActivities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FitnessActivities")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FitnessActivities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1FitnessActivities) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1FitnessActivities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1FitnessActivity: Describes a particular
// fitness activity, its current state, and other data fields associated
// with that activity (e.g. elapsed time). LINT.IfChange
type GoogleAssistantEmbeddedV1FitnessActivity struct {
	// ActivityId: Required A string key used as an identifier for this
	// activity. This key needs to be unique amongst all activities on the
	// device. The client can choose a mechanism of its choice to ensure
	// this. If the server suggests an activity_id, the client can either
	// use the suggestion or create a new unique activity_id of its
	// choosing.
	ActivityId string `json:"activityId,omitempty"`

	// MostRecentStartTime: DEPRECATED: The most recent time this activity
	// was switched to the ACTIVE state.
	MostRecentStartTime string `json:"mostRecentStartTime,omitempty"`

	// PreviouslyAccumulatedDuration: DEPRECATED: The total amount of time
	// this activity has spent in the ACTIVE state until the most recent
	// start time. The total time spent active may be computed by summing
	// (now - most_recent_start_time) with previously_accumulated_duration.
	PreviouslyAccumulatedDuration string `json:"previouslyAccumulatedDuration,omitempty"`

	// State: The current state of this activity.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - The state is either unknown or unspecified.
	//   "ACTIVE" - Indicates that this activity is currently in progress.
	//   "PAUSED" - Indicates that this activity has been paused (and may be
	// resumed later). Activities in this state should not continue to
	// increment 'elapsed_time' until moved back into the ACTIVE state.
	State string `json:"state,omitempty"`

	// Type: The type of activity being done.
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED" - The type is unknown.
	//   "WALK" - Represents a walking activity type.
	//   "RUN" - Represents a running activity type.
	//   "ELLIPTICAL" - Represents an elliptical activity type.
	//   "SWIM" - Represents a swimming activity type.
	//   "WEIGHTS" - Represents a weightlifting activity type.
	//   "TREADMILL" - Represents a treadmill activity type (e.g.
	// walking/running on a treadmill).
	//   "BIKE" - Represents a cycling activity type.
	//   "YOGA" - Represents a yoga activity type.
	//   "WORKOUT" - Represents a generic workout activity.
	//   "BOOT_CAMP" - Represents a bootcamp activity type.
	//   "CIRCUIT_TRAINING" - Represents a circuit training activity type.
	//   "GOLF" - Represents a golf activity type.
	//   "HIKING" - Represents a hiking activity type.
	//   "INTERVAL_TRAINING" - Represents an interval training activity
	// type.
	//   "KICKBOXING" - Represents a kickboxing activity type.
	//   "MARTIAL_ARTS" - Represents a martial arts activity type.
	//   "PILATES" - Represents a pilates activity type.
	//   "SPINNING" - Represents a spinning(indoor cycling, stationary
	// biking) activity type.
	//   "STAIR_CLIMBING" - Represents a stair climbing activity type.
	//   "TENNIS" - Represents a tennis activity type.
	//   "AEROBICS" - Represents an aerobics activity type.
	//   "CORE_TRAINING" - Represents a core training activity type.
	//   "DANCING" - Represents a dancing activity type.
	//   "HIGH_INTENSITY_INTERVAL_TRAINING" - Represents a HIIT activity
	// type.
	//   "KAYAKING" - Represents a kayaking activity type.
	//   "ROWING" - Represents a rowing activity type.
	//   "SKIING" - Represents a skiing activity type.
	//   "STANDUP_PADDLEBOARDING" - Represents a standup paddleboading(SUP)
	// activity type.
	//   "STRENGTH_TRAINING" - Represents a strength training activity type.
	//   "SNOWBOARDING" - Represents a snowboarding activity type.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActivityId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActivityId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1FitnessActivity) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1FitnessActivity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1Timer: Conceptually, timers are clocks that
// count down from an initial duration and ring when they reach 0. In
// practice, as a timer is running, it holds a stable expiration time
// and computes the remaining duration using the current time. When a
// timer is paused, it holds a stable remaining duration.
type GoogleAssistantEmbeddedV1Timer struct {
	// ExpireTime: The time the timer is scheduled to expire.
	// google.protobuf.Timestamp is a Unix epoch time with a granularity of
	// 1 nanosecond.
	ExpireTime string `json:"expireTime,omitempty"`

	// Label: A user-provided name for this timer.
	Label string `json:"label,omitempty"`

	// OriginalDuration: The duration of the timer when it was started. For
	// the ADD_TIME action, this field contains the amount of time to add to
	// the timer with the given timer_id.
	OriginalDuration string `json:"originalDuration,omitempty"`

	// RemainingDuration: The remaining duration for the timer.
	RemainingDuration string `json:"remainingDuration,omitempty"`

	// Status: Describes the part of the lifecycle a timer is in.
	//
	// Possible values:
	//   "TIMER_STATUS_UNSPECIFIED"
	//   "RUNNING" - The timer is currently counting down.
	//   "PAUSED" - The timer is currently paused.
	//   "FIRING" - The timer has expired and is ringing.
	Status string `json:"status,omitempty"`

	// TimerId: A string key used as an identifier to this timer. This key
	// needs to be unique amongst all timers on the device. The client can
	// choose a mechanism of its choice to ensure this. If the server
	// suggests a timer_id, the client can either use the suggestion or
	// create a new unique timer_id of its choosing.
	TimerId string `json:"timerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExpireTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExpireTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1Timer) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1Timer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleAssistantEmbeddedV1Timers: Contains information about on-device
// timers for devices that support timers.
type GoogleAssistantEmbeddedV1Timers struct {
	// StateFetchError: Indicates if an error occurred while fetching timer
	// state. If this value is missing, it can be assumed that the state
	// fetch was successful.
	//
	// Possible values:
	//   "STATE_FETCH_ERROR_UNSPECIFIED" - Equivalent to no errors from
	// fetching state (i.e. success).
	//   "STATE_FETCH_ERROR_TIMEOUT" - The time taken to fetch state
	// exceeded the allowed maximum time.
	StateFetchError string `json:"stateFetchError,omitempty"`

	// Timers: Information about all on-device timers.
	Timers []*GoogleAssistantEmbeddedV1Timer `json:"timers,omitempty"`

	// ForceSendFields is a list of field names (e.g. "StateFetchError") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StateFetchError") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleAssistantEmbeddedV1Timers) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAssistantEmbeddedV1Timers
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1AccessControlAction: Represents the
// action responsible for access control list management operations.
type GoogleCloudContentwarehouseV1AccessControlAction struct {
	// OperationType: Identifies the type of operation.
	//
	// Possible values:
	//   "UNKNOWN" - The unknown operation type.
	//   "ADD_POLICY_BINDING" - Adds newly given policy bindings in the
	// existing bindings list.
	//   "REMOVE_POLICY_BINDING" - Removes newly given policy bindings from
	// the existing bindings list.
	//   "REPLACE_POLICY_BINDING" - Replaces existing policy bindings with
	// the given policy binding list
	OperationType string `json:"operationType,omitempty"`

	// Policy: Represents the new policy from which bindings are added,
	// removed or replaced based on the type of the operation. the policy is
	// limited to a few 10s of KB.
	Policy *GoogleIamV1Policy `json:"policy,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OperationType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OperationType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1AccessControlAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1AccessControlAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1Action: Represents the action triggered
// by Rule Engine when the rule is true.
type GoogleCloudContentwarehouseV1Action struct {
	// AccessControl: Action triggering access control operations.
	AccessControl *GoogleCloudContentwarehouseV1AccessControlAction `json:"accessControl,omitempty"`

	// ActionId: ID of the action. Managed internally.
	ActionId string `json:"actionId,omitempty"`

	// AddToFolder: Action triggering create document link operation.
	AddToFolder *GoogleCloudContentwarehouseV1AddToFolderAction `json:"addToFolder,omitempty"`

	// DataUpdate: Action triggering data update operations.
	DataUpdate *GoogleCloudContentwarehouseV1DataUpdateAction `json:"dataUpdate,omitempty"`

	// DataValidation: Action triggering data validation operations.
	DataValidation *GoogleCloudContentwarehouseV1DataValidationAction `json:"dataValidation,omitempty"`

	// DeleteDocumentAction: Action deleting the document.
	DeleteDocumentAction *GoogleCloudContentwarehouseV1DeleteDocumentAction `json:"deleteDocumentAction,omitempty"`

	// PublishToPubSub: Action publish to Pub/Sub operation.
	PublishToPubSub *GoogleCloudContentwarehouseV1PublishAction `json:"publishToPubSub,omitempty"`

	// RemoveFromFolderAction: Action removing a document from a folder.
	RemoveFromFolderAction *GoogleCloudContentwarehouseV1RemoveFromFolderAction `json:"removeFromFolderAction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessControl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessControl") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1Action) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1Action
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ActionExecutorOutput: Represents the
// output of the Action Executor.
type GoogleCloudContentwarehouseV1ActionExecutorOutput struct {
	// RuleActionsPairs: List of rule and corresponding actions result.
	RuleActionsPairs []*GoogleCloudContentwarehouseV1RuleActionsPair `json:"ruleActionsPairs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RuleActionsPairs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RuleActionsPairs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ActionExecutorOutput) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ActionExecutorOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ActionOutput: Represents the result of
// executing an action.
type GoogleCloudContentwarehouseV1ActionOutput struct {
	// ActionId: ID of the action.
	ActionId string `json:"actionId,omitempty"`

	// ActionState: State of an action.
	//
	// Possible values:
	//   "UNKNOWN" - The unknown state.
	//   "ACTION_SUCCEEDED" - State indicating action executed successfully.
	//   "ACTION_FAILED" - State indicating action failed.
	//   "ACTION_TIMED_OUT" - State indicating action timed out.
	//   "ACTION_PENDING" - State indicating action is pending.
	ActionState string `json:"actionState,omitempty"`

	// OutputMessage: Action execution output message.
	OutputMessage string `json:"outputMessage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActionId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ActionOutput) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ActionOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1AddToFolderAction: Represents the action
// responsible for adding document under a folder.
type GoogleCloudContentwarehouseV1AddToFolderAction struct {
	// Folders: Names of the folder under which new document is to be added.
	// Format:
	// projects/{project_number}/locations/{location}/documents/{document_id}
	// .
	Folders []string `json:"folders,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Folders") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Folders") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1AddToFolderAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1AddToFolderAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1CloudAIDocumentOption: Request Option
// for processing Cloud AI Document in CW Document.
type GoogleCloudContentwarehouseV1CloudAIDocumentOption struct {
	// CustomizedEntitiesPropertiesConversions: If set, only selected
	// entities will be converted to properties.
	CustomizedEntitiesPropertiesConversions map[string]string `json:"customizedEntitiesPropertiesConversions,omitempty"`

	// EnableEntitiesConversions: Whether to convert all the entities to
	// properties.
	EnableEntitiesConversions bool `json:"enableEntitiesConversions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CustomizedEntitiesPropertiesConversions") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CustomizedEntitiesPropertiesConversions") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1CloudAIDocumentOption) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1CloudAIDocumentOption
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1CreateDocumentLinkRequest: Request
// message for DocumentLinkService.CreateDocumentLink.
type GoogleCloudContentwarehouseV1CreateDocumentLinkRequest struct {
	// DocumentLink: Required. Document links associated with the source
	// documents (source_document_id).
	DocumentLink *GoogleCloudContentwarehouseV1DocumentLink `json:"documentLink,omitempty"`

	// RequestMetadata: The meta information collected about the document
	// creator, used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentLink") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentLink") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1CreateDocumentLinkRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1CreateDocumentLinkRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1CreateDocumentMetadata: Metadata object
// for CreateDocument request (currently empty).
type GoogleCloudContentwarehouseV1CreateDocumentMetadata struct {
}

// GoogleCloudContentwarehouseV1CreateDocumentRequest: Request message
// for DocumentService.CreateDocument.
type GoogleCloudContentwarehouseV1CreateDocumentRequest struct {
	// CloudAiDocumentOption: Request Option for processing Cloud AI
	// Document in Document Warehouse. This field offers limited support for
	// mapping entities from Cloud AI Document to Warehouse Document. Please
	// consult with product team before using this field and other available
	// options.
	CloudAiDocumentOption *GoogleCloudContentwarehouseV1CloudAIDocumentOption `json:"cloudAiDocumentOption,omitempty"`

	// CreateMask: Field mask for creating Document fields. If mask path is
	// empty, it means all fields are masked. For the `FieldMask`
	// definition, see
	// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
	CreateMask string `json:"createMask,omitempty"`

	// Document: Required. The document to create.
	Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"`

	// Policy: Default document policy during creation. This refers to an
	// Identity and Access (IAM) policy, which specifies access controls for
	// the Document. Conditions defined in the policy will be ignored.
	Policy *GoogleIamV1Policy `json:"policy,omitempty"`

	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CloudAiDocumentOption") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudAiDocumentOption") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1CreateDocumentRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1CreateDocumentRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1CreateDocumentResponse: Response message
// for DocumentService.CreateDocument.
type GoogleCloudContentwarehouseV1CreateDocumentResponse struct {
	// Document: Document created after executing create request.
	Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"`

	// Metadata: Additional information for the API invocation, such as the
	// request tracking id.
	Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"`

	// RuleEngineOutput: Output from Rule Engine recording the rule
	// evaluator and action executor's output. Refer format in:
	// google/cloud/contentwarehouse/v1/rule_engine.proto
	RuleEngineOutput *GoogleCloudContentwarehouseV1RuleEngineOutput `json:"ruleEngineOutput,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Document") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Document") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1CreateDocumentResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1CreateDocumentResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1CustomWeightsMetadata: To support the
// custom weighting across document schemas.
type GoogleCloudContentwarehouseV1CustomWeightsMetadata struct {
	// WeightedSchemaProperties: List of schema and property name. Allows a
	// maximum of 10 schemas to be specified for relevance boosting.
	WeightedSchemaProperties []*GoogleCloudContentwarehouseV1WeightedSchemaProperty `json:"weightedSchemaProperties,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "WeightedSchemaProperties") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WeightedSchemaProperties")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1CustomWeightsMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1CustomWeightsMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DataUpdateAction: Represents the action
// responsible for properties update operations.
type GoogleCloudContentwarehouseV1DataUpdateAction struct {
	// Entries: Map of (K, V) -> (valid name of the field, new value of the
	// field) E.g., ("age", "60") entry triggers update of field age with a
	// value of 60. If the field is not present then new entry is added.
	// During update action execution, value strings will be casted to
	// appropriate types.
	Entries map[string]string `json:"entries,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entries") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entries") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DataUpdateAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DataUpdateAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DataValidationAction: Represents the
// action responsible for data validation operations.
type GoogleCloudContentwarehouseV1DataValidationAction struct {
	// Conditions: Map of (K, V) -> (field, string condition to be evaluated
	// on the field) E.g., ("age", "age > 18 && age < 60") entry triggers
	// validation of field age with the given condition. Map entries will be
	// ANDed during validation.
	Conditions map[string]string `json:"conditions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Conditions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Conditions") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DataValidationAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DataValidationAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DateTimeArray: DateTime values.
type GoogleCloudContentwarehouseV1DateTimeArray struct {
	// Values: List of datetime values. Both OffsetDateTime and
	// ZonedDateTime are supported.
	Values []*GoogleTypeDateTime `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DateTimeArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DateTimeArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DateTimeTypeOptions: Configurations for
// a date time property.
type GoogleCloudContentwarehouseV1DateTimeTypeOptions struct {
}

// GoogleCloudContentwarehouseV1DeleteDocumentAction: Represents the
// action responsible for deleting the document.
type GoogleCloudContentwarehouseV1DeleteDocumentAction struct {
	// EnableHardDelete: Boolean field to select between hard vs soft delete
	// options. Set 'true' for 'hard delete' and 'false' for 'soft delete'.
	EnableHardDelete bool `json:"enableHardDelete,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EnableHardDelete") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EnableHardDelete") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DeleteDocumentAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest: Request
// message for DocumentLinkService.DeleteDocumentLink.
type GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest struct {
	// RequestMetadata: The meta information collected about the document
	// creator, used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequestMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequestMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DeleteDocumentRequest: Request message
// for DocumentService.DeleteDocument.
type GoogleCloudContentwarehouseV1DeleteDocumentRequest struct {
	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequestMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequestMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DeleteDocumentRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1Document: Defines the structure for
// content warehouse document proto.
type GoogleCloudContentwarehouseV1Document struct {
	// CloudAiDocument: Document AI format to save the structured content,
	// including OCR.
	CloudAiDocument *GoogleCloudDocumentaiV1Document `json:"cloudAiDocument,omitempty"`

	// ContentCategory: Indicates the category (image, audio, video etc.) of
	// the original content.
	//
	// Possible values:
	//   "CONTENT_CATEGORY_UNSPECIFIED" - No category is specified.
	//   "CONTENT_CATEGORY_IMAGE" - Content is of image type.
	//   "CONTENT_CATEGORY_AUDIO" - Content is of audio type.
	//   "CONTENT_CATEGORY_VIDEO" - Content is of video type.
	ContentCategory string `json:"contentCategory,omitempty"`

	// CreateTime: Output only. The time when the document is created.
	CreateTime string `json:"createTime,omitempty"`

	// Creator: The user who creates the document.
	Creator string `json:"creator,omitempty"`

	// DisplayName: Required. Display name of the document given by the
	// user. This name will be displayed in the UI. Customer can populate
	// this field with the name of the document. This differs from the
	// 'title' field as 'title' is optional and stores the top heading in
	// the document.
	DisplayName string `json:"displayName,omitempty"`

	// DisplayUri: Uri to display the document, for example, in the UI.
	DisplayUri string `json:"displayUri,omitempty"`

	// DocumentSchemaName: The Document schema name. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}.
	DocumentSchemaName string `json:"documentSchemaName,omitempty"`

	// InlineRawDocument: Raw document content.
	InlineRawDocument string `json:"inlineRawDocument,omitempty"`

	// Name: The resource name of the document. Format:
	// projects/{project_number}/locations/{location}/documents/{document_id}
	// . The name is ignored when creating a document.
	Name string `json:"name,omitempty"`

	// PlainText: Other document format, such as PPTX, XLXS
	PlainText string `json:"plainText,omitempty"`

	// Properties: List of values that are user supplied metadata.
	Properties []*GoogleCloudContentwarehouseV1Property `json:"properties,omitempty"`

	// RawDocumentFileType: This is used when DocAI was not used to load the
	// document and parsing/ extracting is needed for the
	// inline_raw_document. For example, if inline_raw_document is the byte
	// representation of a PDF file, then this should be set to:
	// RAW_DOCUMENT_FILE_TYPE_PDF.
	//
	// Possible values:
	//   "RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED" - No raw document specified or
	// it is non-parsable
	//   "RAW_DOCUMENT_FILE_TYPE_PDF" - Adobe PDF format
	//   "RAW_DOCUMENT_FILE_TYPE_DOCX" - Microsoft Word format
	//   "RAW_DOCUMENT_FILE_TYPE_XLSX" - Microsoft Excel format
	//   "RAW_DOCUMENT_FILE_TYPE_PPTX" - Microsoft Powerpoint format
	//   "RAW_DOCUMENT_FILE_TYPE_TEXT" - UTF-8 encoded text format
	//   "RAW_DOCUMENT_FILE_TYPE_TIFF" - TIFF or TIF image file format
	RawDocumentFileType string `json:"rawDocumentFileType,omitempty"`

	// RawDocumentPath: Raw document file in Cloud Storage path.
	RawDocumentPath string `json:"rawDocumentPath,omitempty"`

	// ReferenceId: The reference ID set by customers. Must be unique per
	// project and location.
	ReferenceId string `json:"referenceId,omitempty"`

	// TextExtractionDisabled: If true, text extraction will not be
	// performed.
	TextExtractionDisabled bool `json:"textExtractionDisabled,omitempty"`

	// TextExtractionEnabled: If true, text extraction will be performed.
	TextExtractionEnabled bool `json:"textExtractionEnabled,omitempty"`

	// Title: Title that describes the document. This can be the top heading
	// or text that describes the document.
	Title string `json:"title,omitempty"`

	// UpdateTime: Output only. The time when the document is last updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// Updater: The user who lastly updates the document.
	Updater string `json:"updater,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "CloudAiDocument") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudAiDocument") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1Document) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1Document
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DocumentLink: A document-link between
// source and target document.
type GoogleCloudContentwarehouseV1DocumentLink struct {
	// CreateTime: Output only. The time when the documentLink is created.
	CreateTime string `json:"createTime,omitempty"`

	// Description: Description of this document-link.
	Description string `json:"description,omitempty"`

	// Name: Name of this document-link. It is required that the parent
	// derived form the name to be consistent with the source document
	// reference. Otherwise an exception will be thrown. Format:
	// projects/{project_number}/locations/{location}/documents/{source_docum
	// ent_id}/documentLinks/{document_link_id}.
	Name string `json:"name,omitempty"`

	// SourceDocumentReference: Document references of the source document.
	SourceDocumentReference *GoogleCloudContentwarehouseV1DocumentReference `json:"sourceDocumentReference,omitempty"`

	// State: The state of the documentlink. If target node has been
	// deleted, the link is marked as invalid. Removing a source node will
	// result in removal of all associated links.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unknown state of documentlink.
	//   "ACTIVE" - The documentlink has both source and target documents
	// detected.
	//   "SOFT_DELETED" - Target document is deleted, and mark the
	// documentlink as soft-deleted.
	State string `json:"state,omitempty"`

	// TargetDocumentReference: Document references of the target document.
	TargetDocumentReference *GoogleCloudContentwarehouseV1DocumentReference `json:"targetDocumentReference,omitempty"`

	// UpdateTime: Output only. The time when the documentLink is last
	// updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreateTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DocumentLink) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DocumentLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoogleCloudContentwarehouseV1DocumentQuery struct {
	// CustomPropertyFilter: This filter specifies a structured syntax to
	// match against the [PropertyDefinition].is_filterable marked as
	// `true`. The syntax for this expression is a subset of SQL syntax.
	// Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where
	// the left of the operator is a property name and the right of the
	// operator is a number or a quoted string. You must escape backslash
	// (\\) and quote (\") characters. Supported functions are
	// `LOWER([property_name])` to perform a case insensitive match and
	// `EMPTY([property_name])` to filter on the existence of a key. Boolean
	// expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for
	// example, "((A AND B AND C) OR NOT D) AND E"), a maximum of 100
	// comparisons or functions are allowed in the expression. The
	// expression must be < 6000 bytes in length. Sample Query:
	// `(LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND
	// driving_years > 10`
	CustomPropertyFilter string `json:"customPropertyFilter,omitempty"`

	// CustomWeightsMetadata: To support the custom weighting across
	// document schemas, customers need to provide the properties to be used
	// to boost the ranking in the search request. For a search query with
	// CustomWeightsMetadata specified, only the RetrievalImportance for the
	// properties in the CustomWeightsMetadata will be honored.
	CustomWeightsMetadata *GoogleCloudContentwarehouseV1CustomWeightsMetadata `json:"customWeightsMetadata,omitempty"`

	// DocumentCreatorFilter: The exact creator(s) of the documents to
	// search against. If a value isn't specified, documents within the
	// search results are associated with any creator. If multiple values
	// are specified, documents within the search results may be associated
	// with any of the specified creators.
	DocumentCreatorFilter []string `json:"documentCreatorFilter,omitempty"`

	// DocumentSchemaNames: This filter specifies the exact document schema
	// Document.document_schema_name of the documents to search against. If
	// a value isn't specified, documents within the search results are
	// associated with any schema. If multiple values are specified,
	// documents within the search results may be associated with any of the
	// specified schemas. At most 20 document schema names are allowed.
	DocumentSchemaNames []string `json:"documentSchemaNames,omitempty"`

	// FileTypeFilter: This filter specifies the types of files to return:
	// ALL, FOLDER, or FILE. If FOLDER or FILE is specified, then only
	// either folders or files will be returned, respectively. If ALL is
	// specified, both folders and files will be returned. If no value is
	// specified, ALL files will be returned.
	FileTypeFilter *GoogleCloudContentwarehouseV1FileTypeFilter `json:"fileTypeFilter,omitempty"`

	// FolderNameFilter: Search all the documents under this specified
	// folder. Format:
	// projects/{project_number}/locations/{location}/documents/{document_id}
	// .
	FolderNameFilter string `json:"folderNameFilter,omitempty"`

	// IsNlQuery: Experimental, do not use. If the query is a natural
	// language question. False by default. If true, then the
	// question-answering feature will be used instead of search, and
	// `result_count` in SearchDocumentsRequest must be set. In addition,
	// all other input fields related to search (pagination, histograms,
	// etc.) will be ignored.
	IsNlQuery bool `json:"isNlQuery,omitempty"`

	// PropertyFilter: This filter specifies a structured syntax to match
	// against the PropertyDefinition.is_filterable marked as `true`. The
	// relationship between the PropertyFilters is OR.
	PropertyFilter []*GoogleCloudContentwarehouseV1PropertyFilter `json:"propertyFilter,omitempty"`

	// Query: The query string that matches against the full text of the
	// document and the searchable properties. The query partially supports
	// Google AIP style syntax (https://google.aip.dev/160). Specifically,
	// the query supports literals, logical operators, negation operators,
	// comparison operators, and functions. Literals: A bare literal value
	// (examples: "42", "Hugo") is a value to be matched against. It
	// searches over the full text of the document and the searchable
	// properties. Logical operators: "AND", "and", "OR", and "or" are
	// binary logical operators (example: "engineer OR developer"). Negation
	// operators: "NOT" and "!" are negation operators (example: "NOT
	// software"). Comparison operators: support the binary comparison
	// operators =, !=, <, >, <= and >= for string, numeric, enum, boolean.
	// Also support like operator `~~` for string. It provides semantic
	// search functionality by parsing, stemming and doing synonyms
	// expansion against the input query. To specify a property in the
	// query, the left hand side expression in the comparison must be the
	// property ID including the parent. The right hand side must be
	// literals. For example: "\"projects/123/locations/us\".property_a < 1"
	// matches results whose "property_a" is less than 1 in project 123 and
	// us location. The literals and comparison expression can be connected
	// in a single query (example: "software engineer
	// \"projects/123/locations/us\".salary > 100"). Functions: supported
	// functions are `LOWER([property_name])` to perform a case insensitive
	// match and `EMPTY([property_name])` to filter on the existence of a
	// key. Support nested expressions connected using parenthesis and
	// logical operators. The default logical operators is `AND` if there is
	// no operators between expressions. The query can be used with other
	// filters e.g. `time_filters` and `folder_name_filter`. They are
	// connected with `AND` operator under the hood. The maximum number of
	// allowed characters is 255.
	Query string `json:"query,omitempty"`

	// QueryContext: For custom synonyms. Customers provide the synonyms
	// based on context. One customer can provide multiple set of synonyms
	// based on different context. The search query will be expanded based
	// on the custom synonyms of the query context set. By default, no
	// custom synonyms wll be applied if no query context is provided. It is
	// not supported for CMEK compliant deployment.
	QueryContext []string `json:"queryContext,omitempty"`

	// TimeFilters: Documents created/updated within a range specified by
	// this filter are searched against.
	TimeFilters []*GoogleCloudContentwarehouseV1TimeFilter `json:"timeFilters,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CustomPropertyFilter") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomPropertyFilter") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DocumentQuery) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DocumentQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DocumentReference: References to the
// documents.
type GoogleCloudContentwarehouseV1DocumentReference struct {
	// CreateTime: Output only. The time when the document is created.
	CreateTime string `json:"createTime,omitempty"`

	// DeleteTime: Output only. The time when the document is deleted.
	DeleteTime string `json:"deleteTime,omitempty"`

	// DisplayName: display_name of the referenced document; this name does
	// not need to be consistent to the display_name in the Document proto,
	// depending on the ACL constraint.
	DisplayName string `json:"displayName,omitempty"`

	// DocumentIsFolder: The document type of the document being referenced.
	DocumentIsFolder bool `json:"documentIsFolder,omitempty"`

	// DocumentName: Required. Name of the referenced document.
	DocumentName string `json:"documentName,omitempty"`

	// Snippet: Stores the subset of the referenced document's content. This
	// is useful to allow user peek the information of the referenced
	// document.
	Snippet string `json:"snippet,omitempty"`

	// UpdateTime: Output only. The time when the document is last updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreateTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DocumentReference) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DocumentReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1DocumentSchema: A document schema used
// to define document structure.
type GoogleCloudContentwarehouseV1DocumentSchema struct {
	// CreateTime: Output only. The time when the document schema is
	// created.
	CreateTime string `json:"createTime,omitempty"`

	// Description: Schema description.
	Description string `json:"description,omitempty"`

	// DisplayName: Required. Name of the schema given by the user. Must be
	// unique per project.
	DisplayName string `json:"displayName,omitempty"`

	// DocumentIsFolder: Document Type, true refers the document is a
	// folder, otherwise it is a typical document.
	DocumentIsFolder bool `json:"documentIsFolder,omitempty"`

	// Name: The resource name of the document schema. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}. The name is ignored when creating a document schema.
	Name string `json:"name,omitempty"`

	// PropertyDefinitions: Document details.
	PropertyDefinitions []*GoogleCloudContentwarehouseV1PropertyDefinition `json:"propertyDefinitions,omitempty"`

	// UpdateTime: Output only. The time when the document schema is last
	// updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreateTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1DocumentSchema) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1DocumentSchema
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1EnumArray: Enum values.
type GoogleCloudContentwarehouseV1EnumArray struct {
	// Values: List of enum values.
	Values []string `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1EnumArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1EnumArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1EnumTypeOptions: Configurations for an
// enum/categorical property.
type GoogleCloudContentwarehouseV1EnumTypeOptions struct {
	// PossibleValues: Required. List of possible enum values.
	PossibleValues []string `json:"possibleValues,omitempty"`

	// ValidationCheckDisabled: Make sure the Enum property value provided
	// in the document is in the possile value list during document
	// creation. The validation check runs by default.
	ValidationCheckDisabled bool `json:"validationCheckDisabled,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PossibleValues") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PossibleValues") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1EnumTypeOptions) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1EnumTypeOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1EnumValue: Represents the string value
// of the enum field.
type GoogleCloudContentwarehouseV1EnumValue struct {
	// Value: String value of the enum field. This must match defined set of
	// enums in document schema using EnumTypeOptions.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Value") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Value") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1EnumValue) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1EnumValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ExportToCdwPipeline: The configuration
// of exporting documents from the Document Warehouse to CDW pipeline.
type GoogleCloudContentwarehouseV1ExportToCdwPipeline struct {
	// DocumentIds: The list of all the documents to be processed.
	DocumentIds []string `json:"documentIds,omitempty"`

	// ExportFolderPath: The Cloud Storage folder path used to store the
	// exported documents before being sent to CDW. Format: gs:///.
	ExportFolderPath string `json:"exportFolderPath,omitempty"`

	// ProcessorInfo: The CDW processor information.
	ProcessorInfo *GoogleCloudContentwarehouseV1ProcessorInfo `json:"processorInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentIds") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ExportToCdwPipeline) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ExportToCdwPipeline
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1FetchAclRequest: Request message for
// DocumentService.FetchAcl
type GoogleCloudContentwarehouseV1FetchAclRequest struct {
	// ProjectOwner: For Get Project ACL only. Authorization check for end
	// user will be ignored when project_owner=true.
	ProjectOwner bool `json:"projectOwner,omitempty"`

	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProjectOwner") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProjectOwner") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1FetchAclRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1FetchAclRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1FetchAclResponse: Response message for
// DocumentService.FetchAcl.
type GoogleCloudContentwarehouseV1FetchAclResponse struct {
	// Metadata: Additional information for the API invocation, such as the
	// request tracking id.
	Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"`

	// Policy: The IAM policy.
	Policy *GoogleIamV1Policy `json:"policy,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1FetchAclResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1FetchAclResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1FileTypeFilter: Filter for the specific
// types of documents returned.
type GoogleCloudContentwarehouseV1FileTypeFilter struct {
	// FileType: The type of files to return.
	//
	// Possible values:
	//   "FILE_TYPE_UNSPECIFIED" - Default document type. If set, disables
	// the filter.
	//   "ALL" - Returns all document types, including folders.
	//   "FOLDER" - Returns only folders.
	//   "DOCUMENT" - Returns only non-folder documents.
	FileType string `json:"fileType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FileType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FileType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1FileTypeFilter) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1FileTypeFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1FloatArray: Float values.
type GoogleCloudContentwarehouseV1FloatArray struct {
	// Values: List of float values.
	Values []float64 `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1FloatArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1FloatArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1FloatTypeOptions: Configurations for a
// float property.
type GoogleCloudContentwarehouseV1FloatTypeOptions struct {
}

// GoogleCloudContentwarehouseV1GcsIngestPipeline: The configuration of
// the Cloud Storage ingestion pipeline.
type GoogleCloudContentwarehouseV1GcsIngestPipeline struct {
	// InputPath: The input Cloud Storage folder. All files under this
	// folder will be imported to Document Warehouse. Format: gs:///.
	InputPath string `json:"inputPath,omitempty"`

	// SchemaName: The Document Warehouse schema resource name. All
	// documents processed by this pipeline will use this schema. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}.
	SchemaName string `json:"schemaName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InputPath") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InputPath") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1GcsIngestPipeline) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1GcsIngestPipeline
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline:
// The configuration of the document classify/split and entity/kvp
// extraction pipeline.
type GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline struct {
	// ClassifySplitProcessorInfos: The classify or split processor
	// information.
	ClassifySplitProcessorInfos *GoogleCloudContentwarehouseV1ProcessorInfo `json:"classifySplitProcessorInfos,omitempty"`

	// ExtractProcessorInfos: The entity or key-value pair extracting
	// processor information.
	ExtractProcessorInfos []*GoogleCloudContentwarehouseV1ProcessorInfo `json:"extractProcessorInfos,omitempty"`

	// InputPath: The input Cloud Storage folder. All files under this
	// folder will be imported to Document Warehouse. Format: gs:///.
	InputPath string `json:"inputPath,omitempty"`

	// ProcessorResultsFolderPath: The Cloud Storage folder path used to
	// store the raw results from processors. Format: gs:///.
	ProcessorResultsFolderPath string `json:"processorResultsFolderPath,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClassifySplitProcessorInfos") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ClassifySplitProcessorInfos") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1GetDocumentRequest: Request message for
// DocumentService.GetDocument.
type GoogleCloudContentwarehouseV1GetDocumentRequest struct {
	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequestMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequestMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1GetDocumentRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1GetDocumentRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1HistogramQuery: The histogram request.
type GoogleCloudContentwarehouseV1HistogramQuery struct {
	// Filters: Optional. Filter the result of histogram query by the
	// property names. It only works with histogram query
	// count('FilterableProperties'). It is an optional. It will perform
	// histogram on all the property names for all the document schemas.
	// Setting this field will have a better performance.
	Filters *GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter `json:"filters,omitempty"`

	// HistogramQuery: An expression specifies a histogram request against
	// matching documents for searches. See
	// SearchDocumentsRequest.histogram_queries for details about syntax.
	HistogramQuery string `json:"histogramQuery,omitempty"`

	// RequirePreciseResultSize: Controls if the histogram query requires
	// the return of a precise count. Enable this flag may adversely impact
	// performance. Defaults to true.
	RequirePreciseResultSize bool `json:"requirePreciseResultSize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Filters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Filters") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1HistogramQuery) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1HistogramQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter struct {
	// DocumentSchemas: This filter specifies the exact document schema(s)
	// Document.document_schema_name to run histogram query against. It is
	// optional. It will perform histogram for property names for all the
	// document schemas if it is not set. At most 10 document schema names
	// are allowed. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}.
	DocumentSchemas []string `json:"documentSchemas,omitempty"`

	// PropertyNames: It is optional. It will perform histogram for all the
	// property names if it is not set. The properties need to be defined
	// with the is_filterable flag set to true and the name of the property
	// should be in the format: "schemaId.propertyName". The property needs
	// to be defined in the schema. Example: the schema id is abc. Then the
	// name of property for property MORTGAGE_TYPE will be
	// "abc.MORTGAGE_TYPE".
	PropertyNames []string `json:"propertyNames,omitempty"`

	// YAxis: By default, the y_axis is HISTOGRAM_YAXIS_DOCUMENT if this
	// field is not set.
	//
	// Possible values:
	//   "HISTOGRAM_YAXIS_DOCUMENT" - Count the documents per property name.
	//   "HISTOGRAM_YAXIS_PROPERTY" - Count the properties per property
	// name.
	YAxis string `json:"yAxis,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentSchemas") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentSchemas") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1HistogramQueryResult: Histogram result
// that matches HistogramQuery specified in searches.
type GoogleCloudContentwarehouseV1HistogramQueryResult struct {
	// Histogram: A map from the values of the facet associated with
	// distinct values to the number of matching entries with corresponding
	// value. The key format is: * (for string histogram) string values
	// stored in the field.
	Histogram map[string]string `json:"histogram,omitempty"`

	// HistogramQuery: Requested histogram expression.
	HistogramQuery string `json:"histogramQuery,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Histogram") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Histogram") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1HistogramQueryResult) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1HistogramQueryResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1InitializeProjectRequest: Request
// message for projectService.InitializeProject
type GoogleCloudContentwarehouseV1InitializeProjectRequest struct {
	// AccessControlMode: Required. The access control mode for accessing
	// the customer data
	//
	// Possible values:
	//   "ACL_MODE_UNKNOWN" - This value is required by protobuf best
	// practices
	//   "ACL_MODE_UNIVERSAL_ACCESS" - Universal Access: No document level
	// access control.
	//   "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID" - Document level
	// access control with customer own Identity Service.
	//   "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI" - Document level
	// access control using Google Cloud Identity.
	AccessControlMode string `json:"accessControlMode,omitempty"`

	// DatabaseType: Required. The type of database used to store customer
	// data
	//
	// Possible values:
	//   "DB_UNKNOWN" - This value is required by protobuf best practices
	//   "DB_INFRA_SPANNER" - Internal Spanner
	//   "DB_CLOUD_SQL_POSTGRES" - Cloud Sql with a Postgres Sql instance
	DatabaseType string `json:"databaseType,omitempty"`

	// DocumentCreatorDefaultRole: Optional. The default role for the person
	// who create a document.
	//
	// Possible values:
	//   "DOCUMENT_CREATOR_DEFAULT_ROLE_UNSPECIFIED" - Unspecified, will be
	// default to document admin role.
	//   "DOCUMENT_ADMIN" - Document Admin, same as
	// contentwarehouse.googleapis.com/documentAdmin.
	//   "DOCUMENT_EDITOR" - Document Editor, same as
	// contentwarehouse.googleapis.com/documentEditor.
	//   "DOCUMENT_VIEWER" - Document Viewer, same as
	// contentwarehouse.googleapis.com/documentViewer.
	DocumentCreatorDefaultRole string `json:"documentCreatorDefaultRole,omitempty"`

	// KmsKey: Optional. The KMS key used for CMEK encryption. It is
	// required that the kms key is in the same region as the endpoint. The
	// same key will be used for all provisioned resources, if encryption is
	// available. If the kms_key is left empty, no encryption will be
	// enforced.
	KmsKey string `json:"kmsKey,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessControlMode")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessControlMode") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1InitializeProjectRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1InitializeProjectRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1InitializeProjectResponse: Response
// message for projectService.InitializeProject
type GoogleCloudContentwarehouseV1InitializeProjectResponse struct {
	// Message: The message of the project initialization process.
	Message string `json:"message,omitempty"`

	// State: The state of the project initialization process.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Clients should never see this.
	//   "SUCCEEDED" - Finished project initialization without error.
	//   "FAILED" - Finished project initialization with an error.
	//   "CANCELLED" - Client canceled the LRO.
	//   "RUNNING" - Ask the customer to check the operation for results.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Message") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Message") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1InitializeProjectResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1InitializeProjectResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1IntegerArray: Integer values.
type GoogleCloudContentwarehouseV1IntegerArray struct {
	// Values: List of integer values.
	Values []int64 `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1IntegerArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1IntegerArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1IntegerTypeOptions: Configurations for
// an integer property.
type GoogleCloudContentwarehouseV1IntegerTypeOptions struct {
}

// GoogleCloudContentwarehouseV1InvalidRule: A triggered rule that
// failed the validation check(s) after parsing.
type GoogleCloudContentwarehouseV1InvalidRule struct {
	// Error: Validation error on a parsed expression.
	Error string `json:"error,omitempty"`

	// Rule: Triggered rule.
	Rule *GoogleCloudContentwarehouseV1Rule `json:"rule,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Error") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Error") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1InvalidRule) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1InvalidRule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListDocumentSchemasResponse: Response
// message for DocumentSchemaService.ListDocumentSchemas.
type GoogleCloudContentwarehouseV1ListDocumentSchemasResponse struct {
	// DocumentSchemas: The document schemas from the specified parent.
	DocumentSchemas []*GoogleCloudContentwarehouseV1DocumentSchema `json:"documentSchemas,omitempty"`

	// NextPageToken: A token, which can be sent as `page_token` to retrieve
	// the next page. If this field is omitted, there are no subsequent
	// pages.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "DocumentSchemas") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentSchemas") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListDocumentSchemasResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListDocumentSchemasResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListLinkedSourcesRequest: Response
// message for DocumentLinkService.ListLinkedSources.
type GoogleCloudContentwarehouseV1ListLinkedSourcesRequest struct {
	// PageSize: The maximum number of document-links to return. The service
	// may return fewer than this value. If unspecified, at most 50
	// document-links will be returned. The maximum value is 1000; values
	// above 1000 will be coerced to 1000.
	PageSize int64 `json:"pageSize,omitempty"`

	// PageToken: A page token, received from a previous `ListLinkedSources`
	// call. Provide this to retrieve the subsequent page. When paginating,
	// all other parameters provided to `ListLinkedSources` must match the
	// call that provided the page token.
	PageToken string `json:"pageToken,omitempty"`

	// RequestMetadata: The meta information collected about the document
	// creator, used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PageSize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PageSize") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListLinkedSourcesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListLinkedSourcesRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListLinkedSourcesResponse: Response
// message for DocumentLinkService.ListLinkedSources.
type GoogleCloudContentwarehouseV1ListLinkedSourcesResponse struct {
	// DocumentLinks: Source document-links.
	DocumentLinks []*GoogleCloudContentwarehouseV1DocumentLink `json:"documentLinks,omitempty"`

	// NextPageToken: A token, which can be sent as `page_token` to retrieve
	// the next page. If this field is omitted, there are no subsequent
	// pages.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "DocumentLinks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentLinks") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListLinkedSourcesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListLinkedSourcesResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListLinkedTargetsRequest: Request
// message for DocumentLinkService.ListLinkedTargets.
type GoogleCloudContentwarehouseV1ListLinkedTargetsRequest struct {
	// RequestMetadata: The meta information collected about the document
	// creator, used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequestMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequestMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListLinkedTargetsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListLinkedTargetsRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListLinkedTargetsResponse: Response
// message for DocumentLinkService.ListLinkedTargets.
type GoogleCloudContentwarehouseV1ListLinkedTargetsResponse struct {
	// DocumentLinks: Target document-links.
	DocumentLinks []*GoogleCloudContentwarehouseV1DocumentLink `json:"documentLinks,omitempty"`

	// NextPageToken: A token, which can be sent as `page_token` to retrieve
	// the next page. If this field is omitted, there are no subsequent
	// pages.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "DocumentLinks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentLinks") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListLinkedTargetsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListLinkedTargetsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListRuleSetsResponse: Response message
// for RuleSetService.ListRuleSets.
type GoogleCloudContentwarehouseV1ListRuleSetsResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve
	// the next page. If this field is omitted, there are no subsequent
	// pages.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// RuleSets: The rule sets from the specified parent.
	RuleSets []*GoogleCloudContentwarehouseV1RuleSet `json:"ruleSets,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextPageToken") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListRuleSetsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListRuleSetsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ListSynonymSetsResponse: Response
// message for SynonymSetService.ListSynonymSets.
type GoogleCloudContentwarehouseV1ListSynonymSetsResponse struct {
	// NextPageToken: A page token, received from a previous
	// `ListSynonymSets` call. Provide this to retrieve the subsequent page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// SynonymSets: The synonymSets from the specified parent.
	SynonymSets []*GoogleCloudContentwarehouseV1SynonymSet `json:"synonymSets,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextPageToken") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ListSynonymSetsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ListSynonymSetsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1MapProperty: Map property value.
// Represents a structured entries of key value pairs, consisting of
// field names which map to dynamically typed values.
type GoogleCloudContentwarehouseV1MapProperty struct {
	// Fields: Unordered map of dynamically typed values.
	Fields map[string]GoogleCloudContentwarehouseV1Value `json:"fields,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Fields") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Fields") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1MapProperty) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1MapProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1MapTypeOptions: Configurations for a Map
// property.
type GoogleCloudContentwarehouseV1MapTypeOptions struct {
}

// GoogleCloudContentwarehouseV1MergeFieldsOptions: Options for merging
// updated fields.
type GoogleCloudContentwarehouseV1MergeFieldsOptions struct {
	// ReplaceMessageFields: When merging message fields, the default
	// behavior is to merge the content of two message fields together. If
	// you instead want to use the field from the source message to replace
	// the corresponding field in the destination message, set this flag to
	// true. When this flag is set, specified submessage fields that are
	// missing in source will be cleared in destination.
	ReplaceMessageFields bool `json:"replaceMessageFields,omitempty"`

	// ReplaceRepeatedFields: When merging repeated fields, the default
	// behavior is to append entries from the source repeated field to the
	// destination repeated field. If you instead want to keep only the
	// entries from the source repeated field, set this flag to true. If you
	// want to replace a repeated field within a message field on the
	// destination message, you must set both replace_repeated_fields and
	// replace_message_fields to true, otherwise the repeated fields will be
	// appended.
	ReplaceRepeatedFields bool `json:"replaceRepeatedFields,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ReplaceMessageFields") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ReplaceMessageFields") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1MergeFieldsOptions) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1MergeFieldsOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ProcessorInfo: The DocAI processor
// information.
type GoogleCloudContentwarehouseV1ProcessorInfo struct {
	// DocumentType: The processor will process the documents with this
	// document type.
	DocumentType string `json:"documentType,omitempty"`

	// ProcessorName: The processor resource name. Format is
	// `projects/{project}/locations/{location}/processors/{processor}`, or
	// `projects/{project}/locations/{location}/processors/{processor}/proces
	// sorVersions/{processorVersion}`
	ProcessorName string `json:"processorName,omitempty"`

	// SchemaName: The Document schema resource name. All documents
	// processed by this processor will use this schema. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}.
	SchemaName string `json:"schemaName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ProcessorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ProcessorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1Property: Property of a document.
type GoogleCloudContentwarehouseV1Property struct {
	// DateTimeValues: Date time property values. It is not supported by
	// CMEK compliant deployment.
	DateTimeValues *GoogleCloudContentwarehouseV1DateTimeArray `json:"dateTimeValues,omitempty"`

	// EnumValues: Enum property values.
	EnumValues *GoogleCloudContentwarehouseV1EnumArray `json:"enumValues,omitempty"`

	// FloatValues: Float property values.
	FloatValues *GoogleCloudContentwarehouseV1FloatArray `json:"floatValues,omitempty"`

	// IntegerValues: Integer property values.
	IntegerValues *GoogleCloudContentwarehouseV1IntegerArray `json:"integerValues,omitempty"`

	// MapProperty: Map property values.
	MapProperty *GoogleCloudContentwarehouseV1MapProperty `json:"mapProperty,omitempty"`

	// Name: Required. Must match the name of a PropertyDefinition in the
	// DocumentSchema.
	Name string `json:"name,omitempty"`

	// PropertyValues: Nested structured data property values.
	PropertyValues *GoogleCloudContentwarehouseV1PropertyArray `json:"propertyValues,omitempty"`

	// TextValues: String/text property values.
	TextValues *GoogleCloudContentwarehouseV1TextArray `json:"textValues,omitempty"`

	// TimestampValues: Timestamp property values. It is not supported by
	// CMEK compliant deployment.
	TimestampValues *GoogleCloudContentwarehouseV1TimestampArray `json:"timestampValues,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateTimeValues") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateTimeValues") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1Property) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1Property
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1PropertyArray: Property values.
type GoogleCloudContentwarehouseV1PropertyArray struct {
	// Properties: List of property values.
	Properties []*GoogleCloudContentwarehouseV1Property `json:"properties,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Properties") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Properties") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PropertyArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PropertyArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1PropertyDefinition: Defines the metadata
// for a schema property.
type GoogleCloudContentwarehouseV1PropertyDefinition struct {
	// DateTimeTypeOptions: Date time property. It is not supported by CMEK
	// compliant deployment.
	DateTimeTypeOptions *GoogleCloudContentwarehouseV1DateTimeTypeOptions `json:"dateTimeTypeOptions,omitempty"`

	// DisplayName: The display-name for the property, used for front-end.
	DisplayName string `json:"displayName,omitempty"`

	// EnumTypeOptions: Enum/categorical property.
	EnumTypeOptions *GoogleCloudContentwarehouseV1EnumTypeOptions `json:"enumTypeOptions,omitempty"`

	// FloatTypeOptions: Float property.
	FloatTypeOptions *GoogleCloudContentwarehouseV1FloatTypeOptions `json:"floatTypeOptions,omitempty"`

	// IntegerTypeOptions: Integer property.
	IntegerTypeOptions *GoogleCloudContentwarehouseV1IntegerTypeOptions `json:"integerTypeOptions,omitempty"`

	// IsFilterable: Whether the property can be filtered. If this is a
	// sub-property, all the parent properties must be marked filterable.
	IsFilterable bool `json:"isFilterable,omitempty"`

	// IsMetadata: Whether the property is user supplied metadata. This
	// out-of-the box placeholder setting can be used to tag derived
	// properties. Its value and interpretation logic should be implemented
	// by API user.
	IsMetadata bool `json:"isMetadata,omitempty"`

	// IsRepeatable: Whether the property can have multiple values.
	IsRepeatable bool `json:"isRepeatable,omitempty"`

	// IsRequired: Whether the property is mandatory. Default is 'false',
	// i.e. populating property value can be skipped. If 'true' then user
	// must populate the value for this property.
	IsRequired bool `json:"isRequired,omitempty"`

	// IsSearchable: Indicates that the property should be included in a
	// global search.
	IsSearchable bool `json:"isSearchable,omitempty"`

	// MapTypeOptions: Map property.
	MapTypeOptions *GoogleCloudContentwarehouseV1MapTypeOptions `json:"mapTypeOptions,omitempty"`

	// Name: Required. The name of the metadata property. Must be unique
	// within a document schema and is case insensitive. Names must be
	// non-blank, start with a letter, and can contain alphanumeric
	// characters and: /, :, -, _, and .
	Name string `json:"name,omitempty"`

	// PropertyTypeOptions: Nested structured data property.
	PropertyTypeOptions *GoogleCloudContentwarehouseV1PropertyTypeOptions `json:"propertyTypeOptions,omitempty"`

	// RetrievalImportance: The retrieval importance of the property during
	// search.
	//
	// Possible values:
	//   "RETRIEVAL_IMPORTANCE_UNSPECIFIED" - No importance specified.
	// Default medium importance.
	//   "HIGHEST" - Highest importance.
	//   "HIGHER" - Higher importance.
	//   "HIGH" - High importance.
	//   "MEDIUM" - Medium importance.
	//   "LOW" - Low importance (negative).
	//   "LOWEST" - Lowest importance (negative).
	RetrievalImportance string `json:"retrievalImportance,omitempty"`

	// SchemaSources: The mapping information between this property to
	// another schema source.
	SchemaSources []*GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource `json:"schemaSources,omitempty"`

	// TextTypeOptions: Text/string property.
	TextTypeOptions *GoogleCloudContentwarehouseV1TextTypeOptions `json:"textTypeOptions,omitempty"`

	// TimestampTypeOptions: Timestamp property. It is not supported by CMEK
	// compliant deployment.
	TimestampTypeOptions *GoogleCloudContentwarehouseV1TimestampTypeOptions `json:"timestampTypeOptions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateTimeTypeOptions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateTimeTypeOptions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PropertyDefinition) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PropertyDefinition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource: The
// schema source information.
type GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource struct {
	// Name: The schema name in the source.
	Name string `json:"name,omitempty"`

	// ProcessorType: The Doc AI processor type name.
	ProcessorType string `json:"processorType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoogleCloudContentwarehouseV1PropertyFilter struct {
	// Condition: The filter condition. The syntax for this expression is a
	// subset of SQL syntax. Supported operators are: `=`, `!=`, `<`, `<=`,
	// `>`, `>=`, and `~~` where the left of the operator is a property name
	// and the right of the operator is a number or a quoted string. You
	// must escape backslash (\\) and quote (\") characters. `~~` is the
	// LIKE operator. The right of the operator must be a string. The only
	// supported property data type for LIKE is text_values. It provides
	// semantic search functionality by parsing, stemming and doing synonyms
	// expansion against the input query. It matches if the property
	// contains semantic similar content to the query. It is not regex
	// matching or wildcard matching. For example, "property.company ~~
	// \"google\"" will match records whose property `property.compnay` have
	// values like "Google Inc.", "Google LLC" or "Google Company".
	// Supported functions are `LOWER([property_name])` to perform a case
	// insensitive match and `EMPTY([property_name])` to filter on the
	// existence of a key. Boolean expressions (AND/OR/NOT) are supported up
	// to 3 levels of nesting (for example, "((A AND B AND C) OR NOT D) AND
	// E"), a maximum of 100 comparisons or functions are allowed in the
	// expression. The expression must be < 6000 bytes in length. Only
	// properties that are marked filterable are allowed
	// (PropertyDefinition.is_filterable). Property names do not need to be
	// prefixed by the document schema id (as is the case with histograms),
	// however property names will need to be prefixed by its parent
	// hierarchy, if any. For example: top_property_name.sub_property_name.
	// Sample Query: `(LOWER(driving_license)="class \"a\"" OR
	// EMPTY(driving_license)) AND driving_years > 10` CMEK compliant
	// deployment only supports: * Operators: `=`, `<`, `<=`, `>`, and `>=`.
	// * Boolean expressions: AND and OR.
	Condition string `json:"condition,omitempty"`

	// DocumentSchemaName: The Document schema name
	// Document.document_schema_name. Format:
	// projects/{project_number}/locations/{location}/documentSchemas/{docume
	// nt_schema_id}.
	DocumentSchemaName string `json:"documentSchemaName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Condition") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Condition") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PropertyFilter) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PropertyFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1PropertyTypeOptions: Configurations for
// a nested structured data property.
type GoogleCloudContentwarehouseV1PropertyTypeOptions struct {
	// PropertyDefinitions: Required. List of property definitions.
	PropertyDefinitions []*GoogleCloudContentwarehouseV1PropertyDefinition `json:"propertyDefinitions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PropertyDefinitions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PropertyDefinitions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PropertyTypeOptions) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PropertyTypeOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1PublishAction: Represents the action
// responsible for publishing messages to a Pub/Sub topic.
type GoogleCloudContentwarehouseV1PublishAction struct {
	// Messages: Messages to be published.
	Messages []string `json:"messages,omitempty"`

	// TopicId: The topic id in the Pub/Sub service for which messages will
	// be published to.
	TopicId string `json:"topicId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Messages") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Messages") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1PublishAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1PublishAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1QAResult: Additional result info for the
// question-answering feature.
type GoogleCloudContentwarehouseV1QAResult struct {
	// ConfidenceScore: The calibrated confidence score for this document,
	// in the range [0., 1.]. This represents the confidence level for
	// whether the returned document and snippet answers the user's query.
	ConfidenceScore float64 `json:"confidenceScore,omitempty"`

	// Highlights: Highlighted sections in the snippet.
	Highlights []*GoogleCloudContentwarehouseV1QAResultHighlight `json:"highlights,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfidenceScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfidenceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1QAResult) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1QAResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudContentwarehouseV1QAResult) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudContentwarehouseV1QAResult
	var s1 struct {
		ConfidenceScore gensupport.JSONFloat64 `json:"confidenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceScore = float64(s1.ConfidenceScore)
	return nil
}

// GoogleCloudContentwarehouseV1QAResultHighlight: A text span in the
// search text snippet that represents a highlighted section (answer
// context, highly relevant sentence, etc.).
type GoogleCloudContentwarehouseV1QAResultHighlight struct {
	// EndIndex: End index of the highlight, exclusive.
	EndIndex int64 `json:"endIndex,omitempty"`

	// StartIndex: Start index of the highlight.
	StartIndex int64 `json:"startIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndIndex") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1QAResultHighlight) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1QAResultHighlight
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RemoveFromFolderAction: Represents the
// action responsible for remove a document from a specific folder.
type GoogleCloudContentwarehouseV1RemoveFromFolderAction struct {
	// Condition: Condition of the action to be executed.
	Condition string `json:"condition,omitempty"`

	// Folder: Name of the folder under which new document is to be added.
	// Format:
	// projects/{project_number}/locations/{location}/documents/{document_id}
	// .
	Folder string `json:"folder,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Condition") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Condition") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RemoveFromFolderAction) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RemoveFromFolderAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RequestMetadata: Meta information is
// used to improve the performance of the service.
type GoogleCloudContentwarehouseV1RequestMetadata struct {
	// UserInfo: Provides user unique identification and groups information.
	UserInfo *GoogleCloudContentwarehouseV1UserInfo `json:"userInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "UserInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UserInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RequestMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RequestMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1ResponseMetadata: Additional information
// returned to client, such as debugging information.
type GoogleCloudContentwarehouseV1ResponseMetadata struct {
	// RequestId: A unique id associated with this call. This id is logged
	// for tracking purpose.
	RequestId string `json:"requestId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RequestId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RequestId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1ResponseMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1ResponseMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1Rule: Represents the rule for a content
// warehouse trigger.
type GoogleCloudContentwarehouseV1Rule struct {
	// Actions: List of actions that are executed when the rule is
	// satisfied.
	Actions []*GoogleCloudContentwarehouseV1Action `json:"actions,omitempty"`

	// Condition: Represents the conditional expression to be evaluated.
	// Expression should evaluate to a boolean result. When the condition is
	// true actions are executed. Example: user_role = "hsbc_role_1" AND
	// doc.salary > 20000
	Condition string `json:"condition,omitempty"`

	// Description: Short description of the rule and its context.
	Description string `json:"description,omitempty"`

	// RuleId: ID of the rule. It has to be unique across all the examples.
	// This is managed internally.
	RuleId string `json:"ruleId,omitempty"`

	// TriggerType: Identifies the trigger type for running the policy.
	//
	// Possible values:
	//   "UNKNOWN" - Trigger for unknown action.
	//   "ON_CREATE" - Trigger for create document action.
	//   "ON_UPDATE" - Trigger for update document action.
	TriggerType string `json:"triggerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Actions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Actions") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1Rule) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1Rule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RuleActionsPair: Represents a rule and
// outputs of associated actions.
type GoogleCloudContentwarehouseV1RuleActionsPair struct {
	// ActionOutputs: Outputs of executing the actions associated with the
	// above rule.
	ActionOutputs []*GoogleCloudContentwarehouseV1ActionOutput `json:"actionOutputs,omitempty"`

	// Rule: Represents the rule.
	Rule *GoogleCloudContentwarehouseV1Rule `json:"rule,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActionOutputs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionOutputs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RuleActionsPair) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RuleActionsPair
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RuleEngineOutput: Records the output of
// Rule Engine including rule evaluation and actions result.
type GoogleCloudContentwarehouseV1RuleEngineOutput struct {
	// ActionExecutorOutput: Output from Action Executor containing rule and
	// corresponding actions execution result.
	ActionExecutorOutput *GoogleCloudContentwarehouseV1ActionExecutorOutput `json:"actionExecutorOutput,omitempty"`

	// DocumentName: Name of the document against which the rules and
	// actions were evaluated.
	DocumentName string `json:"documentName,omitempty"`

	// RuleEvaluatorOutput: Output from Rule Evaluator containing matched,
	// unmatched and invalid rules.
	RuleEvaluatorOutput *GoogleCloudContentwarehouseV1RuleEvaluatorOutput `json:"ruleEvaluatorOutput,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ActionExecutorOutput") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionExecutorOutput") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RuleEngineOutput) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RuleEngineOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RuleEvaluatorOutput: Represents the
// output of the Rule Evaluator.
type GoogleCloudContentwarehouseV1RuleEvaluatorOutput struct {
	// InvalidRules: A subset of triggered rules that failed the validation
	// check(s) after parsing.
	InvalidRules []*GoogleCloudContentwarehouseV1InvalidRule `json:"invalidRules,omitempty"`

	// MatchedRules: A subset of triggered rules that are evaluated true for
	// a given request.
	MatchedRules []*GoogleCloudContentwarehouseV1Rule `json:"matchedRules,omitempty"`

	// TriggeredRules: List of rules fetched from database for the given
	// request trigger type.
	TriggeredRules []*GoogleCloudContentwarehouseV1Rule `json:"triggeredRules,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InvalidRules") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InvalidRules") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RuleEvaluatorOutput) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RuleEvaluatorOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RuleSet: Represents a set of rules from
// a single customer.
type GoogleCloudContentwarehouseV1RuleSet struct {
	// Description: Short description of the rule-set.
	Description string `json:"description,omitempty"`

	// Name: The resource name of the rule set. Managed internally. Format:
	// projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}.
	// The name is ignored when creating a rule set.
	Name string `json:"name,omitempty"`

	// Rules: List of rules given by the customer.
	Rules []*GoogleCloudContentwarehouseV1Rule `json:"rules,omitempty"`

	// Source: Source of the rules i.e., customer name.
	Source string `json:"source,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RuleSet) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RuleSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1RunPipelineRequest: Request message for
// DocumentService.RunPipeline.
type GoogleCloudContentwarehouseV1RunPipelineRequest struct {
	// ExportCdwPipeline: Export docuemnts from Document Warehouseing to CDW
	// for training purpose.
	ExportCdwPipeline *GoogleCloudContentwarehouseV1ExportToCdwPipeline `json:"exportCdwPipeline,omitempty"`

	// GcsIngestPipeline: Cloud Storage ingestion pipeline.
	GcsIngestPipeline *GoogleCloudContentwarehouseV1GcsIngestPipeline `json:"gcsIngestPipeline,omitempty"`

	// GcsIngestWithDocAiProcessorsPipeline: Use DocAI processors to process
	// documents in Cloud Storage and ingest them to Document Warehouse.
	GcsIngestWithDocAiProcessorsPipeline *GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline `json:"gcsIngestWithDocAiProcessorsPipeline,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExportCdwPipeline")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExportCdwPipeline") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1RunPipelineRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1RunPipelineRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SearchDocumentsRequest: Request message
// for DocumentService.SearchDocuments.
type GoogleCloudContentwarehouseV1SearchDocumentsRequest struct {
	// DocumentQuery: Query used to search against documents (keyword,
	// filters, etc.).
	DocumentQuery *GoogleCloudContentwarehouseV1DocumentQuery `json:"documentQuery,omitempty"`

	// HistogramQueries: An expression specifying a histogram request
	// against matching documents. Expression syntax is an aggregation
	// function call with histogram facets and other options. The following
	// aggregation functions are supported: *
	// `count(string_histogram_facet)`: Count the number of matching
	// entities for each distinct attribute value. Data types: * Histogram
	// facet (aka filterable properties): Facet names with format <schema
	// id>.<facet>. Facets will have the format of: `a-zA-Z`. If the facet
	// is a child facet, then the parent hierarchy needs to be specified
	// separated by dots in the prefix after the schema id. Thus, the format
	// for a multi- level facet is: <schema id>.<parent facet name>. <child
	// facet name>. Example:
	// schema123.root_parent_facet.middle_facet.child_facet *
	// DocumentSchemaId: (with no schema id prefix) to get histograms for
	// each document type (returns the schema id path, e.g.
	// projects/12345/locations/us-west/documentSchemas/abc123). Example
	// expression: * Document type counts: count('DocumentSchemaId') * For
	// schema id, abc123, get the counts for MORTGAGE_TYPE:
	// count('abc123.MORTGAGE_TYPE')
	HistogramQueries []*GoogleCloudContentwarehouseV1HistogramQuery `json:"histogramQueries,omitempty"`

	// Offset: An integer that specifies the current offset (that is,
	// starting result location, amongst the documents deemed by the API as
	// relevant) in search results. This field is only considered if
	// page_token is unset. The maximum allowed value is 5000. Otherwise an
	// error is thrown. For example, 0 means to return results starting from
	// the first matching document, and 10 means to return from the 11th
	// document. This can be used for pagination, (for example, pageSize =
	// 10 and offset = 10 means to return from the second page).
	Offset int64 `json:"offset,omitempty"`

	// OrderBy: The criteria determining how search results are sorted. For
	// non-empty query, default is "relevance desc". For empty query,
	// default is "upload_date desc". Supported options are: * "relevance
	// desc": By relevance descending, as determined by the API algorithms.
	// * "upload_date desc": By upload date descending. * "upload_date":
	// By upload date ascending. * "update_date desc": By last updated
	// date descending. * "update_date": By last updated date ascending. *
	// "retrieval_importance desc": By retrieval importance of properties
	// descending. This feature is still under development, please do not
	// use unless otherwise instructed to do so.
	OrderBy string `json:"orderBy,omitempty"`

	// PageSize: A limit on the number of documents returned in the search
	// results. Increasing this value above the default value of 10 can
	// increase search response time. The value can be between 1 and 100.
	PageSize int64 `json:"pageSize,omitempty"`

	// PageToken: The token specifying the current offset within search
	// results. See SearchDocumentsResponse.next_page_token for an
	// explanation of how to obtain the next set of query results.
	PageToken string `json:"pageToken,omitempty"`

	// QaSizeLimit: Experimental, do not use. The limit on the number of
	// documents returned for the question-answering feature. To enable the
	// question-answering feature, set [DocumentQuery].is_nl_query to true.
	QaSizeLimit int64 `json:"qaSizeLimit,omitempty"`

	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control and improve the search quality of the
	// service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// RequireTotalSize: Controls if the search document request requires
	// the return of a total size of matched documents. See
	// SearchDocumentsResponse.total_size. Enabling this flag may adversely
	// impact performance. Hint: If this is used with pagination, set this
	// flag on the initial query but set this to false on subsequent page
	// calls (keep the total count locally). Defaults to false.
	RequireTotalSize bool `json:"requireTotalSize,omitempty"`

	// TotalResultSize: Controls if the search document request requires the
	// return of a total size of matched documents. See
	// SearchDocumentsResponse.total_size.
	//
	// Possible values:
	//   "TOTAL_RESULT_SIZE_UNSPECIFIED" - Total number calculation will be
	// skipped.
	//   "ESTIMATED_SIZE" - Estimate total number. The total result size
	// will be accurated up to 10,000. This option will add cost and latency
	// to your request.
	//   "ACTUAL_SIZE" - It may adversely impact performance. The limit is
	// 1000,000.
	TotalResultSize string `json:"totalResultSize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentQuery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentQuery") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SearchDocumentsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SearchDocumentsResponse: Response
// message for DocumentService.SearchDocuments.
type GoogleCloudContentwarehouseV1SearchDocumentsResponse struct {
	// HistogramQueryResults: The histogram results that match with the
	// specified SearchDocumentsRequest.histogram_queries.
	HistogramQueryResults []*GoogleCloudContentwarehouseV1HistogramQueryResult `json:"histogramQueryResults,omitempty"`

	// MatchingDocuments: The document entities that match the specified
	// SearchDocumentsRequest.
	MatchingDocuments []*GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument `json:"matchingDocuments,omitempty"`

	// Metadata: Additional information for the API invocation, such as the
	// request tracking id.
	Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"`

	// NextPageToken: The token that specifies the starting position of the
	// next page of results. This field is empty if there are no more
	// results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// TotalSize: The total number of matched documents which is available
	// only if the client set SearchDocumentsRequest.require_total_size to
	// `true` or set SearchDocumentsRequest.total_result_size to
	// `ESTIMATED_SIZE` or `ACTUAL_SIZE`. Otherwise, the value will be `-1`.
	// Typically a UI would handle this condition by displaying "of many",
	// for example: "Displaying 10 of many".
	TotalSize int64 `json:"totalSize,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g.
	// "HistogramQueryResults") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HistogramQueryResults") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SearchDocumentsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument:
// Document entry with metadata inside SearchDocumentsResponse
type GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument struct {
	// Document: Document that matches the specified SearchDocumentsRequest.
	// This document only contains indexed metadata information.
	Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"`

	// QaResult: Experimental. Additional result info if the
	// question-answering feature is enabled.
	QaResult *GoogleCloudContentwarehouseV1QAResult `json:"qaResult,omitempty"`

	// SearchTextSnippet: Contains snippets of text from the document full
	// raw text that most closely match a search query's keywords, if
	// available. All HTML tags in the original fields are stripped when
	// returned in this field, and matching query keywords are enclosed in
	// HTML bold tags. If the question-answering feature is enabled, this
	// field will instead contain a snippet that answers the user's
	// natural-language query. No HTML bold tags will be present, and
	// highlights in the answer snippet can be found in QAResult.highlights.
	SearchTextSnippet string `json:"searchTextSnippet,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Document") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Document") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SetAclRequest: Request message for
// DocumentService.SetAcl.
type GoogleCloudContentwarehouseV1SetAclRequest struct {
	// Policy: Required. REQUIRED: The complete policy to be applied to the
	// `resource`. The size of the policy is limited to a few 10s of KB.
	// This refers to an Identity and Access (IAM) policy, which specifies
	// access controls for the Document. You can set ACL with condition for
	// projects only. Supported operators are: `=`, `!=`, `<`, `<=`, `>`,
	// and `>=` where the left of the operator is `DocumentSchemaId` or
	// property name and the right of the operator is a number or a quoted
	// string. You must escape backslash (\\) and quote (\") characters.
	// Boolean expressions (AND/OR) are supported up to 3 levels of nesting
	// (for example, "((A AND B AND C) OR D) AND E"), a maximum of 10
	// comparisons are allowed in the expression. The expression must be <
	// 6000 bytes in length. Sample condition: "DocumentSchemaId = \"some
	// schema id\" OR SchemaId.floatPropertyName >= 10"
	Policy *GoogleIamV1Policy `json:"policy,omitempty"`

	// ProjectOwner: For Set Project ACL only. Authorization check for end
	// user will be ignored when project_owner=true.
	ProjectOwner bool `json:"projectOwner,omitempty"`

	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Policy") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Policy") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SetAclRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SetAclRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SetAclResponse: Response message for
// DocumentService.SetAcl.
type GoogleCloudContentwarehouseV1SetAclResponse struct {
	// Metadata: Additional information for the API invocation, such as the
	// request tracking id.
	Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"`

	// Policy: The policy will be attached to a resource (e.g. projecct,
	// document).
	Policy *GoogleIamV1Policy `json:"policy,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SetAclResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SetAclResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SynonymSet: Represents a list of
// synonyms for a given context. For example a context "sales" could
// contain: Synonym 1: sale, invoice, bill, order Synonym 2: money,
// credit, finance, payment Synonym 3: shipping, freight, transport Each
// SynonymSets should be disjoint
type GoogleCloudContentwarehouseV1SynonymSet struct {
	// Context: This is a freeform field. Example contexts can be "sales,"
	// "engineering," "real estate," "accounting," etc. The context can be
	// supplied during search requests.
	Context string `json:"context,omitempty"`

	// Name: The resource name of the SynonymSet This is mandatory for
	// google.api.resource. Format:
	// projects/{project_number}/locations/{location}/synonymSets/{context}.
	Name string `json:"name,omitempty"`

	// Synonyms: List of Synonyms for the context.
	Synonyms []*GoogleCloudContentwarehouseV1SynonymSetSynonym `json:"synonyms,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Context") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Context") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SynonymSet) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SynonymSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1SynonymSetSynonym: Represents a list of
// words given by the customer All these words are synonyms of each
// other.
type GoogleCloudContentwarehouseV1SynonymSetSynonym struct {
	// Words: For example: sale, invoice, bill, order
	Words []string `json:"words,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Words") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Words") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1SynonymSetSynonym) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1SynonymSetSynonym
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1TextArray: String/text values.
type GoogleCloudContentwarehouseV1TextArray struct {
	// Values: List of text values.
	Values []string `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1TextArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1TextArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1TextTypeOptions: Configurations for a
// text property.
type GoogleCloudContentwarehouseV1TextTypeOptions struct {
}

// GoogleCloudContentwarehouseV1TimeFilter: Filter on create timestamp
// or update timestamp of documents.
type GoogleCloudContentwarehouseV1TimeFilter struct {
	// TimeField: Specifies which time field to filter documents on.
	// Defaults to TimeField.UPLOAD_TIME.
	//
	// Possible values:
	//   "TIME_FIELD_UNSPECIFIED" - Default value.
	//   "CREATE_TIME" - Earliest document create time.
	//   "UPDATE_TIME" - Latest document update time.
	TimeField string `json:"timeField,omitempty"`

	TimeRange *GoogleTypeInterval `json:"timeRange,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TimeField") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TimeField") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1TimeFilter) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1TimeFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1TimestampArray: Timestamp values.
type GoogleCloudContentwarehouseV1TimestampArray struct {
	// Values: List of timestamp values.
	Values []*GoogleCloudContentwarehouseV1TimestampValue `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1TimestampArray) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1TimestampArray
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1TimestampTypeOptions: Configurations for
// a timestamp property.
type GoogleCloudContentwarehouseV1TimestampTypeOptions struct {
}

// GoogleCloudContentwarehouseV1TimestampValue: Timestamp value type.
type GoogleCloudContentwarehouseV1TimestampValue struct {
	// TextValue: The string must represent a valid instant in UTC and is
	// parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g.
	// "2013-09-29T18:46:19Z"
	TextValue string `json:"textValue,omitempty"`

	// TimestampValue: Timestamp value
	TimestampValue string `json:"timestampValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TextValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TextValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1TimestampValue) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1TimestampValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UpdateDocumentMetadata: Metadata object
// for UpdateDocument request (currently empty).
type GoogleCloudContentwarehouseV1UpdateDocumentMetadata struct {
}

// GoogleCloudContentwarehouseV1UpdateDocumentRequest: Request message
// for DocumentService.UpdateDocument.
type GoogleCloudContentwarehouseV1UpdateDocumentRequest struct {
	// CloudAiDocumentOption: Request Option for processing Cloud AI
	// Document in Document Warehouse. This field offers limited support for
	// mapping entities from Cloud AI Document to Warehouse Document. Please
	// consult with product team before using this field and other available
	// options.
	CloudAiDocumentOption *GoogleCloudContentwarehouseV1CloudAIDocumentOption `json:"cloudAiDocumentOption,omitempty"`

	// Document: Required. The document to update.
	Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"`

	// RequestMetadata: The meta information collected about the end user,
	// used to enforce access control for the service.
	RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"`

	// UpdateOptions: Options for the update operation.
	UpdateOptions *GoogleCloudContentwarehouseV1UpdateOptions `json:"updateOptions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CloudAiDocumentOption") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudAiDocumentOption") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UpdateDocumentRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UpdateDocumentResponse: Response message
// for DocumentService.UpdateDocument.
type GoogleCloudContentwarehouseV1UpdateDocumentResponse struct {
	// Document: Updated document after executing update request.
	Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"`

	// Metadata: Additional information for the API invocation, such as the
	// request tracking id.
	Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"`

	// RuleEngineOutput: Output from Rule Engine recording the rule
	// evaluator and action executor's output. Refer format in:
	// google/cloud/contentwarehouse/v1/rule_engine.proto
	RuleEngineOutput *GoogleCloudContentwarehouseV1RuleEngineOutput `json:"ruleEngineOutput,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Document") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Document") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UpdateDocumentResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest: Request
// message for DocumentSchemaService.UpdateDocumentSchema.
type GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest struct {
	// DocumentSchema: Required. The document schema to update with.
	DocumentSchema *GoogleCloudContentwarehouseV1DocumentSchema `json:"documentSchema,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentSchema") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentSchema") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UpdateOptions: Options for Update
// operations.
type GoogleCloudContentwarehouseV1UpdateOptions struct {
	// MergeFieldsOptions: Options for merging.
	MergeFieldsOptions *GoogleCloudContentwarehouseV1MergeFieldsOptions `json:"mergeFieldsOptions,omitempty"`

	// UpdateMask: Field mask for merging Document fields. For the
	// `FieldMask` definition, see
	// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
	UpdateMask string `json:"updateMask,omitempty"`

	// UpdateType: Type for update.
	//
	// Possible values:
	//   "UPDATE_TYPE_UNSPECIFIED" - Defaults to full replace behavior, ie.
	// FULL_REPLACE.
	//   "UPDATE_TYPE_REPLACE" - Fully replace all the fields (including
	// previously linked raw document). Any field masks will be ignored.
	//   "UPDATE_TYPE_MERGE" - Merge the fields into the existing entities.
	//   "UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES" - Inserts the properties
	// by names.
	//   "UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES" - Replace the properties
	// by names.
	//   "UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES" - Delete the properties by
	// names.
	UpdateType string `json:"updateType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MergeFieldsOptions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MergeFieldsOptions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UpdateOptions) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UpdateOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UpdateRuleSetRequest: Request message
// for RuleSetService.UpdateRuleSet.
type GoogleCloudContentwarehouseV1UpdateRuleSetRequest struct {
	// RuleSet: Required. The rule set to update.
	RuleSet *GoogleCloudContentwarehouseV1RuleSet `json:"ruleSet,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RuleSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RuleSet") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UpdateRuleSetRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UpdateRuleSetRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1UserInfo: The user information.
type GoogleCloudContentwarehouseV1UserInfo struct {
	// GroupIds: The unique group identifications which the user is belong
	// to. The format is "group:yyyy@example.com";
	GroupIds []string `json:"groupIds,omitempty"`

	// Id: A unique user identification string, as determined by the client.
	// The maximum number of allowed characters is 255. Allowed characters
	// include numbers 0 to 9, uppercase and lowercase letters, and
	// restricted special symbols (:, @, +, -, _, ~) The format is
	// "user:xxxx@example.com";
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GroupIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroupIds") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1UserInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1UserInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1Value: `Value` represents a dynamically
// typed value which can be either be a float, a integer, a string, or a
// datetime value. A producer of value is expected to set one of these
// variants. Absence of any variant indicates an error.
type GoogleCloudContentwarehouseV1Value struct {
	// BooleanValue: Represents a boolean value.
	BooleanValue bool `json:"booleanValue,omitempty"`

	// DatetimeValue: Represents a datetime value.
	DatetimeValue *GoogleTypeDateTime `json:"datetimeValue,omitempty"`

	// EnumValue: Represents an enum value.
	EnumValue *GoogleCloudContentwarehouseV1EnumValue `json:"enumValue,omitempty"`

	// FloatValue: Represents a float value.
	FloatValue float64 `json:"floatValue,omitempty"`

	// IntValue: Represents a integer value.
	IntValue int64 `json:"intValue,omitempty"`

	// StringValue: Represents a string value.
	StringValue string `json:"stringValue,omitempty"`

	// TimestampValue: Represents a timestamp value.
	TimestampValue *GoogleCloudContentwarehouseV1TimestampValue `json:"timestampValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BooleanValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BooleanValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1Value) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1Value
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudContentwarehouseV1Value) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudContentwarehouseV1Value
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// GoogleCloudContentwarehouseV1WeightedSchemaProperty: Specifies the
// schema property name.
type GoogleCloudContentwarehouseV1WeightedSchemaProperty struct {
	// DocumentSchemaName: The document schema name.
	DocumentSchemaName string `json:"documentSchemaName,omitempty"`

	// PropertyNames: The property definition names in the schema.
	PropertyNames []string `json:"propertyNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentSchemaName")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentSchemaName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1WeightedSchemaProperty) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1WeightedSchemaProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata: Metadata
// object for CreateDocument request (currently empty).
type GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata struct {
}

// GoogleCloudContentwarehouseV1beta1InitializeProjectResponse: Response
// message for projectService.InitializeProject
type GoogleCloudContentwarehouseV1beta1InitializeProjectResponse struct {
	// Message: The message of the project initialization process.
	Message string `json:"message,omitempty"`

	// State: The state of the project initialization process.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Clients should never see this.
	//   "SUCCEEDED" - Finished project initialization without error.
	//   "FAILED" - Finished project initialization with an error.
	//   "CANCELLED" - Client canceled the LRO.
	//   "RUNNING" - Ask the customer to check the operation for results.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Message") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Message") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudContentwarehouseV1beta1InitializeProjectResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudContentwarehouseV1beta1InitializeProjectResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata: Metadata
// object for UpdateDocument request (currently empty).
type GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata struct {
}

// GoogleCloudDocumentaiV1Barcode: Encodes the detailed information of a
// barcode.
type GoogleCloudDocumentaiV1Barcode struct {
	// Format: Format of a barcode. The supported formats are: - `CODE_128`:
	// Code 128 type. - `CODE_39`: Code 39 type. - `CODE_93`: Code 93 type.
	// - `CODABAR`: Codabar type. - `DATA_MATRIX`: 2D Data Matrix type. -
	// `ITF`: ITF type. - `EAN_13`: EAN-13 type. - `EAN_8`: EAN-8 type. -
	// `QR_CODE`: 2D QR code type. - `UPC_A`: UPC-A type. - `UPC_E`: UPC-E
	// type. - `PDF417`: PDF417 type. - `AZTEC`: 2D Aztec code type. -
	// `DATABAR`: GS1 DataBar code type.
	Format string `json:"format,omitempty"`

	// RawValue: Raw value encoded in the barcode. For example:
	// `'MEBKM:TITLE:Google;URL:https://www.google.com;;'`.
	RawValue string `json:"rawValue,omitempty"`

	// ValueFormat: Value format describes the format of the value that a
	// barcode encodes. The supported formats are: - `CONTACT_INFO`: Contact
	// information. - `EMAIL`: Email address. - `ISBN`: ISBN identifier. -
	// `PHONE`: Phone number. - `PRODUCT`: Product. - `SMS`: SMS message. -
	// `TEXT`: Text string. - `URL`: URL address. - `WIFI`: Wifi
	// information. - `GEO`: Geo-localization. - `CALENDAR_EVENT`: Calendar
	// event. - `DRIVER_LICENSE`: Driver's license.
	ValueFormat string `json:"valueFormat,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Format") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Format") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1Barcode) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1Barcode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1BoundingPoly: A bounding polygon for the
// detected image annotation.
type GoogleCloudDocumentaiV1BoundingPoly struct {
	// NormalizedVertices: The bounding polygon normalized vertices.
	NormalizedVertices []*GoogleCloudDocumentaiV1NormalizedVertex `json:"normalizedVertices,omitempty"`

	// Vertices: The bounding polygon vertices.
	Vertices []*GoogleCloudDocumentaiV1Vertex `json:"vertices,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NormalizedVertices")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NormalizedVertices") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1BoundingPoly) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1BoundingPoly
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1Document: Document represents the canonical
// document resource in Document AI. It is an interchange format that
// provides insights into documents and allows for collaboration between
// users and Document AI to iterate and optimize for quality.
type GoogleCloudDocumentaiV1Document struct {
	// Content: Optional. Inline document content, represented as a stream
	// of bytes. Note: As with all `bytes` fields, protobuffers use a pure
	// binary representation, whereas JSON representations use base64.
	Content string `json:"content,omitempty"`

	// Entities: A list of entities detected on Document.text. For document
	// shards, entities in this list may cross shard boundaries.
	Entities []*GoogleCloudDocumentaiV1DocumentEntity `json:"entities,omitempty"`

	// EntityRelations: Placeholder. Relationship among Document.entities.
	EntityRelations []*GoogleCloudDocumentaiV1DocumentEntityRelation `json:"entityRelations,omitempty"`

	// Error: Any error that occurred while processing this document.
	Error *GoogleRpcStatus `json:"error,omitempty"`

	// MimeType: An IANA published MIME type (also referred to as media
	// type). For more information, see
	// https://www.iana.org/assignments/media-types/media-types.xhtml.
	MimeType string `json:"mimeType,omitempty"`

	// Pages: Visual page layout for the Document.
	Pages []*GoogleCloudDocumentaiV1DocumentPage `json:"pages,omitempty"`

	// Revisions: Placeholder. Revision history of this document.
	Revisions []*GoogleCloudDocumentaiV1DocumentRevision `json:"revisions,omitempty"`

	// ShardInfo: Information about the sharding if this document is sharded
	// part of a larger document. If the document is not sharded, this
	// message is not specified.
	ShardInfo *GoogleCloudDocumentaiV1DocumentShardInfo `json:"shardInfo,omitempty"`

	// Text: Optional. UTF-8 encoded text in reading order from the
	// document.
	Text string `json:"text,omitempty"`

	// TextChanges: Placeholder. A list of text corrections made to
	// Document.text. This is usually used for annotating corrections to OCR
	// mistakes. Text changes for a given revision may not overlap with each
	// other.
	TextChanges []*GoogleCloudDocumentaiV1DocumentTextChange `json:"textChanges,omitempty"`

	// TextStyles: Styles for the Document.text.
	TextStyles []*GoogleCloudDocumentaiV1DocumentStyle `json:"textStyles,omitempty"`

	// Uri: Optional. Currently supports Google Cloud Storage URI of the
	// form `gs://bucket_name/object_name`. Object versioning is not
	// supported. See Google Cloud Storage Request URIs
	// (https://cloud.google.com/storage/docs/reference-uris) for more info.
	Uri string `json:"uri,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1Document) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1Document
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentEntity: An entity that could be a
// phrase in the text or a property that belongs to the document. It is
// a known entity type, such as a person, an organization, or location.
type GoogleCloudDocumentaiV1DocumentEntity struct {
	// Confidence: Optional. Confidence of detected Schema entity. Range
	// `[0, 1]`.
	Confidence float64 `json:"confidence,omitempty"`

	// Id: Optional. Canonical id. This will be a unique value in the entity
	// list for this document.
	Id string `json:"id,omitempty"`

	// MentionId: Optional. Deprecated. Use `id` field instead.
	MentionId string `json:"mentionId,omitempty"`

	// MentionText: Optional. Text value of the entity e.g. `1600
	// Amphitheatre Pkwy`.
	MentionText string `json:"mentionText,omitempty"`

	// NormalizedValue: Optional. Normalized entity value. Absent if the
	// extracted value could not be converted or the type (e.g. address) is
	// not supported for certain parsers. This field is also only populated
	// for certain supported document types.
	NormalizedValue *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue `json:"normalizedValue,omitempty"`

	// PageAnchor: Optional. Represents the provenance of this entity wrt.
	// the location on the page where it was found.
	PageAnchor *GoogleCloudDocumentaiV1DocumentPageAnchor `json:"pageAnchor,omitempty"`

	// Properties: Optional. Entities can be nested to form a hierarchical
	// data structure representing the content in the document.
	Properties []*GoogleCloudDocumentaiV1DocumentEntity `json:"properties,omitempty"`

	// Provenance: Optional. The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// Redacted: Optional. Whether the entity will be redacted for
	// de-identification purposes.
	Redacted bool `json:"redacted,omitempty"`

	// TextAnchor: Optional. Provenance of the entity. Text anchor indexing
	// into the Document.text.
	TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"`

	// Type: Required. Entity type from a schema e.g. `Address`.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentEntity) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentEntity) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentEntity
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoogleCloudDocumentaiV1DocumentEntityNormalizedValue: Parsed and
// normalized entity value.
type GoogleCloudDocumentaiV1DocumentEntityNormalizedValue struct {
	// AddressValue: Postal address. See also:
	// https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto
	AddressValue *GoogleTypePostalAddress `json:"addressValue,omitempty"`

	// BooleanValue: Boolean value. Can be used for entities with binary
	// values, or for checkboxes.
	BooleanValue bool `json:"booleanValue,omitempty"`

	// DateValue: Date value. Includes year, month, day. See also:
	// https://github.com/googleapis/googleapis/blob/master/google/type/date.proto
	DateValue *GoogleTypeDate `json:"dateValue,omitempty"`

	// DatetimeValue: DateTime value. Includes date, time, and timezone. See
	// also:
	// https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto
	DatetimeValue *GoogleTypeDateTime `json:"datetimeValue,omitempty"`

	// FloatValue: Float value.
	FloatValue float64 `json:"floatValue,omitempty"`

	// IntegerValue: Integer value.
	IntegerValue int64 `json:"integerValue,omitempty"`

	// MoneyValue: Money value. See also:
	// https://github.com/googleapis/googleapis/blob/master/google/type/money.proto
	MoneyValue *GoogleTypeMoney `json:"moneyValue,omitempty"`

	// Text: Optional. An optional field to store a normalized string. For
	// some entity types, one of respective `structured_value` fields may
	// also be populated. Also not all the types of `structured_value` will
	// be normalized. For example, some processors may not generate `float`
	// or `integer` normalized text by default. Below are sample formats
	// mapped to structured values. - Money/Currency type (`money_value`) is
	// in the ISO 4217 text format. - Date type (`date_value`) is in the ISO
	// 8601 text format. - Datetime type (`datetime_value`) is in the ISO
	// 8601 text format.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddressValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddressValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentEntityNormalizedValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentEntityNormalizedValue
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// GoogleCloudDocumentaiV1DocumentEntityRelation: Relationship between
// Entities.
type GoogleCloudDocumentaiV1DocumentEntityRelation struct {
	// ObjectId: Object entity id.
	ObjectId string `json:"objectId,omitempty"`

	// Relation: Relationship description.
	Relation string `json:"relation,omitempty"`

	// SubjectId: Subject entity id.
	SubjectId string `json:"subjectId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ObjectId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ObjectId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentEntityRelation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentEntityRelation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPage: A page in a Document.
type GoogleCloudDocumentaiV1DocumentPage struct {
	// Blocks: A list of visually detected text blocks on the page. A block
	// has a set of lines (collected into paragraphs) that have a common
	// line-spacing and orientation.
	Blocks []*GoogleCloudDocumentaiV1DocumentPageBlock `json:"blocks,omitempty"`

	// DetectedBarcodes: A list of detected barcodes.
	DetectedBarcodes []*GoogleCloudDocumentaiV1DocumentPageDetectedBarcode `json:"detectedBarcodes,omitempty"`

	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Dimension: Physical dimension of the page.
	Dimension *GoogleCloudDocumentaiV1DocumentPageDimension `json:"dimension,omitempty"`

	// FormFields: A list of visually detected form fields on the page.
	FormFields []*GoogleCloudDocumentaiV1DocumentPageFormField `json:"formFields,omitempty"`

	// Image: Rendered image for this page. This image is preprocessed to
	// remove any skew, rotation, and distortions such that the annotation
	// bounding boxes can be upright and axis-aligned.
	Image *GoogleCloudDocumentaiV1DocumentPageImage `json:"image,omitempty"`

	// ImageQualityScores: Image Quality Scores.
	ImageQualityScores *GoogleCloudDocumentaiV1DocumentPageImageQualityScores `json:"imageQualityScores,omitempty"`

	// Layout: Layout for the page.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Lines: A list of visually detected text lines on the page. A
	// collection of tokens that a human would perceive as a line.
	Lines []*GoogleCloudDocumentaiV1DocumentPageLine `json:"lines,omitempty"`

	// PageNumber: 1-based index for current Page in a parent Document.
	// Useful when a page is taken out of a Document for individual
	// processing.
	PageNumber int64 `json:"pageNumber,omitempty"`

	// Paragraphs: A list of visually detected text paragraphs on the page.
	// A collection of lines that a human would perceive as a paragraph.
	Paragraphs []*GoogleCloudDocumentaiV1DocumentPageParagraph `json:"paragraphs,omitempty"`

	// Provenance: The history of this page.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// Symbols: A list of visually detected symbols on the page.
	Symbols []*GoogleCloudDocumentaiV1DocumentPageSymbol `json:"symbols,omitempty"`

	// Tables: A list of visually detected tables on the page.
	Tables []*GoogleCloudDocumentaiV1DocumentPageTable `json:"tables,omitempty"`

	// Tokens: A list of visually detected tokens on the page.
	Tokens []*GoogleCloudDocumentaiV1DocumentPageToken `json:"tokens,omitempty"`

	// Transforms: Transformation matrices that were applied to the original
	// document image to produce Page.image.
	Transforms []*GoogleCloudDocumentaiV1DocumentPageMatrix `json:"transforms,omitempty"`

	// VisualElements: A list of detected non-text visual elements e.g.
	// checkbox, signature etc. on the page.
	VisualElements []*GoogleCloudDocumentaiV1DocumentPageVisualElement `json:"visualElements,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Blocks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Blocks") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPage) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageAnchor: Referencing the visual
// context of the entity in the Document.pages. Page anchors can be
// cross-page, consist of multiple bounding polygons and optionally
// reference specific layout element types.
type GoogleCloudDocumentaiV1DocumentPageAnchor struct {
	// PageRefs: One or more references to visual page elements
	PageRefs []*GoogleCloudDocumentaiV1DocumentPageAnchorPageRef `json:"pageRefs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PageRefs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PageRefs") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageAnchorPageRef: Represents a weak
// reference to a page element within a document.
type GoogleCloudDocumentaiV1DocumentPageAnchorPageRef struct {
	// BoundingPoly: Optional. Identifies the bounding polygon of a layout
	// element on the page.
	BoundingPoly *GoogleCloudDocumentaiV1BoundingPoly `json:"boundingPoly,omitempty"`

	// Confidence: Optional. Confidence of detected page element, if
	// applicable. Range `[0, 1]`.
	Confidence float64 `json:"confidence,omitempty"`

	// LayoutId: Optional. Deprecated. Use PageRef.bounding_poly instead.
	LayoutId string `json:"layoutId,omitempty"`

	// LayoutType: Optional. The type of the layout element that is being
	// referenced if any.
	//
	// Possible values:
	//   "LAYOUT_TYPE_UNSPECIFIED" - Layout Unspecified.
	//   "BLOCK" - References a Page.blocks element.
	//   "PARAGRAPH" - References a Page.paragraphs element.
	//   "LINE" - References a Page.lines element.
	//   "TOKEN" - References a Page.tokens element.
	//   "VISUAL_ELEMENT" - References a Page.visual_elements element.
	//   "TABLE" - Refrrences a Page.tables element.
	//   "FORM_FIELD" - References a Page.form_fields element.
	LayoutType string `json:"layoutType,omitempty"`

	// Page: Required. Index into the Document.pages element, for example
	// using `Document.pages` to locate the related page element. This field
	// is skipped when its value is the default `0`. See
	// https://developers.google.com/protocol-buffers/docs/proto3#json.
	Page int64 `json:"page,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingPoly") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageAnchorPageRef) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchorPageRef
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageAnchorPageRef) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchorPageRef
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageBlock: A block has a set of lines
// (collected into paragraphs) that have a common line-spacing and
// orientation.
type GoogleCloudDocumentaiV1DocumentPageBlock struct {
	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for Block.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Provenance: The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedLanguages")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedLanguages") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageBlock) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageBlock
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageDetectedBarcode: A detected
// barcode.
type GoogleCloudDocumentaiV1DocumentPageDetectedBarcode struct {
	// Barcode: Detailed barcode information of the DetectedBarcode.
	Barcode *GoogleCloudDocumentaiV1Barcode `json:"barcode,omitempty"`

	// Layout: Layout for DetectedBarcode.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Barcode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Barcode") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageDetectedBarcode) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedBarcode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageDetectedLanguage: Detected
// language for a structural component.
type GoogleCloudDocumentaiV1DocumentPageDetectedLanguage struct {
	// Confidence: Confidence of detected language. Range `[0, 1]`.
	Confidence float64 `json:"confidence,omitempty"`

	// LanguageCode: The BCP-47 language code, such as `en-US` or `sr-Latn`.
	// For more information, see
	// https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
	LanguageCode string `json:"languageCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageDetectedLanguage) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedLanguage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageDetectedLanguage) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedLanguage
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageDimension: Dimension for the page.
type GoogleCloudDocumentaiV1DocumentPageDimension struct {
	// Height: Page height.
	Height float64 `json:"height,omitempty"`

	// Unit: Dimension unit.
	Unit string `json:"unit,omitempty"`

	// Width: Page width.
	Width float64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageDimension) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageDimension
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageDimension) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageDimension
	var s1 struct {
		Height gensupport.JSONFloat64 `json:"height"`
		Width  gensupport.JSONFloat64 `json:"width"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Height = float64(s1.Height)
	s.Width = float64(s1.Width)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageFormField: A form field detected
// on the page.
type GoogleCloudDocumentaiV1DocumentPageFormField struct {
	// CorrectedKeyText: Created for Labeling UI to export key text. If
	// corrections were made to the text identified by the
	// `field_name.text_anchor`, this field will contain the correction.
	CorrectedKeyText string `json:"correctedKeyText,omitempty"`

	// CorrectedValueText: Created for Labeling UI to export value text. If
	// corrections were made to the text identified by the
	// `field_value.text_anchor`, this field will contain the correction.
	CorrectedValueText string `json:"correctedValueText,omitempty"`

	// FieldName: Layout for the FormField name. e.g. `Address`, `Email`,
	// `Grand total`, `Phone number`, etc.
	FieldName *GoogleCloudDocumentaiV1DocumentPageLayout `json:"fieldName,omitempty"`

	// FieldValue: Layout for the FormField value.
	FieldValue *GoogleCloudDocumentaiV1DocumentPageLayout `json:"fieldValue,omitempty"`

	// NameDetectedLanguages: A list of detected languages for name together
	// with confidence.
	NameDetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"nameDetectedLanguages,omitempty"`

	// Provenance: The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ValueDetectedLanguages: A list of detected languages for value
	// together with confidence.
	ValueDetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"valueDetectedLanguages,omitempty"`

	// ValueType: If the value is non-textual, this field represents the
	// type. Current valid values are: - blank (this indicates the
	// `field_value` is normal text) - `unfilled_checkbox` -
	// `filled_checkbox`
	ValueType string `json:"valueType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CorrectedKeyText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CorrectedKeyText") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageFormField) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageFormField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageImage: Rendered image contents for
// this page.
type GoogleCloudDocumentaiV1DocumentPageImage struct {
	// Content: Raw byte content of the image.
	Content string `json:"content,omitempty"`

	// Height: Height of the image in pixels.
	Height int64 `json:"height,omitempty"`

	// MimeType: Encoding mime type for the image.
	MimeType string `json:"mimeType,omitempty"`

	// Width: Width of the image in pixels.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageImage) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageImage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageImageQualityScores: Image Quality
// Scores for the page image
type GoogleCloudDocumentaiV1DocumentPageImageQualityScores struct {
	// DetectedDefects: A list of detected defects.
	DetectedDefects []*GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect `json:"detectedDefects,omitempty"`

	// QualityScore: The overall quality score. Range `[0, 1]` where 1 is
	// perfect quality.
	QualityScore float64 `json:"qualityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedDefects") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedDefects") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageImageQualityScores) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageImageQualityScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageImageQualityScores) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageImageQualityScores
	var s1 struct {
		QualityScore gensupport.JSONFloat64 `json:"qualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QualityScore = float64(s1.QualityScore)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect:
// Image Quality Defects
type GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect struct {
	// Confidence: Confidence of detected defect. Range `[0, 1]` where 1
	// indicates strong confidence of that the defect exists.
	Confidence float64 `json:"confidence,omitempty"`

	// Type: Name of the defect type. Supported values are: -
	// `quality/defect_blurry` - `quality/defect_noisy` -
	// `quality/defect_dark` - `quality/defect_faint` -
	// `quality/defect_text_too_small` - `quality/defect_document_cutoff` -
	// `quality/defect_text_cutoff` - `quality/defect_glare`
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageLayout: Visual element describing
// a layout unit on a page.
type GoogleCloudDocumentaiV1DocumentPageLayout struct {
	// BoundingPoly: The bounding polygon for the Layout.
	BoundingPoly *GoogleCloudDocumentaiV1BoundingPoly `json:"boundingPoly,omitempty"`

	// Confidence: Confidence of the current Layout within context of the
	// object this layout is for. e.g. confidence can be for a single token,
	// a table, a visual element, etc. depending on context. Range `[0, 1]`.
	Confidence float64 `json:"confidence,omitempty"`

	// Orientation: Detected orientation for the Layout.
	//
	// Possible values:
	//   "ORIENTATION_UNSPECIFIED" - Unspecified orientation.
	//   "PAGE_UP" - Orientation is aligned with page up.
	//   "PAGE_RIGHT" - Orientation is aligned with page right. Turn the
	// head 90 degrees clockwise from upright to read.
	//   "PAGE_DOWN" - Orientation is aligned with page down. Turn the head
	// 180 degrees from upright to read.
	//   "PAGE_LEFT" - Orientation is aligned with page left. Turn the head
	// 90 degrees counterclockwise from upright to read.
	Orientation string `json:"orientation,omitempty"`

	// TextAnchor: Text anchor indexing into the Document.text.
	TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingPoly") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageLayout) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageLayout
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentPageLayout) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageLayout
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// GoogleCloudDocumentaiV1DocumentPageLine: A collection of tokens that
// a human would perceive as a line. Does not cross column boundaries,
// can be horizontal, vertical, etc.
type GoogleCloudDocumentaiV1DocumentPageLine struct {
	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for Line.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Provenance: The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedLanguages")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedLanguages") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageLine) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageLine
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageMatrix: Representation for
// transformation matrix, intended to be compatible and used with OpenCV
// format for image manipulation.
type GoogleCloudDocumentaiV1DocumentPageMatrix struct {
	// Cols: Number of columns in the matrix.
	Cols int64 `json:"cols,omitempty"`

	// Data: The matrix data.
	Data string `json:"data,omitempty"`

	// Rows: Number of rows in the matrix.
	Rows int64 `json:"rows,omitempty"`

	// Type: This encodes information about what data type the matrix uses.
	// For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list
	// of OpenCV primitive data types, please refer to
	// https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html
	Type int64 `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cols") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cols") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageMatrix) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageMatrix
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageParagraph: A collection of lines
// that a human would perceive as a paragraph.
type GoogleCloudDocumentaiV1DocumentPageParagraph struct {
	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for Paragraph.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Provenance: The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedLanguages")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedLanguages") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageParagraph) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageParagraph
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageSymbol: A detected symbol.
type GoogleCloudDocumentaiV1DocumentPageSymbol struct {
	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for Symbol.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedLanguages")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedLanguages") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageSymbol) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageSymbol
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageTable: A table representation
// similar to HTML table structure.
type GoogleCloudDocumentaiV1DocumentPageTable struct {
	// BodyRows: Body rows of the table.
	BodyRows []*GoogleCloudDocumentaiV1DocumentPageTableTableRow `json:"bodyRows,omitempty"`

	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// HeaderRows: Header rows of the table.
	HeaderRows []*GoogleCloudDocumentaiV1DocumentPageTableTableRow `json:"headerRows,omitempty"`

	// Layout: Layout for Table.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Provenance: The history of this table.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BodyRows") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BodyRows") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageTable) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageTable
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageTableTableCell: A cell
// representation inside the table.
type GoogleCloudDocumentaiV1DocumentPageTableTableCell struct {
	// ColSpan: How many columns this cell spans.
	ColSpan int64 `json:"colSpan,omitempty"`

	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for TableCell.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// RowSpan: How many rows this cell spans.
	RowSpan int64 `json:"rowSpan,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ColSpan") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ColSpan") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageTableTableCell) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageTableTableCell
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageTableTableRow: A row of table
// cells.
type GoogleCloudDocumentaiV1DocumentPageTableTableRow struct {
	// Cells: Cells that make up this row.
	Cells []*GoogleCloudDocumentaiV1DocumentPageTableTableCell `json:"cells,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cells") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cells") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageTableTableRow) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageTableTableRow
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageToken: A detected token.
type GoogleCloudDocumentaiV1DocumentPageToken struct {
	// DetectedBreak: Detected break at the end of a Token.
	DetectedBreak *GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak `json:"detectedBreak,omitempty"`

	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for Token.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Provenance: The history of this annotation.
	Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedBreak") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedBreak") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageToken) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak: Detected break
// at the end of a Token.
type GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak struct {
	// Type: Detected break type.
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED" - Unspecified break type.
	//   "SPACE" - A single whitespace.
	//   "WIDE_SPACE" - A wider whitespace.
	//   "HYPHEN" - A hyphen that indicates that a token has been split
	// across lines.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentPageVisualElement: Detected non-text
// visual elements e.g. checkbox, signature etc. on the page.
type GoogleCloudDocumentaiV1DocumentPageVisualElement struct {
	// DetectedLanguages: A list of detected languages together with
	// confidence.
	DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"`

	// Layout: Layout for VisualElement.
	Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"`

	// Type: Type of the VisualElement.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedLanguages")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedLanguages") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentPageVisualElement) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentPageVisualElement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentProvenance: Structure to identify
// provenance relationships between annotations in different revisions.
type GoogleCloudDocumentaiV1DocumentProvenance struct {
	// Id: The Id of this operation. Needs to be unique within the scope of
	// the revision.
	Id int64 `json:"id,omitempty"`

	// Parents: References to the original elements that are replaced.
	Parents []*GoogleCloudDocumentaiV1DocumentProvenanceParent `json:"parents,omitempty"`

	// Revision: The index of the revision that produced this element.
	Revision int64 `json:"revision,omitempty"`

	// Type: The type of provenance operation.
	//
	// Possible values:
	//   "OPERATION_TYPE_UNSPECIFIED" - Operation type unspecified. If no
	// operation is specified a provenance entry is simply used to match
	// against a `parent`.
	//   "ADD" - Add an element.
	//   "REMOVE" - Remove an element identified by `parent`.
	//   "UPDATE" - Updates any fields within the given provenance scope of
	// the message. It 'overwrites' the fields rather than replacing them.
	// This is especially relevant when we just want to update a field value
	// of an entity without also affecting all the child properties.
	//   "REPLACE" - Currently unused. Replace an element identified by
	// `parent`.
	//   "EVAL_REQUESTED" - Deprecated. Request human review for the element
	// identified by `parent`.
	//   "EVAL_APPROVED" - Deprecated. Element is reviewed and approved at
	// human review, confidence will be set to 1.0.
	//   "EVAL_SKIPPED" - Deprecated. Element is skipped in the validation
	// process.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentProvenanceParent: The parent element
// the current element is based on. Used for referencing/aligning,
// removal and replacement operations.
type GoogleCloudDocumentaiV1DocumentProvenanceParent struct {
	// Id: The id of the parent provenance.
	Id int64 `json:"id,omitempty"`

	// Index: The index of the parent item in the corresponding item list
	// (eg. list of entities, properties within entities, etc.) in the
	// parent revision.
	Index int64 `json:"index,omitempty"`

	// Revision: The index of the index into current revision's parent_ids
	// list.
	Revision int64 `json:"revision,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentProvenanceParent) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentProvenanceParent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentRevision: Contains past or forward
// revisions of this document.
type GoogleCloudDocumentaiV1DocumentRevision struct {
	// Agent: If the change was made by a person specify the name or id of
	// that person.
	Agent string `json:"agent,omitempty"`

	// CreateTime: The time that the revision was created, internally
	// generated by doc proto storage at the time of create.
	CreateTime string `json:"createTime,omitempty"`

	// HumanReview: Human Review information of this revision.
	HumanReview *GoogleCloudDocumentaiV1DocumentRevisionHumanReview `json:"humanReview,omitempty"`

	// Id: Id of the revision, internally generated by doc proto storage.
	// Unique within the context of the document.
	Id string `json:"id,omitempty"`

	// Parent: The revisions that this revision is based on. This can
	// include one or more parent (when documents are merged.) This field
	// represents the index into the `revisions` field.
	Parent []int64 `json:"parent,omitempty"`

	// ParentIds: The revisions that this revision is based on. Must include
	// all the ids that have anything to do with this revision - eg. there
	// are `provenance.parent.revision` fields that index into this field.
	ParentIds []string `json:"parentIds,omitempty"`

	// Processor: If the annotation was made by processor identify the
	// processor by its resource name.
	Processor string `json:"processor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Agent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Agent") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentRevision) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentRevision
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentRevisionHumanReview: Human Review
// information of the document.
type GoogleCloudDocumentaiV1DocumentRevisionHumanReview struct {
	// State: Human review state. e.g. `requested`, `succeeded`, `rejected`.
	State string `json:"state,omitempty"`

	// StateMessage: A message providing more details about the current
	// state of processing. For example, the rejection reason when the state
	// is `rejected`.
	StateMessage string `json:"stateMessage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "State") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentRevisionHumanReview) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentRevisionHumanReview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentShardInfo: For a large document,
// sharding may be performed to produce several document shards. Each
// document shard contains this field to detail which shard it is.
type GoogleCloudDocumentaiV1DocumentShardInfo struct {
	// ShardCount: Total number of shards.
	ShardCount int64 `json:"shardCount,omitempty,string"`

	// ShardIndex: The 0-based index of this shard.
	ShardIndex int64 `json:"shardIndex,omitempty,string"`

	// TextOffset: The index of the first character in Document.text in the
	// overall document global text.
	TextOffset int64 `json:"textOffset,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ShardCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ShardCount") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentShardInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentShardInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentStyle: Annotation for common text
// style attributes. This adheres to CSS conventions as much as
// possible.
type GoogleCloudDocumentaiV1DocumentStyle struct {
	// BackgroundColor: Text background color.
	BackgroundColor *GoogleTypeColor `json:"backgroundColor,omitempty"`

	// Color: Text color.
	Color *GoogleTypeColor `json:"color,omitempty"`

	// FontFamily: Font family such as `Arial`, `Times New Roman`.
	// https://www.w3schools.com/cssref/pr_font_font-family.asp
	FontFamily string `json:"fontFamily,omitempty"`

	// FontSize: Font size.
	FontSize *GoogleCloudDocumentaiV1DocumentStyleFontSize `json:"fontSize,omitempty"`

	// FontWeight: Font weight. Possible values are normal, bold, bolder,
	// and lighter. https://www.w3schools.com/cssref/pr_font_weight.asp
	FontWeight string `json:"fontWeight,omitempty"`

	// TextAnchor: Text anchor indexing into the Document.text.
	TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"`

	// TextDecoration: Text decoration. Follows CSS standard.
	// https://www.w3schools.com/cssref/pr_text_text-decoration.asp
	TextDecoration string `json:"textDecoration,omitempty"`

	// TextStyle: Text style. Possible values are normal, italic, and
	// oblique. https://www.w3schools.com/cssref/pr_font_font-style.asp
	TextStyle string `json:"textStyle,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BackgroundColor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BackgroundColor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentStyle) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentStyle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentStyleFontSize: Font size with unit.
type GoogleCloudDocumentaiV1DocumentStyleFontSize struct {
	// Size: Font size for the text.
	Size float64 `json:"size,omitempty"`

	// Unit: Unit for the font size. Follows CSS naming (in, px, pt, etc.).
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Size") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Size") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentStyleFontSize) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentStyleFontSize
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1DocumentStyleFontSize) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1DocumentStyleFontSize
	var s1 struct {
		Size gensupport.JSONFloat64 `json:"size"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Size = float64(s1.Size)
	return nil
}

// GoogleCloudDocumentaiV1DocumentTextAnchor: Text reference indexing
// into the Document.text.
type GoogleCloudDocumentaiV1DocumentTextAnchor struct {
	// Content: Contains the content of the text span so that users do not
	// have to look it up in the text_segments. It is always populated for
	// formFields.
	Content string `json:"content,omitempty"`

	// TextSegments: The text segments from the Document.text.
	TextSegments []*GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment `json:"textSegments,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentTextAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentTextAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment: A text segment
// in the Document.text. The indices may be out of bounds which indicate
// that the text extends into another document shard for large sharded
// documents. See ShardInfo.text_offset
type GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment struct {
	// EndIndex: TextSegment half open end UTF-8 char index in the
	// Document.text.
	EndIndex int64 `json:"endIndex,omitempty,string"`

	// StartIndex: TextSegment start UTF-8 char index in the Document.text.
	StartIndex int64 `json:"startIndex,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndIndex") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1DocumentTextChange: This message is used for
// text changes aka. OCR corrections.
type GoogleCloudDocumentaiV1DocumentTextChange struct {
	// ChangedText: The text that replaces the text identified in the
	// `text_anchor`.
	ChangedText string `json:"changedText,omitempty"`

	// Provenance: The history of this annotation.
	Provenance []*GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"`

	// TextAnchor: Provenance of the correction. Text anchor indexing into
	// the Document.text. There can only be a single
	// `TextAnchor.text_segments` element. If the start and end index of the
	// text segment are the same, the text change is inserted before that
	// index.
	TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChangedText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChangedText") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1DocumentTextChange) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1DocumentTextChange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudDocumentaiV1NormalizedVertex: A vertex represents a 2D
// point in the image. NOTE: the normalized vertex coordinates are
// relative to the original image and range from 0 to 1.
type GoogleCloudDocumentaiV1NormalizedVertex struct {
	// X: X coordinate.
	X float64 `json:"x,omitempty"`

	// Y: Y coordinate (starts from the top of the image).
	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1NormalizedVertex) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1NormalizedVertex
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleCloudDocumentaiV1NormalizedVertex) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleCloudDocumentaiV1NormalizedVertex
	var s1 struct {
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// GoogleCloudDocumentaiV1Vertex: A vertex represents a 2D point in the
// image. NOTE: the vertex coordinates are in the same scale as the
// original image.
type GoogleCloudDocumentaiV1Vertex struct {
	// X: X coordinate.
	X int64 `json:"x,omitempty"`

	// Y: Y coordinate (starts from the top of the image).
	Y int64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudDocumentaiV1Vertex) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudDocumentaiV1Vertex
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleIamV1AuditConfig: Specifies the audit configuration for a
// service. The configuration determines which permission types are
// logged, and what identities, if any, are exempted from logging. An
// AuditConfig must have one or more AuditLogConfigs. If there are
// AuditConfigs for both `allServices` and a specific service, the union
// of the two AuditConfigs is used for that service: the log_types
// specified in each AuditConfig are enabled, and the exempted_members
// in each AuditLogConfig are exempted. Example Policy with multiple
// AuditConfigs: { "audit_configs": [ { "service": "allServices",
// "audit_log_configs": [ { "log_type": "DATA_READ", "exempted_members":
// [ "user:jose@example.com" ] }, { "log_type": "DATA_WRITE" }, {
// "log_type": "ADMIN_READ" } ] }, { "service":
// "sampleservice.googleapis.com", "audit_log_configs": [ { "log_type":
// "DATA_READ" }, { "log_type": "DATA_WRITE", "exempted_members": [
// "user:aliya@example.com" ] } ] } ] } For sampleservice, this policy
// enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts
// `jose@example.com` from DATA_READ logging, and `aliya@example.com`
// from DATA_WRITE logging.
type GoogleIamV1AuditConfig struct {
	// AuditLogConfigs: The configuration for logging of each type of
	// permission.
	AuditLogConfigs []*GoogleIamV1AuditLogConfig `json:"auditLogConfigs,omitempty"`

	// Service: Specifies a service that will be enabled for audit logging.
	// For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
	// `allServices` is a special value that covers all services.
	Service string `json:"service,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuditLogConfigs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuditLogConfigs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleIamV1AuditConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleIamV1AuditConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleIamV1AuditLogConfig: Provides the configuration for logging a
// type of permissions. Example: { "audit_log_configs": [ { "log_type":
// "DATA_READ", "exempted_members": [ "user:jose@example.com" ] }, {
// "log_type": "DATA_WRITE" } ] } This enables 'DATA_READ' and
// 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ
// logging.
type GoogleIamV1AuditLogConfig struct {
	// ExemptedMembers: Specifies the identities that do not cause logging
	// for this type of permission. Follows the same format of
	// Binding.members.
	ExemptedMembers []string `json:"exemptedMembers,omitempty"`

	// LogType: The log type that this config enables.
	//
	// Possible values:
	//   "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this.
	//   "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy
	//   "DATA_WRITE" - Data writes. Example: CloudSQL Users create
	//   "DATA_READ" - Data reads. Example: CloudSQL Users list
	LogType string `json:"logType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExemptedMembers") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExemptedMembers") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleIamV1AuditLogConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleIamV1AuditLogConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleIamV1Binding: Associates `members`, or principals, with a
// `role`.
type GoogleIamV1Binding struct {
	// Condition: The condition that is associated with this binding. If the
	// condition evaluates to `true`, then this binding applies to the
	// current request. If the condition evaluates to `false`, then this
	// binding does not apply to the current request. However, a different
	// role binding might grant the same role to one or more of the
	// principals in this binding. To learn which resources support
	// conditions in their IAM policies, see the IAM documentation
	// (https://cloud.google.com/iam/help/conditions/resource-policies).
	Condition *GoogleTypeExpr `json:"condition,omitempty"`

	// Members: Specifies the principals requesting access for a Google
	// Cloud resource. `members` can have the following values: *
	// `allUsers`: A special identifier that represents anyone who is on the
	// internet; with or without a Google account. *
	// `allAuthenticatedUsers`: A special identifier that represents anyone
	// who is authenticated with a Google account or a service account. Does
	// not include identities that come from external identity providers
	// (IdPs) through identity federation. * `user:{emailid}`: An email
	// address that represents a specific Google account. For example,
	// `alice@example.com` . * `serviceAccount:{emailid}`: An email address
	// that represents a Google service account. For example,
	// `my-other-app@appspot.gserviceaccount.com`. *
	// `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`:
	//  An identifier for a Kubernetes service account
	// (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts).
	// For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`.
	// * `group:{emailid}`: An email address that represents a Google group.
	// For example, `admins@example.com`. * `domain:{domain}`: The G Suite
	// domain (primary) that represents all the users of that domain. For
	// example, `google.com` or `example.com`. *
	// `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus
	// unique identifier) representing a user that has been recently
	// deleted. For example, `alice@example.com?uid=123456789012345678901`.
	// If the user is recovered, this value reverts to `user:{emailid}` and
	// the recovered user retains the role in the binding. *
	// `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address
	// (plus unique identifier) representing a service account that has been
	// recently deleted. For example,
	// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
	// If the service account is undeleted, this value reverts to
	// `serviceAccount:{emailid}` and the undeleted service account retains
	// the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`:
	// An email address (plus unique identifier) representing a Google group
	// that has been recently deleted. For example,
	// `admins@example.com?uid=123456789012345678901`. If the group is
	// recovered, this value reverts to `group:{emailid}` and the recovered
	// group retains the role in the binding.
	Members []string `json:"members,omitempty"`

	// Role: Role that is assigned to the list of `members`, or principals.
	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
	Role string `json:"role,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Condition") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Condition") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleIamV1Binding) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleIamV1Binding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleIamV1Policy: An Identity and Access Management (IAM) policy,
// which specifies access controls for Google Cloud resources. A
// `Policy` is a collection of `bindings`. A `binding` binds one or more
// `members`, or principals, to a single `role`. Principals can be user
// accounts, service accounts, Google groups, and domains (such as G
// Suite). A `role` is a named list of permissions; each `role` can be
// an IAM predefined role or a user-created custom role. For some types
// of Google Cloud resources, a `binding` can also specify a
// `condition`, which is a logical expression that allows access to a
// resource only if the expression evaluates to `true`. A condition can
// add constraints based on attributes of the request, the resource, or
// both. To learn which resources support conditions in their IAM
// policies, see the IAM documentation
// (https://cloud.google.com/iam/help/conditions/resource-policies).
// **JSON example:** { "bindings": [ { "role":
// "roles/resourcemanager.organizationAdmin", "members": [
// "user:mike@example.com", "group:admins@example.com",
// "domain:google.com",
// "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, {
// "role": "roles/resourcemanager.organizationViewer", "members": [
// "user:eve@example.com" ], "condition": { "title": "expirable access",
// "description": "Does not grant access after Sep 2020", "expression":
// "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ],
// "etag": "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: -
// members: - user:mike@example.com - group:admins@example.com -
// domain:google.com -
// serviceAccount:my-project-id@appspot.gserviceaccount.com role:
// roles/resourcemanager.organizationAdmin - members: -
// user:eve@example.com role: roles/resourcemanager.organizationViewer
// condition: title: expirable access description: Does not grant access
// after Sep 2020 expression: request.time <
// timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3
// For a description of IAM and its features, see the IAM documentation
// (https://cloud.google.com/iam/docs/).
type GoogleIamV1Policy struct {
	// AuditConfigs: Specifies cloud audit logging configuration for this
	// policy.
	AuditConfigs []*GoogleIamV1AuditConfig `json:"auditConfigs,omitempty"`

	// Bindings: Associates a list of `members`, or principals, with a
	// `role`. Optionally, may specify a `condition` that determines how and
	// when the `bindings` are applied. Each of the `bindings` must contain
	// at least one principal. The `bindings` in a `Policy` can refer to up
	// to 1,500 principals; up to 250 of these principals can be Google
	// groups. Each occurrence of a principal counts towards these limits.
	// For example, if the `bindings` grant 50 different roles to
	// `user:alice@example.com`, and not to any other principal, then you
	// can add another 1,450 principals to the `bindings` in the `Policy`.
	Bindings []*GoogleIamV1Binding `json:"bindings,omitempty"`

	// Etag: `etag` is used for optimistic concurrency control as a way to
	// help prevent simultaneous updates of a policy from overwriting each
	// other. It is strongly suggested that systems make use of the `etag`
	// in the read-modify-write cycle to perform policy updates in order to
	// avoid race conditions: An `etag` is returned in the response to
	// `getIamPolicy`, and systems are expected to put that etag in the
	// request to `setIamPolicy` to ensure that their change will be applied
	// to the same version of the policy. **Important:** If you use IAM
	// Conditions, you must include the `etag` field whenever you call
	// `setIamPolicy`. If you omit this field, then IAM allows you to
	// overwrite a version `3` policy with a version `1` policy, and all of
	// the conditions in the version `3` policy are lost.
	Etag string `json:"etag,omitempty"`

	// Version: Specifies the format of the policy. Valid values are `0`,
	// `1`, and `3`. Requests that specify an invalid value are rejected.
	// Any operation that affects conditional role bindings must specify
	// version `3`. This requirement applies to the following operations: *
	// Getting a policy that includes a conditional role binding * Adding a
	// conditional role binding to a policy * Changing a conditional role
	// binding in a policy * Removing any role binding, with or without a
	// condition, from a policy that includes conditions **Important:** If
	// you use IAM Conditions, you must include the `etag` field whenever
	// you call `setIamPolicy`. If you omit this field, then IAM allows you
	// to overwrite a version `3` policy with a version `1` policy, and all
	// of the conditions in the version `3` policy are lost. If a policy
	// does not include any conditions, operations on that policy may
	// specify any valid version or leave the field unset. To learn which
	// resources support conditions in their IAM policies, see the IAM
	// documentation
	// (https://cloud.google.com/iam/help/conditions/resource-policies).
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuditConfigs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuditConfigs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleIamV1Policy) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleIamV1Policy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaAvailabilityPeriod: Represents the
// information about user's working hours during one day. Note that a
// period on Monday from 18:00 - 00:00 is represented as a triplet (1,
// 1080, 1440).
type GoogleInternalAppsWaldoV1alphaAvailabilityPeriod struct {
	// DayOfWeek: Day of week, 0 for Sunday, 1 for Monday, ...
	DayOfWeek int64 `json:"dayOfWeek,omitempty"`

	// PeriodEndMinutes: Period end, in minutes from the start of the day,
	// exclusive.
	PeriodEndMinutes int64 `json:"periodEndMinutes,omitempty"`

	// PeriodStartMinutes: Period start, in minutes from the start of the
	// day, inclusive.
	PeriodStartMinutes int64 `json:"periodStartMinutes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DayOfWeek") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DayOfWeek") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaAvailabilityPeriod) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaAvailabilityPeriod
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaCalendarBusy: The status indicating the
// user is temporarily busy and there is not a more specific status
// derived from calendar that applies (e.g., InMeeting or DoNotDisturb).
type GoogleInternalAppsWaldoV1alphaCalendarBusy struct {
	// CommittedUntil: The time when the user will either stop being
	// committed or change commitment type (i.e. InMeeting, DoNotDisturb,
	// Busy or OutOfOffice < Xh). Note that the goal of this field is to
	// provide information to help users decide how to communicate with a
	// user (see also http://shortn/_wXYXtZScgh).
	CommittedUntil string `json:"committedUntil,omitempty"`

	// CommittedUntilIsMixed: TODO(b/265939748) To be removed, always false
	// from User Status Service.
	CommittedUntilIsMixed bool `json:"committedUntilIsMixed,omitempty"`

	// EventSummary: The summary of the corresponding event in Calendar.
	EventSummary string `json:"eventSummary,omitempty"`

	// NextAvailable: The next time when the user will be available, i.e.,
	// when their status will be neither InMeeting, CalendarBusy,
	// DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.
	NextAvailable string `json:"nextAvailable,omitempty"`

	// OccupiedUntil: The time when the user will stop being occupied, i.e.,
	// when their status will be neither inMeeting, Busy nor DoNotDisturb.
	OccupiedUntil string `json:"occupiedUntil,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommittedUntil") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommittedUntil") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaCalendarBusy) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaCalendarBusy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaCustomLocation: Custom location
// specified by the user.
type GoogleInternalAppsWaldoV1alphaCustomLocation struct {
	// GeoCoordinates: Geographic location as geo coordinates.
	GeoCoordinates *GoogleTypeLatLng `json:"geoCoordinates,omitempty"`

	// Label: The custom location label as a string entered manually by the
	// user.
	Label string `json:"label,omitempty"`

	// Location: Geographic location as free-form text.
	Location string `json:"location,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GeoCoordinates") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GeoCoordinates") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaCustomLocation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaCustomLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaDoNotDisturb: The status indicating the
// user should not be disturbed.
type GoogleInternalAppsWaldoV1alphaDoNotDisturb struct {
	// CommittedUntil: The time when the user will either stop being
	// committed or change commitment type (i.e. InMeeting, DoNotDisturb,
	// Busy or OutOfOffice < Xh). Note that the goal of this field is to
	// provide information to help users decide how to communicate with a
	// user (see also http://shortn/_wXYXtZScgh).
	CommittedUntil string `json:"committedUntil,omitempty"`

	// CommittedUntilIsMixed: TODO(b/265939748) To be removed, always false
	// from User Status Service.
	CommittedUntilIsMixed bool `json:"committedUntilIsMixed,omitempty"`

	// NextAvailable: The next time when the user will be available, i.e.,
	// when their status will be neither InMeeting, CalendarBusy,
	// DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.
	NextAvailable string `json:"nextAvailable,omitempty"`

	// OccupiedUntil: The time when the user will stop being occupied, i.e.,
	// when their status will be neither inMeeting, Busy nor DoNotDisturb.
	OccupiedUntil string `json:"occupiedUntil,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommittedUntil") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommittedUntil") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaDoNotDisturb) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaDoNotDisturb
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaHomeLocation: Home location.
type GoogleInternalAppsWaldoV1alphaHomeLocation struct {
}

// GoogleInternalAppsWaldoV1alphaInMeeting: The status indicating the
// user is in a meeting.
type GoogleInternalAppsWaldoV1alphaInMeeting struct {
	// CommittedUntil: The time when the user will either stop being
	// committed or change commitment type (i.e. InMeeting, DoNotDisturb,
	// Busy or OutOfOffice < Xh). Note that the goal of this field is to
	// provide information to help users decide how to communicate with a
	// user (see also http://shortn/_wXYXtZScgh).
	CommittedUntil string `json:"committedUntil,omitempty"`

	// CommittedUntilIsMixed: TODO(b/265939748) To be removed, always false
	// from User Status Service.
	CommittedUntilIsMixed bool `json:"committedUntilIsMixed,omitempty"`

	// EventSummary: The summary of the corresponding event in Calendar.
	EventSummary string `json:"eventSummary,omitempty"`

	// InMeetingsUntil: The time when the user will stop being in a meeting.
	InMeetingsUntil string `json:"inMeetingsUntil,omitempty"`

	// NextAvailable: The next time when the user will be available, i.e.,
	// when their status will be neither InMeeting, CalendarBusy,
	// DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.
	NextAvailable string `json:"nextAvailable,omitempty"`

	// OccupiedUntil: The time when the user will stop being occupied, i.e.,
	// when their status will be neither InMeeting, Busy nor DoNotDisturb.
	OccupiedUntil string `json:"occupiedUntil,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommittedUntil") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommittedUntil") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaInMeeting) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaInMeeting
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaInactive: The status indicating that no
// other status applies.
type GoogleInternalAppsWaldoV1alphaInactive struct {
}

// GoogleInternalAppsWaldoV1alphaLocalTimeContext: Context which helps
// to determine the user's local time.
type GoogleInternalAppsWaldoV1alphaLocalTimeContext struct {
	// TimeZone: The current time zone of the user. Represented as a valid
	// time zone ID from Olson database, like "Europe/Zurich" (see
	// http://google3/i18n/identifiers/data/timezones.txt).
	TimeZone string `json:"timeZone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TimeZone") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TimeZone") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaLocalTimeContext) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaLocalTimeContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaOfficeLocation: Office location.
type GoogleInternalAppsWaldoV1alphaOfficeLocation struct {
	// ExperimentalBuildingId: Experimental. Can change or disappear without
	// warning or notice. References a building from
	// http://google3/ccc/hosted/api/rosy/resources/calendar/building.proto
	// For example "US-NYC-9TH".
	ExperimentalBuildingId string `json:"experimentalBuildingId,omitempty"`

	// ExperimentalDeskId: Experimental. Can change or disappear without
	// warning or notice. The desk id. For example "11E358K".
	ExperimentalDeskId string `json:"experimentalDeskId,omitempty"`

	// ExperimentalFloorId: Experimental. Can change or disappear without
	// warning or notice. The floor id. For example "11".
	ExperimentalFloorId string `json:"experimentalFloorId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExperimentalBuildingId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExperimentalBuildingId")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaOfficeLocation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaOfficeLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaOutOfOffice: The status indicating the
// user is out of office.
type GoogleInternalAppsWaldoV1alphaOutOfOffice struct {
	// ComeBackTime: The closest time when the user will be available after
	// this OOO block. This might be different from the end of the OOO block
	// in Calendar, since the OOO block might end on Friday evening, and
	// then the user is outside working hours.
	ComeBackTime string `json:"comeBackTime,omitempty"`

	// CommittedUntil: The time when the user will either stop being
	// committed or change commitment type (i.e. InMeeting, DoNotDisturb,
	// Busy or OutOfOffice < Xh). Note that the goal of this field is to
	// provide information to help users decide how to communicate with a
	// user (see also http://shortn/_wXYXtZScgh). Note that if this OOO
	// block is large (>=Xh), committed_until is not set.
	CommittedUntil string `json:"committedUntil,omitempty"`

	// CommittedUntilIsMixed: TODO(b/265939748) To be removed, always false
	// from User Status Service.
	CommittedUntilIsMixed bool `json:"committedUntilIsMixed,omitempty"`

	// EventSummary: The summary of the corresponding OOO block in Calendar.
	// This is entered by the user, so we return it "as is" - no i18n.
	EventSummary string `json:"eventSummary,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComeBackTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComeBackTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaOutOfOffice) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaOutOfOffice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaOutsideWorkingHours: The status
// indicating the user doesn't work at this time.
type GoogleInternalAppsWaldoV1alphaOutsideWorkingHours struct {
	// ComeBackTime: The closest time when the user will be available after
	// this block. This might be different from the start of the working
	// hours in Calendar, because the given OutsideWorkingHours interval
	// might be followed by OOO.
	ComeBackTime string `json:"comeBackTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComeBackTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComeBackTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaOutsideWorkingHours) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaOutsideWorkingHours
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaTimeRange: A time range, which includes
// the start and excludes the end.
type GoogleInternalAppsWaldoV1alphaTimeRange struct {
	// EndTime: End point of the range, exclusive.
	EndTime string `json:"endTime,omitempty"`

	// StartTime: Starting point of the range, inclusive.
	StartTime string `json:"startTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaTimeRange) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaTimeRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GoogleInternalAppsWaldoV1alphaUpcomingCommitmentContext struct {
	// NextCommitmentStatus: The status of the commitment above.
	NextCommitmentStatus *GoogleInternalAppsWaldoV1alphaUserStatus `json:"nextCommitmentStatus,omitempty"`

	// NextCommitmentTime: The most relevant upcoming commitment (InMeeting,
	// DoNotDisturb, CalendarBusy or OutOfOffice). This context is set only
	// if there is an upcoming commitment to show, and only on non
	// commitments. Priority is given to the next closest commitment if its
	// start is close enough to this event, otherwise the next large OOO if
	// there is one.
	NextCommitmentTime string `json:"nextCommitmentTime,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NextCommitmentStatus") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextCommitmentStatus") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUpcomingCommitmentContext) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUpcomingCommitmentContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUpcomingOooContext: The context
// indicating the user's upcoming Out of Office event.
type GoogleInternalAppsWaldoV1alphaUpcomingOooContext struct {
	// TimeRange: The future period of absence. The start of this timerange
	// is the start of the future Out of Office event. The end of this
	// timerange represents the come back time of the user from that future
	// OOO event. Note that the come back time might be different (greater)
	// than the end of the corresponding future OOO event due to other
	// non-working user status intervals that it may be followed by.
	TimeRange *GoogleInternalAppsWaldoV1alphaTimeRange `json:"timeRange,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TimeRange") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TimeRange") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUpcomingOooContext) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUpcomingOooContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUserAvailabilities: The current and
// future availabilities of a user. The response contains a timeline,
// which starts before or at the request time, and the timeline is split
// into a set of disjoint intervals (without gaps), where the first
// range always contains the request time. Each range represents what
// should be displayed in the UI during this time range. The time range
// might be different from the actual time range of the underlying
// status. For example, if the user is OOO from 09:00 to 10:00, and a
// request is made at 8:00, the response might contain two intervals:
// [08:00, 09:00) - "User is INACTIVE, but leaving the office soon"
// [09:00, 10:00) - "User is OOO till 10:00" For intervals that don't
// have a clear availability signal coming from Calendar (e.g. OOO), we
// return INACTIVE. For more details, please see
// https://docs.google.com/presentation/d/1ADCTxGawjF9UqMnfuVrVNxGvdyjeiV8h4D7p0a9zYgw/edit#slide=id.g3e2824ac6c_12_94
// The service returns availabilities for some short period of time -
// likely one day, but the client should stick to the "next_poll_time"
// to decide when to query the server again at the latest. Below there
// is an example response from the server. Let's assume the client calls
// the service at 17:59:45. The client receives the message and,
// assuming its current time is between [17:59:45, 18:00:00), it
// displays "inactive". When the current time becomes 18:00:00 it
// displays "outside working hours". At 18:00:40 the client issues
// another rpc which will return the availabilities for the next minute.
// The original response looks like availabilities { time_range {
// start_time: 17:59:45 end_time: 18:00:00 } status { inactive {} } }
// availabilities { time_range { start_time: 18:00:00 end_time: 18:00:45
// } status { outside_working_hours { } } } next_poll_time: 18:00:40
type GoogleInternalAppsWaldoV1alphaUserAvailabilities struct {
	// Availabilities: A list of user availabilities having contiguous time
	// ranges which are ordered chronologically. The first one starts at the
	// time of the request or before, and is guaranteed to contain the
	// request time. That means the first element always indicates the
	// current status of a user. A client that wants to display a user's
	// availability in real time should display the availability whose time
	// range contains the current time.
	Availabilities []*GoogleInternalAppsWaldoV1alphaUserAvailability `json:"availabilities,omitempty"`

	// NextPollTime: The time at which the client should issue the next
	// availability query for this user. This field should only be used to
	// control the polling frequency. This time is always before the end of
	// the time range of the last availability so that the client always
	// knows the current availability.
	NextPollTime string `json:"nextPollTime,omitempty"`

	// WorkingHours: Information about the user's working hours. This will
	// only be set in case working hours are enabled in their calendar
	// settings.
	WorkingHours *GoogleInternalAppsWaldoV1alphaWorkingHours `json:"workingHours,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Availabilities") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Availabilities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUserAvailabilities) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUserAvailabilities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUserAvailability: A single availability
// range. The displayed status should be the same during the entire time
// range.
type GoogleInternalAppsWaldoV1alphaUserAvailability struct {
	// Contexts: The contexts contain additional information about the
	// current user's availability or its upcoming changes. The client
	// doesn't need to extract certain bits to visualize the status or apply
	// custom logic based on the content of this field: the status field
	// should contain everything needed for the correct visualization.
	Contexts *GoogleInternalAppsWaldoV1alphaUserContext `json:"contexts,omitempty"`

	// Status: The user status during the time range.
	Status *GoogleInternalAppsWaldoV1alphaUserStatus `json:"status,omitempty"`

	// TimeRange: The time range when this availability should be displayed.
	TimeRange *GoogleInternalAppsWaldoV1alphaTimeRange `json:"timeRange,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Contexts") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Contexts") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUserAvailability) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUserAvailability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUserContext: Additional context about
// the user's current and/or future availability to give a better
// understanding of the status ("Working from Zurich").
type GoogleInternalAppsWaldoV1alphaUserContext struct {
	// LocalTime: Helps to determine the user's local time by providing
	// their current time zone.
	LocalTime *GoogleInternalAppsWaldoV1alphaLocalTimeContext `json:"localTime,omitempty"`

	// UpcomingCommitmentContext: Information about upcoming events.
	UpcomingCommitmentContext *GoogleInternalAppsWaldoV1alphaUpcomingCommitmentContext `json:"upcomingCommitmentContext,omitempty"`

	// UpcomingOoo: Set if user has upcoming OOO.
	UpcomingOoo *GoogleInternalAppsWaldoV1alphaUpcomingOooContext `json:"upcomingOoo,omitempty"`

	// WorkingElsewhere: Set if the user has a working location. Not just
	// elsewhere (legacy name).
	WorkingElsewhere *GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext `json:"workingElsewhere,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUserContext) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUserContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUserLocation: Location of the user,
// which might be "home", for example, or an office building, as well as
// a custom location specified by the user.
type GoogleInternalAppsWaldoV1alphaUserLocation struct {
	// CustomLocation: Indicates the user is working from some other
	// location.
	CustomLocation *GoogleInternalAppsWaldoV1alphaCustomLocation `json:"customLocation,omitempty"`

	// HomeLocation: Indicates the user is working from home.
	HomeLocation *GoogleInternalAppsWaldoV1alphaHomeLocation `json:"homeLocation,omitempty"`

	// OfficeLocation: Indicates the user is working from the office.
	OfficeLocation *GoogleInternalAppsWaldoV1alphaOfficeLocation `json:"officeLocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CustomLocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomLocation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUserLocation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUserLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaUserStatus: The actual status of the
// user. The message contains everything needed for visualisation of
// this status.
type GoogleInternalAppsWaldoV1alphaUserStatus struct {
	// CalendarBusy: Set if the user is temporarily busy and there is not a
	// more specific status derived from calendar that applies (e.g.,
	// InMeeting or DoNotDisturb).
	CalendarBusy *GoogleInternalAppsWaldoV1alphaCalendarBusy `json:"calendarBusy,omitempty"`

	// DoNotDisturb: Set if the user is in a Focus Time block. Note that
	// this is different than Chat's Do not disturb status, but they may
	// coincide, see: go/focus-time-dnd.
	DoNotDisturb *GoogleInternalAppsWaldoV1alphaDoNotDisturb `json:"doNotDisturb,omitempty"`

	// InMeeting: Set if the user is in a meeting.
	InMeeting *GoogleInternalAppsWaldoV1alphaInMeeting `json:"inMeeting,omitempty"`

	// Inactive: Set if no other statuses apply.
	Inactive *GoogleInternalAppsWaldoV1alphaInactive `json:"inactive,omitempty"`

	// OutOfOffice: Set if the user is out of office.
	OutOfOffice *GoogleInternalAppsWaldoV1alphaOutOfOffice `json:"outOfOffice,omitempty"`

	// OutsideWorkingHours: Set if the user doesn't work at this time.
	OutsideWorkingHours *GoogleInternalAppsWaldoV1alphaOutsideWorkingHours `json:"outsideWorkingHours,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalendarBusy") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalendarBusy") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaUserStatus) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaUserStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext: The context
// providing the User Location (not just Elsewhere). This is a legacy
// name from when it was only set for users working remotely, now it is
// also set when the user is working from the office.
type GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext struct {
	// Location: The new location of the user. Might represent home, office,
	// or a custom address on the map.
	Location *GoogleInternalAppsWaldoV1alphaUserLocation `json:"location,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Location") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Location") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalAppsWaldoV1alphaWorkingHours: Information about the
// user's working hours.
type GoogleInternalAppsWaldoV1alphaWorkingHours struct {
	// AvailableTime: A list of availability periods representing the user's
	// working hours as configured in calendar.
	AvailableTime []*GoogleInternalAppsWaldoV1alphaAvailabilityPeriod `json:"availableTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvailableTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailableTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalAppsWaldoV1alphaWorkingHours) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalAppsWaldoV1alphaWorkingHours
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalCommunicationsInstantmessagingV1Id: Id for message
// recipients, e.g. users, groups etc.
type GoogleInternalCommunicationsInstantmessagingV1Id struct {
	// App: app is the tachyon client application that generated or is to
	// receive a message.
	App string `json:"app,omitempty"`

	// CountryCode: country_code is the E164_COUNTRY_CODE format country
	// code for this id, used as a hint for its region. E.g, "+1" will be
	// used for North America, "+86" will be used for China, etc. Should be
	// filled only for RCS group id.
	CountryCode string `json:"countryCode,omitempty"`

	// Id: id is a unique (for this type and app) identifier of a message
	// source or recipient.
	Id string `json:"id,omitempty"`

	// LocationHint: location_hint is used as a hint for the user's region.
	LocationHint *GoogleInternalCommunicationsInstantmessagingV1LocationHint `json:"locationHint,omitempty"`

	// RoutingInfoToken: Raw byte array containing encoded routing
	// information. Clients of Tachyon are expected to include the most
	// recent routing_info_cookie that they have received from the server in
	// the requests that they make. Its format is purposely opaque so that
	// clients do not need to concern themselves with the content of this
	// field. This field is expected to be used primarily by Tachygram
	// clients for go/tachygram-groups to simplify the API contract for
	// group operations while reducing the need for unnecessary lookups.
	RoutingInfoToken string `json:"routingInfoToken,omitempty"`

	// Type: type defines what the id field contains, e.g. phone number,
	// Fi-number, Gaia ID etc.
	//
	// Possible values:
	//   "UNSET"
	//   "PHONE_NUMBER" - E.164 format.
	//   "GROUP_ID"
	//   "FIREBALL_BOT" - Handled by Extractor
	//   "CALL_CONTROLLER" - Handled by Call Controller Message Receiver.
	//   "SUGGESTER"
	//   "FI_ID" - IDs of this type will be verified using a Fi service.
	//   "SYSTEM" - Used for any system-generated, internal and external
	//   "DUO_BOT" - messages. ex: Duo's invite reward. Bots for Duo
	//   "MATCHBOX_ID" - Used by Matchbox for 1P/3P App Preview Messaging.
	//   "RCS_BOT" - RCS BOT for sending message to Platinum
	//   "WIREBALL" - Web Client for Fireball
	//   "SERVICE_ACCOUNT" - Service account, currently only used for Duo
	// API.
	//   "DEVICE_ID" - Device ID used by Matchstick anonymous registrations.
	//   "FOREIGN_RCS_GROUP" - Rcs group hosted by another RCS cloud.
	//   "DITTO" - Android messages desktop: go/android-messages-desktop.
	//   "EMAIL" - Email address.
	//   "GAIA_ID" - Only used by servers.
	//   "LIGHTER_ID" - Used by Lighter platform: go/lighter-backend-api.
	//   "OPAQUE_ID" - Used by spam server as a special id type that allows
	//   "SERVER" - apps that support external ids. Used for server
	// delivery. go/tachyon_server_delivery
	//   "SHORT_CODE" - Phone short code.
	//   "CLOUDCAST_PLAYER_ID" - Used by cloudcast (yeti). 64 bit integer.
	//   "CHROMOTING_ID" - go/yeti-player-ids Chrome Remote Desktop
	// (go/chromoting).
	//   "UNNORMALIZABLE_PHONE_NUMBER" - Unnormalizable phone number
	//   "NOT_KNOWN" - client does not know the id type.
	//   "ANDROID_ID" - android id
	//   "NEARBY_ID" - Used by Nearby devices. go/tachyon-express-nearby.
	//   "WAZE_ID" - Used by Waze. go/waze-tachyon.
	//   "GUEST" - Used by Duo currently.
	//   "MESSAGES_DATA_DONATION" - Used by Android Messages for data
	// donation.
	//   "DUO_CLIP_ID" - Used as the Id Type of Clips From Duo clips. See
	// http://go/clips-from-duo
	//   "ACCOUNT_ID" - used by Takeout/LIS: see go/tachyon-legal-takeout.
	//   "CARRIER_ID" - used by RCS NNI Notification
	//   "EXTERNAL_PARTNER_ID" - used by RCS NNI Notification
	//   "UNAUTHENTICATED_USER_ID" - used by GMM for anonymous registration
	//   "SUPPORT_CASES_ID" - used by Support Cases for Realtime Media
	// WebRtc
	//   "FITBIT_P11_ID" - signaling. go/cases-media-channel-dd. used by
	// Fitbit Project 11 for messaging.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "App") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "App") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalCommunicationsInstantmessagingV1Id) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalCommunicationsInstantmessagingV1Id
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleInternalCommunicationsInstantmessagingV1LocationHint:
// LocationHint is used to specify a location as well as format.
type GoogleInternalCommunicationsInstantmessagingV1LocationHint struct {
	// Format: the format of location.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "E164_CALLING" - E164 country codes:
	// https://en.wikipedia.org/wiki/List_of_country_calling_codes e.g. +1
	// for USA
	//   "ISO_3166_1_ALPHA_2" - ISO 3166-1 alpha-2 country codes:
	// https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
	Format string `json:"format,omitempty"`

	// Location: Location is the location, provided in the format specified
	// by format.
	Location string `json:"location,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Format") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Format") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleInternalCommunicationsInstantmessagingV1LocationHint) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleInternalCommunicationsInstantmessagingV1LocationHint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleLongrunningOperation: This resource represents a long-running
// operation that is the result of a network API call.
type GoogleLongrunningOperation struct {
	// Done: If the value is `false`, it means the operation is still in
	// progress. If `true`, the operation is completed, and either `error`
	// or `response` is available.
	Done bool `json:"done,omitempty"`

	// Error: The error result of the operation in case of failure or
	// cancellation.
	Error *GoogleRpcStatus `json:"error,omitempty"`

	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as
	// create time. Some services might not provide such metadata. Any
	// method that returns a long-running operation should document the
	// metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`

	// Name: The server-assigned name, which is only unique within the same
	// service that originally returns it. If you use the default HTTP
	// mapping, the `name` should be a resource name ending with
	// `operations/{unique_id}`.
	Name string `json:"name,omitempty"`

	// Response: The normal response of the operation in case of success. If
	// the original method returns no data on success, such as `Delete`, the
	// response is `google.protobuf.Empty`. If the original method is
	// standard `Get`/`Create`/`Update`, the response should be the
	// resource. For other methods, the response should have the type
	// `XxxResponse`, where `Xxx` is the original method name. For example,
	// if the original method name is `TakeSnapshot()`, the inferred
	// response type is `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Done") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Done") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleLongrunningOperation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleProtobufEmpty: A generic empty message that you can re-use to
// avoid defining duplicated empty messages in your APIs. A typical
// example is to use it as the request or the response type of an API
// method. For instance: service Foo { rpc Bar(google.protobuf.Empty)
// returns (google.protobuf.Empty); }
type GoogleProtobufEmpty struct {
	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`
}

// GoogleRpcStatus: The `Status` type defines a logical error model that
// is suitable for different programming environments, including REST
// APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each
// `Status` message contains three pieces of data: error code, error
// message, and error details. You can find out more about this error
// model and how to work with it in the API Design Guide
// (https://cloud.google.com/apis/design/errors).
type GoogleRpcStatus struct {
	// Code: The status code, which should be an enum value of
	// google.rpc.Code.
	Code int64 `json:"code,omitempty"`

	// Details: A list of messages that carry the error details. There is a
	// common set of message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`

	// Message: A developer-facing error message, which should be in
	// English. Any user-facing error message should be localized and sent
	// in the google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleRpcStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeColor: Represents a color in the RGBA color space. This
// representation is designed for simplicity of conversion to/from color
// representations in various languages over compactness. For example,
// the fields of this representation can be trivially provided to the
// constructor of `java.awt.Color` in Java; it can also be trivially
// provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS;
// and, with just a little work, it can be easily formatted into a CSS
// `rgba()` string in JavaScript. This reference page doesn't carry
// information about the absolute color space that should be used to
// interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020,
// etc.). By default, applications should assume the sRGB color space.
// When color equality needs to be decided, implementations, unless
// documented otherwise, treat two colors as equal if all their red,
// green, blue, and alpha values each differ by at most 1e-5. Example
// (Java): import com.google.type.Color; // ... public static
// java.awt.Color fromProto(Color protocolor) { float alpha =
// protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0;
// return new java.awt.Color( protocolor.getRed(),
// protocolor.getGreen(), protocolor.getBlue(), alpha); } public static
// Color toProto(java.awt.Color color) { float red = (float)
// color.getRed(); float green = (float) color.getGreen(); float blue =
// (float) color.getBlue(); float denominator = 255.0; Color.Builder
// resultBuilder = Color .newBuilder() .setRed(red / denominator)
// .setGreen(green / denominator) .setBlue(blue / denominator); int
// alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha(
// FloatValue .newBuilder() .setValue(((float) alpha) / denominator)
// .build()); } return resultBuilder.build(); } // ... Example (iOS /
// Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float
// red = [protocolor red]; float green = [protocolor green]; float blue
// = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha];
// float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper
// value]; } return [UIColor colorWithRed:red green:green blue:blue
// alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red,
// green, blue, alpha; if (![color getRed:&red green:&green blue:&blue
// alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init];
// [result setRed:red]; [result setGreen:green]; [result setBlue:blue];
// if (alpha <= 0.9999) { [result
// setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease];
// return result; } // ... Example (JavaScript): // ... var
// protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red
// || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac =
// rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green
// = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255);
// if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green,
// blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams
// = [red, green, blue].join(','); return ['rgba(', rgbParams, ',',
// alphaFrac, ')'].join(”); }; var rgbToCssColor = function(red, green,
// blue) { var rgbNumber = new Number((red << 16) | (green << 8) |
// blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 -
// hexString.length; var resultBuilder = ['#']; for (var i = 0; i <
// missingZeros; i++) { resultBuilder.push('0'); }
// resultBuilder.push(hexString); return resultBuilder.join(”); }; //
// ...
type GoogleTypeColor struct {
	// Alpha: The fraction of this color that should be applied to the
	// pixel. That is, the final pixel color is defined by the equation:
	// `pixel color = alpha * (this color) + (1.0 - alpha) * (background
	// color)` This means that a value of 1.0 corresponds to a solid color,
	// whereas a value of 0.0 corresponds to a completely transparent color.
	// This uses a wrapper message rather than a simple float scalar so that
	// it is possible to distinguish between a default value and the value
	// being unset. If omitted, this color object is rendered as a solid
	// color (as if the alpha value had been explicitly given a value of
	// 1.0).
	Alpha float64 `json:"alpha,omitempty"`

	// Blue: The amount of blue in the color as a value in the interval [0,
	// 1].
	Blue float64 `json:"blue,omitempty"`

	// Green: The amount of green in the color as a value in the interval
	// [0, 1].
	Green float64 `json:"green,omitempty"`

	// Red: The amount of red in the color as a value in the interval [0,
	// 1].
	Red float64 `json:"red,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alpha") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alpha") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeColor) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeColor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleTypeColor) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleTypeColor
	var s1 struct {
		Alpha gensupport.JSONFloat64 `json:"alpha"`
		Blue  gensupport.JSONFloat64 `json:"blue"`
		Green gensupport.JSONFloat64 `json:"green"`
		Red   gensupport.JSONFloat64 `json:"red"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Alpha = float64(s1.Alpha)
	s.Blue = float64(s1.Blue)
	s.Green = float64(s1.Green)
	s.Red = float64(s1.Red)
	return nil
}

// GoogleTypeDate: Represents a whole or partial calendar date, such as
// a birthday. The time of day and time zone are either specified
// elsewhere or are insignificant. The date is relative to the Gregorian
// Calendar. This can represent one of the following: * A full date,
// with non-zero year, month, and day values. * A month and day, with a
// zero year (for example, an anniversary). * A year on its own, with a
// zero month and a zero day. * A year and month, with a zero day (for
// example, a credit card expiration date). Related types: *
// google.type.TimeOfDay * google.type.DateTime *
// google.protobuf.Timestamp
type GoogleTypeDate struct {
	// Day: Day of a month. Must be from 1 to 31 and valid for the year and
	// month, or 0 to specify a year by itself or a year and month where the
	// day isn't significant.
	Day int64 `json:"day,omitempty"`

	// Month: Month of a year. Must be from 1 to 12, or 0 to specify a year
	// without a month and day.
	Month int64 `json:"month,omitempty"`

	// Year: Year of the date. Must be from 1 to 9999, or 0 to specify a
	// date without a year.
	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeDate) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeDateTime: Represents civil time (or occasionally physical
// time). This type can represent a civil time in one of a few possible
// ways: * When utc_offset is set and time_zone is unset: a civil time
// on a calendar day with a particular offset from UTC. * When time_zone
// is set and utc_offset is unset: a civil time on a calendar day in a
// particular time zone. * When neither time_zone nor utc_offset is set:
// a civil time on a calendar day in local time. The date is relative to
// the Proleptic Gregorian Calendar. If year, month, or day are 0, the
// DateTime is considered not to have a specific year, month, or day
// respectively. This type may also be used to represent a physical time
// if all the date and time fields are set and either case of the
// `time_offset` oneof is set. Consider using `Timestamp` message for
// physical time instead. If your use case also would like to store the
// user's timezone, that can be done in another field. This type is more
// flexible than some applications may want. Make sure to document and
// validate your application's limitations.
type GoogleTypeDateTime struct {
	// Day: Optional. Day of month. Must be from 1 to 31 and valid for the
	// year and month, or 0 if specifying a datetime without a day.
	Day int64 `json:"day,omitempty"`

	// Hours: Optional. Hours of day in 24 hour format. Should be from 0 to
	// 23, defaults to 0 (midnight). An API may choose to allow the value
	// "24:00:00" for scenarios like business closing time.
	Hours int64 `json:"hours,omitempty"`

	// Minutes: Optional. Minutes of hour of day. Must be from 0 to 59,
	// defaults to 0.
	Minutes int64 `json:"minutes,omitempty"`

	// Month: Optional. Month of year. Must be from 1 to 12, or 0 if
	// specifying a datetime without a month.
	Month int64 `json:"month,omitempty"`

	// Nanos: Optional. Fractions of seconds in nanoseconds. Must be from 0
	// to 999,999,999, defaults to 0.
	Nanos int64 `json:"nanos,omitempty"`

	// Seconds: Optional. Seconds of minutes of the time. Must normally be
	// from 0 to 59, defaults to 0. An API may allow the value 60 if it
	// allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`

	// TimeZone: Time zone.
	TimeZone *GoogleTypeTimeZone `json:"timeZone,omitempty"`

	// UtcOffset: UTC offset. Must be whole seconds, between -18 hours and
	// +18 hours. For example, a UTC offset of -4:00 would be represented as
	// { seconds: -14400 }.
	UtcOffset string `json:"utcOffset,omitempty"`

	// Year: Optional. Year of date. Must be from 1 to 9999, or 0 if
	// specifying a datetime without a year.
	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeExpr: Represents a textual expression in the Common
// Expression Language (CEL) syntax. CEL is a C-like expression
// language. The syntax and semantics of CEL are documented at
// https://github.com/google/cel-spec. Example (Comparison): title:
// "Summary size limit" description: "Determines if a summary is less
// than 100 chars" expression: "document.summary.size() < 100" Example
// (Equality): title: "Requestor is owner" description: "Determines if
// requestor is the document owner" expression: "document.owner ==
// request.auth.claims.email" Example (Logic): title: "Public documents"
// description: "Determine whether the document should be publicly
// visible" expression: "document.type != 'private' && document.type !=
// 'internal'" Example (Data Manipulation): title: "Notification string"
// description: "Create a notification string with a timestamp."
// expression: "'New message received at ' +
// string(document.create_time)" The exact variables and functions that
// may be referenced within an expression are determined by the service
// that evaluates it. See the service documentation for additional
// information.
type GoogleTypeExpr struct {
	// Description: Optional. Description of the expression. This is a
	// longer text which describes the expression, e.g. when hovered over it
	// in a UI.
	Description string `json:"description,omitempty"`

	// Expression: Textual representation of an expression in Common
	// Expression Language syntax.
	Expression string `json:"expression,omitempty"`

	// Location: Optional. String indicating the location of the expression
	// for error reporting, e.g. a file name and a position in the file.
	Location string `json:"location,omitempty"`

	// Title: Optional. Title for the expression, i.e. a short string
	// describing its purpose. This can be used e.g. in UIs which allow to
	// enter the expression.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeExpr) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeExpr
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeInterval: Represents a time interval, encoded as a
// Timestamp start (inclusive) and a Timestamp end (exclusive). The
// start must be less than or equal to the end. When the start equals
// the end, the interval is empty (matches no time). When both start and
// end are unspecified, the interval matches any time.
type GoogleTypeInterval struct {
	// EndTime: Optional. Exclusive end of the interval. If specified, a
	// Timestamp matching this interval will have to be before the end.
	EndTime string `json:"endTime,omitempty"`

	// StartTime: Optional. Inclusive start of the interval. If specified, a
	// Timestamp matching this interval will have to be the same or after
	// the start.
	StartTime string `json:"startTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeInterval) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeInterval
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeLatLng: An object that represents a latitude/longitude
// pair. This is expressed as a pair of doubles to represent degrees
// latitude and degrees longitude. Unless specified otherwise, this
// object must conform to the WGS84 standard. Values must be within
// normalized ranges.
type GoogleTypeLatLng struct {
	// Latitude: The latitude in degrees. It must be in the range [-90.0,
	// +90.0].
	Latitude float64 `json:"latitude,omitempty"`

	// Longitude: The longitude in degrees. It must be in the range [-180.0,
	// +180.0].
	Longitude float64 `json:"longitude,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Latitude") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Latitude") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeLatLng) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeLatLng
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *GoogleTypeLatLng) UnmarshalJSON(data []byte) error {
	type NoMethod GoogleTypeLatLng
	var s1 struct {
		Latitude  gensupport.JSONFloat64 `json:"latitude"`
		Longitude gensupport.JSONFloat64 `json:"longitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	return nil
}

// GoogleTypeMoney: Represents an amount of money with its currency
// type.
type GoogleTypeMoney struct {
	// CurrencyCode: The three-letter currency code defined in ISO 4217.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// Nanos: Number of nano (10^-9) units of the amount. The value must be
	// between -999,999,999 and +999,999,999 inclusive. If `units` is
	// positive, `nanos` must be positive or zero. If `units` is zero,
	// `nanos` can be positive, zero, or negative. If `units` is negative,
	// `nanos` must be negative or zero. For example $-1.75 is represented
	// as `units`=-1 and `nanos`=-750,000,000.
	Nanos int64 `json:"nanos,omitempty"`

	// Units: The whole units of the amount. For example if `currencyCode`
	// is "USD", then 1 unit is one US dollar.
	Units int64 `json:"units,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CurrencyCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeMoney) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeMoney
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypePostalAddress: Represents a postal address, e.g. for postal
// delivery or payments addresses. Given a postal address, a postal
// service can deliver items to a premise, P.O. Box or similar. It is
// not intended to model geographical locations (roads, towns,
// mountains). In typical usage an address would be created via user
// input or from importing existing data, depending on the type of
// process. Advice on address input / editing: - Use an
// internationalization-ready address widget such as
// https://github.com/google/libaddressinput) - Users should not be
// presented with UI elements for input or editing of fields outside
// countries where that field is used. For more guidance on how to use
// this schema, please see:
// https://support.google.com/business/answer/6397478
type GoogleTypePostalAddress struct {
	// AddressLines: Unstructured address lines describing the lower levels
	// of an address. Because values in address_lines do not have type
	// information and may sometimes contain multiple values in a single
	// field (e.g. "Austin, TX"), it is important that the line order is
	// clear. The order of address lines should be "envelope order" for the
	// country/region of the address. In places where this can vary (e.g.
	// Japan), address_language is used to make it explicit (e.g. "ja" for
	// large-to-small ordering and "ja-Latn" or "en" for small-to-large).
	// This way, the most specific line of an address can be selected based
	// on the language. The minimum permitted structural representation of
	// an address consists of a region_code with all remaining information
	// placed in the address_lines. It would be possible to format such an
	// address very approximately without geocoding, but no semantic
	// reasoning could be made about any of the address components until it
	// was at least partially resolved. Creating an address only containing
	// a region_code and address_lines, and then geocoding is the
	// recommended way to handle completely unstructured addresses (as
	// opposed to guessing which parts of the address should be localities
	// or administrative areas).
	AddressLines []string `json:"addressLines,omitempty"`

	// AdministrativeArea: Optional. Highest administrative subdivision
	// which is used for postal addresses of a country or region. For
	// example, this can be a state, a province, an oblast, or a prefecture.
	// Specifically, for Spain this is the province and not the autonomous
	// community (e.g. "Barcelona" and not "Catalonia"). Many countries
	// don't use an administrative area in postal addresses. E.g. in
	// Switzerland this should be left unpopulated.
	AdministrativeArea string `json:"administrativeArea,omitempty"`

	// LanguageCode: Optional. BCP-47 language code of the contents of this
	// address (if known). This is often the UI language of the input form
	// or is expected to match one of the languages used in the address'
	// country/region, or their transliterated equivalents. This can affect
	// formatting in certain countries, but is not critical to the
	// correctness of the data and will never affect any validation or other
	// non-formatting related operations. If this value is not known, it
	// should be omitted (rather than specifying a possibly incorrect
	// default). Examples: "zh-Hant", "ja", "ja-Latn", "en".
	LanguageCode string `json:"languageCode,omitempty"`

	// Locality: Optional. Generally refers to the city/town portion of the
	// address. Examples: US city, IT comune, UK post town. In regions of
	// the world where localities are not well defined or do not fit into
	// this structure well, leave locality empty and use address_lines.
	Locality string `json:"locality,omitempty"`

	// Organization: Optional. The name of the organization at the address.
	Organization string `json:"organization,omitempty"`

	// PostalCode: Optional. Postal code of the address. Not all countries
	// use or require postal codes to be present, but where they are used,
	// they may trigger additional validation with other parts of the
	// address (e.g. state/zip validation in the U.S.A.).
	PostalCode string `json:"postalCode,omitempty"`

	// Recipients: Optional. The recipient at the address. This field may,
	// under certain circumstances, contain multiline information. For
	// example, it might contain "care of" information.
	Recipients []string `json:"recipients,omitempty"`

	// RegionCode: Required. CLDR region code of the country/region of the
	// address. This is never inferred and it is up to the user to ensure
	// the value is correct. See https://cldr.unicode.org/ and
	// https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
	// for details. Example: "CH" for Switzerland.
	RegionCode string `json:"regionCode,omitempty"`

	// Revision: The schema revision of the `PostalAddress`. This must be
	// set to 0, which is the latest revision. All new revisions **must** be
	// backward compatible with old revisions.
	Revision int64 `json:"revision,omitempty"`

	// SortingCode: Optional. Additional, country-specific, sorting code.
	// This is not used in most regions. Where it is used, the value is
	// either a string like "CEDEX", optionally followed by a number (e.g.
	// "CEDEX 7"), or just a number alone, representing the "sector code"
	// (Jamaica), "delivery area indicator" (Malawi) or "post office
	// indicator" (e.g. Côte d'Ivoire).
	SortingCode string `json:"sortingCode,omitempty"`

	// Sublocality: Optional. Sublocality of the address. For example, this
	// can be neighborhoods, boroughs, districts.
	Sublocality string `json:"sublocality,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddressLines") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddressLines") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypePostalAddress) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypePostalAddress
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeTimeOfDay: Represents a time of day. The date and time zone
// are either not significant or are specified elsewhere. An API may
// choose to allow leap seconds. Related types are google.type.Date and
// `google.protobuf.Timestamp`.
type GoogleTypeTimeOfDay struct {
	// Hours: Hours of day in 24 hour format. Should be from 0 to 23. An API
	// may choose to allow the value "24:00:00" for scenarios like business
	// closing time.
	Hours int64 `json:"hours,omitempty"`

	// Minutes: Minutes of hour of day. Must be from 0 to 59.
	Minutes int64 `json:"minutes,omitempty"`

	// Nanos: Fractions of seconds in nanoseconds. Must be from 0 to
	// 999,999,999.
	Nanos int64 `json:"nanos,omitempty"`

	// Seconds: Seconds of minutes of the time. Must normally be from 0 to
	// 59. An API may allow the value 60 if it allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hours") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hours") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeTimeOfDay) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeTimeOfDay
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleTypeTimeZone: Represents a time zone from the IANA Time Zone
// Database (https://www.iana.org/time-zones).
type GoogleTypeTimeZone struct {
	// Id: IANA Time Zone Database time zone, e.g. "America/New_York".
	Id string `json:"id,omitempty"`

	// Version: Optional. IANA Time Zone Database version number, e.g.
	// "2019a".
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleTypeTimeZone) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeTimeZone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type GroupsPerDocData struct {
	AuthorId uint64 `json:"AuthorId,omitempty,string"`

	GroupGaiaId uint64 `json:"GroupGaiaId,omitempty,string"`

	// GroupId: Legacy group mysql id.
	GroupId uint64 `json:"GroupId,omitempty,string"`

	ThreadId uint64 `json:"ThreadId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AuthorId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthorId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GroupsPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod GroupsPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HomeGraphCommonRoute struct {
	// AgentDeviceId: The device ID defined by the agent.
	AgentDeviceId string `json:"agentDeviceId,omitempty"`

	// AgentId: The agent's ID. Generally it is the agent's Google cloud
	// project id.
	AgentId string `json:"agentId,omitempty"`

	// ChipEndpoint: chip endpoint index (if the target is CHIP). Set packed
	// = true to handle error caused by b/32953375 when exporting this data.
	// Note that we should never change this to non-repeated: a packed field
	// will not work properly if you change the field to non-repeated later.
	ChipEndpoint []int64 `json:"chipEndpoint,omitempty"`

	// TargetType: Execution routing target.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "PARTNER_CLOUD"
	//   "LOCAL"
	//   "CHIP"
	TargetType string `json:"targetType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgentDeviceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgentDeviceId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HomeGraphCommonRoute) MarshalJSON() ([]byte, error) {
	type NoMethod HomeGraphCommonRoute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HomeGraphCommonRoutingTable: Defines execution routing information
// for Traits, which will be used to be mapped for each Trait as
// following: map traits_to_routing_table_map = X; We'll use this for
// CHIP first. And expect to migrate the existing routing logic to this
// gradually.
type HomeGraphCommonRoutingTable struct {
	// SupportedRoutes: List of supported execution route.
	SupportedRoutes []*HomeGraphCommonRoute `json:"supportedRoutes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SupportedRoutes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SupportedRoutes") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HomeGraphCommonRoutingTable) MarshalJSON() ([]byte, error) {
	type NoMethod HomeGraphCommonRoutingTable
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HomeGraphCommonTraitRoutingHints: LINT.IfChange
// go/shed-per-trait-routing. Making it object to allow for extendible
// design, where we can add attributes in future.
type HomeGraphCommonTraitRoutingHints struct {
	// CloudFulfillmentOnly: Set to true for a non-local trait.
	CloudFulfillmentOnly bool `json:"cloudFulfillmentOnly,omitempty"`

	// Trait: Trait name, e.g., "action.devices.traits.MediaInitiation". See
	// device traits
	// (https://developers.home.google.com/cloud-to-cloud/traits). See
	// java/com/google/home/graph/common/devices/config/protoconf.pi for the
	// exhaustive list of trait-strings.
	Trait string `json:"trait,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CloudFulfillmentOnly") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudFulfillmentOnly") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HomeGraphCommonTraitRoutingHints) MarshalJSON() ([]byte, error) {
	type NoMethod HomeGraphCommonTraitRoutingHints
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoAnonTimingStatPair: TimingStatPair
// message stores a timing period name and a time value. This is
// intentionally vague for doing fine level timing of rendering as what
// we measure is likely to change as we iterate. The intention is also
// that these values will just be dumped to varzs for evaluation
// purposed and not used programmatically.
type HtmlrenderWebkitHeadlessProtoAnonTimingStatPair struct {
	Name string `json:"name,omitempty"`

	TimeS float64 `json:"timeS,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoAnonTimingStatPair) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoAnonTimingStatPair
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoAnonTimingStatPair) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoAnonTimingStatPair
	var s1 struct {
		TimeS gensupport.JSONFloat64 `json:"timeS"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.TimeS = float64(s1.TimeS)
	return nil
}

// HtmlrenderWebkitHeadlessProtoBox: A simple 2D box represented by an
// (x, y) coordinate, a width, and a height. Coordinates are in pixels.
type HtmlrenderWebkitHeadlessProtoBox struct {
	Height int64 `json:"height,omitempty"`

	Width int64 `json:"width,omitempty"`

	// X: on horizontal axis
	X int64 `json:"x,omitempty"`

	// Y: on vertical axis
	Y int64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoBox) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoChromiumTrace: A message to describe the
// trace events returned by Chromium.
type HtmlrenderWebkitHeadlessProtoChromiumTrace struct {
	ChromiumTrace string `json:"chromiumTrace,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChromiumTrace") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChromiumTrace") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoChromiumTrace) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoChromiumTrace
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoConsoleLogEntry: ConsoleLogEntry message
// stores messages logged by the renderer to the console. Typically
// error messages related to JS execution, parsing, any CSS errors, etc
// are logged by the renderer to the console. Next id: 7.
type HtmlrenderWebkitHeadlessProtoConsoleLogEntry struct {
	// LineNumber: Line number of the document which caused an error.
	LineNumber int64 `json:"lineNumber,omitempty"`

	// Message: Message which indicates the nature of the error. e.g. parse
	// error, reference error (happens when javascript functions or
	// variables are not resolvable) etc.
	Message string `json:"message,omitempty"`

	// MessageLevel: message level
	//
	// Possible values:
	//   "TIP_MESSAGE_LEVEL"
	//   "DEBUG_MESSAGE_LEVEL"
	//   "LOG_MESSAGE_LEVEL"
	//   "INFO_MESSAGE_LEVEL"
	//   "WARNING_MESSAGE_LEVEL"
	//   "ERROR_MESSAGE_LEVEL"
	MessageLevel string `json:"messageLevel,omitempty"`

	// SourceUrl: The url of the document which has the error.
	SourceUrl string `json:"sourceUrl,omitempty"`

	// StackTrace: Stack trace which functions were called when generating
	// the console log. The first frame is the innermost one.
	StackTrace []*HtmlrenderWebkitHeadlessProtoScriptStackFrame `json:"stackTrace,omitempty"`

	// Timestamp: Wall time (s) when the log entry was recorded
	Timestamp float64 `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LineNumber") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LineNumber") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoConsoleLogEntry) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoConsoleLogEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoConsoleLogEntry) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoConsoleLogEntry
	var s1 struct {
		Timestamp gensupport.JSONFloat64 `json:"timestamp"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Timestamp = float64(s1.Timestamp)
	return nil
}

type HtmlrenderWebkitHeadlessProtoCookie struct {
	Domain string `json:"domain,omitempty"`

	Expiration float64 `json:"expiration,omitempty"`

	HttpOnly bool `json:"httpOnly,omitempty"`

	Name string `json:"name,omitempty"`

	Path string `json:"path,omitempty"`

	// Possible values:
	//   "SAME_SITE_UNSPECIFIED"
	//   "SAME_SITE_LAX"
	//   "SAME_SITE_STRICT"
	//   "SAME_SITE_NONE"
	SameSite string `json:"sameSite,omitempty"`

	Secure bool `json:"secure,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoCookie) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoCookie
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoCookie) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoCookie
	var s1 struct {
		Expiration gensupport.JSONFloat64 `json:"expiration"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Expiration = float64(s1.Expiration)
	return nil
}

type HtmlrenderWebkitHeadlessProtoDOMStorageItem struct {
	Key string `json:"key,omitempty"`

	SecurityOrigin string `json:"securityOrigin,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoDOMStorageItem) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoDOMStorageItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoDOMTreeNode: DOMTreeNode Defines a DOM
// Node. An instance can contain references to one or more children (of
// type DOMTreeNode) and one or more attributes. The DOMTreeNode also
// encapsulates rendering information (if applicable) in the form of
// references to one or more RenderTreeNodes. Next tag available: 16
type HtmlrenderWebkitHeadlessProtoDOMTreeNode struct {
	Attribute []*HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute `json:"attribute,omitempty"`

	// ChildDomTreeNodeIndex: An index per child. Indexes can be used to
	// fetch the DOMTreeNodes from the list maintained by the Document.
	ChildDomTreeNodeIndex []int64 `json:"childDomTreeNodeIndex,omitempty"`

	// CurrentSourceUrl: For elements, the actual url that was used to fetch
	// the image. Note that this field is set only if it is different from
	// the 'src' attribute value.
	CurrentSourceUrl string `json:"currentSourceUrl,omitempty"`

	// Document: If the node represents an iframe or a frame then document
	// will be set.
	Document *HtmlrenderWebkitHeadlessProtoDocument `json:"document,omitempty"`

	// HtmlTagType: Identifies the HTML tag type (IMG, P, DIV, etc).
	// Applicable only for DOM nodes that are representative of html
	// elements. For a list of possible types refer HtmlTagEnum defined in
	// webutil/html/htmltagenum.h.
	HtmlTagType int64 `json:"htmlTagType,omitempty"`

	// IsClickable: Whether this DOM node responds to mouse clicks. This
	// includes e.g. nodes that have had click event listeners attached via
	// JavaScript as well as e.g. anchor tags that naturally navigate when
	// clicked.
	IsClickable bool `json:"isClickable,omitempty"`

	// Name: Name of the node (document, text, comment, div, etc).
	Name string `json:"name,omitempty"`

	// OriginUrl: URL of the script, if any, which created or populated this
	// node.
	OriginUrl string `json:"originUrl,omitempty"`

	// ReferencedResourceIndex: List of referenced resource indexes for any
	// resources that this DOM tree node references.
	ReferencedResourceIndex []int64 `json:"referencedResourceIndex,omitempty"`

	// RenderTreeNodeIndex: RenderTreeNode can be looked up from the list of
	// RenderTreeNodes stored in the Document using render_tree_node_index.
	// RenderTreeNode gives rendering information (bounding box, style that
	// was applied, etc). Note: 1. If a DOMTreeNode does not have a
	// RenderTreeNode then it is safe to assume that the DOMTreeNode has no
	// effect on the rendering. DOMTreeNodes for a ,
	RenderTreeNodeIndex []int64 `json:"renderTreeNodeIndex,omitempty"`

	// Possible values:
	//   "ELEMENT_NODE"
	//   "ATTRIBUTE_NODE"
	//   "TEXT_NODE"
	//   "CDATA_SECTION_NODE"
	//   "ENTITY_REFERENCE_NODE"
	//   "ENTITY_NODE"
	//   "PROCESSING_INSTRUCTION_NODE"
	//   "COMMENT_NODE"
	//   "DOCUMENT_NODE"
	//   "DOCUMENT_TYPE_NODE"
	//   "DOCUMENT_FRAGMENT_NODE"
	//   "NOTATION_NODE"
	//   "XPATH_NAMESPACE_NODE"
	//   "SHADOW_ROOT_NODE"
	Type string `json:"type,omitempty"`

	// Value: The node value is applicable for TEXT_NODEs,
	// DOCUMENT_TYPE_NODEs, and user input elements such as , and <option>.
	// For DOCUMENT_TYPE_NODEs, the value contains the publicId and
	// SystemId. For input elements, the value reflects the current value in
	// the element at the time the snapshot was taken.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attribute") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attribute") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoDOMTreeNode) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoDOMTreeNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute: Zero or more
// attributes for the node.
type HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute struct {
	// HtmlAttributeType: Identifies the HTML attribute type (src, width,
	// height, etc). For a list of possible types refer HtmlAttributeEnum
	// defined in webutil/html/htmlattrenum.h.
	HtmlAttributeType int64 `json:"htmlAttributeType,omitempty"`

	Name string `json:"name,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HtmlAttributeType")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HtmlAttributeType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoDocument: Next available tag: 24
type HtmlrenderWebkitHeadlessProtoDocument struct {
	// BaseUri: Document's base uri.
	BaseUri string `json:"baseUri,omitempty"`

	// Charset: Document's charset.
	Charset string `json:"charset,omitempty"`

	ContentHeight int64 `json:"contentHeight,omitempty"`

	// ContentLanguage: Document's language.
	ContentLanguage string `json:"contentLanguage,omitempty"`

	// ContentWidth: These fields contain the actual width and height of the
	// document content, which may exceed the size of the rendering
	// viewport. *DEPRECATED* Use rendered_content_area instead. These two
	// fields always assume the content area begins at viewport coordinates
	// (0,0).
	ContentWidth int64 `json:"contentWidth,omitempty"`

	// DomTreeNode: A flat list of all the DOMTreeNodes in the DOM. A flat
	// list is preferred to a tree to avoid recursion and potential stack
	// overflows. Note that the first node in this list will always be the
	// root node.
	DomTreeNode []*HtmlrenderWebkitHeadlessProtoDOMTreeNode `json:"domTreeNode,omitempty"`

	// FrameId: A unique identifier for the frame (browser window of iframe)
	// this document is loaded in. This identifier matches the identifiers
	// used in the timeline data to identify frames and therefore only set
	// if the record_timeline field of the RenderRequest message was set to
	// true. frame_id is not supported on Chromium.
	FrameId string `json:"frameId,omitempty"`

	// FrameName: The name of the frame (browser window of iframe) this
	// document is loaded in. May not be set if the frame name was empty.
	FrameName string `json:"frameName,omitempty"`

	// JavascriptTimeOfDay:
	// ----------------------------------------------------------------------
	// ---- Input context. These fields are copied from RenderRequest so
	// that Document can be a self contained protobuf. We would've liked to
	// place them in a ## nested InputContext message but it's too late now.
	// ## Time specified to RenderRequest.JavaScriptOptions.time_of_day, if
	// any. ## End of input context. Output-only fields below.
	JavascriptTimeOfDay float64 `json:"javascriptTimeOfDay,omitempty"`

	// RedirectHop: The chain of redirects (and redirect methods) used to
	// get to the final resource for this Document. Deprecated: Use the
	// redirect events in the render_event field instead.
	RedirectHop []*HtmlrenderWebkitHeadlessProtoRedirectHop `json:"redirectHop,omitempty"`

	// ReferencedResource: Contains a list of Resources which the renderer
	// requested -- both those that were found and those that were not.
	// Resources are returned in the order that they were requested.
	ReferencedResource []*HtmlrenderWebkitHeadlessProtoReferencedResource `json:"referencedResource,omitempty"`

	// RenderEvent: Different types of events which happened during
	// rendering. All events for this document's frame are included, so for
	// example if a confirmation dialog is created before a client redirect
	// to this document the ConfirmationDialogEvent will still be included
	// even though the dialog was created by a different document. See
	// render_event.proto for the types of events which are recorded. Note
	// that this is present regardless of whether record_timeline was set in
	// the RenderRequest.
	RenderEvent []*HtmlrenderWebkitHeadlessProtoRenderEvent `json:"renderEvent,omitempty"`

	// RenderStyle: See
	// htmlrender_webkit_headless_utils::SerializeRenderStyle() if a
	// serialized css string is wanted.
	RenderStyle []*HtmlrenderWebkitHeadlessProtoStyle `json:"renderStyle,omitempty"`

	// RenderTreeNode: A flat list of all the RenderTreeNodes from the
	// render tree. A flat list is preferred to a tree to avoid recursion
	// and potential stack overflows. Note that the first node in this list
	// will always be the RenderTreeNode for the #document node (aka root).
	RenderTreeNode []*HtmlrenderWebkitHeadlessProtoRenderTreeNode `json:"renderTreeNode,omitempty"`

	// RenderTreeQualityScore: DEPRECATED - This field to be removed
	// mid-2011. If you need this, use the library directly:
	// //google3/htmlrender/webkit_headless/snapshot_quality Indicates how
	// good or bad the rendering is from the perspective of the render tree.
	// This is different from snapshot_quality_score in that the quality
	// analysis examines everything that can be rendered, not just the
	// portion within the document's viewport. It also ignores missing
	// resouces with fixed width/height specified in the tag. A score of 1
	// (100%) implies the entire document can be rendered at the best
	// quality and a score of 0 implies the entire document is unusable.
	RenderTreeQualityScore float64 `json:"renderTreeQualityScore,omitempty"`

	// RenderedContentArea: The bounding box which represents the whole area
	// of rendered content, which may exceed the size of the rendering
	// viewport. It doesn't include the body's margin.
	RenderedContentArea *HtmlrenderWebkitHeadlessProtoBox `json:"renderedContentArea,omitempty"`

	// ScrollX: Scroll offset of this document within the frame. Note that
	// if expand_frame_to_content_height or expand_frame_to_content_width is
	// true, this field reflects the final scroll offset after frame
	// expansion.
	ScrollX int64 `json:"scrollX,omitempty"`

	ScrollY int64 `json:"scrollY,omitempty"`

	// SnapshotQualityScore: DEPRECATED - This field to be removed mid-2011.
	// If you need this, use the library directly:
	// //google3/htmlrender/webkit_headless/snapshot_quality Indicates how
	// good or bad the rendered snapshot is within the rendered content area
	// within the document's viewport. A score of 1 (100%) implies the
	// snapshot is of best quality and a score of 0 implies the snapshot is
	// unusable.
	SnapshotQualityScore float64 `json:"snapshotQualityScore,omitempty"`

	// Title: Document's title.
	Title string `json:"title,omitempty"`

	// Uri: Document uri is the URL that this document was fetched from. The
	// displayed URL and base URL may be different. If this document was not
	// fetched from any URL (e.g. iframe with no src, populated by script)
	// uri will be "about:blank".
	Uri string `json:"uri,omitempty"`

	// Viewport: The page's layout size.
	Viewport *HtmlrenderWebkitHeadlessProtoBox `json:"viewport,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BaseUri") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseUri") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoDocument) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoDocument) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoDocument
	var s1 struct {
		JavascriptTimeOfDay    gensupport.JSONFloat64 `json:"javascriptTimeOfDay"`
		RenderTreeQualityScore gensupport.JSONFloat64 `json:"renderTreeQualityScore"`
		SnapshotQualityScore   gensupport.JSONFloat64 `json:"snapshotQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.JavascriptTimeOfDay = float64(s1.JavascriptTimeOfDay)
	s.RenderTreeQualityScore = float64(s1.RenderTreeQualityScore)
	s.SnapshotQualityScore = float64(s1.SnapshotQualityScore)
	return nil
}

// HtmlrenderWebkitHeadlessProtoFrameResizeEvent: Event for frame
// resize. Currently we only record resize events caused by automatic
// frame expansion.
type HtmlrenderWebkitHeadlessProtoFrameResizeEvent struct {
	// Possible values:
	//   "UNKNOWN"
	//   "AUTOMATIC_FRAME_EXPANSION_TO_CONTENT_WIDTH" - This event is caused
	// by expand_frame_to_content_width.
	//   "AUTOMATIC_FRAME_EXPANSION_TO_CONTENT_HEIGHT" - This event is
	// caused by expand_frame_to_content_height.
	ResizeType string `json:"resizeType,omitempty"`

	VisibleRectAfterResize *HtmlrenderWebkitHeadlessProtoBox `json:"visibleRectAfterResize,omitempty"`

	VisibleRectBeforeResize *HtmlrenderWebkitHeadlessProtoBox `json:"visibleRectBeforeResize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ResizeType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ResizeType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoFrameResizeEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoFrameResizeEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoImage struct {
	// Data: The binary image data, stored in a format decided by the
	// application and a particular RenderService implementation.
	Data string `json:"data,omitempty"`

	Height int64 `json:"height,omitempty"`

	// PageNumber: The page number if this is an image of a page from a
	// print-mode rendering.
	PageNumber int64 `json:"pageNumber,omitempty"`

	// Viewport: The viewport from which this image was generated. This is
	// relative to the upper left of the page's document.
	Viewport *HtmlrenderWebkitHeadlessProtoBox `json:"viewport,omitempty"`

	// Width: The width and height of the image stored in the data field.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoImage) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoImage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoInitialLoadEvent: Event for the initial
// load of a frame, including main frame and subframes.
type HtmlrenderWebkitHeadlessProtoInitialLoadEvent struct {
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Url") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Url") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoInitialLoadEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoInitialLoadEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoModalDialogEvent: Event for a modal
// dialog created by one of window.confirm(), window.prompt(), or
// window.alert().
type HtmlrenderWebkitHeadlessProtoModalDialogEvent struct {
	// Confirmed: Whether a confirm() or prompt() dialog was confirmed. Will
	// not be present for an alert() dialog.
	Confirmed bool `json:"confirmed,omitempty"`

	Message string `json:"message,omitempty"`

	// Result: For a prompt() dialog, the result of the prompt. Will not be
	// present for other types of dialogs. If confirmed == false and the
	// prompt had a default value, result will contain the default value.
	Result string `json:"result,omitempty"`

	// Possible values:
	//   "CONFIRM"
	//   "PROMPT"
	//   "ALERT"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confirmed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confirmed") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoModalDialogEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoModalDialogEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoOffset struct {
	// Possible values:
	//   "PIXELS"
	//   "PERCENT" - There are other possible Units, add them if needed.
	Unit string `json:"unit,omitempty"`

	Value int64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Unit") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Unit") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoOffset) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoOffset
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoPartialRender: PartialRenders can be
// created using the extension API to store the document state and/or
// create an image at points before the final render.
type HtmlrenderWebkitHeadlessProtoPartialRender struct {
	// Cookie: Cookies at the time of snapshot creation.
	Cookie []*HtmlrenderWebkitHeadlessProtoCookie `json:"cookie,omitempty"`

	// CurrentClientUrl: Current url as would appear in the web browser's
	// address bar at the time of snapshot creation.
	CurrentClientUrl string `json:"currentClientUrl,omitempty"`

	// Document: Snapshot of the document DOM + Render trees, if requested
	Document *HtmlrenderWebkitHeadlessProtoDocument `json:"document,omitempty"`

	// Id: ID set by the render extension
	Id string `json:"id,omitempty"`

	// Image: Image of the render, if requested
	Image *HtmlrenderWebkitHeadlessProtoImage `json:"image,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cookie") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cookie") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoPartialRender) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoPartialRender
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoPdf struct {
	// Data: The binary PDF data.
	Data string `json:"data,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoPdf) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoPdf
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoRectangle struct {
	Bottom *HtmlrenderWebkitHeadlessProtoOffset `json:"bottom,omitempty"`

	Left *HtmlrenderWebkitHeadlessProtoOffset `json:"left,omitempty"`

	Right *HtmlrenderWebkitHeadlessProtoOffset `json:"right,omitempty"`

	// Top: A missing value for any field in this message means 'auto'.
	Top *HtmlrenderWebkitHeadlessProtoOffset `json:"top,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bottom") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bottom") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRectangle) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRectangle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoRedirectEvent: A redirect event
// represents a change in the resource URL for a document. This includes
// HTTP redirects, as well things which trigger client navigations such
// as script changing window.location, tags, HTTP Refresh headers, etc.
type HtmlrenderWebkitHeadlessProtoRedirectEvent struct {
	// HttpMethod: The HTTP method of the request for the redirect target.
	//
	// Possible values:
	//   "OTHER_HTTP_METHOD"
	//   "GET"
	//   "POST"
	HttpMethod string `json:"httpMethod,omitempty"`

	// HttpStatusCode: For HTTP redirects, the HTTP status code returned in
	// the initial HTTP response.
	HttpStatusCode int64 `json:"httpStatusCode,omitempty"`

	// Possible values:
	//   "HTTP_REFRESH"
	//   "META_HTTP_EQUIV_REFRESH"
	RefreshType string `json:"refreshType,omitempty"`

	// TargetContentDownloaded: True if the redirect led to a download
	// instead of loading a new page. Note that such redirects can appear
	// anywhere in the list of redirect events.
	TargetContentDownloaded bool `json:"targetContentDownloaded,omitempty"`

	TargetUrl string `json:"targetUrl,omitempty"`

	// Possible values:
	//   "UNKNOWN_REDIRECT_TYPE" - If you see this in a RenderEvent produced
	// by the render server it is a bug.
	//   "HTTP" - Redirection by HTTP status code only. Refresh headers are
	// classified as REFRESH. In this case http_method and http_stauts_code
	// will be set.
	//   "SCRIPT" - Actions taken by script that redirect the page. Examples
	// include setting window.location, setting src on a frame, calling
	// window.open(), etc.
	//   "REFRESH" - Redirect by an HTTP Refresh header or tag with
	// http-equiv="refresh". For this case refresh_type will be set
	// indicating the type of refresh.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HttpMethod") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HttpMethod") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRedirectEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRedirectEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoRedirectHop struct {
	// Possible values:
	//   "SERVER" - e.g. HTTP 301/302
	//   "CLIENT" - e.g. meta refresh, JavaScript
	Type string `json:"type,omitempty"`

	// Url: The redirect target url.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRedirectHop) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRedirectHop
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoReferencedResource: ReferencedResource
// contains an entry per url referenced by the browser while rendering a
// document. Next tag available: 20
type HtmlrenderWebkitHeadlessProtoReferencedResource struct {
	// Canceled: True if this fetch was canceled due to render server
	// policy. e.g. the page exceeded the fetch budget or an extension
	// canceled the fetch.
	Canceled bool `json:"canceled,omitempty"`

	// ContentType: Content type of this resource
	// (webutil/http/content-type.h). The content type is from guess based
	// on the file extension, any mime type in http headers at the beginning
	// of the content, any content-disposition http header, and the content
	// body itself. Note: the content type defined in
	// webutil/http/content-type.proto is incomplete. If you are interested
	// in missing types, please update the enum and the logic of content
	// type detection.
	ContentType int64 `json:"contentType,omitempty"`

	// DomTreeNodeIndex: DOMTreeNode index which has the url as one of its
	// attributes specified using either src, href or background attributes.
	// src attribute applies to img, script, frame and iframe nodes, href
	// applies to link nodes and background applies to body node. It is
	// possible for a url to be referenced by multiple DOM nodes. For e.g.
	// an tag with the same src attribute can occur in multiple places
	// within a document. It is possible for a url to not have any DOM node
	// reference. For example, redirects don't have DOM tree nodes.
	DomTreeNodeIndex []int64 `json:"domTreeNodeIndex,omitempty"`

	// FailedHttpAccessControlCheck: True when a HTTP request succeeded but
	// the resource was not made accessible to script due to a HTTP Access
	// Control (CORS) failure. This field is not implemented on Chromium.
	FailedHttpAccessControlCheck bool `json:"failedHttpAccessControlCheck,omitempty"`

	// FetchSourceInfo: Where this resource comes from.
	FetchSourceInfo []*WirelessTranscoderFetchFetchSourceInfo `json:"fetchSourceInfo,omitempty"`

	// FetchStatus: The FetchStatus returned by the fetcher. Values are
	// taken from wireless_transcoder_fetch.FetchConstants.FetchStatus in
	// fetch_service.proto. The default value is SUCCESS(0).
	//
	// Possible values:
	//   "SUCCESS"
	//   "TIMEOUT"
	//   "CONNECTION_ERROR"
	//   "IO_ERROR"
	//   "RPC_ERROR"
	//   "INTERRUPTED"
	//   "UNSUPPORTED_PROTOCOL"
	//   "MALFORMED_URL"
	//   "TOO_MANY_REDIRECTS"
	//   "MALFORMED_RESPONSE"
	//   "NOT_PERMITTED"
	//   "CERTIFICATE_ERROR"
	//   "INVALID_REQUEST"
	//   "BUSY" - Use by a FetchService implementation to indicate that it
	// is full and that the client should try another task.
	//   "INVALID_CUSTOM_PARAMS" - Indicates invalid trawler params were
	// sent by the client.
	//   "NOT_HANDLED" - Indicates that the fetcher doesn't handle this
	// request.
	FetchStatus string `json:"fetchStatus,omitempty"`

	// HttpHeader: HTTP headers from the fetcher.
	HttpHeader []*HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader `json:"httpHeader,omitempty"`

	// HttpResponseCode: HTTP response code if we had tried to fetch the
	// url. Absence of this field indicates either we have not tried to
	// fetch the url or the fetcher never got back to us with any response.
	HttpResponseCode int64 `json:"httpResponseCode,omitempty"`

	Metadata []*WirelessTranscoderFetchFetchMetadata `json:"metadata,omitempty"`

	// PostData: The post_data field is only valid when the HTTP request
	// method is POST.
	PostData string `json:"postData,omitempty"`

	// RedirectTarget: If the http_response_code is a HTTP redirect, the
	// redirect target will be stored here.
	RedirectTarget string `json:"redirectTarget,omitempty"`

	// ReferencedResourceContentIndex: Indicates which
	// referenced_resource_content (in RenderResponse) this RefencedResource
	// points to. This field will be set only when there is
	// referenced_resource_content for this RefencedResource in
	// RenderResponse.
	ReferencedResourceContentIndex int64 `json:"referencedResourceContentIndex,omitempty"`

	// RequestHeader: Only necessary headers are recorded. See
	// google3/htmlrender/webkit_headless/resource_key.cc
	RequestHeader []*HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader `json:"requestHeader,omitempty"`

	// RequestMethod: The HTTP request method (GET, HEAD, POST, etc) used
	// for this request. Values are taken from the HTTPHeaders::Protocol
	// enum in webutil/http/httputils.h. HTTPHeaders::PROTO_GET
	RequestMethod int64 `json:"requestMethod,omitempty"`

	// StyleIndex: style index which has the url specified using either the
	// background-image property or the list-style-image property.
	StyleIndex []int64 `json:"styleIndex,omitempty"`

	// SynchronouslyFetched: Whether it is synchronously fetched.
	SynchronouslyFetched bool `json:"synchronouslyFetched,omitempty"`

	Timing []*HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming `json:"timing,omitempty"`

	// Url: Does not have a #fragment.
	Url string `json:"url,omitempty"`

	// WebkitMetadata: Additional information webkit about this resource.
	// e.g. intended usage
	WebkitMetadata *HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata `json:"webkitMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Canceled") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Canceled") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoReferencedResource) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoReferencedResource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming: Timing
// data produced by the fetcher.
type HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming struct {
	FinishMsec int64 `json:"finishMsec,omitempty,string"`

	// Name: A string identifying the fetcher that added this timing
	// information.
	Name string `json:"name,omitempty"`

	// StartMsec: UNIX epoch timestamps in milliseconds.
	StartMsec int64 `json:"startMsec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "FinishMsec") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FinishMsec") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader: HTTP
// Headers included with the resource request.
type HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader struct {
	Name string `json:"name,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoRenderEvent struct {
	FrameResize *HtmlrenderWebkitHeadlessProtoFrameResizeEvent `json:"frameResize,omitempty"`

	InitialLoad *HtmlrenderWebkitHeadlessProtoInitialLoadEvent `json:"initialLoad,omitempty"`

	ModalDialog *HtmlrenderWebkitHeadlessProtoModalDialogEvent `json:"modalDialog,omitempty"`

	Redirect *HtmlrenderWebkitHeadlessProtoRedirectEvent `json:"redirect,omitempty"`

	// ScriptOriginUrl: The URL of the script which caused this event, if
	// any. Analogous to origin_url in DOMTreeNode.
	ScriptOriginUrl string `json:"scriptOriginUrl,omitempty"`

	// VirtualTimeOffset: Virtual time of the event, as an offset from the
	// beginning of the render in seconds.
	VirtualTimeOffset float64 `json:"virtualTimeOffset,omitempty"`

	WindowOpen *HtmlrenderWebkitHeadlessProtoWindowOpenEvent `json:"windowOpen,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameResize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameResize") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoRenderEvent) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderEvent
	var s1 struct {
		VirtualTimeOffset gensupport.JSONFloat64 `json:"virtualTimeOffset"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.VirtualTimeOffset = float64(s1.VirtualTimeOffset)
	return nil
}

// HtmlrenderWebkitHeadlessProtoRenderExtensionResult: Results returned
// by a render server extension. Next id: 3
type HtmlrenderWebkitHeadlessProtoRenderExtensionResult struct {
	// ConsoleLogEntry: Log messages and errors generated by extension
	// script.
	ConsoleLogEntry []*HtmlrenderWebkitHeadlessProtoConsoleLogEntry `json:"consoleLogEntry,omitempty"`

	Result string `json:"result,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConsoleLogEntry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConsoleLogEntry") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderExtensionResult) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderExtensionResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoRenderResponse: See
// go/wrs-render-quality for how to evaluate the results. Next id: 24
type HtmlrenderWebkitHeadlessProtoRenderResponse struct {
	// ChromiumTrace: Contains chromium trace generated during page
	// rendering. This is present if a chromium_trace_config was provided in
	// the request.
	ChromiumTrace *HtmlrenderWebkitHeadlessProtoChromiumTrace `json:"chromiumTrace,omitempty"`

	// Cookie: Contents of the browser's cookie jar. (if cookies_enabled was
	// set to true in the RenderRequest).
	Cookie []*HtmlrenderWebkitHeadlessProtoCookie `json:"cookie,omitempty"`

	// Document: Contains the DOM tree, render tree and more. For details
	// consult document.proto.
	Document *HtmlrenderWebkitHeadlessProtoDocument `json:"document,omitempty"`

	// ExceptionDetail: Provides extra debugging details when certain
	// exception bits are set.
	ExceptionDetail string `json:"exceptionDetail,omitempty"`

	// Exceptions: Exceptions (possibly serious conditions) that occurred
	// during this rendering. 0 means none. Bitfield encoding. See the
	// RenderingException enum above for an explanation.
	Exceptions int64 `json:"exceptions,omitempty,string"`

	// ExtensionResult: Render extension results (if `devtools_script` was
	// provided with the request.)
	ExtensionResult *HtmlrenderWebkitHeadlessProtoRenderExtensionResult `json:"extensionResult,omitempty"`

	// FinalClientUrl: This field contains the final url as would appear in
	// the web browser's address bar. Note that JavaScript can modify the
	// contents of the location bar so this URL may not appear on the list
	// of referenced resources. If we fail to follow a redirect this field
	// will contain the URL that we failed to redirect to, not the last one
	// we successfully loaded.
	FinalClientUrl string `json:"finalClientUrl,omitempty"`

	// Image: Contains the viewport images rendered by webkit (if
	// generate_image was set to true in the RenderRequest). Will also
	// contain the print-mode images (if generate_print_mode_images was set
	// to true).
	Image []*HtmlrenderWebkitHeadlessProtoImage `json:"image,omitempty"`

	// LocalStorage: Contents of the browser's local storage.
	LocalStorage []*HtmlrenderWebkitHeadlessProtoDOMStorageItem `json:"localStorage,omitempty"`

	// PartialRender: Partial render snapshots (if requested by a render
	// extension)
	PartialRender []*HtmlrenderWebkitHeadlessProtoPartialRender `json:"partialRender,omitempty"`

	// Pdf: Contains the PDF document (if generate_pdf was set to true in
	// the RenderRequest)
	Pdf *HtmlrenderWebkitHeadlessProtoPdf `json:"pdf,omitempty"`

	// ReferencedResourceContent: Contents for all the urls fetched by the
	// render server. This field is present only if
	// generate_referenced_resource_content was set to true in the
	// RenderRequest.
	ReferencedResourceContent []*HtmlrenderWebkitHeadlessProtoResource `json:"referencedResourceContent,omitempty"`

	// RenderStats: Time to render the url, total size of a document, number
	// of referenced images, etc will be part of RenderStats.
	RenderStats *HtmlrenderWebkitHeadlessProtoRenderStats `json:"renderStats,omitempty"`

	// SessionStorage: Contents of the browser's session storage.
	SessionStorage []*HtmlrenderWebkitHeadlessProtoDOMStorageItem `json:"sessionStorage,omitempty"`

	// Title: Contains the page title produced by webkit, in the UTF-8
	// encoding.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChromiumTrace") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChromiumTrace") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderResponse) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoRenderStats: Next id: 17.
type HtmlrenderWebkitHeadlessProtoRenderStats struct {
	// AnonRenderFineTimingStats: Deliberately non-named fine timing stats.
	// These are all related to each other and unrelated to other timing
	// stats in this message.
	AnonRenderFineTimingStats []*HtmlrenderWebkitHeadlessProtoAnonTimingStatPair `json:"anonRenderFineTimingStats,omitempty"`

	// ConsoleLogEntry: Any messages logged by the renderer to the console.
	// Note that we capture a subset of the messages logged by the renderer
	// here to avoid explosion.
	ConsoleLogEntry []*HtmlrenderWebkitHeadlessProtoConsoleLogEntry `json:"consoleLogEntry,omitempty"`

	Counter []*HtmlrenderWebkitHeadlessProtoRenderStatsCounter `json:"counter,omitempty"`

	// DocumentBuildTimeMsec: Time to build document and render tree
	// response data.
	DocumentBuildTimeMsec int64 `json:"documentBuildTimeMsec,omitempty"`

	// DroppedLogEntryCount: Number of dropped log messages. Since we
	// capture only a subset of the messages in console_log_entry this field
	// is included just so that the consumers can get an idea of how many
	// actual attempts were made by the renderer.
	DroppedLogEntryCount int64 `json:"droppedLogEntryCount,omitempty"`

	// ImageEncodingTimeMsec: Image encoding (e.g. raw -> PNG) time.
	ImageEncodingTimeMsec int64 `json:"imageEncodingTimeMsec,omitempty"`

	// ImageScalingTimeMsec: Image scaling time.
	ImageScalingTimeMsec int64 `json:"imageScalingTimeMsec,omitempty"`

	// LayoutTimeMsec: Time from starting render to document finished
	// loading. This includes all fetches, parsing, decoding, running
	// JavaScript, etc.
	LayoutTimeMsec int64 `json:"layoutTimeMsec,omitempty"`

	// PaintTimeMsec: Time required to paint a document into our buffer.
	PaintTimeMsec int64 `json:"paintTimeMsec,omitempty"`

	// RenderCostMgcu: Total cost this render spent running and RPC cost in
	// milliGCUs.
	RenderCostMgcu int64 `json:"renderCostMgcu,omitempty"`

	// RenderEngine: Render engine used to render this document.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "BLINK_HEADLESS"
	//   "CHROME_HEADLESS"
	//   "UNKNOWN_DUE_TO_RPC_FAILURE"
	RenderEngine string `json:"renderEngine,omitempty"`

	// RenderRunningTimeMsec: Total CPU time this render spent running in
	// milliseconds.
	RenderRunningTimeMsec int64 `json:"renderRunningTimeMsec,omitempty"`

	// RenderServerBaselineCl: The CL from which the render engine was
	// built.
	RenderServerBaselineCl int64 `json:"renderServerBaselineCl,omitempty,string"`

	// RenderTimeMsec: Total wall time taken to render a document in
	// milliseconds.
	RenderTimeMsec int64 `json:"renderTimeMsec,omitempty"`

	// SandboxRenderTimeMsec: Total time spent in the sandbox in
	// milliseconds. This time includes all phases measured individually
	// below.
	SandboxRenderTimeMsec int64 `json:"sandboxRenderTimeMsec,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnonRenderFineTimingStats") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AnonRenderFineTimingStats") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderStats) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoRenderStatsCounter: Render event
// counters.
type HtmlrenderWebkitHeadlessProtoRenderStatsCounter struct {
	Count int64 `json:"count,omitempty,string"`

	// Name: By convention, counters may contain a "." which we use to
	// separate a metric name from a counter name in streamz.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderStatsCounter) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderStatsCounter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoRenderTreeNode struct {
	// Box: Box is set for render blocks ( , , etc). Box for any
	// RenderTreeNode can be found either in the RenderTreeNode itself or by
	// traversing up the ancestors until a RenderTreeNode with a Box is
	// found.
	Box *HtmlrenderWebkitHeadlessProtoBox `json:"box,omitempty"`

	// ChildRenderTreeNodeIndex: child_render_tree_node_index is an index
	// into the list of RenderTreeNodes stored in the Document. *** WARNING
	// ***: Don't use this field. Applications should not rely on the
	// structure of the render tree. This is an internal browser
	// implementation detail and it changes from time to time. Generally,
	// applications should obtain rendering information by starting with the
	// relevant DOMTreeNode and following pointers from there to the
	// relevant RenderTreeNodes.
	ChildRenderTreeNodeIndex []int64 `json:"childRenderTreeNodeIndex,omitempty"`

	// DomTreeNodeIndex: Index of the DOMTreeNode for which this
	// RenderTreeNode is applicable. This index can be used to lookup a
	// DOMTreeNode from list of DOMTreeNodes stored in the Document.
	DomTreeNodeIndex int64 `json:"domTreeNodeIndex,omitempty"`

	InlineTextBox []*HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox `json:"inlineTextBox,omitempty"`

	// RenderedText: The actual text that was rendered. This is applicable
	// only for text nodes.
	RenderedText string `json:"renderedText,omitempty"`

	// StyleIndex: Style index is set for rendered nodes (text nodes, image
	// nodes, widgets, etc). The style_index can be used to lookup the style
	// from the list of styles stored in the Document.
	StyleIndex int64 `json:"styleIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderTreeNode) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderTreeNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox: For text
// nodes, individual lines of text. This repeats rendered_text with more
// specific bounding boxes.
type HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox struct {
	Box *HtmlrenderWebkitHeadlessProtoBox `json:"box,omitempty"`

	RenderedText string `json:"renderedText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoResource: Next id: 9.
type HtmlrenderWebkitHeadlessProtoResource struct {
	// Content: content contains a complete HTTP response message including
	// the HTTP status line, headers and body. For example: HTTP/1.1 200
	// OK\r\n Content-Type: text/html\r\n \r\n ... content ... For inputs
	// (RenderRequest.resource): Any HTTP content encoding (e.g. gzip) and
	// transfer encoding (e.g. chunked) MUST be decoded. HTTP content and
	// transfer encoding headers will be ignored if present. For outputs
	// (RenderResponse.referenced_resource_content): The body will be
	// decoded (no content or transfer encoding) however any content or
	// transfer encoding headers present in the original fetch response will
	// be passed through. Decoding this field requires a correct text
	// encoding. The charset field of Document proto can be a good guess but
	// is not guaranteed to be correct.
	Content string `json:"content,omitempty"`

	// FetchSourceInfo: Where this resource comes from.
	FetchSourceInfo []*WirelessTranscoderFetchFetchSourceInfo `json:"fetchSourceInfo,omitempty"`

	// FinalContentUrl: The url that contributes the final content. Only
	// existed when metadata contains FetchReplyData.
	FinalContentUrl string `json:"finalContentUrl,omitempty"`

	Metadata []*WirelessTranscoderFetchFetchMetadata `json:"metadata,omitempty"`

	// Method: The HTTP request method (GET, HEAD, POST, etc) used for this
	// request. Values are taken from the HTTPHeaders::Protocol enum in
	// webutil/http/httputils.h. If it's not set, we will infer GET or POST
	// based on the presence of post_data.
	Method int64 `json:"method,omitempty"`

	PostData string `json:"postData,omitempty"`

	// RequestHeader: Only necessary headers are included in the resource
	// key by default. See
	// google3/htmlrender/webkit_headless/resource_key.cc
	RequestHeader []*HtmlrenderWebkitHeadlessProtoResourceHttpHeader `json:"requestHeader,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoResource) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoResource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type HtmlrenderWebkitHeadlessProtoResourceHttpHeader struct {
	Name string `json:"name,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoResourceHttpHeader) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoResourceHttpHeader
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoScriptStackFrame: Describes a script
// stack frame.
type HtmlrenderWebkitHeadlessProtoScriptStackFrame struct {
	// ColumnNumber: The current column number for the stack frame.
	ColumnNumber int64 `json:"columnNumber,omitempty"`

	// FunctionName: The function name of the stack frame.
	FunctionName string `json:"functionName,omitempty"`

	// LineNumber: The current line number for the stack frame.
	LineNumber int64 `json:"lineNumber,omitempty"`

	// Url: The URL of the script being executed.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ColumnNumber") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ColumnNumber") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoScriptStackFrame) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoScriptStackFrame
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoStyle: Next id: 54
type HtmlrenderWebkitHeadlessProtoStyle struct {
	// Possible values:
	//   "SCROLL"
	//   "FIXED"
	BackgroundAttachment string `json:"backgroundAttachment,omitempty"`

	// BackgroundColorArgb: Background color encoded as ARGB
	BackgroundColorArgb int64 `json:"backgroundColorArgb,omitempty"`

	BackgroundGradientColorStopArgb []int64 `json:"backgroundGradientColorStopArgb,omitempty"`

	BackgroundGradientRepeat bool `json:"backgroundGradientRepeat,omitempty"`

	// Possible values:
	//   "LINEAR"
	//   "RADIAL"
	BackgroundGradientType string `json:"backgroundGradientType,omitempty"`

	// Possible values:
	//   "NO_REPEAT"
	//   "REPEAT"
	//   "REPEAT_X"
	//   "REPEAT_Y"
	BackgroundImageRepeat string `json:"backgroundImageRepeat,omitempty"`

	// BackgroundImageUrl: The url of the background image in the first
	// layer.
	BackgroundImageUrl string `json:"backgroundImageUrl,omitempty"`

	// BackgroundImageXPos: Background image position (x, y).
	BackgroundImageXPos *HtmlrenderWebkitHeadlessProtoOffset `json:"backgroundImageXPos,omitempty"`

	BackgroundImageYPos *HtmlrenderWebkitHeadlessProtoOffset `json:"backgroundImageYPos,omitempty"`

	// Possible values:
	//   "CONTAIN"
	//   "COVER"
	//   "SIZE_LENGTH"
	//   "SIZE_NONE"
	BackgroundSize string `json:"backgroundSize,omitempty"`

	BackgroundSizeHeight *HtmlrenderWebkitHeadlessProtoOffset `json:"backgroundSizeHeight,omitempty"`

	// BackgroundSizeWidth: Only present (but may be missing) if
	// background_size == SIZE_LENGTH.
	BackgroundSizeWidth *HtmlrenderWebkitHeadlessProtoOffset `json:"backgroundSizeWidth,omitempty"`

	BorderColorArgbBottom int64 `json:"borderColorArgbBottom,omitempty"`

	BorderColorArgbLeft int64 `json:"borderColorArgbLeft,omitempty"`

	BorderColorArgbRight int64 `json:"borderColorArgbRight,omitempty"`

	BorderColorArgbTop int64 `json:"borderColorArgbTop,omitempty"`

	BorderPixelWidthBottom int64 `json:"borderPixelWidthBottom,omitempty"`

	BorderPixelWidthLeft int64 `json:"borderPixelWidthLeft,omitempty"`

	BorderPixelWidthRight int64 `json:"borderPixelWidthRight,omitempty"`

	BorderPixelWidthTop int64 `json:"borderPixelWidthTop,omitempty"`

	// Possible values:
	//   "BNONE"
	//   "BHIDDEN"
	//   "INSET"
	//   "GROOVE"
	//   "RIDGE"
	//   "OUTSET"
	//   "DOTTED"
	//   "DASHED"
	//   "SOLID"
	//   "DOUBLE"
	BorderStyleBottom string `json:"borderStyleBottom,omitempty"`

	// Possible values:
	//   "BNONE"
	//   "BHIDDEN"
	//   "INSET"
	//   "GROOVE"
	//   "RIDGE"
	//   "OUTSET"
	//   "DOTTED"
	//   "DASHED"
	//   "SOLID"
	//   "DOUBLE"
	BorderStyleLeft string `json:"borderStyleLeft,omitempty"`

	// Possible values:
	//   "BNONE"
	//   "BHIDDEN"
	//   "INSET"
	//   "GROOVE"
	//   "RIDGE"
	//   "OUTSET"
	//   "DOTTED"
	//   "DASHED"
	//   "SOLID"
	//   "DOUBLE"
	BorderStyleRight string `json:"borderStyleRight,omitempty"`

	// Possible values:
	//   "BNONE"
	//   "BHIDDEN"
	//   "INSET"
	//   "GROOVE"
	//   "RIDGE"
	//   "OUTSET"
	//   "DOTTED"
	//   "DASHED"
	//   "SOLID"
	//   "DOUBLE"
	BorderStyleTop string `json:"borderStyleTop,omitempty"`

	// Clip: Default value for clip is "auto", which is represented here as
	// !has_clip().
	Clip *HtmlrenderWebkitHeadlessProtoRectangle `json:"clip,omitempty"`

	// Possible values:
	//   "LTR"
	//   "RTL"
	Direction string `json:"direction,omitempty"`

	// Possible values:
	//   "BLOCK"
	//   "INLINE"
	//   "INLINE_BLOCK"
	Display string `json:"display,omitempty"`

	// FontFamily: Font and text decorations:
	FontFamily string `json:"fontFamily,omitempty"`

	FontSize int64 `json:"fontSize,omitempty"`

	// Possible values:
	//   "FONT_NORMAL"
	//   "FONT_ITALIC"
	FontStyle string `json:"fontStyle,omitempty"`

	FontWeight int64 `json:"fontWeight,omitempty"`

	// ForegroundColorArgb: Foreground color encoded as ARGB
	ForegroundColorArgb int64 `json:"foregroundColorArgb,omitempty"`

	// HasBackground: Starting from Chromium, has_background is set when
	// there is a non-empty specification for background_image, whether it
	// be a url, gradient or other cases, such as cross-fade. Besides
	// setting this field, We additionally parse url and gradient cases and
	// populate some of the following background fields.
	HasBackground bool `json:"hasBackground,omitempty"`

	ListStyleImageUrl string `json:"listStyleImageUrl,omitempty"`

	// Possible values:
	//   "DEFAULT_DISC"
	//   "CIRCLE"
	//   "SQUARE"
	//   "DECIMAL_LIST_STYLE"
	//   "DECIMAL_LEADING_ZERO"
	//   "ARABIC_INDIC"
	//   "BINARY_LIST_STYLE"
	//   "BENGALI"
	//   "CAMBODIAN"
	//   "KHMER"
	//   "DEVANAGARI"
	//   "GUJARATI"
	//   "GURMUKHI"
	//   "KANNADA"
	//   "LOWER_HEXADECIMAL"
	//   "LAO"
	//   "MALAYALAM"
	//   "MONGOLIAN"
	//   "MYANMAR"
	//   "OCTAL"
	//   "ORIYA"
	//   "PERSIAN"
	//   "URDU"
	//   "TELUGU"
	//   "TIBETAN"
	//   "THAI"
	//   "UPPER_HEXADECIMAL"
	//   "LOWER_ROMAN"
	//   "UPPER_ROMAN"
	//   "LOWER_GREEK"
	//   "LOWER_ALPHA"
	//   "LOWER_LATIN"
	//   "UPPER_ALPHA"
	//   "UPPER_LATIN"
	//   "AFAR"
	//   "ETHIOPIC_HALEHAME_AA_ET"
	//   "ETHIOPIC_HALEHAME_AA_ER"
	//   "AMHARIC"
	//   "ETHIOPIC_HALEHAME_AM_ET"
	//   "AMHARIC_ABEGEDE"
	//   "ETHIOPIC_ABEGEDE_AM_ET"
	//   "CJK_EARTHLY_BRANCH"
	//   "CJK_HEAVENLY_STEM"
	//   "ETHIOPIC"
	//   "ETHIOPIC_HALEHAME_GEZ"
	//   "ETHIOPIC_ABEGEDE"
	//   "ETHIOPIC_ABEGEDE_GEZ"
	//   "HANGUL_CONSONANT"
	//   "HANGUL"
	//   "LOWER_NORWEGIAN"
	//   "OROMO"
	//   "ETHIOPIC_HALEHAME_OM_ET"
	//   "SIDAMA"
	//   "ETHIOPIC_HALEHAME_SID_ET"
	//   "SOMALI"
	//   "ETHIOPIC_HALEHAME_SO_ET"
	//   "TIGRE"
	//   "ETHIOPIC_HALEHAME_TIG"
	//   "TIGRINYA_ER"
	//   "ETHIOPIC_HALEHAME_TI_ER"
	//   "TIGRINYA_ER_ABEGEDE"
	//   "ETHIOPIC_ABEGEDE_TI_ER"
	//   "TIGRINYA_ET"
	//   "ETHIOPIC_HALEHAME_TI_ET"
	//   "TIGRINYA_ET_ABEGEDE"
	//   "ETHIOPIC_ABEGEDE_TI_ET"
	//   "UPPER_GREEK"
	//   "UPPER_NORWEGIAN"
	//   "ASTERISKS"
	//   "FOOTNOTES"
	//   "HEBREW"
	//   "ARMENIAN"
	//   "LOWER_ARMENIAN"
	//   "UPPER_ARMENIAN"
	//   "GEORGIAN"
	//   "CJK_IDEOGRAPHIC"
	//   "HIRAGANA"
	//   "KATAKANA"
	//   "HIRAGANA_IROHA"
	//   "KATAKANA_IROHA"
	//   "NONE_LIST_STYLE"
	ListStyleType string `json:"listStyleType,omitempty"`

	MarginBottom *HtmlrenderWebkitHeadlessProtoOffset `json:"marginBottom,omitempty"`

	MarginLeft *HtmlrenderWebkitHeadlessProtoOffset `json:"marginLeft,omitempty"`

	MarginRight *HtmlrenderWebkitHeadlessProtoOffset `json:"marginRight,omitempty"`

	// MarginTop: Margin
	MarginTop *HtmlrenderWebkitHeadlessProtoOffset `json:"marginTop,omitempty"`

	Opacity float64 `json:"opacity,omitempty"`

	// Possible values:
	//   "OVISIBLE"
	//   "OHIDDEN"
	//   "OSCROLL"
	//   "OAUTO"
	//   "OOVERLAY"
	//   "OMARQUEE"
	OverflowX string `json:"overflowX,omitempty"`

	// Possible values:
	//   "OVISIBLE"
	//   "OHIDDEN"
	//   "OSCROLL"
	//   "OAUTO"
	//   "OOVERLAY"
	//   "OMARQUEE"
	OverflowY string `json:"overflowY,omitempty"`

	PaddingBottom *HtmlrenderWebkitHeadlessProtoOffset `json:"paddingBottom,omitempty"`

	PaddingLeft *HtmlrenderWebkitHeadlessProtoOffset `json:"paddingLeft,omitempty"`

	PaddingRight *HtmlrenderWebkitHeadlessProtoOffset `json:"paddingRight,omitempty"`

	// PaddingTop: Padding
	PaddingTop *HtmlrenderWebkitHeadlessProtoOffset `json:"paddingTop,omitempty"`

	// Possible values:
	//   "POSITION_STATIC"
	//   "POSITION_RELATIVE"
	//   "POSITION_ABSOLUTE"
	//   "POSITION_FIXED"
	Position string `json:"position,omitempty"`

	// ReferencedResourceIndex: List of referenced resource indexes for any
	// resources that this style references. (e.g. background images.) (see
	// document.proto)
	ReferencedResourceIndex []int64 `json:"referencedResourceIndex,omitempty"`

	// Possible values:
	//   "DEFAULT_TASTART"
	//   "LEFT"
	//   "RIGHT"
	//   "CENTER"
	//   "JUSTIFY"
	//   "WEBKIT_LEFT"
	//   "WEBKIT_RIGHT"
	//   "WEBKIT_CENTER"
	//   "TAEND"
	TextAlign string `json:"textAlign,omitempty"`

	// Possible values:
	//   "NONE"
	//   "UNDERLINED"
	//   "LINE_THROUGH"
	TextDecoration string `json:"textDecoration,omitempty"`

	TextShadowColorArgb int64 `json:"textShadowColorArgb,omitempty"`

	// Possible values:
	//   "VISIBLE"
	//   "HIDDEN"
	//   "COLLAPSE"
	Visibility string `json:"visibility,omitempty"`

	// ZIndex: Default value for z-index is "auto" which means "inherit from
	// parent".
	ZIndex int64 `json:"zIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BackgroundAttachment") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BackgroundAttachment") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoStyle) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoStyle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *HtmlrenderWebkitHeadlessProtoStyle) UnmarshalJSON(data []byte) error {
	type NoMethod HtmlrenderWebkitHeadlessProtoStyle
	var s1 struct {
		Opacity gensupport.JSONFloat64 `json:"opacity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Opacity = float64(s1.Opacity)
	return nil
}

// HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata:
// WebkKitFetchMetadata holds additional webkit-specific information for
// a single resource fetch.
type HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata struct {
	// DevtoolsFrameId: Chromium DevTools frame ID of the frame that
	// initiated this fetch. Only populated in the streaming render service
	// with FETCH_MODE_CLIENT.
	DevtoolsFrameId string `json:"devtoolsFrameId,omitempty"`

	// Possible values:
	//   "TARGET_UNSPECIFIED"
	//   "TARGET_MAIN_FRAME"
	//   "TARGET_SUBFRAME"
	//   "TARGET_SUBRESOURCE" - Shouldn't really ever see this one.
	//   "TARGET_STYLE_SHEET"
	//   "TARGET_SCRIPT"
	//   "TARGET_FONT"
	//   "TARGET_IMAGE"
	//   "TARGET_OBJECT"
	//   "TARGET_MEDIA"
	//   "TARGET_WORKER"
	//   "TARGET_SHARED_WORKER"
	//   "TARGET_PREFETCH"
	//   "TARGET_FAVICON"
	//   "TARGET_XHR"
	//   "TARGET_TEXT_TRACK"
	//   "TARGET_BEACON"
	//   "TARGET_FILE"
	//   "TARGET_MANIFEST"
	//   "TARGET_PING"
	//   "TARGET_RAW"
	//   "TARGET_EVENT_SOURCE"
	TargetType string `json:"targetType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DevtoolsFrameId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DevtoolsFrameId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// HtmlrenderWebkitHeadlessProtoWindowOpenEvent: Corresponds to a call
// to window.open(). Note that a WindowOpenEvent will be present whether
// or not the call was successful.
type HtmlrenderWebkitHeadlessProtoWindowOpenEvent struct {
	// Allowed: Whether or not the window was allowed to be opened by the
	// popup blocker. Unless user events are created with a render extension
	// this should be false.
	Allowed bool `json:"allowed,omitempty"`

	// Url: The URL for the new window. Note that this is the URL after it
	// has been processed by WebKit, so, for example, relative links passed
	// to window.create() will have been made absolute.
	Url string `json:"url,omitempty"`

	// WindowFeatures: Window features passed to window.open().
	WindowFeatures string `json:"windowFeatures,omitempty"`

	// WindowName: Window name passed to window.open(). If no name is
	// provided this defaults to "_blank".
	WindowName string `json:"windowName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Allowed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Allowed") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *HtmlrenderWebkitHeadlessProtoWindowOpenEvent) MarshalJSON() ([]byte, error) {
	type NoMethod HtmlrenderWebkitHeadlessProtoWindowOpenEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// I18nPhonenumbersPhoneNumber: The PhoneNumber object that is used by
// all LibPhoneNumber API's to fully represent a phone number.
type I18nPhonenumbersPhoneNumber struct {
	// CountryCode: The country calling code for this number, as defined by
	// the International Telecommunication Union (ITU). For example, this
	// would be 1 for NANPA countries, and 33 for France.
	CountryCode int64 `json:"countryCode,omitempty"`

	// CountryCodeSource: The source from which the country_code is derived.
	//
	// Possible values:
	//   "UNSPECIFIED" - Default value returned if this is not set, because
	// the phone number was created using parse, not parseAndKeepRawInput.
	// hasCountryCodeSource will return false if this is the case.
	//   "FROM_NUMBER_WITH_PLUS_SIGN" - The country_code is derived based on
	// a phone number with a leading "+", e.g. the French number "+33 1 42
	// 68 53 00".
	//   "FROM_NUMBER_WITH_IDD" - The country_code is derived based on a
	// phone number with a leading IDD, e.g. the French number "011 33 1 42
	// 68 53 00", as it is dialled from US.
	//   "FROM_NUMBER_WITHOUT_PLUS_SIGN" - The country_code is derived based
	// on a phone number without a leading "+", e.g. the French number "33 1
	// 42 68 53 00" when defaultCountry is supplied as France.
	//   "FROM_DEFAULT_COUNTRY" - The country_code is derived NOT based on
	// the phone number itself, but from the defaultCountry parameter
	// provided in the parsing function by the clients. This happens mostly
	// for numbers written in the national format (without country code).
	// For example, this would be set when parsing the French number "01 42
	// 68 53 00", when defaultCountry is supplied as France.
	CountryCodeSource string `json:"countryCodeSource,omitempty"`

	// Extension: Extension is not standardized in ITU recommendations,
	// except for being defined as a series of numbers with a maximum length
	// of 40 digits. It is defined as a string here to accommodate for the
	// possible use of a leading zero in the extension (organizations have
	// complete freedom to do so, as there is no standard defined). Other
	// than digits, some other dialling characters such as "," (indicating a
	// wait) may be stored here.
	Extension string `json:"extension,omitempty"`

	// ItalianLeadingZero: In some countries, the national (significant)
	// number starts with one or more "0"s without this being a national
	// prefix or trunk code of some kind. For example, the leading zero in
	// the national (significant) number of an Italian phone number
	// indicates the number is a fixed-line number. There have been plans to
	// migrate fixed-line numbers to start with the digit two since December
	// 2000, but it has not happened yet. See
	// http://en.wikipedia.org/wiki/%2B39 for more details. These fields can
	// be safely ignored (there is no need to set them) for most countries.
	// Some limited number of countries behave like Italy - for these cases,
	// if the leading zero(s) of a number would be retained even when
	// dialling internationally, set this flag to true, and also set the
	// number of leading zeros. Clients who use the parsing or conversion
	// functionality of the i18n phone number libraries (go/phonenumbers)
	// will have these fields set if necessary automatically.
	ItalianLeadingZero bool `json:"italianLeadingZero,omitempty"`

	// NationalNumber: The National (significant) Number, as defined in
	// International Telecommunication Union (ITU) Recommendation E.164,
	// without any leading zero. The leading-zero is stored separately if
	// required, since this is an uint64 and hence cannot store such
	// information. Do not use this field directly: if you want the national
	// significant number, call the getNationalSignificantNumber method of
	// PhoneNumberUtil. For countries which have the concept of an "area
	// code" or "national destination code", this is included in the
	// National (significant) Number. Although the ITU says the maximum
	// length should be 15, we have found longer numbers in some countries
	// e.g. Germany. Note that the National (significant) Number does not
	// contain the National (trunk) prefix. Obviously, as a uint64, it will
	// never contain any formatting (hyphens, spaces, parentheses), nor any
	// alphanumeric spellings.
	NationalNumber uint64 `json:"nationalNumber,omitempty,string"`

	// NumberOfLeadingZeros: Full description of this field in the comment
	// for italian_leading_zero since this field will only be set when
	// italian_leading_zero is true.
	NumberOfLeadingZeros int64 `json:"numberOfLeadingZeros,omitempty"`

	// PreferredDomesticCarrierCode: The carrier selection code that is
	// preferred when calling this phone number domestically. This also
	// includes codes that need to be dialed in some countries when calling
	// from landlines to mobiles or vice versa. For example, in Columbia, a
	// "3" needs to be dialed before the phone number itself when calling
	// from a mobile phone to a domestic landline phone and vice versa. Note
	// this is the "preferred" code, which means other codes may work as
	// well.
	PreferredDomesticCarrierCode string `json:"preferredDomesticCarrierCode,omitempty"`

	// RawInput: This field is used to store the raw input string containing
	// phone numbers before it was canonicalized by the library. For
	// example, it could be used to store alphanumerical numbers such as
	// "1-800-GOOG-411".
	RawInput string `json:"rawInput,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *I18nPhonenumbersPhoneNumber) MarshalJSON() ([]byte, error) {
	type NoMethod I18nPhonenumbersPhoneNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageBaseThumbnailMetadata: Next ID: 15
type ImageBaseThumbnailMetadata struct {
	// ByteSize: the size of the stored thumbnail
	ByteSize int64 `json:"byteSize,omitempty"`

	// Crops: SmartCrop crop-hints By default, this field is not populated.
	Crops *ContentAwareCropsIndexing `json:"crops,omitempty"`

	// DeepCrop: DeepCrop crop-hints. Usage in thumbnails could be
	// deprecated in favor or deep_crop_pixels (below). By default, this
	// field is not populated.
	DeepCrop *DeepCropIndexing `json:"deepCrop,omitempty"`

	// DeepCropPixels: DeepCrop signal in pixels, equivalent to deep_crop
	// (above) but with pixels instead of percentages. By default, this
	// field is not populated.
	DeepCropPixels *DeepCropPixels `json:"deepCropPixels,omitempty"`

	// Docid: the Amarna docid of the thumbnail
	Docid uint64 `json:"docid,omitempty,string"`

	// EncryptedDocid: encrypted version of docid
	EncryptedDocid string `json:"encryptedDocid,omitempty"`

	// Fprint: the fprint of the thumbnail
	Fprint uint64 `json:"fprint,omitempty,string"`

	// Height: the height of the stored thumbnail
	Height int64 `json:"height,omitempty"`

	// MimeType: The mime_type of the thumbnail ("image/jpeg", "image/png",
	// etc.).
	MimeType string `json:"mimeType,omitempty"`

	OriginalHeight int64 `json:"originalHeight,omitempty"`

	// OriginalWidth: Not populated by Amarna/image pipelines, ever. This
	// was apparently introduced by a customer that wished to extend
	// ThumbnailMetadata with this custom data.
	OriginalWidth int64 `json:"originalWidth,omitempty"`

	// Possible values:
	//   "THUMBNAIL_TYPE_DEFAULT" - DEPRECATED - use THUMBNAIL_TYPE_AREA_50K
	// if possible. The default thumbnail type is deprecated and no longer
	// served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you
	// must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.
	//   "THUMBNAIL_TYPE_AREA_50K" - This is the most common thumbnail type,
	// used in image search results. It is defined to have 50625 pixels (=
	// 225 x 225).
	//   "THUMBNAIL_TYPE_400" - This refers to a thumbnail that fits in a
	// 400x400 box.
	//   "THUMBNAIL_TYPE_800" - This refers to a thumbnail that fits in a
	// 800x800 box.
	//   "THUMBNAIL_TYPE_ORIGINAL" - This refers to re-encoding original
	// image to JPEG at the same size (up to 10000x10000). Output quality
	// may be lower.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ" - Re-encode image at the same size as
	// original (up to 10000x10000) but with high-quality (q=90). This was
	// introduced by TYPHOON client and is expected only for very few images
	// in our table (under 10k). If you plan to use this contact amarna-dev@
	// and/or crt@
	//   "THUMBNAIL_TYPE_FAVICON_16" - These refer to favicon thumbnails of
	// 16x16, 32x32 or 64x64. If the original image is an ico file
	// containing multiple embedded images including 16x16, 32x32 or 64x64,
	// these thumbnails are derived from the embedded image of the
	// corresponding size. (If no such embedded image is found, prefer the
	// closest size that's larger. If still no such size exists, prefer
	// largest.) If no such size exists, these thumbnails are rescaled to an
	// image whose maximum dimension is 16, 28, 32 or 64.
	//   "THUMBNAIL_TYPE_FAVICON_28"
	//   "THUMBNAIL_TYPE_FAVICON_32"
	//   "THUMBNAIL_TYPE_FAVICON_64"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL" - This type of favicon will
	// preserve the size of the original image.
	//   "THUMBNAIL_TYPE_FAVICON_16_DARK" - These refer to favicon
	// thumbnails for dark mode. This triggers dark mode on the SVG decoding
	// (and otherwise, the same as the above favicon types)
	//   "THUMBNAIL_TYPE_FAVICON_28_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_32_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_64_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK"
	//   "THUMBNAIL_TYPE_1080" - This refers to a thumbnail that fits in a
	// 1080x1080 box.
	//   "THUMBNAIL_TYPE_1600_HQ" - This refers to a thumbnail that fits in
	// a 1600x1600 box and is encoded with high-quality (q=90). Contact
	// amarna-dev@/crt@/bingwang@ for using it.
	//   "THUMBNAIL_TYPE_AREA_300K" - This uses the same MaxAreaSizer as
	// THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (=
	// 640 x 480).
	//   "THUMBNAIL_TYPE_AREA_50K_ALPHA" - This is like
	// THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.
	//   "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA" - DEPRECATED - Please do
	// not introduce new requests for this type. It will be eliminated soon.
	// Until then, it will behave like the AREA_50K_ALPHA type -- use that
	// instead.
	//   "THUMBNAIL_TYPE_AREA_2M" - This refers to a thumbnail with at most
	// 2073600 pixels (=1920*1080). The image will be scaled down to 2M
	// while preserving the aspect ratio if it's too large. If the thumbnail
	// is in JPEG format, it is encoded with quality = 85. Besides, it
	// supports alpha channel by default and does not convert lossless
	// formats to JPEG.
	//   "THUMBNAIL_TYPE_AREA_2M_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_800_ALPHA_WHITE" - In alpha-white thumbs, colors
	// are remapped in RGBA to be more transparent the closer they are to
	// white. This is for use with white-background images, so that the
	// perceived background color can be darkened by rendering over gray.
	// See go/alpha-white-thumbs for details and limitations. Sizing matches
	// non-ALPHA_WHITE equivalents.
	//   "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE"
	//   "THUMBNAIL_TYPE_ANIMATED_H144" - Height-scaled animated thumb
	// types, encoded as H264 previews. Suffix gives height, e.g. _H144
	// indicates height 144. Width is a scaled multiple-of-8 value so the
	// thumb has approximately the same aspect ratio as the original. For
	// more info, see http://go/animated-thumbs.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED" - New thumbnail type for
	// licensed contents. From a thumbnail generation perspective this
	// behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a
	// separate thumbnail type to enable takedowns requested by owner.
	// WARNING: This type is primarily used by go/licensed-media-service and
	// is subject to policy changes. Please contact
	// g/license-media-service-team before using.
	//   "THUMBNAIL_TYPE_TENOR_250K_GIF" - Tenor gifs
	// go/tenor-integration-binary-serving-discussion
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF"
	//   "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF"
	//   "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF"
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP" - Similar to THUMBNAIL_TYPE_AREA_2M
	// but pre-transcoded to WebP and AVIF format, as those two format can
	// be slow to transcode in serving time. Currently only generated for
	// AMP images. These two thumbnails are static images despite that their
	// formats support animation.
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF" - AVIF is not yet a supported input
	// for SCS serving time thumbnailing, trying to do so will give errors.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_50K_WEBP" - WebP format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_AREA_50K_AVIF" - AVIF format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" - WARNING: This type is dedicated
	// to KG_IMAGE client. http://b/234653726
	Type string `json:"type,omitempty"`

	// Width: the width of the stored thumbnail
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ByteSize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ByteSize") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageBaseThumbnailMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageBaseThumbnailMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageBaseVideoPreviewMetadata: This message is used internally in
// Amarna and is also used to store information in the
// VideoWebAttachment portion of the websearch index. Only the following
// fields will be used in the index: VideoPreviewType type int32 width
// int32 height byte byte_size If more fields are added, please update
// this list.
type ImageBaseVideoPreviewMetadata struct {
	// ByteSize: Size of the stored preview.
	ByteSize int64 `json:"byteSize,omitempty"`

	// Docid: 64 bit docid of the original video.
	Docid uint64 `json:"docid,omitempty,string"`

	// Duration: TODO (yzliu): consider using duration_ms as field name
	// since it is number of milliseconds. Duration of the preview in ms.
	Duration int64 `json:"duration,omitempty"`

	// ExpirationTimestampMicros: Expiration timestamp of preview in
	// microseconds since epoch.
	ExpirationTimestampMicros int64 `json:"expirationTimestampMicros,omitempty,string"`

	// Fprint:
	// LINT.ThenChange(//depot/google3/video/crawl/indexing/signal_combiner.c
	// c:video_preview) Fingerprint of the preview.
	Fprint uint64 `json:"fprint,omitempty,string"`

	// Height: Height of the stored preview.
	Height int64 `json:"height,omitempty"`

	// MimeType: Mime type of the preview ("video/mp4").
	MimeType string `json:"mimeType,omitempty"`

	// State: Indicates the state in Venom for this preview type.
	//
	// Possible values:
	//   "STATE_UNKNOWN"
	//   "STATE_DONE" - Final states (ie states in which we would stay ##
	// unless the client revises the expectations) As far as the relevant
	// service is concerned, the asset has been fully produced.
	//   "STATE_NOT_APPLICABLE" - As far as the service is concerned, the
	// asset should not be produced (say, HD for a SD input)
	//   "STATE_MISSING" - STATE_MISSING indicates the asset needs to be
	// created. It is a transient state from STATE_DIRTY. It is also the
	// final state if the asset failed to be created within its allowed
	// number of retries.
	//   "STATE_DELETED" - The asset has been removed. This is the final
	// state for assets that were previously OBSOLETE, or for goals of
	// UNWANTED.
	//   "STATE_DIRTY" - Purely transient states, that will be reconciled to
	// a final ## state at some point. The client is not happy with the
	// state of an asset, and wants to get it regenerated.
	//   "STATE_OBSOLETE" - The asset has been produced in the past, but is
	// not needed anymore. We'll try to delete it shortly.
	//   "STATE_PENDING_PUBLICATION" - The asset is ready to be published
	// but is waiting for other assets in its group. This state is between
	// MISSING/DIRTY and DONE.
	//   "STATE_FAILED" - RESERVED. This state is deprecated.
	State string `json:"state,omitempty"`

	// Timestamp: Timestamp of start of preview in ms.
	Timestamp int64 `json:"timestamp,omitempty"`

	// Type: LINT.IfChange
	//
	// Possible values:
	//   "VPREVIEW_TYPE_8K" - This corresponds to 128x72, 10fps.
	//   "VPREVIEW_TYPE_30K" - This corresponds to 256x144, 10fps.
	//   "VPREVIEW_TYPE_90K" - This corresponds to 384x216, 10fps.
	//   "VPREVIEW_TYPE_300K_24FPS" - This corresponds to 640x360, 24fps.
	//   "VPREVIEW_TYPE_VERTICAL_30K" - This corresponds to 144x256, 10fps.
	//   "VPREVIEW_TYPE_VERTICAL_90K" - This corresponds to 216x384, 10fps.
	//   "VPREVIEW_TYPE_540K_ORIGINAL_HQ_LICENSED" - This corresponds to
	// 854x480, 24fps. This preview type is used for LMS videos only.
	//   "VPREVIEW_TYPE_90K_SPORT_HIGHLIGHT" - This corresponds to 384x216,
	// 10fps previews created with a Sport Highlight specific model.
	// LINT.ThenChange(
	// //depot/google3/video/pipeline/graph/sequences/mp4_moving_thumbnail.go
	//  )
	//   "VPREVIEW_TYPE_VIDEO_ANSWER_300K_15SEC" - Video Answer previews
	// (640x360, 10fps). See go/vsva-le1-doc and go/vsva-serving-design for
	// the details. previews up to 15 seconds
	//   "VPREVIEW_TYPE_VIDEO_ANSWER_300K_6SEC" - previews up to 6 seconds
	//   "VPREVIEW_TENOR_250K_PREVIEW" - LINT.IfChange Tenor VPREIVEW is
	// added by cl/237845543 (billzeng) This corresponds to 498*498, max
	// 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_OPTIMIZED_PREVIEW" - This corresponds to
	// 220*498, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_30K_OPTIMIZED_THUMBNAIL_PREVIEW" - This corresponds
	// to 498*60, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_45K_OPTIMIZED_90P_PREVIEW" - This corresponds to
	// 498*90, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_50K_OPTIMIZED_100P_PREVIEW" - This corresponds to
	// 498*100, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_OPTIMIZED_200P_PREVIEW" - This corresponds to
	// 498*200, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_50K_OPTIMIZED_100W_PREVIEW" - This corresponds to
	// 100*498, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_OPTIMIZED_200W_PREVIEW" - This corresponds to
	// 200*498, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_250K_MEDIUM_PREVIEW" - This corresponds to 498*498,
	// max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_250K_TINY_VIDEO_PREVIEW" - This corresponds to
	// 498*498, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_250K_NANO_VIDEO_PREVIEW" - This corresponds to
	// 498*498, max 18fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_PREVIEW_MP4" - This corresponds to 498*200,
	// max 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_250K_MP4" - This corresponds to 498*498 max 10fps.
	// Preview for Tenor only.
	//   "VPREVIEW_TENOR_250K_MP4_AV" - This corresponds to 498*498, max
	// 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_160K_TINY_MP4" - This corresponds to 320*498, max
	// 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_75K_NANO_MP4" - This corresponds to 150*498, max
	// 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_50K_FIXED_100P_MP4" - This corresponds to 498*100,
	// max 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_FIXED_200P_MP4" - This corresponds to 498*200,
	// max 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_50K_FIXED_100W_MP4" - This corresponds to 100*498,
	// max 10fps. Preview for Tenor only.
	//   "VPREVIEW_TENOR_100K_FIXED_200W_MP4" - This corresponds to 200*498,
	// max 10fps. Preview for Tenor only. LINT.ThenChange(
	// //depot/google3/image/tenor/eleven/util/format_helpers.cc,
	// //depot/google3/image/tenor/eleven/util/format_helpers_test.cc, )
	Type string `json:"type,omitempty"`

	// Width: Width of the stored preview.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ByteSize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ByteSize") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageBaseVideoPreviewMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageBaseVideoPreviewMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageContentFlowProtoProd: The subset of FlowProto that we want to go
// into production AND be stored in ContentSignals.
type ImageContentFlowProtoProd struct {
	// Starburst: Repeated so that multiple versions can exist in prod
	// simultaneously.
	Starburst []*ImageContentStarburstVersionGroup `json:"starburst,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Starburst") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Starburst") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageContentFlowProtoProd) MarshalJSON() ([]byte, error) {
	type NoMethod ImageContentFlowProtoProd
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageContentQueryBoost: Image content based multipliers. Current
// usage is in the pamir_section.
type ImageContentQueryBoost struct {
	Queryboost []*ImageContentQueryBoostQueryBoost `json:"queryboost,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Queryboost") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Queryboost") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageContentQueryBoost) MarshalJSON() ([]byte, error) {
	type NoMethod ImageContentQueryBoost
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageContentQueryBoostQueryBoost struct {
	// Boost: Score multiplier (fully normalized 1 is nop).
	Boost float64 `json:"boost,omitempty"`

	// Query: Canonicalized query string.
	Query string `json:"query,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Boost") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Boost") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageContentQueryBoostQueryBoost) MarshalJSON() ([]byte, error) {
	type NoMethod ImageContentQueryBoostQueryBoost
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageContentQueryBoostQueryBoost) UnmarshalJSON(data []byte) error {
	type NoMethod ImageContentQueryBoostQueryBoost
	var s1 struct {
		Boost gensupport.JSONFloat64 `json:"boost"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Boost = float64(s1.Boost)
	return nil
}

type ImageContentStarburstVersionGroup struct {
	// DescriptorFloat: Raw dense float feature vector.
	DescriptorFloat []float64 `json:"descriptorFloat,omitempty"`

	// DescriptorShort: Short descriptor for image content features, e.g.
	// compressed bytes. This is the compressed version of descriptor_float
	// below. It can be can be decompressed to descriptor_float with a tiny
	// bit of compression error (in most cases it should be totally fine).
	DescriptorShort string `json:"descriptorShort,omitempty"`

	// Possible values:
	//   "UNKNOWN_VERSION"
	//   "STARBURST_V1"
	//   "STARBURST_V2"
	//   "STARBURST_V3"
	//   "STARBURST_V4"
	//   "STARBURST_VISUAL_V4"
	//   "STARBURST_V5"
	//   "STARBURST_V5_5"
	EnumVersion string `json:"enumVersion,omitempty"`

	// Possible values:
	//   "UNKNOWN_MINOR_VERSION"
	//   "V3_ORIGINAL" - Minor versions for Starburst V3, used to
	// distinguish the original and different emulated versions. See
	// go/starburst-v3-emulation for detail.
	//   "V3_ENET_EMULATED"
	//   "V3_FNET_EMULATED"
	//   "V3_STARBURST_LITE"
	//   "V4_ORIGINAL" - Minor versions for Starburst V4.
	//   "V4_STRETCH_RESIZE" - V4 with stretch resize, instead of cropping.
	// See b/154565902.
	//   "VISUAL_V4_ORIGINAL" - Minor versions for Starburst Visual V4.
	//   "V5_ORIGINAL" - Minor version for Starburst V5.
	//   "V5_5_ORIGINAL" - Minor version for Starburst V5.5.
	MinorVersion string `json:"minorVersion,omitempty"`

	// StarburstTokens: Starburst tokens.
	StarburstTokens []int64 `json:"starburstTokens,omitempty"`

	// Version: The following integers are currently used: Starburst V1: 1
	// Starburst V2: 2 Starburst V3: 3 Starburst V4: 4 Starburst Visual V4:
	// 1004 This field is deprecated. Please try to use the 'enum_version'
	// in future.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DescriptorFloat") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DescriptorFloat") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageContentStarburstVersionGroup) MarshalJSON() ([]byte, error) {
	type NoMethod ImageContentStarburstVersionGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageData: This defines the per-doc data which is extracted from
// thumbnails and propagated over to indexing. It contains all
// information that can be used for restricts. Next tag id: 129
type ImageData struct {
	// AdaboostImageFeaturePorn: Warning: adaboost_image_feature_porn* and
	// imageFeaturePorn fields are DEPRECATED in favor of brain_porn_scores.
	// Please do not use them. Contact safesearch@ for transition advice.
	AdaboostImageFeaturePorn float64 `json:"adaboostImageFeaturePorn,omitempty"`

	AdaboostImageFeaturePornMinorVersion int64 `json:"adaboostImageFeaturePornMinorVersion,omitempty"`

	AdaboostImageFeaturePornVersion int64 `json:"adaboostImageFeaturePornVersion,omitempty"`

	// AnimatedImageData: Present for animated images only: additional
	// animatated image perdoc data.
	AnimatedImageData *ImageRepositoryAnimatedImagePerdocData `json:"animatedImageData,omitempty"`

	// BrainPornScores: A [0..1] SafeSearch scores based on image pixels,
	// using Google Brain: porn, csai, violence, medical, and spoof. For
	// porn only, if available prefer final_porn_score as it should be more
	// precise than brain_porn_scores.porn_score.
	BrainPornScores *ImageSafesearchContentBrainPornAnnotation `json:"brainPornScores,omitempty"`

	// BrainPornScoresVersion: A string that indicates the version of
	// SafeSearch classifier used to compute brain_porn_scores.
	BrainPornScoresVersion string `json:"brainPornScoresVersion,omitempty"`

	// CanonicalDocid: This is the image docid used in image search. For
	// ImageData protos coming from Alexandria/Freshdocs, this is a
	// 'required' field that MUST be populated.
	CanonicalDocid uint64 `json:"canonicalDocid,omitempty,string"`

	// ClickMagnetScore: A score in (0, 1] to indicate how likely this image
	// is considered as a click magnet based on clicks received from bad
	// queries.
	ClickMagnetScore float64 `json:"clickMagnetScore,omitempty"`

	// ClipartDetectorScore: Image content based classifier scores.
	ClipartDetectorScore float64 `json:"clipartDetectorScore,omitempty"`

	ClipartDetectorVersion int64 `json:"clipartDetectorVersion,omitempty"`

	// ClusterId: Superlabels generated cluster id.
	ClusterId string `json:"clusterId,omitempty"`

	// CodomainStrength: Like is_visible, this is a property of the
	// (web-doc, img_url) pair not just the image. A high codomain_strength
	// indicates high confidence based on collected stats that the image is
	// hosted on a companion domain. If not enough stats are available for
	// codomain strength, this field may be absent in ImageData, and hence
	// the CompositeDoc. Do not place negative values here. Permitted values
	// range between 0 and image_quality_codomain::kMaxCodomainStrength
	// defined in //image/quality/codomain/codomain-stats-utils.h.
	CodomainStrength int64 `json:"codomainStrength,omitempty"`

	// ColorScore: Colorness scores for the image. Each score represents the
	// amount of a particular color in the image. At the current time, there
	// are 12 colors, so there should always be 0 or 12 values in this
	// array. The 12 colors are black, blue, brown, gray, green, orange,
	// pink, purple, red, teal, white, yellow. The convention is that the
	// scores are stored in alphabetical order, so the first score is black,
	// and the last score is yellow.
	ColorScore []float64 `json:"colorScore,omitempty"`

	ColorScoreVersion int64 `json:"colorScoreVersion,omitempty"`

	// ColoredPixelsFrac: Fraction of the image that contains pixels over a
	// certain saturation threshold: can be used to determine if the image
	// is grayscale or not.
	ColoredPixelsFrac float64 `json:"coloredPixelsFrac,omitempty"`

	// ContentFirstCrawlTime: Earliest known crawl time among all neardups
	// of this image (go/imagecontentage).
	ContentFirstCrawlTime int64 `json:"contentFirstCrawlTime,omitempty"`

	// CorpusSelectionInfo: Corpus scoring info for images indexed through
	// Amarna.
	CorpusSelectionInfo []*CorpusSelectionInfo `json:"corpusSelectionInfo,omitempty"`

	// Crops: The content-aware cropping information.
	Crops *ContentAwareCropsIndexing `json:"crops,omitempty"`

	// DeepCrop: DeepCrop based cropping information. See
	// go/creatism/deepcrop for details.
	DeepCrop *DeepCropIndexing `json:"deepCrop,omitempty"`

	// DeepImageEngagingness: Productionized Deep Image Engagingness score.
	DeepImageEngagingness *ImageRepositoryDeepImageEngagingnessOutput `json:"deepImageEngagingness,omitempty"`

	// DeepTags: VSS generated deep tags for shopping images.
	DeepTags *CommerceDatastoreImageDeepTags `json:"deepTags,omitempty"`

	// Docid: fingerprint(non-canonicalized absolute image url) This is
	// *not* the image docid. Use canonical_docid instead. For ImageData
	// protos coming from Alexandria/Freshdocs, this is a 'required' field
	// that MUST be populated. But once again, this is very likely NOT
	// something you need. Use canonical_docid instead.
	Docid uint64 `json:"docid,omitempty,string"`

	// EmbeddedMetadata: the EXIF/IPTC metadata
	EmbeddedMetadata *ImageExifImageEmbeddedMetadata `json:"embeddedMetadata,omitempty"`

	// ExpirationTimestamp: The thumbnail is guaranteed to be kept in the
	// serving system until the expiration timestamp has passed, in
	// microseconds.
	ExpirationTimestamp int64 `json:"expirationTimestamp,omitempty,string"`

	// ExtendedExif: The EXIF generated by photos backend team's (more
	// specifically FIFE's) thumbnailer library. This exif model is more
	// comprehensive since a dedicated team is constantly improving it and
	// adding new fields over time. This is currently populated by moonshine
	// for selected corpora.
	ExtendedExif *PhotosImageMetadata `json:"extendedExif,omitempty"`

	// FeaturedImageProp: Properties used in featured imagesearch project.
	// inspiration_score indicates how well an image is related to products,
	// or how inspirational it is.
	FeaturedImageProp *ImageMonetizationFeaturedImageProperties `json:"featuredImageProp,omitempty"`

	// FileFormat: True file format (not extension).
	//
	// Possible values:
	//   "FF_INVALID"
	//   "FF_JPG"
	//   "FF_GIF"
	//   "FF_PNG"
	//   "FF_BMP"
	//   "FF_SVG"
	//   "FF_WEBP"
	//   "FF_ICO"
	//   "FF_CRAW"
	//   "FF_HEIF"
	FileFormat string `json:"fileFormat,omitempty"`

	// FinalPornScore: A [0..1] porn score based on some image-level
	// features (like content score, referrer statistics, navboost queries,
	// etc.). See class RiflePornScorer for more details.
	FinalPornScore float64 `json:"finalPornScore,omitempty"`

	// FinalPornScoreVersion: A string that indicates the version of
	// SafeSearch classifier used to compute final_porn_score.
	FinalPornScoreVersion string `json:"finalPornScoreVersion,omitempty"`

	// FirstCrawlTime: Earliest known timestamp about this image. Today,
	// this is the timestamp when the content key was generated for this
	// image. The time is in seconds.
	FirstCrawlTime int64 `json:"firstCrawlTime,omitempty"`

	// FirstTimeSeenOnDocSec: The first time this image URL was seen on the
	// containing web page. Only set during web indexing.
	FirstTimeSeenOnDocSec int64 `json:"firstTimeSeenOnDocSec,omitempty"`

	// Flags: Use image_perdoc.h to read/write 'flags'.
	Flags int64 `json:"flags,omitempty"`

	// FlowOutput: The output of various features generated by the Flow
	// framework, most importantly data from Starburst (go/starburst). Do
	// NOT interact with the internals of this proto since they may change
	// over time. Instead, use the existing interfaces that consume
	// FlowProtoProd's directly, e.g.,
	// image/mustang/content/image_content_distance.h For more info, please
	// contact image-content-core@.
	FlowOutput *ImageContentFlowProtoProd `json:"flowOutput,omitempty"`

	H2c float64 `json:"h2c,omitempty"`

	// H2i: 'Hovers to Impressions' and 'Hovers to Clicks' ratios for an
	// image.
	H2i float64 `json:"h2i,omitempty"`

	// HateLogoDetection: Hate logo detections from the VSS logo_recognition
	// module.
	HateLogoDetection *ImageUnderstandingIndexingAnnotationGroup `json:"hateLogoDetection,omitempty"`

	// Height: Height
	Height int64 `json:"height,omitempty"`

	// ImageContentQueryBoost: Image Content Scored per query boosts.
	// Currently this is filled by the pamir algorithm and populates the
	// pamir_section.
	ImageContentQueryBoost *ImageContentQueryBoost `json:"imageContentQueryBoost,omitempty"`

	// ImageExactBoost: A set of query fingerprints and confidence scores.
	// There queries are supposed to be relevant to the image with high
	// confidence.
	ImageExactBoost *ImageExactBoost `json:"imageExactBoost,omitempty"`

	// ImageLicenseInfo: Indicates license info of this image, which will
	// tell image search users how to use this image legally.
	ImageLicenseInfo *ImageSearchImageLicenseInfo `json:"imageLicenseInfo,omitempty"`

	// ImageRegions: Regions detected within the image
	// (go/images-region-search-edd). Regions contain bounding boxes
	// circumscribing objects of interest in the image, along with object
	// labels. Regions may overlap.
	ImageRegions *ImageRegionsImageRegions `json:"imageRegions,omitempty"`

	Imagerank int64 `json:"imagerank,omitempty"`

	// IsIipInScope: IIP in scope signal (go/iip). Set to true if the image
	// is annotated with any iip_in_scope entities (go/iukp-trust-v2).
	IsIipInScope bool `json:"isIipInScope,omitempty"`

	// IsIndexedByImagesearch: If this image was not selected for indexing
	// by imagesearch, these fields say so and explain why.
	IsIndexedByImagesearch bool `json:"isIndexedByImagesearch,omitempty"`

	// IsMultiframe: True if the original image contains multiple frames
	// (e.g., for animated or stereoscopic images).
	IsMultiframe bool `json:"isMultiframe,omitempty"`

	// IsUnwantedContent: Field to indicate the image is unwanted for search
	// index. The data is propagated from amarna to alexandria to be
	// annotated in the cdoc. Refer to
	// image/repository/proto/unwanted_content.proto for more info.
	IsUnwantedContent bool `json:"isUnwantedContent,omitempty"`

	// IsVisible: True if the image is inlined on the page (typicially via )
	// or false if the image is linked to (via an href).
	IsVisible bool `json:"isVisible,omitempty"`

	// LargestFaceFrac: Fraction of image covered by the largest face
	// (should match largestFaceFraction, but without scaling). In perdocs,
	// is set only if numberFaces > 0.
	LargestFaceFrac float64 `json:"largestFaceFrac,omitempty"`

	// LargestFaceFraction: Fraction of image covered by the largest face,
	// scaled by 1000. Warning: Is DEPRECATED in favor of largest_face_frac.
	// Do not use.
	LargestFaceFraction int64 `json:"largestFaceFraction,omitempty"`

	// LastCrawlTime: Most recent timestamp in seconds when this URL was
	// crawled.
	LastCrawlTime int64 `json:"lastCrawlTime,omitempty"`

	// LicensedWebImagesOptInState: Indicates the web-master opt-in state of
	// this image, and will be used for Google products to decide usage
	// rights like showing large previews.
	//
	// Possible values:
	//   "IMAGES_OPTIN_NONE" - DEFAULT
	//   "IMAGES_OPTIN_FULL"
	//   "PAGE_SNIPPET_CONTROL_SIZE_NONE" - Followings are extracted from
	// page snippet restriction. Publisher explicitly requires a no-image
	// treatment.
	//   "PAGE_SNIPPET_CONTROL_SIZE_STANDARD" - Translates to 50k pixels.
	//   "PAGE_SNIPPET_CONTROL_SIZE_LARGE" - Translates to 300k pixels.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_NONE" - Followings are extracted
	// from per image tag snippet restriction. Publisher explicitly requires
	// a no-image treatment.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_STANDARD" - Translates to 50k
	// pixels.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_LARGE" - Translates to 300k pixels.
	LicensedWebImagesOptInState string `json:"licensedWebImagesOptInState,omitempty"`

	LineartDetectorScore float64 `json:"lineartDetectorScore,omitempty"`

	LineartDetectorVersion int64 `json:"lineartDetectorVersion,omitempty"`

	MultibangKgEntities *ImageDataMultibangEntities `json:"multibangKgEntities,omitempty"`

	NearDupFeatures string `json:"nearDupFeatures,omitempty"`

	NearDupFeaturesSmall []string `json:"nearDupFeaturesSmall,omitempty"`

	// NearDupFeaturesSmallVersion: The following fields contain information
	// about a smaller and less powerful version of the hash, needed for
	// neardup retrieval. A compressed and an encoded version of the small
	// hash are stored below. The smaller hash may have a few variants to
	// increase recall. NOTE: This hash is generated by V2 hash computation.
	// A compressed version of the small hash. Currently, a 4-byte
	// fingerprint.
	NearDupFeaturesSmallVersion int64 `json:"nearDupFeaturesSmallVersion,omitempty"`

	// NearDupFeaturesVersion: Image content derived data used for finding
	// image near dups. NOTE: This hash is generated by V1 hash computation.
	NearDupFeaturesVersion int64 `json:"nearDupFeaturesVersion,omitempty"`

	// NimaAva: Productionized Nima AVA score. Both this field and nima_vq
	// were added on the top of nima_ava_score and nima_vq_score because the
	// signals are already integrated with Batch Amarna in
	// image/repository/schema/global_output_tags.h using NimaOutput.
	NimaAva *ImageRepositoryNimaOutput `json:"nimaAva,omitempty"`

	// NimaVq: Productionized Nima VQ score.
	NimaVq *ImageRepositoryNimaOutput `json:"nimaVq,omitempty"`

	// Possible values:
	//   "NO_INDEX_IMAGE_URL_NOT_SELECTED"
	//   "NO_INDEX_REFERRER_URL_NOT_SELECTED"
	//   "NO_INDEX_X_RAW_IMAGE" - This enum is set during the transition
	// period for enabling raw image support in image search where we can
	// use the indexing pipeline but UI for presentation is unavailable.
	//   "NO_INDEX_FAVICON" - This enum is set if the image was extracted as
	// a favicon on the page, and was not gathered from the page for any
	// other reason.
	//   "NO_INDEX_DETECTED_VIA_CONTENT" - This enum is set if the image was
	// detected via its content and was not gathered from the page for any
	// other reason. That is it was added to the image_links_from_content
	// column in the document table.
	//   "NO_INDEX_EXTERNAL_VIDEO_THUMBNAIL" - This enum is set if the image
	// is an external video thumbnail from an off-page source such as image
	// anchors.
	//   "NO_INDEX_ONSITE_ANCHOR" - This enum is set if the image is from an
	// on-page anchor.
	//   "NO_INDEX_RSS_FEED" - This enum is set if the image is detected
	// from an rss feed.
	//   "NO_INDEX_REJECTED_BY_IMAGE_SELECTION" - This enum is set if the
	// image was normally selected by imagesearch for indexing, but didn't
	// meet the quality threshold for Image Selection.
	//   "NO_INDEX_EXPIRED_THUMBNAIL" - This enum is set if the image has
	// expired thumbnails or no expiration timestamp is specified.
	//   "NO_INDEX_REJECTED_BY_IMAGE_SELECTION_V1" - This enum is set if the
	// image was normally selected by imagesearch for indexing, but didn't
	// meet the quality threshold for heuristic image selection (a legacy
	// system, ariane/171870).
	//   "NO_INDEX_REJECTED_BY_PYTHIA" - This enum is set if the image was
	// normally selected by imagesearch for indexing, but didn't meet the
	// quality threshold for image Selection v2 (aka Pythia). See
	// go/image-selection for details.
	//   "NO_INDEX_EMPTY_THUMBNAIL" - This enum is set if the image has no
	// thumbnails fields found.
	NoIndexReason []string `json:"noIndexReason,omitempty"`

	// NumberFaces: Number of faces detected in the image
	NumberFaces int64 `json:"numberFaces,omitempty"`

	// OcrGoodoc: Pruned OCR Goodoc see vss_aksara_ocr_util.h for the fields
	// copied.
	OcrGoodoc *GoodocDocument `json:"ocrGoodoc,omitempty"`

	// OcrTaser: Ocr detected by ocr_taser module.
	OcrTaser *GoodocDocument `json:"ocrTaser,omitempty"`

	// OcrTextboxes: Text lines detected by OCR engine.
	OcrTextboxes []*OcrPhotoTextBox `json:"ocrTextboxes,omitempty"`

	// OnPageAlternateUrl: For an image not explicitly visible on this page,
	// the following url is the one which most closely matches it.
	OnPageAlternateUrl string `json:"onPageAlternateUrl,omitempty"`

	// PackedFullFaceInfo: Encodes face number and largest face frac into a
	// small package for storage in mustang. This is calculated directly
	// from FaceDetectionResult.
	PackedFullFaceInfo *FaceIndexing `json:"packedFullFaceInfo,omitempty"`

	// PersonAttributes: Contains person attributes from the LookNet-Person
	// model and the Style AI Iconic Person Scorer for the most iconic
	// person in a style image.
	PersonAttributes *LensDiscoveryStylePersonAttributes `json:"personAttributes,omitempty"`

	// PersonDetectionSignals: Contains person detection result.
	PersonDetectionSignals *LensDiscoveryStylePersonDetectionSignals `json:"personDetectionSignals,omitempty"`

	PhotoDetectorScore float64 `json:"photoDetectorScore,omitempty"`

	PhotoDetectorVersion int64 `json:"photoDetectorVersion,omitempty"`

	// PornFlagData: Used by the segindexer for combined www+image indices.
	PornFlagData *PornFlagData `json:"pornFlagData,omitempty"`

	// PrecomputedRestricts: Restricts computed before building a Mustang
	// index.
	PrecomputedRestricts *PrecomputedRestricts `json:"precomputedRestricts,omitempty"`

	// RankInNeardupCluster: Rank in near-dup cluster
	// (go/image-rank-in-neardup-cluster). The rank is 1-indexed: rank 1 is
	// the best.
	RankInNeardupCluster int64 `json:"rankInNeardupCluster,omitempty"`

	// RestrictStrings: A string representation of all the restricts
	// associated with this image.
	RestrictStrings []string `json:"restrictStrings,omitempty"`

	// RobotedAgents: CSV list of user agents for which this image should be
	// considered roboted. Note: All images are crawled using
	// googlebot-images, this exists for clients that require additional
	// restrictions beyond googlebot-images such as news.
	RobotedAgents string `json:"robotedAgents,omitempty"`

	// ShoppingProductInformation: The Shoppable Images product information
	// to be annotated in the Cdoc. All fields will be populated except the
	// product location bounding box.
	ShoppingProductInformation *ImageRepositoryShoppingProductInformation `json:"shoppingProductInformation,omitempty"`

	// Size: Size in bytes of original (non-thumbnail)
	Size int64 `json:"size,omitempty"`

	// SmearedTopWebLandingPageDocids: Web docids that correspond to high
	// ranked smeared landing pages for this image. Used for conditional
	// retrieval of actionable landing pages for image search.
	SmearedTopWebLandingPageDocids googleapi.Uint64s `json:"smearedTopWebLandingPageDocids,omitempty"`

	SmearedTopWebLandingPages []*SmearedWebLandingPageEntry `json:"smearedTopWebLandingPages,omitempty"`

	// StyleAestheticsScore: Aesthetics score of a style image.
	StyleAestheticsScore *LensDiscoveryStyleAestheticsScoreSignals `json:"styleAestheticsScore,omitempty"`

	// StyleImageType: Prediction of a style image type: Stage, Stock,
	// Street or Outfits.
	StyleImageType *LensDiscoveryStyleStyleImageTypeSignals `json:"styleImageType,omitempty"`

	// TestingScore: This field is for testing purposes, more information in
	// go/media-dirt-2022.
	TestingScore int64 `json:"testingScore,omitempty"`

	ThumbHeight int64 `json:"thumbHeight,omitempty"`

	ThumbSize int64 `json:"thumbSize,omitempty"`

	// ThumbWidth: Thumbnail width.
	ThumbWidth int64 `json:"thumbWidth,omitempty"`

	Thumbnail []*ImageDataThumbnail `json:"thumbnail,omitempty"`

	// UnavailableAfterSecs: Time in seconds since epoch after which this
	// image should be considered unavailable.
	UnavailableAfterSecs int64 `json:"unavailableAfterSecs,omitempty,string"`

	// Url: Canonicalized absolute image url.
	Url string `json:"url,omitempty"`

	WhiteBackgroundScore float64 `json:"whiteBackgroundScore,omitempty"`

	// WhiteBackgroundScoreVersion: Image is likely an object on a white
	// background (value on [0,1]).
	WhiteBackgroundScoreVersion int64 `json:"whiteBackgroundScoreVersion,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdaboostImageFeaturePorn") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdaboostImageFeaturePorn")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageData) MarshalJSON() ([]byte, error) {
	type NoMethod ImageData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageData) UnmarshalJSON(data []byte) error {
	type NoMethod ImageData
	var s1 struct {
		AdaboostImageFeaturePorn gensupport.JSONFloat64 `json:"adaboostImageFeaturePorn"`
		ClickMagnetScore         gensupport.JSONFloat64 `json:"clickMagnetScore"`
		ClipartDetectorScore     gensupport.JSONFloat64 `json:"clipartDetectorScore"`
		ColoredPixelsFrac        gensupport.JSONFloat64 `json:"coloredPixelsFrac"`
		FinalPornScore           gensupport.JSONFloat64 `json:"finalPornScore"`
		H2c                      gensupport.JSONFloat64 `json:"h2c"`
		H2i                      gensupport.JSONFloat64 `json:"h2i"`
		LargestFaceFrac          gensupport.JSONFloat64 `json:"largestFaceFrac"`
		LineartDetectorScore     gensupport.JSONFloat64 `json:"lineartDetectorScore"`
		PhotoDetectorScore       gensupport.JSONFloat64 `json:"photoDetectorScore"`
		WhiteBackgroundScore     gensupport.JSONFloat64 `json:"whiteBackgroundScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AdaboostImageFeaturePorn = float64(s1.AdaboostImageFeaturePorn)
	s.ClickMagnetScore = float64(s1.ClickMagnetScore)
	s.ClipartDetectorScore = float64(s1.ClipartDetectorScore)
	s.ColoredPixelsFrac = float64(s1.ColoredPixelsFrac)
	s.FinalPornScore = float64(s1.FinalPornScore)
	s.H2c = float64(s1.H2c)
	s.H2i = float64(s1.H2i)
	s.LargestFaceFrac = float64(s1.LargestFaceFrac)
	s.LineartDetectorScore = float64(s1.LineartDetectorScore)
	s.PhotoDetectorScore = float64(s1.PhotoDetectorScore)
	s.WhiteBackgroundScore = float64(s1.WhiteBackgroundScore)
	return nil
}

// ImageDataMultibangEntities: Multibang kg entities.
type ImageDataMultibangEntities struct {
	Entity []*ImageDataMultibangEntitiesMultibangEntity `json:"entity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entity") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageDataMultibangEntities) MarshalJSON() ([]byte, error) {
	type NoMethod ImageDataMultibangEntities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageDataMultibangEntitiesMultibangEntity struct {
	// EntityId: Entity ID.
	EntityId string `json:"entityId,omitempty"`

	// Score: Multibang score.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageDataMultibangEntitiesMultibangEntity) MarshalJSON() ([]byte, error) {
	type NoMethod ImageDataMultibangEntitiesMultibangEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageDataMultibangEntitiesMultibangEntity) UnmarshalJSON(data []byte) error {
	type NoMethod ImageDataMultibangEntitiesMultibangEntity
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type ImageDataThumbnail struct {
	// ExpirationTimestampMicros: The thumbnail is guaranteed to be kept in
	// the serving system until the expiration timestamp has passed, in
	// microseconds.
	ExpirationTimestampMicros int64 `json:"expirationTimestampMicros,omitempty,string"`

	Height int64 `json:"height,omitempty"`

	MimeType string `json:"mimeType,omitempty"`

	Size int64 `json:"size,omitempty"`

	// Possible values:
	//   "THUMBNAIL_TYPE_DEFAULT" - DEPRECATED - use THUMBNAIL_TYPE_AREA_50K
	// if possible. The default thumbnail type is deprecated and no longer
	// served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you
	// must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.
	//   "THUMBNAIL_TYPE_AREA_50K" - This is the most common thumbnail type,
	// used in image search results. It is defined to have 50625 pixels (=
	// 225 x 225).
	//   "THUMBNAIL_TYPE_400" - This refers to a thumbnail that fits in a
	// 400x400 box.
	//   "THUMBNAIL_TYPE_800" - This refers to a thumbnail that fits in a
	// 800x800 box.
	//   "THUMBNAIL_TYPE_ORIGINAL" - This refers to re-encoding original
	// image to JPEG at the same size (up to 10000x10000). Output quality
	// may be lower.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ" - Re-encode image at the same size as
	// original (up to 10000x10000) but with high-quality (q=90). This was
	// introduced by TYPHOON client and is expected only for very few images
	// in our table (under 10k). If you plan to use this contact amarna-dev@
	// and/or crt@
	//   "THUMBNAIL_TYPE_FAVICON_16" - These refer to favicon thumbnails of
	// 16x16, 32x32 or 64x64. If the original image is an ico file
	// containing multiple embedded images including 16x16, 32x32 or 64x64,
	// these thumbnails are derived from the embedded image of the
	// corresponding size. (If no such embedded image is found, prefer the
	// closest size that's larger. If still no such size exists, prefer
	// largest.) If no such size exists, these thumbnails are rescaled to an
	// image whose maximum dimension is 16, 28, 32 or 64.
	//   "THUMBNAIL_TYPE_FAVICON_28"
	//   "THUMBNAIL_TYPE_FAVICON_32"
	//   "THUMBNAIL_TYPE_FAVICON_64"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL" - This type of favicon will
	// preserve the size of the original image.
	//   "THUMBNAIL_TYPE_FAVICON_16_DARK" - These refer to favicon
	// thumbnails for dark mode. This triggers dark mode on the SVG decoding
	// (and otherwise, the same as the above favicon types)
	//   "THUMBNAIL_TYPE_FAVICON_28_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_32_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_64_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK"
	//   "THUMBNAIL_TYPE_1080" - This refers to a thumbnail that fits in a
	// 1080x1080 box.
	//   "THUMBNAIL_TYPE_1600_HQ" - This refers to a thumbnail that fits in
	// a 1600x1600 box and is encoded with high-quality (q=90). Contact
	// amarna-dev@/crt@/bingwang@ for using it.
	//   "THUMBNAIL_TYPE_AREA_300K" - This uses the same MaxAreaSizer as
	// THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (=
	// 640 x 480).
	//   "THUMBNAIL_TYPE_AREA_50K_ALPHA" - This is like
	// THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.
	//   "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA" - DEPRECATED - Please do
	// not introduce new requests for this type. It will be eliminated soon.
	// Until then, it will behave like the AREA_50K_ALPHA type -- use that
	// instead.
	//   "THUMBNAIL_TYPE_AREA_2M" - This refers to a thumbnail with at most
	// 2073600 pixels (=1920*1080). The image will be scaled down to 2M
	// while preserving the aspect ratio if it's too large. If the thumbnail
	// is in JPEG format, it is encoded with quality = 85. Besides, it
	// supports alpha channel by default and does not convert lossless
	// formats to JPEG.
	//   "THUMBNAIL_TYPE_AREA_2M_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_800_ALPHA_WHITE" - In alpha-white thumbs, colors
	// are remapped in RGBA to be more transparent the closer they are to
	// white. This is for use with white-background images, so that the
	// perceived background color can be darkened by rendering over gray.
	// See go/alpha-white-thumbs for details and limitations. Sizing matches
	// non-ALPHA_WHITE equivalents.
	//   "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE"
	//   "THUMBNAIL_TYPE_ANIMATED_H144" - Height-scaled animated thumb
	// types, encoded as H264 previews. Suffix gives height, e.g. _H144
	// indicates height 144. Width is a scaled multiple-of-8 value so the
	// thumb has approximately the same aspect ratio as the original. For
	// more info, see http://go/animated-thumbs.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED" - New thumbnail type for
	// licensed contents. From a thumbnail generation perspective this
	// behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a
	// separate thumbnail type to enable takedowns requested by owner.
	// WARNING: This type is primarily used by go/licensed-media-service and
	// is subject to policy changes. Please contact
	// g/license-media-service-team before using.
	//   "THUMBNAIL_TYPE_TENOR_250K_GIF" - Tenor gifs
	// go/tenor-integration-binary-serving-discussion
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF"
	//   "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF"
	//   "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF"
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP" - Similar to THUMBNAIL_TYPE_AREA_2M
	// but pre-transcoded to WebP and AVIF format, as those two format can
	// be slow to transcode in serving time. Currently only generated for
	// AMP images. These two thumbnails are static images despite that their
	// formats support animation.
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF" - AVIF is not yet a supported input
	// for SCS serving time thumbnailing, trying to do so will give errors.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_50K_WEBP" - WebP format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_AREA_50K_AVIF" - AVIF format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" - WARNING: This type is dedicated
	// to KG_IMAGE client. http://b/234653726
	Type string `json:"type,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExpirationTimestampMicros") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ExpirationTimestampMicros") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageDataThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod ImageDataThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageExactBoost struct {
	Navquery []*ImageExactBoostNavQuery `json:"navquery,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Navquery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Navquery") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExactBoost) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExactBoost
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageExactBoostNavQuery: Navboost query data.
type ImageExactBoostNavQuery struct {
	// Confidence: Associated confidence scores for the image for the query.
	Confidence int64 `json:"confidence,omitempty"`

	// ImageClickRank: Click-based rank of the image for this query.
	ImageClickRank int64 `json:"imageClickRank,omitempty"`

	// NavFp: Query fingerprint.
	NavFp uint64 `json:"navFp,omitempty,string"`

	// NavQuery: The normalized raw query text.
	NavQuery string `json:"navQuery,omitempty"`

	// ReferrerDocid: List of all referrers, sorted by their rank (stored in
	// Moosedog).
	ReferrerDocid googleapi.Uint64s `json:"referrerDocid,omitempty"`

	// ReferrerRank: Rank of the current web doc referrer (stored in
	// docjoins).
	ReferrerRank int64 `json:"referrerRank,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExactBoostNavQuery) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExactBoostNavQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageExifIPTCMetadata: This proto holds IPTC metadata.
// http://www.iptc.org/cms/site/index.html?channel=CH0099 Proto field
// name is same with IPTC property name except which is clearly stated.
// Next Id: 63
type ImageExifIPTCMetadata struct {
	// AcquireLicensePage: Page URL about how to acquire this licensable
	// image.
	AcquireLicensePage string `json:"acquireLicensePage,omitempty"`

	Artwork []*ImageExifIPTCMetadataArtwork `json:"artwork,omitempty"`

	Contactinfo *ImageExifIPTCMetadataContactInfo `json:"contactinfo,omitempty"`

	CopyrightNotice string `json:"copyrightNotice,omitempty"`

	// Creator: IPTC authorship & copyright related fields.
	Creator []string `json:"creator,omitempty"`

	CreditLine string `json:"creditLine,omitempty"`

	// DateCreated: Time (in seconds)
	DateCreated int64 `json:"dateCreated,omitempty,string"`

	DateExpired int64 `json:"dateExpired,omitempty,string"`

	DateReleased int64 `json:"dateReleased,omitempty,string"`

	Description string `json:"description,omitempty"`

	Event string `json:"event,omitempty"`

	Headline string `json:"headline,omitempty"`

	// ImageSupplier: PLUS field, not used.
	ImageSupplier string `json:"imageSupplier,omitempty"`

	Instructions string `json:"instructions,omitempty"`

	Keywords []string `json:"keywords,omitempty"`

	// LicenseUrl: License URL about how to distribute the image.
	LicenseUrl string `json:"licenseUrl,omitempty"`

	Location *ImageExifIPTCMetadataLocation `json:"location,omitempty"`

	// LocationCreated: Location of the camera
	LocationCreated *ImageExifIPTCMetadataLocationInfo `json:"locationCreated,omitempty"`

	// LocationShown: Location shown on the image
	LocationShown []*ImageExifIPTCMetadataLocationInfo `json:"locationShown,omitempty"`

	// Possible values:
	//   "MR_UNKNOWN"
	//   "MR_NONE" - http://ns.useplus.org/ldf/vocab/MR-NON
	//   "MR_NOT_APPLICABLE" - http://ns.useplus.org/ldf/vocab/MR-NAP
	//   "MR_UNLIMITED" - http://ns.useplus.org/ldf/vocab/MR-UMR
	//   "MR_LIMITED_OR_INCOMPLETE" - http://ns.useplus.org/ldf/vocab/MR-LMR
	ModelReleaseStatus string `json:"modelReleaseStatus,omitempty"`

	// Possible values:
	//   "PR_UNKNOWN"
	//   "PR_NONE" - http://ns.useplus.org/ldf/vocab/PR-NON
	//   "PR_NOT_APPLICABLE" - http://ns.useplus.org/ldf/vocab/PR-NAP
	//   "PR_UNLIMITED" - http://ns.useplus.org/ldf/vocab/PR-UPR
	//   "PR_LIMITED_OR_INCOMPLETE" - http://ns.useplus.org/ldf/vocab/PR-LPR
	PropertyReleaseStatus string `json:"propertyReleaseStatus,omitempty"`

	RightsUsageTerms string `json:"rightsUsageTerms,omitempty"`

	Source string `json:"source,omitempty"`

	SupplementalCategories []string `json:"supplementalCategories,omitempty"`

	// Title: IPTC description related fields.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AcquireLicensePage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AcquireLicensePage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifIPTCMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifIPTCMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageExifIPTCMetadataArtwork: Artwork or Object in the Image Details
type ImageExifIPTCMetadataArtwork struct {
	// Title: Other fields omitted.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Title") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Title") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifIPTCMetadataArtwork) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifIPTCMetadataArtwork
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageExifIPTCMetadataContactInfo struct {
	Address string `json:"address,omitempty"`

	City string `json:"city,omitempty"`

	Country string `json:"country,omitempty"`

	Email string `json:"email,omitempty"`

	Phone string `json:"phone,omitempty"`

	PostalCode string `json:"postalCode,omitempty"`

	State string `json:"state,omitempty"`

	WebUrl string `json:"webUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Address") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Address") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifIPTCMetadataContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifIPTCMetadataContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageExifIPTCMetadataLocation: Location of the camera @deprecated:
// Use location_created instead.
type ImageExifIPTCMetadataLocation struct {
	City string `json:"city,omitempty"`

	Country string `json:"country,omitempty"`

	CountryCode string `json:"countryCode,omitempty"`

	State string `json:"state,omitempty"`

	SubLocation string `json:"subLocation,omitempty"`

	WorldRegion string `json:"worldRegion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "City") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "City") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifIPTCMetadataLocation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifIPTCMetadataLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageExifIPTCMetadataLocationInfo struct {
	City string `json:"city,omitempty"`

	Country string `json:"country,omitempty"`

	CountryCode string `json:"countryCode,omitempty"`

	State string `json:"state,omitempty"`

	SubLocation string `json:"subLocation,omitempty"`

	WorldRegion string `json:"worldRegion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "City") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "City") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifIPTCMetadataLocationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifIPTCMetadataLocationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageExifImageEmbeddedMetadata: This class holds the EXIf/IPTC meta
// data Next Id: 104
type ImageExifImageEmbeddedMetadata struct {
	Altitude float64 `json:"altitude,omitempty"`

	Aperture float64 `json:"aperture,omitempty"`

	// Author: Text fields EXIF_TAG_ARTIST
	Author string `json:"author,omitempty"`

	// Author2: EXIF_TAG_XP_AUTHOR
	Author2 string `json:"author2,omitempty"`

	Brightness float64 `json:"brightness,omitempty"`

	// CameraMaker: Device - Camera raw text without normalization
	CameraMaker string `json:"cameraMaker,omitempty"`

	// CameraModel: raw text without normalization
	CameraModel string `json:"cameraModel,omitempty"`

	// CameraSerialNumber: This is the extracted serial number from EXIF
	// (the source depends on camera, most of the cameras store it in makers
	// note tag).
	CameraSerialNumber string `json:"cameraSerialNumber,omitempty"`

	// CaptureTime: Capturing settings in time_t
	CaptureTime int64 `json:"captureTime,omitempty,string"`

	ColorSpace int64 `json:"colorSpace,omitempty"`

	// Comments: EXIF_TAG_USER_COMMENT
	Comments string `json:"comments,omitempty"`

	// Comments2: EXIF_TAG_XP_COMMENT
	Comments2 string `json:"comments2,omitempty"`

	ContinousDriveMode bool `json:"continousDriveMode,omitempty"`

	// Copyright: EXIF_TAG_COPYRIGHT
	Copyright string `json:"copyright,omitempty"`

	// DeprecatedCity: Location from IPTC @deprecated: Use iptc.location
	// instead.
	DeprecatedCity string `json:"deprecatedCity,omitempty"`

	DeprecatedCountry string `json:"deprecatedCountry,omitempty"`

	DeprecatedState string `json:"deprecatedState,omitempty"`

	// Description: EXIF_TAG_IMAGE_DESCRIPTION
	Description string `json:"description,omitempty"`

	DestBearing float64 `json:"destBearing,omitempty"`

	// DestBearingRef: Bearing and distance to destination point.
	DestBearingRef float64 `json:"destBearingRef,omitempty"`

	DestDistance float64 `json:"destDistance,omitempty"`

	// DestLatitude: GPS location of destination point.
	DestLatitude float64 `json:"destLatitude,omitempty"`

	DestLongitude float64 `json:"destLongitude,omitempty"`

	DigitalZoomRatio float64 `json:"digitalZoomRatio,omitempty"`

	ExposureBias float64 `json:"exposureBias,omitempty"`

	// ExposureProgram: 1-8, see EXIF definition
	ExposureProgram int64 `json:"exposureProgram,omitempty"`

	ExposureTime float64 `json:"exposureTime,omitempty"`

	FlashUsed bool `json:"flashUsed,omitempty"`

	FocalLength float64 `json:"focalLength,omitempty"`

	// FocalLength35mm: convert to match 35mm film camera
	FocalLength35mm float64 `json:"focalLength35mm,omitempty"`

	FocalPlaneResUnit int64 `json:"focalPlaneResUnit,omitempty"`

	FocalPlaneXres float64 `json:"focalPlaneXres,omitempty"`

	// Possible values:
	//   "MANUAL_FOCUS"
	//   "AF_ONE_SHOT"
	//   "AF_CONTINUOUS"
	//   "AF_AUTO" - auto switch between AF_ONE_SHOT and AF_CONTINUOUS
	//   "OTHER_FOCUS"
	FocusMode string `json:"focusMode,omitempty"`

	// GpsDop: Dilution of precision. HDOP/PDOP depends on measure mode.
	// Find out more at
	// http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
	GpsDop float64 `json:"gpsDop,omitempty"`

	// Possible values:
	//   "MEASURE_MODE_2D"
	//   "MEASURE_MODE_3D"
	GpsMeasureMode string `json:"gpsMeasureMode,omitempty"`

	// Possible values:
	//   "GPS_STATUS_ACTIVE"
	//   "GPS_STATUS_VOID"
	GpsStatus string `json:"gpsStatus,omitempty"`

	// HPositioningError: in meters
	HPositioningError float64 `json:"hPositioningError,omitempty"`

	ImageHeight int64 `json:"imageHeight,omitempty"`

	ImageWidth int64 `json:"imageWidth,omitempty"`

	// ImgDirection: GPS Heading 0.00 to 359.99 degrees
	ImgDirection float64 `json:"imgDirection,omitempty"`

	// Possible values:
	//   "DirectionRef_True" - Indicates the reference for giving the
	// direction of the image when it is captured.
	//   "DirectionRef_Magnetic"
	ImgDirectionRef string `json:"imgDirectionRef,omitempty"`

	Iptc *ImageExifIPTCMetadata `json:"iptc,omitempty"`

	Iso int64 `json:"iso,omitempty"`

	// Keywords: EXIF_TAG_XP_KEYWORDS
	Keywords string `json:"keywords,omitempty"`

	// Latitude: GPS location +/- 90 inclusive
	Latitude float64 `json:"latitude,omitempty"`

	// LensId: Device - Lens We use this extended id to identify a lens
	// uniquely. Canon: "%d %d %d"=.. Nikon: "%.2X %.2X %.2X %.2X %.2X %.2X
	// %.2X %.2X" Don't change the format of the internal lens id because we
	// use them to look up the lens names.
	LensId string `json:"lensId,omitempty"`

	LensMaker string `json:"lensMaker,omitempty"`

	LightSource int64 `json:"lightSource,omitempty"`

	LongFocal int64 `json:"longFocal,omitempty"`

	// Longitude: +/- 180 inclusive
	Longitude float64 `json:"longitude,omitempty"`

	MaxApertureAtLongFocal float64 `json:"maxApertureAtLongFocal,omitempty"`

	MaxApertureAtShortFocal float64 `json:"maxApertureAtShortFocal,omitempty"`

	// MeteringMode: 1-6, see EXIF definition
	MeteringMode int64 `json:"meteringMode,omitempty"`

	// ModificationTime: in time_t
	ModificationTime int64 `json:"modificationTime,omitempty,string"`

	// Possible values:
	//   "ORIENTATION_0_DEG" - All rotations are clockwise. Rotations
	// expressed are those required to place the image in the desired
	// orientation. Note that the enum values here are not arbitrary; they
	// are defined in the exif standard. Normal.
	//   "ORIENTATION_MIRROR_0_DEG" - Mirror horizontally.
	//   "ORIENTATION_180_DEG" - Rotate 180 degrees.
	//   "ORIENTATION_MIRROR_180_DEG" - Mirror horizontally then rotate 180
	//   "ORIENTATION_MIRROR_270_DEG" - (the same as mirror vertically).
	// Mirror horizontally then rotate 270.
	//   "ORIENTATION_90_DEG" - Rotate 90 degrees.
	//   "ORIENTATION_MIRROR_90_DEG" - Mirror horizontally then rotate 90.
	//   "ORIENTATION_270_DEG" - Rotate 270 degrees.
	Orientation string `json:"orientation,omitempty"`

	ShortFocal int64 `json:"shortFocal,omitempty"`

	// Software: EXIF_TAG_SOFTWARE
	Software string `json:"software,omitempty"`

	// Subject: EXIF_TAG_XP_SUBJECT
	Subject string `json:"subject,omitempty"`

	SubjectDistance float64 `json:"subjectDistance,omitempty"`

	SubjectLocationX int64 `json:"subjectLocationX,omitempty"`

	SubjectLocationY int64 `json:"subjectLocationY,omitempty"`

	// Title: EXIF_TAG_XP_TITLE
	Title string `json:"title,omitempty"`

	// XResolution: pixels per inch
	XResolution float64 `json:"xResolution,omitempty"`

	// YResolution: pixels per inch
	YResolution float64 `json:"yResolution,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Altitude") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Altitude") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageExifImageEmbeddedMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageExifImageEmbeddedMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageExifImageEmbeddedMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod ImageExifImageEmbeddedMetadata
	var s1 struct {
		Altitude                gensupport.JSONFloat64 `json:"altitude"`
		Aperture                gensupport.JSONFloat64 `json:"aperture"`
		Brightness              gensupport.JSONFloat64 `json:"brightness"`
		DestBearing             gensupport.JSONFloat64 `json:"destBearing"`
		DestBearingRef          gensupport.JSONFloat64 `json:"destBearingRef"`
		DestDistance            gensupport.JSONFloat64 `json:"destDistance"`
		DestLatitude            gensupport.JSONFloat64 `json:"destLatitude"`
		DestLongitude           gensupport.JSONFloat64 `json:"destLongitude"`
		DigitalZoomRatio        gensupport.JSONFloat64 `json:"digitalZoomRatio"`
		ExposureBias            gensupport.JSONFloat64 `json:"exposureBias"`
		ExposureTime            gensupport.JSONFloat64 `json:"exposureTime"`
		FocalLength             gensupport.JSONFloat64 `json:"focalLength"`
		FocalLength35mm         gensupport.JSONFloat64 `json:"focalLength35mm"`
		FocalPlaneXres          gensupport.JSONFloat64 `json:"focalPlaneXres"`
		GpsDop                  gensupport.JSONFloat64 `json:"gpsDop"`
		HPositioningError       gensupport.JSONFloat64 `json:"hPositioningError"`
		ImgDirection            gensupport.JSONFloat64 `json:"imgDirection"`
		Latitude                gensupport.JSONFloat64 `json:"latitude"`
		Longitude               gensupport.JSONFloat64 `json:"longitude"`
		MaxApertureAtLongFocal  gensupport.JSONFloat64 `json:"maxApertureAtLongFocal"`
		MaxApertureAtShortFocal gensupport.JSONFloat64 `json:"maxApertureAtShortFocal"`
		SubjectDistance         gensupport.JSONFloat64 `json:"subjectDistance"`
		XResolution             gensupport.JSONFloat64 `json:"xResolution"`
		YResolution             gensupport.JSONFloat64 `json:"yResolution"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Altitude = float64(s1.Altitude)
	s.Aperture = float64(s1.Aperture)
	s.Brightness = float64(s1.Brightness)
	s.DestBearing = float64(s1.DestBearing)
	s.DestBearingRef = float64(s1.DestBearingRef)
	s.DestDistance = float64(s1.DestDistance)
	s.DestLatitude = float64(s1.DestLatitude)
	s.DestLongitude = float64(s1.DestLongitude)
	s.DigitalZoomRatio = float64(s1.DigitalZoomRatio)
	s.ExposureBias = float64(s1.ExposureBias)
	s.ExposureTime = float64(s1.ExposureTime)
	s.FocalLength = float64(s1.FocalLength)
	s.FocalLength35mm = float64(s1.FocalLength35mm)
	s.FocalPlaneXres = float64(s1.FocalPlaneXres)
	s.GpsDop = float64(s1.GpsDop)
	s.HPositioningError = float64(s1.HPositioningError)
	s.ImgDirection = float64(s1.ImgDirection)
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	s.MaxApertureAtLongFocal = float64(s1.MaxApertureAtLongFocal)
	s.MaxApertureAtShortFocal = float64(s1.MaxApertureAtShortFocal)
	s.SubjectDistance = float64(s1.SubjectDistance)
	s.XResolution = float64(s1.XResolution)
	s.YResolution = float64(s1.YResolution)
	return nil
}

type ImageMonetizationFeaturedImageProperties struct {
	// InspirationScore: How an image is inspirational, [0, 1].
	InspirationScore float64 `json:"inspirationScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InspirationScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InspirationScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageMonetizationFeaturedImageProperties) MarshalJSON() ([]byte, error) {
	type NoMethod ImageMonetizationFeaturedImageProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageMonetizationFeaturedImageProperties) UnmarshalJSON(data []byte) error {
	type NoMethod ImageMonetizationFeaturedImageProperties
	var s1 struct {
		InspirationScore gensupport.JSONFloat64 `json:"inspirationScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.InspirationScore = float64(s1.InspirationScore)
	return nil
}

type ImageMoosedogCrawlState struct {
	// Possible values:
	//   "VALID_IMAGE"
	//   "INVALID_FETCH_REPLY" - The crawl resulted in an invalid fetch
	// reply. This means that fetchreply did not contain the url or the
	// original crawl date inside it.
	//   "XROBOTED" - The url was xroboted.
	//   "URL_NOT_CRAWLED" - Look at url not_crawled_reason for specific
	// errors.
	//   "PARSE_ERROR" - The url was successfully crawled but contained no
	// valid image or video content.
	//   "INVALID_IMAGE" - The url was successfully crawled but was in a
	// format not currently supported.
	//   "IMS_CRAWL_NOT_MODIFIED" - This was a referesh crawl and there was
	// no modification that needs to be processesed.
	//   "EXPIRED_DISCOVERY_CRAWL" - This is a discovery url that webmirror
	// discarded. Such urls need not be imported.
	//   "EXPIRED_FEED_CRAWL" - This is a feed url and webmirror expired it.
	//   "EXPIRED_PRIORITY_FEED_CRAWL" - This is a feed url in one of the
	// priority feeds and webmirror expired it.
	//   "INVALID_URL" - The passed URL was not valid and could not be
	// crawled.
	//   "VALID_VIDEO" - This is a valid video, SWF, or Silverlight object.
	//   "VALID_SWF"
	//   "VALID_SILVERLIGHT"
	//   "INVALID_VIDEO" - This is an invalid video.
	//   "TRUNCATED_CONTENTS" - This is a large image or video, and only
	// part of it has been fetched.
	//   "FAST_CRAWL_LOCK_ACQUIRE_FAILED" - Temporary status for fast crawl
	// failures.
	//   "FAST_CRAWL_TTL_EXPIRED"
	Code string `json:"code,omitempty"`

	// DetailedReason: Each of the above not_crawled_reason will have a set
	// of detailed reason defined in crawler/trawler/trawler_enums.proto.
	DetailedReason int64 `json:"detailedReason,omitempty"`

	// InternalStatus: The status returned when RPCs are used to internally
	// fetch the image (eg. from FIFE).
	InternalStatus *UtilStatusProto `json:"internalStatus,omitempty"`

	// IsTerminal: Specifies if the current crawl state is terminal.
	IsTerminal bool `json:"isTerminal,omitempty"`

	// NoIndexAfterTimestamp: Time in seconds since epoch after which this
	// image should be considered unavailable.
	NoIndexAfterTimestamp int64 `json:"noIndexAfterTimestamp,omitempty,string"`

	// Possible values:
	//   "URL_CRAWLED"
	//   "URL_ERROR" - Error fetching; most commonly 404;
	//   "URL_ROBOTED" - but many other possible reasons. Roboted out.
	//   "URL_UNREACHABLE" - Fetch error; 5xx; truncated response; etc.
	//   "URL_TIMEOUT" - Timeout while fetching.
	//   "URL_REJECTED" - Rejected based on capacity or permissions.
	//   "URL_NOT_FOLLOWED" - Redirects/retries-related: we crawled
	// something
	//   "NUM_STATE_TYPES" - *** don't forget to update.
	NotCrawledReason string `json:"notCrawledReason,omitempty"`

	// OverrodeTerminalState: When true, it means that a non-terminal state
	// has overwrote a terminal one.
	OverrodeTerminalState bool `json:"overrodeTerminalState,omitempty"`

	// Repid: The repid for the urls. This repid is the id given to the dupe
	// cluster this url belongs to.
	Repid string `json:"repid,omitempty"`

	// RobotedAgents: A comma separated list of user agents for which this
	// image should be considered roboted. All images are crawled using
	// googlebot-images and this exists here purely for informative reasons.
	RobotedAgents string `json:"robotedAgents,omitempty"`

	// Url: The url at which we crawled this content. With us starting to
	// use repids the crawl table key no longer is suggestive of the url. In
	// addition this is used in Amarna to detect race conditions between a
	// reference changing its crawl directive and the original crawl job
	// finishing.
	Url string `json:"url,omitempty"`

	// UrlDeleted: Set to true if the url is taken down by clients. This
	// indicates that this crawl state is used to fast remove the crawl
	// result of the url instead of waiting for Multiverse crawl results.
	// For more information, please refer to go/amarna-url-deletion.
	UrlDeleted bool `json:"urlDeleted,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageMoosedogCrawlState) MarshalJSON() ([]byte, error) {
	type NoMethod ImageMoosedogCrawlState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageMustangImageLinkSelectionInfo: For detailed info, please see
// go/naive-image-selection
type ImageMustangImageLinkSelectionInfo struct {
	// WebRelevanceScore: score calculated in image selection phase, higher
	// imagelink_selection_score more relevant the link is related to the
	// web page
	WebRelevanceScore float64 `json:"webRelevanceScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "WebRelevanceScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WebRelevanceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageMustangImageLinkSelectionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageMustangImageLinkSelectionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageMustangImageLinkSelectionInfo) UnmarshalJSON(data []byte) error {
	type NoMethod ImageMustangImageLinkSelectionInfo
	var s1 struct {
		WebRelevanceScore gensupport.JSONFloat64 `json:"webRelevanceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.WebRelevanceScore = float64(s1.WebRelevanceScore)
	return nil
}

// ImageMustangShoppingOffer: A proto buffer to organize shopping offer
// info from Inventory & Policy Service.
type ImageMustangShoppingOffer struct {
	// Possible values:
	//   "UNKNOWN"
	//   "MERCHANT_IMAGE"
	//   "ML_INFERRED_IMAGE"
	//   "NEARDUP_INFERRED_IMAGE"
	InferredImageTypes []string `json:"inferredImageTypes,omitempty"`

	IpsOfferId uint64 `json:"ipsOfferId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "InferredImageTypes")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InferredImageTypes") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageMustangShoppingOffer) MarshalJSON() ([]byte, error) {
	type NoMethod ImageMustangShoppingOffer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImagePerDocData struct {
	// DEPRECATEDEntropyColor: entropy and color values for thumbnail (4
	// bytes consisting of R, G, B and entropy values)
	DEPRECATEDEntropyColor int64 `json:"DEPRECATEDEntropyColor,omitempty"`

	// Filename: about 10 bytes
	Filename string `json:"filename,omitempty"`

	// Flags: image_perdoc.h
	Flags int64 `json:"flags,omitempty"`

	Height int64 `json:"height,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDEntropyColor") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDEntropyColor")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImagePerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod ImagePerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImagePornDebugInfo: Used to store debug information of the overall
// classifier.
type ImagePornDebugInfo struct {
	Info string `json:"info,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Info") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Info") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImagePornDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImagePornDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRegionsImageRegion: A single region within an image. NEXT_ID: 11
type ImageRegionsImageRegion struct {
	// BoundingBox: The bounding box of the region.
	BoundingBox *PhotosVisionGroundtruthdbNormalizedBoundingBox `json:"boundingBox,omitempty"`

	// BoundingBoxScore: The confidence score associated with the bounding
	// box.
	BoundingBoxScore float64 `json:"boundingBoxScore,omitempty"`

	// Id: A unique identifier for the region within the image. The id is
	// unique only among other regions in the image.
	Id string `json:"id,omitempty"`

	// IsProduct: Set true if the region represents a product, i.e., if any
	// of its labels are on a product labels whitelist. See
	// ImageRegionsConfig for details on the product whitelist.
	IsProduct bool `json:"isProduct,omitempty"`

	// KnnScore: The score for this region based on how visually similar its
	// neighbors are.
	KnnScore float64 `json:"knnScore,omitempty"`

	// LabelGroup: The label group corresponding to the first LabelParams
	// listed in ImageRegionsConfig.
	LabelGroup *ImageUnderstandingIndexingLabelGroup `json:"labelGroup,omitempty"`

	// LabelVersion: The version string of the labels with which the region
	// was processed.
	LabelVersion string `json:"labelVersion,omitempty"`

	// PrimaryLabel: The primary label associated with the region.
	// Specifically, the highest-scored whitelisted label associated with
	// the region. See ImageRegionsConfig for details on the whitelist.
	PrimaryLabel *ImageUnderstandingIndexingLabel `json:"primaryLabel,omitempty"`

	// Possible values:
	//   "UNSET"
	//   "DONT_RENDER" - Do not render this region.
	//   "RENDER_ONLY_BOUNDING_BOX" - Render only the bounding box but not
	// the primary label.
	//   "RENDER_BOUNDING_BOX_AND_PRIMARY_LABEL" - Render both the bounding
	// box and the primary label.
	RenderType string `json:"renderType,omitempty"`

	// StarburstV4: The starburst v4 features and tokens for the region.
	StarburstV4 *ImageUnderstandingIndexingFeature `json:"starburstV4,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRegionsImageRegion) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRegionsImageRegion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRegionsImageRegion) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRegionsImageRegion
	var s1 struct {
		BoundingBoxScore gensupport.JSONFloat64 `json:"boundingBoxScore"`
		KnnScore         gensupport.JSONFloat64 `json:"knnScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BoundingBoxScore = float64(s1.BoundingBoxScore)
	s.KnnScore = float64(s1.KnnScore)
	return nil
}

// ImageRegionsImageRegions: An image with regions within it. NEXT_ID:
// 11
type ImageRegionsImageRegions struct {
	// FinalPornScore: The final_porn_score for the image.
	FinalPornScore float64 `json:"finalPornScore,omitempty"`

	// FinalViolenceScore: The final_violence_score for the image.
	FinalViolenceScore float64 `json:"finalViolenceScore,omitempty"`

	// FlowOutput: The output of various features generated by the Flow
	// framework, most importantly data from Starburst (go/starburst).
	FlowOutput *ImageContentFlowProtoProd `json:"flowOutput,omitempty"`

	// Has300kThumb: True if the image has a 300k thumb.
	Has300kThumb bool `json:"has300kThumb,omitempty"`

	// HasNavboost: True if the image has navboost.
	HasNavboost bool `json:"hasNavboost,omitempty"`

	// IsIuInappropriate: True if the image is iu-inappropriate.
	IsIuInappropriate bool `json:"isIuInappropriate,omitempty"`

	// PedoScore: The pedo_score of the image.
	PedoScore float64 `json:"pedoScore,omitempty"`

	// PrecomputedRestricts: The precomputed restricts for the image.
	PrecomputedRestricts *PrecomputedRestricts `json:"precomputedRestricts,omitempty"`

	// RacyScore: The racy_score of the image.
	RacyScore float64 `json:"racyScore,omitempty"`

	// Region: The list of regions.
	Region []*ImageRegionsImageRegion `json:"region,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FinalPornScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FinalPornScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRegionsImageRegions) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRegionsImageRegions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRegionsImageRegions) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRegionsImageRegions
	var s1 struct {
		FinalPornScore     gensupport.JSONFloat64 `json:"finalPornScore"`
		FinalViolenceScore gensupport.JSONFloat64 `json:"finalViolenceScore"`
		PedoScore          gensupport.JSONFloat64 `json:"pedoScore"`
		RacyScore          gensupport.JSONFloat64 `json:"racyScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FinalPornScore = float64(s1.FinalPornScore)
	s.FinalViolenceScore = float64(s1.FinalViolenceScore)
	s.PedoScore = float64(s1.PedoScore)
	s.RacyScore = float64(s1.RacyScore)
	return nil
}

// ImageRepositoryAmarnaCloudSpeechSignals: Next Tag: 8
type ImageRepositoryAmarnaCloudSpeechSignals struct {
	// DuplicateOfYtS3Asr: If this field is set to true, it means that
	// Youtube already processed the ASR from S3 for the langID. Please find
	// the ASR result from transcript_asr in
	// google3/image/repository/proto/video_search.proto instead.
	DuplicateOfYtS3Asr bool `json:"duplicateOfYtS3Asr,omitempty"`

	// LangWithoutLocale: The language id input for creating this ASR
	// without regional info. Same format as in go/ytlangid. This field is
	// populated in Kronos Amarna Cloud Speech operator and passed to
	// Amarna, but it is cleared before stored in Amarna's metadata table.
	LangWithoutLocale string `json:"langWithoutLocale,omitempty"`

	// ModelIdentifier: Identifying which ASR models are used for the result
	ModelIdentifier string `json:"modelIdentifier,omitempty"`

	// Results: Raw results from Cloud Speech API
	Results []*ImageRepositorySpeechRecognitionResult `json:"results,omitempty"`

	// TranscriptAsr: This field contains full (stitched) transcription,
	// word-level time offset , and word-level byte offset. The value of
	// this field is derived from the SpeechRecognitionResult field above.
	TranscriptAsr *PseudoVideoData `json:"transcriptAsr,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DuplicateOfYtS3Asr")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DuplicateOfYtS3Asr") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryAmarnaCloudSpeechSignals) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryAmarnaCloudSpeechSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryAmarnaSignalsBlob struct {
	FrameFeatures *DrishtiFeatureSetDataSequence `json:"frameFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameFeatures") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryAmarnaSignalsBlob) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryAmarnaSignalsBlob
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryAmarnaSignalsBlobInfo struct {
	// SignalsBlobId: Blob id for AmarnaSignalsBlob (see `Blob proto`
	// section of go/revisit-frame-level-signals-amarna).
	SignalsBlobId string `json:"signalsBlobId,omitempty"`

	// SignalsBlobUpdateTimestamp: Additional timestamp field for when the
	// blob is written/updated, serving as the dirty field to help
	// checksum-based update push (see `Dirty field` section in
	// go/revisit-frame-level-signals-amarna).
	SignalsBlobUpdateTimestamp string `json:"signalsBlobUpdateTimestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SignalsBlobId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SignalsBlobId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryAmarnaSignalsBlobInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryAmarnaSignalsBlobInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryAmarnaStatus: This message stores the status and
// reason why Amarna was unable to provide perdoc information for an
// image.
type ImageRepositoryAmarnaStatus struct {
	// Possible values:
	//   "NOT_REJECTED" - The default reason for rejection.
	//   "INVALID_MEDIA" - The url was crawled successfully, but the content
	// is not an image / video that Amarna can currently parse and index.
	//   "TERMINAL_CRAWL_ERROR" - There was a permanent error crawling this
	// url, other than xrobots.
	//   "LOW_PRIORITY_REFERRER" - The media item has too many urls
	// associated with it and the priority of this media url is not high
	// enough to be associated with the media item. As Amarna processes
	// other requests it may force a previously associated url to be no
	// longer associated with the item. In this case Amarna will send a
	// message with this status asking the client to remove this url.
	//   "REMOVED_BY_CLIENT_REQUEST" - The url was removed by the client's
	// request.
	//   "XROBOTED" - We successfully issued a crawl request to the host,
	// and got roboted out.
	//   "CONTENT_PROCESSING_ERROR" - Contents were crawled successfully,
	// the content type is something Amarna is supposed to handle,
	// processing was attempted, but media annotators failed to generate
	// data for this content.
	//   "MISSING_DOCID" - Fairly specific amarna internal consistency
	// error: we last received a an expired feed crawl from this url, but
	// never received the bytes and could not compute a docid..
	//   "ROBOTED" - Crawl was disallowed by robots.txt.
	//   "UNWANTED_CONTENT" - Deprecated. Don't reuse.
	//   "NOT_A_VIDEO"
	//   "INDEXING_DELAY"
	Reason string `json:"reason,omitempty"`

	// Possible values:
	//   "READY" - For media_type == IMAGE: The url was crawled
	// successfully, and the content is of correct media type. Amarna has
	// registered the interest of the corpus and has associated this url
	// with the media item. A receipt of a message with this status will
	// imply to the client that Amarna is ready to serve this media
	// externally. This is the only case when docid will be set. For
	// media_type == VIDEO: This status will be used in all cases except
	// deletions, so Alexandria will always link the contained
	// VideoProperties to the associated web CompositeDocs. This is
	// necessary because the final video indexing decisions are made in
	// Doc-Properties, where the only inputs are the CompositeDocs. For
	// media_type == FAVICON: The url was crawled successfully, and the
	// content is of correct media type. Amarna has registered the interest
	// of the corpus and has associated this url with the media item. A
	// receipt of a message with this status will imply to the client that
	// Amarna is ready to serve this media externally. This is the only case
	// when docid will be set.
	//   "REJECTED" - For media_type == IMAGE: Corpus on receipt of this
	// status should assume that Amarna has initiated a removal of this url
	// and should prepare to delete it. For media_type == VIDEO: This status
	// will be used for deletions, which occur when there are no longer any
	// web pages associated with a video url. By using the REJECTED status,
	// we instruct Alexandria to remove the VideoProperties from the video
	// table. For media_type == FAVICON: Corpus on receipt of this status
	// should assume that Amarna has initiated a removal of this url and
	// should prepare to delete it.
	//   "NOT_READY" - For media_type == IMAGE: Media is not ready to be
	// served yet. Amarna is still trying to crawl it. This will be sent
	// only in the immediate mode API or when a MediaUpdate is requested via
	// MediaUpdateRequest. For media_type == VIDEO: Not applicable. For
	// media_type == FAVICON: Media is not ready to be served yet. Amarna is
	// still trying to crawl it or generate thumbnails for it.
	//   "DEPRECATED_3"
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Reason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Reason") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryAmarnaStatus) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryAmarnaStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryAnimatedImagePerdocData: Additional animated image
// data stored in perdoc (ImageData); will only be stored for animated
// images.
type ImageRepositoryAnimatedImagePerdocData struct {
	// AggregatedPornScores: Aggregated porn scores for animated images.
	// Aggregated using max sampling rate / max duration. Note the plan is
	// to fold these scores into existing summarized scores, for cases where
	// these scores are available. See tracking bug b/63580795.
	AggregatedPornScores *ImageSafesearchContentBrainPornAnnotation `json:"aggregatedPornScores,omitempty"`

	// DurationMs: Total duration of animation, in ms.
	DurationMs int64 `json:"durationMs,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AggregatedPornScores") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedPornScores") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryAnimatedImagePerdocData) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryAnimatedImagePerdocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryApiItagSpecificMetadata: The metadata returned with
// each transcode. Next available field: 9
type ImageRepositoryApiItagSpecificMetadata struct {
	// ExpirationTimestampSec: Timestamp (measured in seconds since epoch)
	// after which Amarna will delete the serving transcode.
	ExpirationTimestampSec int64 `json:"expirationTimestampSec,omitempty,string"`

	// Genus: The Venom Genus that this transcode was produced for.
	//
	// Possible values:
	//   "GENUS_UNKNOWN"
	//   "GENUS_YT_HIGH_VALUE_CONTENT"
	//   "GENUS_YT_USER_GENERATED_CONTENT"
	//   "GENUS_GMAIL"
	//   "GENUS_KIDS_HUB"
	//   "GENUS_YOUTUBE_DIRECTOR"
	//   "GENUS_DCLK_VIDEO_ADS" - Genus for Ad Manager Video Ads (formerly
	// Doubleclick video ads).
	//   "GENUS_DAI_PODCAST" - Genus for DAI podcasts, part of Ad Manager
	// Video Ads.
	//   "GENUS_TESTING"
	//   "GENUS_YT_UNPLUGGED_SVOD" - Genera for Unplugged videos.
	// GENUS_YT_UNPLUGGED_SVOD is for Unplugged SVOD contents.
	// GENUS_YT_UNPLUGGED_DVR is for Unplugged DVR contents. Videos created
	// with this genus will be stored in Blobstore (to make per-user clone),
	// and will be removed after a certain period. Besides, we prefer no
	// reruns for such videos.
	//   "GENUS_YT_UNPLUGGED_DVR"
	//   "GENUS_HVC_INGESTION"
	//   "GENUS_DRIVE"
	//   "GENUS_YT_LIGHTWEIGHT_VIDEO" - Also known as Stories, or Reels.
	//   "GENUS_ASK_QNA"
	//   "GENUS_LOCAL_VIDEO" - Genus for local imagery aka Photo/Video On
	// Maps, stored on Google Photos. Contact: local-imagery-team@.
	//   "GENUS_PLAY_AUDIOBOOKS"
	//   "GENUS_HANGOUTS_CHAT" - Genus for Hangouts Chat (Dynamite).
	//   "GENUS_VIDEO_INTEREST_FEED"
	//   "GENUS_YT_MUSIC"
	//   "GENUS_RECORDER"
	//   "GENUS_YT_ORIGINAL_CONTENT"
	//   "GENUS_STAMP"
	//   "GENUS_BULLETIN_AUDIO"
	//   "GENUS_CRAWL"
	//   "GENUS_PHOTOS"
	//   "GENUS_MATERIAL_GALLERY"
	//   "GENUS_YT_REFERENCE" - Genus for 'A-' References; audio or video
	// references that are not playable on YouTube, and only used as
	// references for ContentID claiming.
	//   "GENUS_LENSLETS_VIDEOS"
	//   "GENUS_BLOGGER"
	//   "GENUS_PODCASTS" - Genus for Google Podcasts & Audio News.
	//   "GENUS_OCEAN" - Genus for Ocean / Play Books.
	//   "GENUS_LMS" - Genus for Licensed Media Service videos.
	//   "GENUS_WEB_VIDEO_ADS" - Genus for Web Video Ads.
	//   "GENUS_STUDIO" - Genus for RichMedia Studio.
	//   "GENUS_YT_TDSD_REFERENCE" - Genus for TDSD references. These are
	// not playable on YouTube, and are only used for generating ContentID
	// fingerprints.
	//   "GENUS_WEB_STORY" - Genus for Kahani Web Stories.
	//   "GENUS_NEST_CAMERA_CLOUD" - Genus for Nest Camera Cloud.
	//   "GENUS_AREA120_BLUEBIRD" - Genus for Area120 Bluebird
	//   "GENUS_ARTS_AND_CULTURE" - Genus for Google Arts & Culture.
	//   "GENUS_DEMO" - Genus for new Video Processing clients to do initial
	// prototyping before they decide to formally onboard.
	// go/venom-clients#demo-tier
	//   "GENUS_KARTO" - Genus for Karto videos.
	//   "GENUS_CONTRIB_SERVICE_SHARED" - Shared genus for ContribService
	// UGC videos for small clients requesting the same set of common
	// signals. Large ContribService Video clients should have their own
	// genera. go/user-owned-video-content-processing
	//   "GENUS_CONTRIB_SERVICE_GEO_UGC" - Genus for GEO UGC videos
	// processed by ContribService. go/venom-lite-for-geo-photo-videos
	//   "GENUS_SEARCH_SPORTS" - Genus for Search Sports vertical videos
	//   "GENUS_BUSINESSMESSAGING" - Genus for Business Messaging videos
	Genus string `json:"genus,omitempty"`

	// State: Indicates the state in Venom for this transcode type.
	//
	// Possible values:
	//   "STATE_UNKNOWN"
	//   "STATE_DONE" - Final states (ie states in which we would stay ##
	// unless the client revises the expectations) As far as the relevant
	// service is concerned, the asset has been fully produced.
	//   "STATE_NOT_APPLICABLE" - As far as the service is concerned, the
	// asset should not be produced (say, HD for a SD input)
	//   "STATE_MISSING" - STATE_MISSING indicates the asset needs to be
	// created. It is a transient state from STATE_DIRTY. It is also the
	// final state if the asset failed to be created within its allowed
	// number of retries.
	//   "STATE_DELETED" - The asset has been removed. This is the final
	// state for assets that were previously OBSOLETE, or for goals of
	// UNWANTED.
	//   "STATE_DIRTY" - Purely transient states, that will be reconciled to
	// a final ## state at some point. The client is not happy with the
	// state of an asset, and wants to get it regenerated.
	//   "STATE_OBSOLETE" - The asset has been produced in the past, but is
	// not needed anymore. We'll try to delete it shortly.
	//   "STATE_PENDING_PUBLICATION" - The asset is ready to be published
	// but is waiting for other assets in its group. This state is between
	// MISSING/DIRTY and DONE.
	//   "STATE_FAILED" - RESERVED. This state is deprecated.
	State string `json:"state,omitempty"`

	// TranscodeItag: transcode type which are available for the video.
	TranscodeItag int64 `json:"transcodeItag,omitempty"`

	// VideoId: The Venom ID that this transcode was produced for.
	VideoId *VideoAssetsVenomVideoId `json:"videoId,omitempty"`

	// XtagsList: Indicates xtags if present. Xtag makes the different
	// transcode. For transcode "MP4_AVCBASE640_AAC/af=sq" (itag 18 with
	// xtag), "af=sq" is the xtag part. This is a different transcode than
	// "MP4_AVCBASE640_AAC" (itag 18).
	XtagsList *ImageRepositoryApiXtagList `json:"xtagsList,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExpirationTimestampSec") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExpirationTimestampSec")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryApiItagSpecificMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryApiItagSpecificMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryApiXtag struct {
	// Name: Names are all stored case-sensitive, and no case-folding is
	// done for comparisons.
	Name string `json:"name,omitempty"`

	// Value: The value associated with this Xtag. Values are all stored
	// case-sensitive, and no case-folding is done for comparisons.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryApiXtag) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryApiXtag
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryApiXtagList: XtagList -- a collection of Xtag
// instances with unique names. This would be associated with one
// specific piece of content.
type ImageRepositoryApiXtagList struct {
	Xtags []*ImageRepositoryApiXtag `json:"xtags,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Xtags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Xtags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryApiXtagList) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryApiXtagList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryContentBasedVideoMetadata: Next Tag: 48
type ImageRepositoryContentBasedVideoMetadata struct {
	// AmarnaDocid: A hash of the video bytes used as a key to Amarna's
	// video_metadata table.
	AmarnaDocid string `json:"amarnaDocid,omitempty"`

	// AresClassificationRequestTimestamp: Timestamp of the last successful
	// Ares classification request.
	AresClassificationRequestTimestamp string `json:"aresClassificationRequestTimestamp,omitempty"`

	// AudioOnly: Both audio- and audio-video-files are treated as videos
	// during indexing (whether they share a container format, like .mp4, or
	// not, like .mp3). This bool indicates that there's no video track,
	// just an audio track.
	AudioOnly bool `json:"audioOnly,omitempty"`

	// CloudSpeechSignals: Transcript generated from Cloud Speech API
	CloudSpeechSignals *ImageRepositoryAmarnaCloudSpeechSignals `json:"cloudSpeechSignals,omitempty"`

	// FeatureSetData: Video Understanding Golden features.
	// (go/amarna-video-signals#golden-signals) Note: Golden6 features
	// (names matching "video_*") are DEPRECATED. Please migrate to Golden7
	// ("VideoFeatures.*"). For more context, see
	// go/golden7/migrating-from-golden6 and
	// go/amarna-golden-feature-tracker. Signals popluated in Raffia
	// cdoc.doc_videos are configured in
	// cs/symbol:AMARNA_EXPORTED_GOLDEN7_FEATURES.
	FeatureSetData *DrishtiFeatureSetData `json:"featureSetData,omitempty"`

	// Golden7SoapboxSummary: Golden7 video-level people features.
	// (go/ypf-video-features)
	Golden7SoapboxSummary *DrishtiFeatureSetData `json:"golden7SoapboxSummary,omitempty"`

	// InlinePlayback: Metadata related to Inline playback on the Interest
	// Feed. This field is filled by Hamilton.
	InlinePlayback *VideoCrawlVideoInlinePlaybackMetadata `json:"inlinePlayback,omitempty"`

	LanguageIdentification *VideoTimedtextS4ALIResults `json:"languageIdentification,omitempty"`

	// LegosAnnotationData: Legos results
	LegosAnnotationData *VideoLegosLegosAnnotationsSets `json:"legosAnnotationData,omitempty"`

	// LmsPreviewFramePerdocs: LMS preview frame perdocs. Timestamps of the
	// frame perdocs are from the original video, not from the preview.
	LmsPreviewFramePerdocs *ImageRepositoryFramePerdocs `json:"lmsPreviewFramePerdocs,omitempty"`

	// LoudnessData: When Transcode itag 140 is requested, MediaAnalyzer (as
	// the part of Viper graph) generates audio info including
	// loudness_data, which is then published to Streamer. For Audio news
	// client, we extract this loudness data from Streamer to this field.
	LoudnessData *VideoStorageLoudnessData `json:"loudnessData,omitempty"`

	// MediaInfo: Information about the media file, such as duration,
	// resolution, and detail about each audio/video stream. Note that it
	// contains no PII.
	MediaInfo *VideoMediaInfo `json:"mediaInfo,omitempty"`

	RepresentativeFrameData *ImageData `json:"representativeFrameData,omitempty"`

	S3LanguageIdentification *ImageRepositoryS3LangIdSignals `json:"s3LanguageIdentification,omitempty"`

	// SafesearchVideoContentSignals: Contains SafeSearch video
	// classification outputs which are vertical_name/float pairs.
	SafesearchVideoContentSignals *SafesearchVideoContentSignals `json:"safesearchVideoContentSignals,omitempty"`

	// SearchDocid: 64 bit docid used for retrieving video previews.
	SearchDocid uint64 `json:"searchDocid,omitempty,string"`

	// SignalsBlob: Amarna signals blob that contains large-size signals
	// like VCA frame-level signals.
	SignalsBlob *ImageRepositoryAmarnaSignalsBlob `json:"signalsBlob,omitempty"`

	// SignalsBlobInfo: Information for the amarna signals blob.
	SignalsBlobInfo *ImageRepositoryAmarnaSignalsBlobInfo `json:"signalsBlobInfo,omitempty"`

	SpeechProperties *IndexingSpeechSpeechPropertiesProto `json:"speechProperties,omitempty"`

	// ThumbnailQualityScore: Thumbnail quality score predict how visual
	// pleasing a thumbnail is, based on the model trained with deep neural
	// networks.(go/thumb_features_dd) Note the signal currently only
	// available for Youtube videos.
	ThumbnailQualityScore *VideoThumbnailsThumbnailScore `json:"thumbnailQualityScore,omitempty"`

	ThumbnailerData *VideoPipelineViperThumbnailerColumnData `json:"thumbnailerData,omitempty"`

	// TranscodeMetadata: Metadata about each transcode requested.
	TranscodeMetadata []*ImageRepositoryApiItagSpecificMetadata `json:"transcodeMetadata,omitempty"`

	// TranscriptAsr: Speech related metadata
	TranscriptAsr *PseudoVideoData `json:"transcriptAsr,omitempty"`

	// TruncationInfo: Data about whether or not the video was truncated.
	TruncationInfo *ImageRepositoryFileTruncationInfo `json:"truncationInfo,omitempty"`

	// UnwantedContent: If set, video has been deleted using the deletion
	// service (MediaDeletionService).
	UnwantedContent *ImageRepositoryUnwantedContent `json:"unwantedContent,omitempty"`

	// VenomId: The video id in the venom pipeline for STAMP purposes.
	// DEPRECATED: Use transcode_metadata or venom_processing_info instead,
	// which includes the ID and contains information for all clients.
	VenomId string `json:"venomId,omitempty"`

	// VenomProcessingInfo: Information about the video's status in Venom,
	// including IDs and processing times.
	VenomProcessingInfo *ImageRepositoryVenomProcessingInfo `json:"venomProcessingInfo,omitempty"`

	// VideoAnchorSet: Video anchor sets hold set of anchors with multiple
	// anchor types and sequence of VideoAnchor which contains metadata
	// about the anchor, such as thumbnail, perdoc data.
	VideoAnchorSet *VideoContentSearchVideoAnchorSets `json:"videoAnchorSet,omitempty"`

	// VideoDurationSec: Set from the video header if truncated, or is the
	// verified length if completely crawled.
	VideoDurationSec float64 `json:"videoDurationSec,omitempty"`

	// VideoPornScore: The video porn confidence score extracted from
	// Whisper featureSet: "video_labels:whisper_v3", with CR2 label:
	// "/cr2/1".
	VideoPornScore float64 `json:"videoPornScore,omitempty"`

	// VideoPornScoreV4: The video porn confidence score extracted from
	// WhisperV4 featureSet: "VideoFeatures.whisper_v4_labels", with CR2
	// label: "/tns/porn".
	VideoPornScoreV4 float64 `json:"videoPornScoreV4,omitempty"`

	// VideoPreviewBytes: video_preview_bytes is only exported as virtual
	// dataset by IE VideoUnderstanding and should not be persisted. It will
	// be used by downstream IE functions to push for serving.
	VideoPreviewBytes []*ImageRepositoryVideoPreviewsVideoPreview `json:"videoPreviewBytes,omitempty"`

	// VideoPreviews: video_previews contain the preview metadata but no
	// bytes. It exits for IE and non-IE cases.
	VideoPreviews []*ImageBaseVideoPreviewMetadata `json:"videoPreviews,omitempty"`

	// VideoStreamInfo: Deprecated, please use media_info.
	VideoStreamInfo *VideoPipelineViperVSIColumnData `json:"videoStreamInfo,omitempty"`

	// VideoTranscriptAnnotations: VideoTranscriptAnnotations holds sentence
	// segmented text and timing information to be used for VideoAnswers
	// (go/video-answers). Note that only punctuated_transcript,
	// timing_info, and lang field are filled, and other fields will be
	// filled in the later stage.
	VideoTranscriptAnnotations *QualityWebanswersVideoTranscriptAnnotations `json:"videoTranscriptAnnotations,omitempty"`

	// YoutubeProcessingFilter: Contains lists of reasons why YT videos were
	// filtered from specific processing.
	YoutubeProcessingFilter *ImageRepositoryYoutubeProcessingFilter `json:"youtubeProcessingFilter,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AmarnaDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmarnaDocid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryContentBasedVideoMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryContentBasedVideoMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryContentBasedVideoMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryContentBasedVideoMetadata
	var s1 struct {
		VideoDurationSec gensupport.JSONFloat64 `json:"videoDurationSec"`
		VideoPornScore   gensupport.JSONFloat64 `json:"videoPornScore"`
		VideoPornScoreV4 gensupport.JSONFloat64 `json:"videoPornScoreV4"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.VideoDurationSec = float64(s1.VideoDurationSec)
	s.VideoPornScore = float64(s1.VideoPornScore)
	s.VideoPornScoreV4 = float64(s1.VideoPornScoreV4)
	return nil
}

// ImageRepositoryCrawlStatusInfo: Fields for crawl-status-related
// debugging information.
type ImageRepositoryCrawlStatusInfo struct {
	// Possible values:
	//   "VALID_IMAGE"
	//   "INVALID_FETCH_REPLY" - The crawl resulted in an invalid fetch
	// reply. This means that fetchreply did not contain the url or the
	// original crawl date inside it.
	//   "XROBOTED" - The url was xroboted.
	//   "URL_NOT_CRAWLED" - Look at url not_crawled_reason for specific
	// errors.
	//   "PARSE_ERROR" - The url was successfully crawled but contained no
	// valid image or video content.
	//   "INVALID_IMAGE" - The url was successfully crawled but was in a
	// format not currently supported.
	//   "IMS_CRAWL_NOT_MODIFIED" - This was a referesh crawl and there was
	// no modification that needs to be processesed.
	//   "EXPIRED_DISCOVERY_CRAWL" - This is a discovery url that webmirror
	// discarded. Such urls need not be imported.
	//   "EXPIRED_FEED_CRAWL" - This is a feed url and webmirror expired it.
	//   "EXPIRED_PRIORITY_FEED_CRAWL" - This is a feed url in one of the
	// priority feeds and webmirror expired it.
	//   "INVALID_URL" - The passed URL was not valid and could not be
	// crawled.
	//   "VALID_VIDEO" - This is a valid video, SWF, or Silverlight object.
	//   "VALID_SWF"
	//   "VALID_SILVERLIGHT"
	//   "INVALID_VIDEO" - This is an invalid video.
	//   "TRUNCATED_CONTENTS" - This is a large image or video, and only
	// part of it has been fetched.
	//   "FAST_CRAWL_LOCK_ACQUIRE_FAILED" - Temporary status for fast crawl
	// failures.
	//   "FAST_CRAWL_TTL_EXPIRED"
	Code string `json:"code,omitempty"`

	// Possible values:
	//   "URL_CRAWLED"
	//   "URL_ERROR" - Error fetching; most commonly 404;
	//   "URL_ROBOTED" - but many other possible reasons. Roboted out.
	//   "URL_UNREACHABLE" - Fetch error; 5xx; truncated response; etc.
	//   "URL_TIMEOUT" - Timeout while fetching.
	//   "URL_REJECTED" - Rejected based on capacity or permissions.
	//   "URL_NOT_FOLLOWED" - Redirects/retries-related: we crawled
	// something
	//   "NUM_STATE_TYPES" - *** don't forget to update.
	NotCrawledReason string `json:"notCrawledReason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryCrawlStatusInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryCrawlStatusInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryDeepImageEngagingnessOutput struct {
	// Score: DeepImageEngagingness score.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryDeepImageEngagingnessOutput) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryDeepImageEngagingnessOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryDeepImageEngagingnessOutput) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryDeepImageEngagingnessOutput
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ImageRepositoryFileTruncationInfo: Describes our knowledge about
// whether a stored file is truncated with respect to its original file
// online.
type ImageRepositoryFileTruncationInfo struct {
	// OriginalFileSizeLowerBoundBytes: A lower bound on the original file's
	// size.
	OriginalFileSizeLowerBoundBytes int64 `json:"originalFileSizeLowerBoundBytes,omitempty,string"`

	// TruncationState: Indicates whether the stored file is equal to the
	// original file (COMPLETE), is only a prefix (TRUNCATED), or that we
	// don't know (UNKNOWN, the default).
	//
	// Possible values:
	//   "UNKNOWN"
	//   "COMPLETE"
	//   "TRUNCATED"
	TruncationState string `json:"truncationState,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "OriginalFileSizeLowerBoundBytes") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "OriginalFileSizeLowerBoundBytes") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryFileTruncationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryFileTruncationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryFrameIdentifier: Identifier for frames associated with
// a video.
type ImageRepositoryFrameIdentifier struct {
	PreviewFrameZeroVariant *ImageRepositoryFrameIdentifierPreviewFrameZeroVariant `json:"previewFrameZeroVariant,omitempty"`

	ThumbnailVariant *ImageRepositoryFrameIdentifierThumbnailVariant `json:"thumbnailVariant,omitempty"`

	// TimestampMs: Offset of the frame from the beginning of the video (in
	// milliseconds).
	TimestampMs int64 `json:"timestampMs,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PreviewFrameZeroVariant") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreviewFrameZeroVariant")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryFrameIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryFrameIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryFrameIdentifierPreviewFrameZeroVariant: This variant
// defines the frame to be the first frame of the video's generated
// preview.
type ImageRepositoryFrameIdentifierPreviewFrameZeroVariant struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "THREE_SECONDS"
	//   "SIX_SECONDS"
	PreviewLength string `json:"previewLength,omitempty"`

	// XtagList: All xtags used in the generation of the preview. The same
	// frame generated from the same preview with different xtags will
	// likely have different bytes (such as, for example, resulting from a
	// different aspect ratio).
	XtagList *ImageRepositoryApiXtagList `json:"xtagList,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PreviewLength") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreviewLength") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryFrameIdentifierPreviewFrameZeroVariant) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryFrameIdentifierPreviewFrameZeroVariant
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryFrameIdentifierThumbnailVariant: This variant defines
// the frame to be a thumbnail of the video.
type ImageRepositoryFrameIdentifierThumbnailVariant struct {
}

// ImageRepositoryFramePerdoc: Only one of timestamp_msec or
// frame_identifier should be set. timestamp_msec is the old identifier
// for frames, and is still used on thumbnail frames. frame_identifier
// should be used on other kinds of frames (e.g. preview frame zero).
type ImageRepositoryFramePerdoc struct {
	FrameIdentifier *ImageRepositoryFrameIdentifier `json:"frameIdentifier,omitempty"`

	Perdoc *ImageData `json:"perdoc,omitempty"`

	// TimestampMsec: Timestamp (in msec) of the frame from the original
	// video DEPRECATED: Use the timestamp_ms field in frame_identifier
	// instead.
	TimestampMsec int64 `json:"timestampMsec,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameIdentifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameIdentifier") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryFramePerdoc) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryFramePerdoc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryFramePerdocs: This proto stores perdocs extracted from
// video frames.
type ImageRepositoryFramePerdocs struct {
	FramePerdoc []*ImageRepositoryFramePerdoc `json:"framePerdoc,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FramePerdoc") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FramePerdoc") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryFramePerdocs) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryFramePerdocs
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryNimaOutput struct {
	// Score: NIMA score.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryNimaOutput) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryNimaOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryNimaOutput) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryNimaOutput
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ImageRepositoryS3LangIdSignals: Next Tag: 9
type ImageRepositoryS3LangIdSignals struct {
	// ContainsSpeech: Whether this audio chunk has speech or not.
	ContainsSpeech bool `json:"containsSpeech,omitempty"`

	EndSec int64 `json:"endSec,omitempty,string"`

	// LangidResult: S3 langID result. We keep langid_result even if
	// contains_speech = false.
	LangidResult *SpeechS3LanguageIdentificationResult `json:"langidResult,omitempty"`

	// LanguageIdentification: Converted version of the langid_result field,
	// so that we have the YT compatible version of the langID result.
	LanguageIdentification *VideoTimedtextS4ALIResults `json:"languageIdentification,omitempty"`

	// ModelVersion: The version of the model used for S3 LangID service.
	ModelVersion string `json:"modelVersion,omitempty"`

	SpeechFrameCount int64 `json:"speechFrameCount,omitempty"`

	// StartSec: The audio chunk which corresponds to this langID result
	// expressed as a start_sec and end_sec.
	StartSec int64 `json:"startSec,omitempty,string"`

	// TotalFrameCount: Count the number of total frames in the audio chunk
	// as well as the number of speech frames.
	TotalFrameCount int64 `json:"totalFrameCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContainsSpeech") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContainsSpeech") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryS3LangIdSignals) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryS3LangIdSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryShoppingProductInformation: A message containing
// embedding information and localization scores using the VSS product
// recognition module.
type ImageRepositoryShoppingProductInformation struct {
	// ProductSets: Information about versioned product sets found. There
	// will be at most two versions present. The results from the current
	// version of the models used in VSS and the results from the previous
	// version of the models used. Note that not all products may have two
	// version since the model might detect the product in one version and
	// not the other.
	ProductSets []*ImageRepositoryShoppingProductInformationVersionedProductInformationSet `json:"productSets,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProductSets") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProductSets") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryShoppingProductInformationBoundingBox: Contains the
// coordinates of the normalized bounding box.
type ImageRepositoryShoppingProductInformationBoundingBox struct {
	// H: The vertical height of the bounding box (ymax - ymin + 1),
	// normalized by image height with range [0,1].
	H float64 `json:"h,omitempty"`

	// W: The horizontal width of the bound box (xmax - xmin + 1),
	// normalized by image width with range [0,1].
	W float64 `json:"w,omitempty"`

	// X: The x coordinate (xmin), normalized by image width with range
	// [0,1).
	X float64 `json:"x,omitempty"`

	// Y: The y coordinate (ymin), normalized by image height with range
	// [0,1).
	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "H") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "H") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformationBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformationBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryShoppingProductInformationBoundingBox) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryShoppingProductInformationBoundingBox
	var s1 struct {
		H gensupport.JSONFloat64 `json:"h"`
		W gensupport.JSONFloat64 `json:"w"`
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.H = float64(s1.H)
	s.W = float64(s1.W)
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// ImageRepositoryShoppingProductInformationEntity: The recognized
// entity.
type ImageRepositoryShoppingProductInformationEntity struct {
	Id string `json:"id,omitempty"`

	// Score: The normalized recognition score between 0 and 1.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformationEntity) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformationEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryShoppingProductInformationEntity) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryShoppingProductInformationEntity
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ImageRepositoryShoppingProductInformationProductInformation:
// Information about a single product. For ProductNet models, each
// product has one label with a detection score. The label is mapped to
// one or multiple category ids. For PRIMI generic feature models, each
// product can have multiple entities, and each entity has a score. The
// category_id and detection_score fields are not populated for PRIMI
// generic feature models.
type ImageRepositoryShoppingProductInformationProductInformation struct {
	// CategoryId: The possible Merlot ids for the item. There may be more
	// than one if the product detector result corresponds to a collection
	// of merlot ids, which can't be easily grouped up to a common ancestor,
	// for which the detector would still make sense for all the children.
	// E.g. a detected "chair" can be either an indoor chair or an outdoor
	// one, however in Merlot the common ancestor of the two is furniture.
	CategoryId []int64 `json:"categoryId,omitempty"`

	// ClusterIds: The k-d tree clusters for retrieval. Will be deprecated,
	// use the token_groups instead. To add tokens/cluster_ids from new
	// tokenization model in the future, add it to the token_groups.
	ClusterIds []int64 `json:"clusterIds,omitempty"`

	// DetectionScore: The localization detection score.
	DetectionScore float64 `json:"detectionScore,omitempty"`

	// Embedding: The serialized embedding values.
	Embedding string `json:"embedding,omitempty"`

	// Entities: The recognized entities and scores.
	Entities []*ImageRepositoryShoppingProductInformationEntity `json:"entities,omitempty"`

	// FeatureType: Feature type (different detectors and embedders)
	// requested.
	FeatureType string `json:"featureType,omitempty"`

	// ProductLocation: The bounding box.
	ProductLocation *ImageRepositoryShoppingProductInformationBoundingBox `json:"productLocation,omitempty"`

	TokenGroups []*ImageRepositoryShoppingProductInformationProductInformationTokenGroup `json:"tokenGroups,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformationProductInformation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformationProductInformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryShoppingProductInformationProductInformation) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryShoppingProductInformationProductInformation
	var s1 struct {
		DetectionScore gensupport.JSONFloat64 `json:"detectionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DetectionScore = float64(s1.DetectionScore)
	return nil
}

// ImageRepositoryShoppingProductInformationProductInformationTokenGroup:
//
//	The tokens for retrieval.
type ImageRepositoryShoppingProductInformationProductInformationTokenGroup struct {
	// Possible values:
	//   "UNKNOWN"
	//   "KMEANS" - Apparel, homegoods, and PGF V1 tokens.
	//   "KMEANSV2" - Apparel V2, homegoods V2 (box) and PGF V2 tokens.
	//   "KMEANSV3" - PGF V3 tokens.
	Model string `json:"model,omitempty"`

	Tokens []int64 `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Model") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Model") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformationProductInformationTokenGroup) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformationProductInformationTokenGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryShoppingProductInformationVersionedProductInformationSe
// t: Store ProductInformation for a given version of the models used in
// VSS.
type ImageRepositoryShoppingProductInformationVersionedProductInformationSet struct {
	// ModelType: The type of the model.
	//
	// Possible values:
	//   "MODEL_TYPE_UNKNOWN"
	//   "MODEL_TYPE_PRODUCTNET"
	//   "MODEL_TYPE_PRIMI_GENERIC"
	ModelType string `json:"modelType,omitempty"`

	// Products: List of ProductInformation for this version.
	Products []*ImageRepositoryShoppingProductInformationProductInformation `json:"products,omitempty"`

	// Version: The version of the models used in VSS. Newer version will
	// have a higher version number.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ModelType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ModelType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryShoppingProductInformationVersionedProductInformationSet) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryShoppingProductInformationVersionedProductInformationSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositorySpeechRecognitionAlternative: Alternative hypotheses
// (a.k.a. n-best list).
type ImageRepositorySpeechRecognitionAlternative struct {
	// Confidence: The confidence estimate between 0.0 and 1.0. A higher
	// number indicates an estimated greater likelihood that the recognized
	// words are correct. This field is set only for the top alternative of
	// a non-streaming result or, of a streaming result where
	// `is_final=true`. This field is not guaranteed to be accurate and
	// users should not rely on it to be always provided. The default of 0.0
	// is a sentinel value indicating `confidence` was not set.
	Confidence float64 `json:"confidence,omitempty"`

	// Transcript: Transcript text representing the words that the user
	// spoke.
	Transcript string `json:"transcript,omitempty"`

	// Words: A list of word-specific information for each recognized word.
	// Note: When `enable_speaker_diarization` is true, you will see all the
	// words from the beginning of the audio.
	Words []*ImageRepositoryWordInfo `json:"words,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositorySpeechRecognitionAlternative) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositorySpeechRecognitionAlternative
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositorySpeechRecognitionAlternative) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositorySpeechRecognitionAlternative
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// ImageRepositorySpeechRecognitionResult: A speech recognition result
// corresponding to a portion of the audio. This field is copied from
// cloud/speech/v1p1beta1/cloud_speech.proto. Amarna needs to have a
// standalone version as v1p1beta1/cloud_speech.proto is in the for of
// versioned proto and it breaks other prod code depending on Amarna's
// video schema.
type ImageRepositorySpeechRecognitionResult struct {
	// Alternatives: May contain one or more recognition hypotheses (up to
	// the maximum specified in `max_alternatives`). These alternatives are
	// ordered in terms of accuracy, with the top (first) alternative being
	// the most probable, as ranked by the recognizer.
	Alternatives []*ImageRepositorySpeechRecognitionAlternative `json:"alternatives,omitempty"`

	// ChannelTag: For multi-channel audio, this is the channel number
	// corresponding to the recognized result for the audio from that
	// channel. For audio_channel_count = N, its output values can range
	// from '1' to 'N'.
	ChannelTag int64 `json:"channelTag,omitempty"`

	// LanguageCode: The BCP-47
	// (https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the
	// language in this result. This language code was detected to have the
	// most likelihood of being spoken in the audio.
	LanguageCode string `json:"languageCode,omitempty"`

	// ResultEndTime: Time offset of the end of this result relative to the
	// beginning of the audio. This field is internal-only and is used to
	// order results based on their timestamps.
	ResultEndTime string `json:"resultEndTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alternatives") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alternatives") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositorySpeechRecognitionResult) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositorySpeechRecognitionResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryUnwantedContent: To indicate whether the image or
// video is to be deleted from the repository due to legal reasons or
// hidden from search results.
type ImageRepositoryUnwantedContent struct {
	// Possible values:
	//   "OTHER"
	//   "CP" - abusive images involving children.
	DeletionReason string `json:"deletionReason,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "NCEI" - NCEI stands for 'non-consensual explicit imagery', aka
	// 'revenge porn'. However in this case the name is misleading as it
	// actually only applies for videos.
	HideReason string `json:"hideReason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeletionReason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeletionReason") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryUnwantedContent) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryUnwantedContent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVenomProcessingInfo struct {
	// VenomStatus: Contains one status for each Genus that this video
	// belongs to in Venom. For example, a video that is both 1) Found on
	// the web, and 2) Opted-in by an Interest Feed partner would have two
	// entries, one for GENUS_CRAWL and one for GENUS_VIDEO_INTEREST_FEED
	VenomStatus []*ImageRepositoryVenomStatus `json:"venomStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VenomStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VenomStatus") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVenomProcessingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVenomProcessingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVenomStatus struct {
	// Acl: Venom ACL of the video. Used to check if other systems, such as
	// Ares, are able to process the video.
	Acl *VideoAssetsVenomACL `json:"acl,omitempty"`

	DeletionTimestampUsec int64 `json:"deletionTimestampUsec,omitempty,string"`

	// Genus: The Genus (Venom's client ID) that this media belongs to.
	//
	// Possible values:
	//   "GENUS_UNKNOWN"
	//   "GENUS_YT_HIGH_VALUE_CONTENT"
	//   "GENUS_YT_USER_GENERATED_CONTENT"
	//   "GENUS_GMAIL"
	//   "GENUS_KIDS_HUB"
	//   "GENUS_YOUTUBE_DIRECTOR"
	//   "GENUS_DCLK_VIDEO_ADS" - Genus for Ad Manager Video Ads (formerly
	// Doubleclick video ads).
	//   "GENUS_DAI_PODCAST" - Genus for DAI podcasts, part of Ad Manager
	// Video Ads.
	//   "GENUS_TESTING"
	//   "GENUS_YT_UNPLUGGED_SVOD" - Genera for Unplugged videos.
	// GENUS_YT_UNPLUGGED_SVOD is for Unplugged SVOD contents.
	// GENUS_YT_UNPLUGGED_DVR is for Unplugged DVR contents. Videos created
	// with this genus will be stored in Blobstore (to make per-user clone),
	// and will be removed after a certain period. Besides, we prefer no
	// reruns for such videos.
	//   "GENUS_YT_UNPLUGGED_DVR"
	//   "GENUS_HVC_INGESTION"
	//   "GENUS_DRIVE"
	//   "GENUS_YT_LIGHTWEIGHT_VIDEO" - Also known as Stories, or Reels.
	//   "GENUS_ASK_QNA"
	//   "GENUS_LOCAL_VIDEO" - Genus for local imagery aka Photo/Video On
	// Maps, stored on Google Photos. Contact: local-imagery-team@.
	//   "GENUS_PLAY_AUDIOBOOKS"
	//   "GENUS_HANGOUTS_CHAT" - Genus for Hangouts Chat (Dynamite).
	//   "GENUS_VIDEO_INTEREST_FEED"
	//   "GENUS_YT_MUSIC"
	//   "GENUS_RECORDER"
	//   "GENUS_YT_ORIGINAL_CONTENT"
	//   "GENUS_STAMP"
	//   "GENUS_BULLETIN_AUDIO"
	//   "GENUS_CRAWL"
	//   "GENUS_PHOTOS"
	//   "GENUS_MATERIAL_GALLERY"
	//   "GENUS_YT_REFERENCE" - Genus for 'A-' References; audio or video
	// references that are not playable on YouTube, and only used as
	// references for ContentID claiming.
	//   "GENUS_LENSLETS_VIDEOS"
	//   "GENUS_BLOGGER"
	//   "GENUS_PODCASTS" - Genus for Google Podcasts & Audio News.
	//   "GENUS_OCEAN" - Genus for Ocean / Play Books.
	//   "GENUS_LMS" - Genus for Licensed Media Service videos.
	//   "GENUS_WEB_VIDEO_ADS" - Genus for Web Video Ads.
	//   "GENUS_STUDIO" - Genus for RichMedia Studio.
	//   "GENUS_YT_TDSD_REFERENCE" - Genus for TDSD references. These are
	// not playable on YouTube, and are only used for generating ContentID
	// fingerprints.
	//   "GENUS_WEB_STORY" - Genus for Kahani Web Stories.
	//   "GENUS_NEST_CAMERA_CLOUD" - Genus for Nest Camera Cloud.
	//   "GENUS_AREA120_BLUEBIRD" - Genus for Area120 Bluebird
	//   "GENUS_ARTS_AND_CULTURE" - Genus for Google Arts & Culture.
	//   "GENUS_DEMO" - Genus for new Video Processing clients to do initial
	// prototyping before they decide to formally onboard.
	// go/venom-clients#demo-tier
	//   "GENUS_KARTO" - Genus for Karto videos.
	//   "GENUS_CONTRIB_SERVICE_SHARED" - Shared genus for ContribService
	// UGC videos for small clients requesting the same set of common
	// signals. Large ContribService Video clients should have their own
	// genera. go/user-owned-video-content-processing
	//   "GENUS_CONTRIB_SERVICE_GEO_UGC" - Genus for GEO UGC videos
	// processed by ContribService. go/venom-lite-for-geo-photo-videos
	//   "GENUS_SEARCH_SPORTS" - Genus for Search Sports vertical videos
	//   "GENUS_BUSINESSMESSAGING" - Genus for Business Messaging videos
	Genus string `json:"genus,omitempty"`

	// InsertionResponseTimestampUsec: Time that VideoNotification result
	// was received from Venom.
	InsertionResponseTimestampUsec int64 `json:"insertionResponseTimestampUsec,omitempty,string"`

	InsertionTimestampUsec int64 `json:"insertionTimestampUsec,omitempty,string"`

	// LastInsertionAttemptsNum: Record the attempts num of previous
	// insertion. It's only updated when either the insertion succeeds or
	// fails with reason INSERTION_ATTEMPTS_EXCEEDED, but it's always set so
	// that we can easily construct venom_id with this attempts num for
	// future insertions.
	LastInsertionAttemptsNum int64 `json:"lastInsertionAttemptsNum,omitempty"`

	// Possible values:
	//   "NONE"
	//   "INVALID" - Missing/bad video data.
	//   "WRONG_CRITERIA" - Video doesn't meet criteria for the producer.
	//   "DISABLED" - Met all criteria, but unsent due to flags.
	//   "FAILED_INSERTION" - RPC failed.
	//   "INSERTION_SKIPPED" - Venom insertion skipped because the video has
	//   "FAILED_DELETION" - been uploaded successfully to Venom in previous
	// insertion. This is only set when VenomState is INSERTED. RPC failed.
	//   "INCOMPLETE_DOWNLOAD" - Not inserted due to truncated download.
	//   "FILTERED" - Filtered from Venom based on metadata.
	//   "NOT_FOUND" - The video is not found, only applies to YouTube
	// videos.
	//   "INSERTION_ATTEMPTS_EXCEEDED" - Out of insertion attempts.
	//   "ASSET_ALREADY_EXISTS" - The assets already exist in Venom.
	Reason string `json:"reason,omitempty"`

	// Settings: The Settings that were used to customize the Venom request
	// for this media.
	Settings []*VideoAssetsVenomSettings `json:"settings,omitempty"`

	// Possible values:
	//   "UNKNOWN_STATE"
	//   "INSERTED" - Video sent to Venom.
	//   "RESPONDED" - Amarna has received a pubsub from Venom.
	//   "NOT_INSERTED" - Amarna chose not to send the video to Venom.
	//   "DELETED" - Video has been deleted.
	//   "NOT_DELETED" - Video should've been deleted, but wasn't.
	State string `json:"state,omitempty"`

	// Transition: Transition contains the Objective and Outcome of the
	// latest Venom run.
	Transition *VideoAssetsVenomTransition `json:"transition,omitempty"`

	// VenomId: The media's unique identifier within Venom.
	VenomId *VideoAssetsVenomVideoId `json:"venomId,omitempty"`

	// VenomMutationGeneration: The generation number returned by Venom.
	VenomMutationGeneration int64 `json:"venomMutationGeneration,omitempty,string"`

	// VideoVenomSetting: This field is not persisted anywhere. It is only
	// used in deletion service for converying the VideoVenomSetting when
	// deleting Venom data.
	//
	// Possible values:
	//   "VIDEO_VENOM_SETTING_COMMON" - This corresponds to [trustme.crawl]
	// is {CLIENT_OTHER}.
	//   "VIDEO_VENOM_SETTING_VINEYARD" - This corresponds to
	// [trustme.crawl] is {CLIENT_OTHER, CLIENT_VINEYARD}. LINT.ThenChange(
	// //depot/google3/image/repository/shared/util/video_util.cc, )
	VideoVenomSetting string `json:"videoVenomSetting,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Acl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Acl") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVenomStatus) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVenomStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVideoIndexingInfo struct {
	NotIndexedVideoLink []*ImageRepositoryVideoLinkIndexingInfo `json:"notIndexedVideoLink,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NotIndexedVideoLink")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NotIndexedVideoLink") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVideoIndexingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVideoIndexingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVideoLinkIndexingInfo struct {
	// CrawlStatusInfo: Fields for crawl-status-related debugging
	// information.
	CrawlStatusInfo *ImageRepositoryCrawlStatusInfo `json:"crawlStatusInfo,omitempty"`

	// Url: The video URL.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CrawlStatusInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CrawlStatusInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVideoLinkIndexingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVideoLinkIndexingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVideoPreviewsDebuggingInfo struct {
	// LastAmarnaProcessingTime: Last Amarna processing timestamp.
	LastAmarnaProcessingTime string `json:"lastAmarnaProcessingTime,omitempty"`

	// ProcessingEngine: The underlying processing engine, like 'viper' or
	// 'kronos'.
	ProcessingEngine string `json:"processingEngine,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LastAmarnaProcessingTime") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastAmarnaProcessingTime")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVideoPreviewsDebuggingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVideoPreviewsDebuggingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVideoPreviewsVideoPreview struct {
	// Content: The actual video preview bytes generated for the video.
	Content string `json:"content,omitempty"`

	// DebuggingInfo: Used for debugging only.
	DebuggingInfo *ImageRepositoryVideoPreviewsDebuggingInfo `json:"debuggingInfo,omitempty"`

	// Metadata: The metadata associated with the preview (i.e. the type:
	// 8k, 90k, etc.)
	Metadata *ImageBaseVideoPreviewMetadata `json:"metadata,omitempty"`

	// PreviewFrameZero: 0th frame image of the preview. This frame has the
	// same resolution as the associated preview video bytes, as it is taken
	// directly from the preview bytes in Venom/Viper processing. Right now,
	// we only populate preview_frame_zero only for the
	// VPREVIEW_TYPE_540K_ORIGINAL_HQ_LICENSED preview type. Note that
	// preview_frame_zero.thumbnails(0).timestamp_ms() is the timestamp from
	// the full video, not from the preview.
	PreviewFrameZero *DrishtiVesperVideoThumbnail `json:"previewFrameZero,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVideoPreviewsVideoPreview) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVideoPreviewsVideoPreview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageRepositoryVideoProperties struct {
	// AudioOnly: Both audio- and audio-video-files are treated as videos
	// during indexing (whether they share a container format, like .mp4, or
	// not, like .mp3). This bool indicates that there's no video track,
	// just an audio track.
	AudioOnly bool `json:"audioOnly,omitempty"`

	// ContentBasedMetadata: Information derived from fetched video bytes.
	ContentBasedMetadata *ImageRepositoryContentBasedVideoMetadata `json:"contentBasedMetadata,omitempty"`

	// CrawlState: The raw crawl state.
	CrawlState *ImageMoosedogCrawlState `json:"crawlState,omitempty"`

	// FirstCrawlTimestampSec: Timestamp of the first time that the video
	// was successfully crawled.
	FirstCrawlTimestampSec int64 `json:"firstCrawlTimestampSec,omitempty,string"`

	// FirstProcessingTimestampSec: Timestamp when this video's
	// videoProperties is populated for the first time, measured in seconds
	// since epoch.
	FirstProcessingTimestampSec int64 `json:"firstProcessingTimestampSec,omitempty,string"`

	// InlinePlayback: DEPRECATED: please use
	// content_based_metadata.inline_playback. Metadata related to Inline
	// playback on the Interest Feed
	InlinePlayback *VideoCrawlVideoInlinePlaybackMetadata `json:"inlinePlayback,omitempty"`

	// LastCrawlRequestTimestampSec: Timestamp when this video's last
	// crawling is requested, measured in seconds since epoch.
	LastCrawlRequestTimestampSec int64 `json:"lastCrawlRequestTimestampSec,omitempty,string"`

	// LastProcessingTimestampSec: Last timestamp when this video's
	// videoProperties is populated, measured in seconds since epoch.
	LastProcessingTimestampSec int64 `json:"lastProcessingTimestampSec,omitempty,string"`

	// Url: This is the video url taken from the key of the Amarna
	// references table row corresponding to this message.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioOnly") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioOnly") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryVideoProperties) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryVideoProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageRepositoryWordInfo: Word-specific information for recognized
// words.
type ImageRepositoryWordInfo struct {
	// Confidence: The confidence estimate between 0.0 and 1.0. A higher
	// number indicates an estimated greater likelihood that the recognized
	// words are correct. This field is set only for the top alternative of
	// a non-streaming result or, of a streaming result where
	// `is_final=true`. This field is not guaranteed to be accurate and
	// users should not rely on it to be always provided. The default of 0.0
	// is a sentinel value indicating `confidence` was not set.
	Confidence float64 `json:"confidence,omitempty"`

	// EndTime: Time offset relative to the beginning of the audio, and
	// corresponding to the end of the spoken word. This field is only set
	// if `enable_word_time_offsets=true` and only in the top hypothesis.
	// This is an experimental feature and the accuracy of the time offset
	// can vary.
	EndTime string `json:"endTime,omitempty"`

	// SpeakerTag: A distinct integer value is assigned for every speaker
	// within the audio. This field specifies which one of those speakers
	// was detected to have spoken this word. Value ranges from '1' to
	// diarization_speaker_count. speaker_tag is set if
	// enable_speaker_diarization = 'true' and only in the top alternative.
	SpeakerTag int64 `json:"speakerTag,omitempty"`

	// StartTime: Time offset relative to the beginning of the audio, and
	// corresponding to the start of the spoken word. This field is only set
	// if `enable_word_time_offsets=true` and only in the top hypothesis.
	// This is an experimental feature and the accuracy of the time offset
	// can vary.
	StartTime string `json:"startTime,omitempty"`

	// Word: The word corresponding to this set of information.
	Word string `json:"word,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryWordInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryWordInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageRepositoryWordInfo) UnmarshalJSON(data []byte) error {
	type NoMethod ImageRepositoryWordInfo
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// ImageRepositoryYoutubeProcessingFilter: Next available tag: 13
type ImageRepositoryYoutubeProcessingFilter struct {
	// Possible values:
	//   "UNKNOWN"
	//   "CONTENT_CLAIMS"
	//   "MATURE_CONTENT"
	//   "INVALID_VIDEO_DATA"
	//   "NO_VSI"
	//   "SHORT_DURATION"
	//   "NO_DURATION" - This is set for livestreams, which have a duration
	// of 0.
	//   "EMPTY_DATA"
	//   "DELETED"
	//   "OFFICIAL_MUSIC_VIDEO" - Set if video has ut_video_policy
	// FLAG_OFFICIAL_MUSIC_VIDEO.
	//   "PREMIUM_CONTENT" - Set if video has ut_video_policy
	// FLAG_PREMIUM_CONTENT.
	//   "ART_TRACK" - Set if video has ut_video_policy FLAG_ART_TRACK.
	//   "PHARMA_CHANNEL" - Set if the video has a pharma channel ID.
	PreviewsFilteredReason []string `json:"previewsFilteredReason,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PreviewsFilteredReason") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreviewsFilteredReason")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageRepositoryYoutubeProcessingFilter) MarshalJSON() ([]byte, error) {
	type NoMethod ImageRepositoryYoutubeProcessingFilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageSafesearchContentBrainPornAnnotation: Don't change the field
// names. The names are used as sparse feature labels in client
// projects.
type ImageSafesearchContentBrainPornAnnotation struct {
	// ChildScore: The probability that the youngest person in the image is
	// a child.
	ChildScore float64 `json:"childScore,omitempty"`

	// CsaiScore: This score correlates with potential child abuse. Google
	// confidential!
	CsaiScore float64 `json:"csaiScore,omitempty"`

	// IuInappropriateScore: This field contains the probability that an
	// image is inappropriate for Images Universal, according to this
	// policy: go/iupolicy.
	IuInappropriateScore float64 `json:"iuInappropriateScore,omitempty"`

	MedicalScore float64 `json:"medicalScore,omitempty"`

	PedoScore float64 `json:"pedoScore,omitempty"`

	PornScore float64 `json:"pornScore,omitempty"`

	// RacyScore: This score is related to an image being sexually
	// suggestive.
	RacyScore float64 `json:"racyScore,omitempty"`

	SpoofScore float64 `json:"spoofScore,omitempty"`

	// Version: This field is an experimental one with a quite vague
	// meaning. Please contact safesearch@ before any meaningful use of it.
	// There is no guarantee it will preserve its behavior in the future.
	Version string `json:"version,omitempty"`

	ViolenceScore float64 `json:"violenceScore,omitempty"`

	// YtPornScore: Deprecated, use porn_score instead. The most recent
	// model version does not produce this anymore.
	YtPornScore float64 `json:"ytPornScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChildScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChildScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageSafesearchContentBrainPornAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSafesearchContentBrainPornAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageSafesearchContentBrainPornAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod ImageSafesearchContentBrainPornAnnotation
	var s1 struct {
		ChildScore           gensupport.JSONFloat64 `json:"childScore"`
		CsaiScore            gensupport.JSONFloat64 `json:"csaiScore"`
		IuInappropriateScore gensupport.JSONFloat64 `json:"iuInappropriateScore"`
		MedicalScore         gensupport.JSONFloat64 `json:"medicalScore"`
		PedoScore            gensupport.JSONFloat64 `json:"pedoScore"`
		PornScore            gensupport.JSONFloat64 `json:"pornScore"`
		RacyScore            gensupport.JSONFloat64 `json:"racyScore"`
		SpoofScore           gensupport.JSONFloat64 `json:"spoofScore"`
		ViolenceScore        gensupport.JSONFloat64 `json:"violenceScore"`
		YtPornScore          gensupport.JSONFloat64 `json:"ytPornScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ChildScore = float64(s1.ChildScore)
	s.CsaiScore = float64(s1.CsaiScore)
	s.IuInappropriateScore = float64(s1.IuInappropriateScore)
	s.MedicalScore = float64(s1.MedicalScore)
	s.PedoScore = float64(s1.PedoScore)
	s.PornScore = float64(s1.PornScore)
	s.RacyScore = float64(s1.RacyScore)
	s.SpoofScore = float64(s1.SpoofScore)
	s.ViolenceScore = float64(s1.ViolenceScore)
	s.YtPornScore = float64(s1.YtPornScore)
	return nil
}

type ImageSafesearchContentOCRAnnotation struct {
	// OcrProminenceScore: The score produced by Aksara geometry and spoof
	// score. Describes the 'visibility' or 'importance' of the text on the
	// image [0, 1]
	OcrProminenceScore float64 `json:"ocrProminenceScore,omitempty"`

	// PornScore: Image OCR racyness/pornyness, computed by porn query
	// classifier.
	PornScore float64 `json:"pornScore,omitempty"`

	// ProminentOffensiveScore: Same as offensive_score, but weighted by
	// prominence.
	ProminentOffensiveScore float64 `json:"prominentOffensiveScore,omitempty"`

	// ProminentVulgarScore: Same as vulgar_score, but weighted by
	// prominence.
	ProminentVulgarScore float64 `json:"prominentVulgarScore,omitempty"`

	// QbstOffensiveScore: The score produced by offensive salient terms
	// model.
	QbstOffensiveScore float64 `json:"qbstOffensiveScore,omitempty"`

	// VulgarI18nBit: Presence of i18n-recognized vulgar term in the OCR.
	VulgarI18nBit bool `json:"vulgarI18nBit,omitempty"`

	// VulgarScore: Image OCR vulgarity, computed by vulgar query
	// classifier.
	VulgarScore float64 `json:"vulgarScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OcrProminenceScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OcrProminenceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageSafesearchContentOCRAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSafesearchContentOCRAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageSafesearchContentOCRAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod ImageSafesearchContentOCRAnnotation
	var s1 struct {
		OcrProminenceScore      gensupport.JSONFloat64 `json:"ocrProminenceScore"`
		PornScore               gensupport.JSONFloat64 `json:"pornScore"`
		ProminentOffensiveScore gensupport.JSONFloat64 `json:"prominentOffensiveScore"`
		ProminentVulgarScore    gensupport.JSONFloat64 `json:"prominentVulgarScore"`
		QbstOffensiveScore      gensupport.JSONFloat64 `json:"qbstOffensiveScore"`
		VulgarScore             gensupport.JSONFloat64 `json:"vulgarScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.OcrProminenceScore = float64(s1.OcrProminenceScore)
	s.PornScore = float64(s1.PornScore)
	s.ProminentOffensiveScore = float64(s1.ProminentOffensiveScore)
	s.ProminentVulgarScore = float64(s1.ProminentVulgarScore)
	s.QbstOffensiveScore = float64(s1.QbstOffensiveScore)
	s.VulgarScore = float64(s1.VulgarScore)
	return nil
}

type ImageSafesearchContentOffensiveSymbolDetection struct {
	Matches []*ImageSafesearchContentOffensiveSymbolMatch `json:"matches,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Matches") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Matches") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageSafesearchContentOffensiveSymbolDetection) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSafesearchContentOffensiveSymbolDetection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageSafesearchContentOffensiveSymbolMatch: Each entry corresponds to
// an image containing an offensive symbol.
type ImageSafesearchContentOffensiveSymbolMatch struct {
	// Score: Confidence score of the match. The higher, the more likely to
	// match the symbol.
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "INVALID"
	//   "SWASTIKA_WHITE_ON_BLACK"
	//   "SWASTIKA_BLACK_ON_WHITE"
	//   "SWASTIKA_BLACK_ON_WHITE_ROTATED"
	//   "NAZI_YELLOW_BADGE"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageSafesearchContentOffensiveSymbolMatch) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSafesearchContentOffensiveSymbolMatch
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageSafesearchContentOffensiveSymbolMatch) UnmarshalJSON(data []byte) error {
	type NoMethod ImageSafesearchContentOffensiveSymbolMatch
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type ImageSearchImageIndexingInfo struct {
	// ImageLinkSelectionInfo: Image Selection Info
	ImageLinkSelectionInfo []*ImageSearchImageSelectionInfo `json:"imageLinkSelectionInfo,omitempty"`

	// RejectedNotIndexedImageLink: URLs and Amarna status of images on the
	// page for which image data is not yet available and weren't selected
	// for indexing in image search. Used by consumers of docjoins that need
	// a complete view of image urls on the page (i.e. Digdug).
	RejectedNotIndexedImageLink []*ImageSearchUnindexedImageLink `json:"rejectedNotIndexedImageLink,omitempty"`

	// SelectedNotIndexedImageLink: URLs and Amarna status of images on the
	// page for which image data is not yet available and were otherwise
	// selected for indexing in image search. Used by consumers of docjoins
	// that need a complete view of selected image urls on the page (i.e.
	// Hearse, the index selection testbed).
	SelectedNotIndexedImageLink []*ImageSearchUnindexedImageLink `json:"selectedNotIndexedImageLink,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ImageLinkSelectionInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageLinkSelectionInfo")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageSearchImageIndexingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSearchImageIndexingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageSearchImageLicenseInfo: The image license info for licensable
// images(go/Licensable-Images-PRD) This proto in design doc:
// go/licensable-images-edd
type ImageSearchImageLicenseInfo struct {
	// AcquireLicensePage: Records web page url about how to use the
	// licensed image.
	AcquireLicensePage string `json:"acquireLicensePage,omitempty"`

	// CopyrightNotice: Provides copyright info.
	CopyrightNotice string `json:"copyrightNotice,omitempty"`

	// CopyrightNoticeSourceType: Source type for copyright_notice field.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE" - DEFAULT
	//   "SCHEMA_ORG_MARKUP"
	//   "IPTC_METADATA"
	CopyrightNoticeSourceType string `json:"copyrightNoticeSourceType,omitempty"`

	// Creator: creator, authors.
	Creator []string `json:"creator,omitempty"`

	// CreatorSourceType: Source type for creator field.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE" - DEFAULT
	//   "SCHEMA_ORG_MARKUP"
	//   "IPTC_METADATA"
	CreatorSourceType string `json:"creatorSourceType,omitempty"`

	// CreditText: Text for crediting persons or organizations.
	CreditText string `json:"creditText,omitempty"`

	// CreditTextSourceType: Source type for credit_text field.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE" - DEFAULT
	//   "SCHEMA_ORG_MARKUP"
	//   "IPTC_METADATA"
	CreditTextSourceType string `json:"creditTextSourceType,omitempty"`

	// IsRetiredCcUrl: Whether this license url is in retired license list,
	// which is from: https://creativecommons.org/retiredlicenses/
	IsRetiredCcUrl bool `json:"isRetiredCcUrl,omitempty"`

	// Possible values:
	//   "NO_LICENSE"
	//   "CREATIVE_COMMONS_LICENSE" - The license URL is formatted as
	// creativecommons.org/... Creative Commons (CC) license is free for
	// content creators to use when making their work available to the
	// public.
	//   "NON_CREATIVE_COMMONS_LICENSE" - The provider posts a
	// non-Creative-Commons link with information on how to licence that
	// image.
	LicenseType string `json:"licenseType,omitempty"`

	// LicenseUrl: Records license URL.
	LicenseUrl string `json:"licenseUrl,omitempty"`

	// SafesearchFlags: A bitwise-OR of SafeSearch filtering flags. If
	// present, the flags will be a bitwise-AND between this value and all
	// the classifier_porn::query::Vertical enums. If the value is -1, it
	// indicates there is some error with SafeSearch classifier. The default
	// value 0 means no filtering flags are set.
	SafesearchFlags int64 `json:"safesearchFlags,omitempty"`

	// Possible values:
	//   "UNKNOWN_SOURCE" - DEFAULT
	//   "SCHEMA_ORG_MARKUP"
	//   "IPTC_METADATA"
	SourceType string `json:"sourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AcquireLicensePage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AcquireLicensePage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageSearchImageLicenseInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSearchImageLicenseInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageSearchImageSelectionInfo struct {
	// ImageLinkSelectionInfo: Image Selection Info.
	ImageLinkSelectionInfo *ImageMustangImageLinkSelectionInfo `json:"imageLinkSelectionInfo,omitempty"`

	// Url: The image URL.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ImageLinkSelectionInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageLinkSelectionInfo")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ImageSearchImageSelectionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSearchImageSelectionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageSearchUnindexedImageLink struct {
	// AmarnaStatus: Insight on why we do not have data for this imagelink.
	AmarnaStatus *ImageRepositoryAmarnaStatus `json:"amarnaStatus,omitempty"`

	// CrawlStatusInfo: Fields for crawl-status-related debugging
	// information.
	CrawlStatusInfo *ImageRepositoryCrawlStatusInfo `json:"crawlStatusInfo,omitempty"`

	// Url: The image URL.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AmarnaStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmarnaStatus") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageSearchUnindexedImageLink) MarshalJSON() ([]byte, error) {
	type NoMethod ImageSearchUnindexedImageLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageUnderstandingIndexingAnnotation: Annotation packs various
// recognition, detection, embedding, and parsing results. One
// Annotation per bounding box detection.
type ImageUnderstandingIndexingAnnotation struct {
	// Feature: Multiple feature embeddings for this bounding box.
	Feature []*ImageUnderstandingIndexingFeature `json:"feature,omitempty"`

	// LabelGroup: Multiple label annotations for this bounding box.
	LabelGroup []*ImageUnderstandingIndexingLabelGroup `json:"labelGroup,omitempty"`

	// Roi: Detected bounding box. Leave it not set for whole image
	// annotation.
	Roi *ImageUnderstandingIndexingImageRegion `json:"roi,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Feature") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Feature") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ImageUnderstandingIndexingAnnotationGroup struct {
	Annotation []*ImageUnderstandingIndexingAnnotation `json:"annotation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Annotation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Annotation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingAnnotationGroup) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingAnnotationGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageUnderstandingIndexingFeature: Image feature embedding proto. It
// supports various embedding formats: raw bytes, floating point values,
// and tokens.
type ImageUnderstandingIndexingFeature struct {
	// BytesValue: Multiple fields can be set. For example for Starburst V3,
	// they can be used to store compressed byte, raw float feature, and
	// tokens, respectively.
	BytesValue string `json:"bytesValue,omitempty"`

	FloatValue []float64 `json:"floatValue,omitempty"`

	// ImageTemplate: Local features.
	ImageTemplate *PhotosVisionObjectrecImageTemplate `json:"imageTemplate,omitempty"`

	Int32Value []int64 `json:"int32Value,omitempty"`

	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BytesValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BytesValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingFeature) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageUnderstandingIndexingImageRegion: Image region produced by a
// detector.
type ImageUnderstandingIndexingImageRegion struct {
	// Box: Bounding box normalized to [0,1] scale independent on the image
	// size. For example if the original image has the size 1600x1200, the
	// rectangle [200, 200, 800, 600] from the image would have a normalized
	// bounding box [1/8, 1/6, 1/2, 1/2].
	Box *PhotosVisionGroundtruthdbNormalizedBoundingBox `json:"box,omitempty"`

	// Score: Box confidence score. This is used to store the confidence of
	// the box proposal, not the score associated with any specific labels.
	// The box proposal confidence score is a float number per region
	// between [0, 1] indicating how likely a box contains an "object".
	Score float64 `json:"score,omitempty"`

	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Box") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Box") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingImageRegion) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingImageRegion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageUnderstandingIndexingImageRegion) UnmarshalJSON(data []byte) error {
	type NoMethod ImageUnderstandingIndexingImageRegion
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ImageUnderstandingIndexingLabel: A single label with score and meta
// data.
type ImageUnderstandingIndexingLabel struct {
	// CanonicalText: Human readable text.
	CanonicalText string `json:"canonicalText,omitempty"`

	// EntityId: KG entity id.
	EntityId string `json:"entityId,omitempty"`

	// MetaData: Meta data for topicality, visible labels, attribute, etc.
	MetaData []*ImageUnderstandingIndexingMetaData `json:"metaData,omitempty"`

	// Score: Confidence score.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalText") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingLabel) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageUnderstandingIndexingLabel) UnmarshalJSON(data []byte) error {
	type NoMethod ImageUnderstandingIndexingLabel
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// ImageUnderstandingIndexingLabelGroup: LabelGroup is a set of labels
// produced by a single model, or by multiple models that share the same
// versioning. It can be used to store results from ICA, box classifier,
// visible labels, noun+attribute, and so on.
type ImageUnderstandingIndexingLabelGroup struct {
	Label []*ImageUnderstandingIndexingLabel `json:"label,omitempty"`

	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingLabelGroup) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingLabelGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ImageUnderstandingIndexingMetaData: Meta data useful to annotation
// Label and Feature with extra information.
type ImageUnderstandingIndexingMetaData struct {
	FloatValue float64 `json:"floatValue,omitempty"`

	Name string `json:"name,omitempty"`

	StringValue string `json:"stringValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FloatValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FloatValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ImageUnderstandingIndexingMetaData) MarshalJSON() ([]byte, error) {
	type NoMethod ImageUnderstandingIndexingMetaData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ImageUnderstandingIndexingMetaData) UnmarshalJSON(data []byte) error {
	type NoMethod ImageUnderstandingIndexingMetaData
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// IndexingBadSSLCertificate: This protobuffer stores bad SSL
// certificate information for a canonical URL, and meant to be included
// in DocJoins and push to serving time.
type IndexingBadSSLCertificate struct {
	BadSslCertificate *TrawlerSSLCertificateInfo `json:"badSslCertificate,omitempty"`

	// UrlWithBadSslCertificate: The URL where the bad SSL certificate
	// really comes from. Present iff it is different from the source URL,
	// i.e. a redirect target of the source URL).
	UrlWithBadSslCertificate string `json:"urlWithBadSslCertificate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BadSslCertificate")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BadSslCertificate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingBadSSLCertificate) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingBadSSLCertificate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingConverterLocalizedAlternateName struct {
	// Possible values:
	//   "HTTP"
	//   "HTML"
	//   "SITEMAP"
	AnnotationSource string `json:"annotationSource,omitempty"`

	// DeviceMatchInfo: Device match info calculated only by URL pattern.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "WWW_TO_WWW" - Both canonical and localized url are www version.
	//   "WWW_TO_M" - Canonical is www version but localized url is m
	// version.
	//   "M_TO_M" - Both canonical and localized url are m version.
	//   "M_TO_WWW" - Canonical is m version but localized url is www
	// version.
	DeviceMatchInfo string `json:"deviceMatchInfo,omitempty"`

	// EcnFp: Fp96 of webmirror ECN as of the last time the canonical was
	// processed.
	EcnFp string `json:"ecnFp,omitempty"`

	// FeedUrl: Populated if annotation_source is SITEMAP.
	FeedUrl string `json:"feedUrl,omitempty"`

	Language string `json:"language,omitempty"`

	// ParsedLanguage: Parsed language and region code from language field.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	ParsedLanguage string `json:"parsedLanguage,omitempty"`

	ParsedRegion int64 `json:"parsedRegion,omitempty"`

	Url string `json:"url,omitempty"`

	// UrlEncoding: see webutil/urlencoding
	UrlEncoding int64 `json:"urlEncoding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterLocalizedAlternateName) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterLocalizedAlternateName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRawRedirectInfo: The proto to be stored in
// raw_redirect_info column of document table.
type IndexingConverterRawRedirectInfo struct {
	// RawFinalTargetFromRendering: Final redirect target found from
	// rendering. It is the same as the last element of
	// raw_redirect_chain_from_rendering. It is used as an input source for
	// the indexable fragment detection pipeline and also downstream phases.
	RawFinalTargetFromRendering string `json:"rawFinalTargetFromRendering,omitempty"`

	// RawFinalTargetFromTrawler: This is with-fragment version of
	// redirect_with_contents. This field is populated only if there was a
	// fragment. This field is used by indexing::mobile::GetRedirectTarget()
	// defined in indexing/mobile/internal/smartphone-util.cc, which
	// extracts the redirect target for smartphone optimized pages. The
	// extracted target in turn is served in search results for smartphone
	// users. We need with-fragment version because with-fragment url can
	// return different content than fragment-stripped url. For example,
	// http://www.example.com/m#article=11 and http://www.example.com/m can
	// return different content. These cases are most typical for Ajaxy
	// sites. This fragment does not have to be indexable.
	RawFinalTargetFromTrawler string `json:"rawFinalTargetFromTrawler,omitempty"`

	// RawRedirectChainFromRendering: Redirect chain generated from redirect
	// events in rendering. At the beginning of it, there could be some
	// redirects from trawler (i.e. could be partial or entire trawler
	// redirect chain), other redirects have their
	// RedirectParams::is_redirect_from_rendering fields set to true.
	// Redirects here have no RedirectChain::Hop::raw_target fields
	// populated, and targets stored in RedirectChain::Hop::target fields
	// are likely cleaned while keeping fragments (also sometimes they could
	// be uncleaned ones because of cleaning failures), fragments could be
	// indexable or non-indexable.
	RawRedirectChainFromRendering *IndexingConverterRedirectChain `json:"rawRedirectChainFromRendering,omitempty"`

	// RenderingRedirectLimit: This is used to describe how many redirect
	// hops from Webkit were kept in the raw_redirect_chain_from_rendering.
	// If it is -1, it means it kept all the hops from Webkit in redirect
	// chain.
	RenderingRedirectLimit int64 `json:"renderingRedirectLimit,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "RawFinalTargetFromRendering") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "RawFinalTargetFromRendering") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRawRedirectInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRawRedirectInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRedirectChain: Redirect_chain is present for
// redirects, and absent for the final target. It contains the chain
// from the current hop's target to the final target.
type IndexingConverterRedirectChain struct {
	Hop []*IndexingConverterRedirectChainHop `json:"hop,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hop") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hop") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRedirectChain) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRedirectChain
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRedirectChainHop: NOLINT
type IndexingConverterRedirectChainHop struct {
	Params *IndexingConverterRedirectParams `json:"params,omitempty"`

	// RawTarget: Redirect target with fragment. This field is populated
	// only if there was a fragment.
	RawTarget string `json:"rawTarget,omitempty"`

	// Target: Redirect target URL and params of the current hop in the
	// redirect chain.
	Target string `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Params") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Params") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRedirectChainHop) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRedirectChainHop
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRedirectParams: If we detect any server or content
// based redirect, we will store the characteristics in this message.
type IndexingConverterRedirectParams struct {
	// Delay: The time difference between page loading and redirect
	// occurrence. When missing, it means the redirect happens immediately
	// (i.e. delay = 0). In seconds.
	Delay int64 `json:"delay,omitempty"`

	// FrameTargetDeniesFraming: Populated for SINGLE_FRAME and
	// SINGLE_IFRAME redirects only and indicates that the target url
	// requested not to be framed, by virtue of using the "X-Frame-Options"
	// HTTP header.
	FrameTargetDeniesFraming bool `json:"frameTargetDeniesFraming,omitempty"`

	// IsDownload: Indicates corresponding redirect is a download. This
	// field is only set when rendering redirect chain is used. This field
	// represents the value of corresponding
	// "RedirectEvent.target_content_downloaded" field.
	IsDownload bool `json:"isDownload,omitempty"`

	// IsRenderingRedirect: Indicates corresponding redirect is from
	// rendering if set to true.
	IsRenderingRedirect bool `json:"isRenderingRedirect,omitempty"`

	// MetaRedirectFromTrawler: If set, it means that the redirect of type
	// META was detected by Trawler (as opposed to the content processor.)
	// Only makes sense when type is META.
	MetaRedirectFromTrawler bool `json:"metaRedirectFromTrawler,omitempty"`

	// Possible values:
	//   "PERMANENT"
	//   "TEMPORARY"
	//   "WIKIPEDIA_DEPRECATED"
	//   "JAVASCRIPT"
	//   "META"
	//   "SINGLE_FRAME"
	//   "CRYPTO301"
	//   "LINK_REL_CANONICAL"
	//   "SINGLE_IFRAME"
	//   "WEBKIT" - Deprecated.
	//   "META_FRAGMENT"
	//   "SINGLE_CHOICE_300"
	//   "SINGLE_PAGE"
	//   "DATAFILE"
	//   "HTTP_REFRESH" - Like META, but extracted from HTTP headers.
	//   "HTTP_POST" - Usually caused by JavaScript. The HTTP method
	//   "HTML5_HISTORY_API" - of the target URL is POST. The URL in address
	// bar is modified without
	//   "AJAX_CRAWLING" - reloading (usually by Javascript). Similar with
	// DATAFILE. Only used for dup
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Delay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Delay") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRedirectParams) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRedirectParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRichContentData: Contains information about 3
// versions of the content of a document: 1. Original: the crawled
// content (possibly patched in ConversionFilters). 2. Processed: the
// final version of the content indexed in Web search. 3. Intermediate
// (no longer generated): intermediate version between the original and
// the processed content. All 3 versions of the content consist of HTTP
// headers (in unknown encoding) concatenated with the document body (in
// interchange valid UTF-8 encoding).
type IndexingConverterRichContentData struct {
	Range []*IndexingConverterRichContentDataRange `json:"range,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Range") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Range") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRichContentData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRichContentData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRichContentDataRange: Stores an ordered list of
// ranges of content from the original, processed, and intermediate
// content, such that: 1. The original content can be reconstructed from
// the ranges of type ORIGINAL_AND_PROCESSED, ORIGINAL_ONLY, and
// ORIGINAL_AND_INTERMEDIATE. 2. The processed content can be
// reconstructed from the ranges of type ORIGINAL_AND_PROCESSED and
// PROCESSED_ONLY. 3. The intermediate content (if present) can be
// reconstructed from the ranges of type ORIGINAL_AND_INTERMEDIATE and
// INTERMEDIATE_ONLY.
type IndexingConverterRichContentDataRange struct {
	// Possible values:
	//   "ORIGINAL_AND_PROCESSED" - no longer generated
	//   "ORIGINAL_ONLY"
	//   "PROCESSED_ONLY"
	//   "ORIGINAL_AND_INTERMEDIATE" - no longer generated
	//   "INTERMEDIATE_ONLY" - no longer generated
	RangeType string `json:"rangeType,omitempty"`

	// Size: Range size when uncompressed, in bytes.
	Size int64 `json:"size,omitempty"`

	// SourceType: The source of this range of content. Present iff 'type'
	// is PROCESSED_ONLY or INTERMEDIATE_ONLY. Note: 'source_type' is not
	// present for ORIGINAL_AND_PROCESSED, ORIGINAL_ONLY, and
	// ORIGINAL_AND_INTERMEDIATE because for those range types the source of
	// their content is the original crawled content.
	//
	// Possible values:
	//   "SEPARATOR" - No longer generated. It was used for whitespace and
	// tags (e.g. ) added to separate other ranges.
	//   "FRAME" - No longer generated. It was used for content inserted
	// from a frame.
	//   "DOMTRACKER_JAVASCRIPT" - No longer generated. It was used for
	// content generated by DomTracker JavaScript execution.
	//   "FLASH" - No longer generated. It was used for content generated by
	// executing flash animations.
	//   "IFRAME" - No longer generated. It was used for content inserted
	// from an iframe.
	//   "WEBKIT_PHRASES_DEPRECATED" - No longer generated. It was used for
	// text content inserted from WebKit rendering.
	//   "WEBKIT_CONTENT_REPLACEMENT" - Used for content from WebKit
	// rendering replacing all the crawled content.
	SourceType string `json:"sourceType,omitempty"`

	// SourceUrl: The source URL of this range of content. Present iff
	// 'source_type' is present and 'source_type' is FRAME or FLASH or
	// IFRAME.
	SourceUrl string `json:"sourceUrl,omitempty"`

	// Text: The content of the range, compressed with
	// 'text_compression_method'. Present iff 'type' is ORIGINAL_ONLY or
	// ORIGINAL_AND_INTERMEDIATE or INTERMEDIATE_ONLY. Useful to reconstruct
	// the original content or the intermediate content. Note: 'text' is not
	// present for ORIGINAL_AND_PROCESSED and PROCESSED_ONLY because the
	// processed content is already stored separately (in the contents
	// column, and in CompositeDoc.doc.Content.Representation).
	Text string `json:"text,omitempty"`

	// TextCompressionMethod: Method used to compress the 'text' field. May
	// be present only when the 'text' is present.
	//
	// Possible values:
	//   "TEXT_COMPRESSION_NONE" - The text is not compressed.
	//   "TEXT_COMPRESSION_BMDIFF" - The text is BMDiff encoded using the
	// processed content as dictionary.
	TextCompressionMethod string `json:"textCompressionMethod,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RangeType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RangeType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRichContentDataRange) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRichContentDataRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterRobotsInfo: Robots Info encapsulates all robots.txt
// or related information that we know about the Document collected from
// multiple sources such as HTTP headers, meta robots tags etc.
type IndexingConverterRobotsInfo struct {
	// ContentExpiry: time in unix time format after which this content
	// should not be shown in the results. This in inferred from the
	// X-Robots-Tag HTTP header with unavailable_after: Do not use this
	// field directly. There is a column called content_expiration in
	// Alexandria that includes this and other signals.
	ContentExpiry int64 `json:"contentExpiry,omitempty"`

	// Possible values:
	//   "BLOCKING_HOST"
	//   "EMPTY_PAGE"
	//   "MOBILE_IP_RESTRICTED" - Mobile crawler failed to crawl the
	// webpage, but its crawl status was changed to ROBOTED because it is in
	// mobile whitelist.
	//   "CLOAKING_4XX" - URL cloaking googlebot with 4xx response.
	//   "UNSUPPORTED_PROTOCOL" - URL redirects to unsupported protocol in
	// trawler, but the protocol is actually visitable on device.
	ConvertToRobotedReason string `json:"convertToRobotedReason,omitempty"`

	DisallowedReason int64 `json:"disallowedReason,omitempty"`

	// IndexifembeddedReason: IMPORTANT: if you add a new field here, update
	// the MergeRobotsInfo() function to merge the new field.
	IndexifembeddedReason int64 `json:"indexifembeddedReason,omitempty"`

	// MaxImagePreview: Max image preview restriction applied to this data.
	// A value of THUMBNAIL_UNSPECIFIED can be treated as though there is no
	// restriction.
	//
	// Possible values:
	//   "THUMBNAIL_UNSPECIFIED" - Not specified, no preview policy-related
	// restrictions apply (but other restrictions like Fair Use still do).
	//   "NONE" - Publisher explicitly requires a no-image treatment.
	//   "STANDARD" - Translates to 50k pixels.
	//   "LARGE" - Translates to 300k pixels.
	MaxImagePreview string `json:"maxImagePreview,omitempty"`

	// MaxSnippetLength: Max snippet preview restriction applied to this
	// data. If this field is zero, it indicates that no snippet data can be
	// displayed, therefore this field should be checked using
	// has_max_snippet_length to determine if it was set.
	MaxSnippetLength int64 `json:"maxSnippetLength,omitempty,string"`

	NoarchiveReason int64 `json:"noarchiveReason,omitempty"`

	NofollowReason int64 `json:"nofollowReason,omitempty"`

	NoimageframeoverlayReason int64 `json:"noimageframeoverlayReason,omitempty"`

	NoimageindexReason int64 `json:"noimageindexReason,omitempty"`

	// NoindexReason: Bit map of RobotedReasons values. When set to a
	// non-zero value, the document should not be indexed or archived etc.
	// based on the name of the tag.
	NoindexReason int64 `json:"noindexReason,omitempty"`

	NopreviewReason int64 `json:"nopreviewReason,omitempty"`

	NosnippetReason int64 `json:"nosnippetReason,omitempty"`

	NotranslateReason int64 `json:"notranslateReason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentExpiry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentExpiry") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterRobotsInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterRobotsInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingConverterShingleFingerprint: Used for storing fingerprints,
// along with meta-data that expresses how the fingerprint was computed.
// The metadata can be anything that fits in an uint64.
type IndexingConverterShingleFingerprint struct {
	Metadata uint64 `json:"metadata,omitempty,string"`

	// Value: Repeated to allow for fingerprints larger than 64-bits.
	Value googleapi.Uint64s `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingConverterShingleFingerprint) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingConverterShingleFingerprint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingCrawlerIdServingDocumentIdentifier struct {
	// DoubleIndexingExperimentId: Only for double indexing experiments.
	// This field is set for duplicated documents so that docjoin users will
	// not see duplicated docs.
	DoubleIndexingExperimentId string `json:"doubleIndexingExperimentId,omitempty"`

	// DupExperimentId: Only for Experimental clusters, not relevant for
	// production serving data: Index-Dups can run experiments in Quality
	// Clusters where different versions of the same document (e.g. with
	// different signals) are serving in parallel. They are uniquely
	// identified by the dup-experiment-IDs. This is for experimental
	// clusters only. In prod-versions the member will not be set.
	DupExperimentId string `json:"dupExperimentId,omitempty"`

	// Key: The primary identifier of a production document is the document
	// key, which is the same as the row-key in Alexandria, and represents a
	// URL and its crawling context. The document key is the unique
	// identifier for each document, but multiple document keys can cover
	// the same URL (e.g. crawled with different device types). In your
	// production code, please always assume that the document key is the
	// only way to uniquely identify a document. Link for more background
	// information: http://go/url The document key is populated for all docs
	// in indexing since 2014-03. ## Recommended way of reading: const
	// string& doc_key = cdoc.doc().id().key(); ## CHECK(!doc_key.empty());
	// Note: For older DocJoins (e.g. historical DocJoins), the field is not
	// populated. In those scenarios it is recommended to use the function
	// 'GetDocumentKeyFromCompositeDoc' in
	// '//indexing/crawler_id/utils/compositedoc/compositedoc_util.h'
	// instead.
	Key string `json:"key,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DoubleIndexingExperimentId") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DoubleIndexingExperimentId") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingCrawlerIdServingDocumentIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingCrawlerIdServingDocumentIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerAnchorPhraseSpamInfo: Following signals identify
// spike of spammy anchor phrases. Anchors created during the spike are
// tagged with LINK_SPAM_PHRASE_SPIKE.
type IndexingDocjoinerAnchorPhraseSpamInfo struct {
	// PhraseAnchorSpamCount: How many spam phrases found in the anchors
	// among unique domains.
	PhraseAnchorSpamCount float64 `json:"phraseAnchorSpamCount,omitempty"`

	// PhraseAnchorSpamDays: Over how many days 80% of these phrases were
	// discovered.
	PhraseAnchorSpamDays float64 `json:"phraseAnchorSpamDays,omitempty"`

	// PhraseAnchorSpamDemoted: Total number of demoted anchors.
	PhraseAnchorSpamDemoted int64 `json:"phraseAnchorSpamDemoted,omitempty"`

	// PhraseAnchorSpamEnd: Time when anchor spam spike ended with padding.
	PhraseAnchorSpamEnd int64 `json:"phraseAnchorSpamEnd,omitempty"`

	// PhraseAnchorSpamFraq: Spam phrases fraction of all anchors of the
	// document.
	PhraseAnchorSpamFraq float64 `json:"phraseAnchorSpamFraq,omitempty"`

	// PhraseAnchorSpamPenalty: Combined penalty for anchor demotion.
	PhraseAnchorSpamPenalty float64 `json:"phraseAnchorSpamPenalty,omitempty"`

	// PhraseAnchorSpamProcessed: Total number of observed anchors.
	PhraseAnchorSpamProcessed int64 `json:"phraseAnchorSpamProcessed,omitempty"`

	// PhraseAnchorSpamRate: Average daily rate of spam anchor discovery.
	PhraseAnchorSpamRate float64 `json:"phraseAnchorSpamRate,omitempty"`

	// PhraseAnchorSpamStart: Time when anchor spam spike started with
	// padding.
	PhraseAnchorSpamStart int64 `json:"phraseAnchorSpamStart,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PhraseAnchorSpamCount") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PhraseAnchorSpamCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorPhraseSpamInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorPhraseSpamInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingDocjoinerAnchorPhraseSpamInfo) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingDocjoinerAnchorPhraseSpamInfo
	var s1 struct {
		PhraseAnchorSpamCount   gensupport.JSONFloat64 `json:"phraseAnchorSpamCount"`
		PhraseAnchorSpamDays    gensupport.JSONFloat64 `json:"phraseAnchorSpamDays"`
		PhraseAnchorSpamFraq    gensupport.JSONFloat64 `json:"phraseAnchorSpamFraq"`
		PhraseAnchorSpamPenalty gensupport.JSONFloat64 `json:"phraseAnchorSpamPenalty"`
		PhraseAnchorSpamRate    gensupport.JSONFloat64 `json:"phraseAnchorSpamRate"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PhraseAnchorSpamCount = float64(s1.PhraseAnchorSpamCount)
	s.PhraseAnchorSpamDays = float64(s1.PhraseAnchorSpamDays)
	s.PhraseAnchorSpamFraq = float64(s1.PhraseAnchorSpamFraq)
	s.PhraseAnchorSpamPenalty = float64(s1.PhraseAnchorSpamPenalty)
	s.PhraseAnchorSpamRate = float64(s1.PhraseAnchorSpamRate)
	return nil
}

// IndexingDocjoinerAnchorSpamInfo: Following structure summarizes
// output of AnchorSpamPenalizer. Spammy anchors are tagged with
// LINK_SPAM_PHRASE_PENALIZER and demoted to SPAM locality in
// anchor-localizer.cc
type IndexingDocjoinerAnchorSpamInfo struct {
	// AnchorEnd: End date of the last anchor of the document.
	AnchorEnd int64 `json:"anchorEnd,omitempty"`

	// AnchorFraq: Ratio of spam demoted period to all anchor period.
	AnchorFraq float64 `json:"anchorFraq,omitempty"`

	// AnchorStart: Start date of the first anchor of the document.
	AnchorStart int64 `json:"anchorStart,omitempty"`

	// Demoted: Following field record details of anchor demotion in action.
	// How many anchors were demoted.
	Demoted int64 `json:"demoted,omitempty"`

	// DemotedAll: Demoted all anchors in the period or only anchors
	// classified as spam.
	DemotedAll bool `json:"demotedAll,omitempty"`

	// DemotedEnd: End date of the demotion period.
	DemotedEnd int64 `json:"demotedEnd,omitempty"`

	// DemotedStart: Start date of the demotion period.
	DemotedStart int64 `json:"demotedStart,omitempty"`

	// PhraseCount: Following fields record signals used in anchor spam
	// classification. How many spam phrases found in the anchors among
	// unique domains.
	PhraseCount float64 `json:"phraseCount,omitempty"`

	// PhraseDays: Over how many days 80% of these phrases were discovered.
	PhraseDays float64 `json:"phraseDays,omitempty"`

	// PhraseFraq: Spam phrases fraction of all anchors of the document.
	PhraseFraq float64 `json:"phraseFraq,omitempty"`

	// PhraseRate: Average daily rate of spam anchor discovery.
	PhraseRate float64 `json:"phraseRate,omitempty"`

	// Processed: Total number of processed anchors.
	Processed int64 `json:"processed,omitempty"`

	// Sampled: True if anchors were sampled during observation phrase.
	Sampled bool `json:"sampled,omitempty"`

	// Sources: Detailed information about trusted sources and match
	// computation. Populated only when --anchorspam_penalizer_debug=true.
	Sources []*IndexingDocjoinerAnchorTrustedInfo `json:"sources,omitempty"`

	// SpamDebugInfo: Additional debug information about computation of spam
	// probability.
	SpamDebugInfo string `json:"spamDebugInfo,omitempty"`

	// SpamPenalty: Combined penalty for anchor demotion.
	SpamPenalty float64 `json:"spamPenalty,omitempty"`

	// SpamProbability: Predicted probability of spam.
	SpamProbability float64 `json:"spamProbability,omitempty"`

	// TrustedDemoted: Number of trusted anchors used in computation of spam
	// probability.
	TrustedDemoted int64 `json:"trustedDemoted,omitempty"`

	// TrustedExamples: Examples of trusted sources.
	TrustedExamples string `json:"trustedExamples,omitempty"`

	// TrustedMatching: Number of trusted anchors with anchor text matching
	// spam terms.
	TrustedMatching int64 `json:"trustedMatching,omitempty"`

	// TrustedTarget: Following fields record details about trusted anchors
	// True if is this URL is on trusted source.
	TrustedTarget bool `json:"trustedTarget,omitempty"`

	// TrustedTotal: Total number of trusted sources for this URL.
	TrustedTotal int64 `json:"trustedTotal,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorEnd") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorEnd") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorSpamInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorSpamInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingDocjoinerAnchorSpamInfo) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingDocjoinerAnchorSpamInfo
	var s1 struct {
		AnchorFraq      gensupport.JSONFloat64 `json:"anchorFraq"`
		PhraseCount     gensupport.JSONFloat64 `json:"phraseCount"`
		PhraseDays      gensupport.JSONFloat64 `json:"phraseDays"`
		PhraseFraq      gensupport.JSONFloat64 `json:"phraseFraq"`
		PhraseRate      gensupport.JSONFloat64 `json:"phraseRate"`
		SpamPenalty     gensupport.JSONFloat64 `json:"spamPenalty"`
		SpamProbability gensupport.JSONFloat64 `json:"spamProbability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnchorFraq = float64(s1.AnchorFraq)
	s.PhraseCount = float64(s1.PhraseCount)
	s.PhraseDays = float64(s1.PhraseDays)
	s.PhraseFraq = float64(s1.PhraseFraq)
	s.PhraseRate = float64(s1.PhraseRate)
	s.SpamPenalty = float64(s1.SpamPenalty)
	s.SpamProbability = float64(s1.SpamProbability)
	return nil
}

// IndexingDocjoinerAnchorStatistics: Statistics of the anchors in a
// docjoin. Next available tag ID: 63.
type IndexingDocjoinerAnchorStatistics struct {
	AnchorCount int64 `json:"anchorCount,omitempty"`

	// AnchorPhraseCount: The number of unique anchor phrases. Capped by the
	// constant kMaxAnchorPhraseCountInStats (=5000) defined in
	// indexing/docjoiner/anchors/anchor-manager.cc.
	AnchorPhraseCount int64 `json:"anchorPhraseCount,omitempty"`

	// AnchorSpamInfo: This structure contains signals and penalties of
	// AnchorSpamPenalizer. It replaces phrase_anchor_spam_info above, that
	// is deprecated.
	AnchorSpamInfo *IndexingDocjoinerAnchorSpamInfo `json:"anchorSpamInfo,omitempty"`

	// AnchorsWithDedupedImprovanchors: The number of anchors for which some
	// ImprovAnchors phrases have been removed due to duplication within
	// source org.
	AnchorsWithDedupedImprovanchors int64 `json:"anchorsWithDedupedImprovanchors,omitempty"`

	// BadbacklinksPenalized: Whether this doc is penalized by BadBackLinks,
	// in which case we should not use improvanchor score in mustang
	// ascorer.
	BadbacklinksPenalized bool `json:"badbacklinksPenalized,omitempty"`

	BaseAnchorCount int64 `json:"baseAnchorCount,omitempty"`

	BaseOffdomainAnchorCount int64 `json:"baseOffdomainAnchorCount,omitempty"`

	DroppedHomepageAnchorCount int64 `json:"droppedHomepageAnchorCount,omitempty"`

	DroppedLocalAnchorCount int64 `json:"droppedLocalAnchorCount,omitempty"`

	DroppedNonLocalAnchorCount int64 `json:"droppedNonLocalAnchorCount,omitempty"`

	// DroppedRedundantAnchorCount: Sum of anchors_dropped in the repeated
	// group RedundantAnchorInfo, but can go higher if the latter reaches
	// the cap of kMaxRecordsToKeep.
	// (indexing/docjoiner/anchors/anchor-loader.cc), currently 10,000
	DroppedRedundantAnchorCount int64 `json:"droppedRedundantAnchorCount,omitempty"`

	FakeAnchorCount int64 `json:"fakeAnchorCount,omitempty"`

	ForwardedAnchorCount int64 `json:"forwardedAnchorCount,omitempty"`

	ForwardedOffdomainAnchorCount int64 `json:"forwardedOffdomainAnchorCount,omitempty"`

	// GlobalAnchorDelta: Metric of number of changed global anchors
	// computed as, size(union(previous, new) - intersection(previous,
	// new)).
	GlobalAnchorDelta int64 `json:"globalAnchorDelta,omitempty"`

	LinkBeforeSitechangeTaggedAnchors int64 `json:"linkBeforeSitechangeTaggedAnchors,omitempty"`

	LocalAnchorCount int64 `json:"localAnchorCount,omitempty"`

	LowCorpusAnchorCount int64 `json:"lowCorpusAnchorCount,omitempty"`

	LowCorpusOffdomainAnchorCount int64 `json:"lowCorpusOffdomainAnchorCount,omitempty"`

	MediumCorpusAnchorCount int64 `json:"mediumCorpusAnchorCount,omitempty"`

	MediumCorpusOffdomainAnchorCount int64 `json:"mediumCorpusOffdomainAnchorCount,omitempty"`

	// MinDomainHomePageLocalOutdegree: Minimum local outdegree of all
	// anchor sources that are domain home pages as well as on the same
	// domain as the current target URL.
	MinDomainHomePageLocalOutdegree int64 `json:"minDomainHomePageLocalOutdegree,omitempty"`

	// MinHostHomePageLocalOutdegree: Minimum local outdegree of all anchor
	// sources that are host home pages as well as on the same host as the
	// current target URL.
	MinHostHomePageLocalOutdegree int64 `json:"minHostHomePageLocalOutdegree,omitempty"`

	NonLocalAnchorCount int64 `json:"nonLocalAnchorCount,omitempty"`

	OffdomainAnchorCount int64 `json:"offdomainAnchorCount,omitempty"`

	OndomainAnchorCount int64 `json:"ondomainAnchorCount,omitempty"`

	OnsiteAnchorCount int64 `json:"onsiteAnchorCount,omitempty"`

	// PageFromExpiredTaggedAnchors: Set in
	// SignalPenalizer::FillInAnchorStatistics.
	PageFromExpiredTaggedAnchors int64 `json:"pageFromExpiredTaggedAnchors,omitempty"`

	PageMismatchTaggedAnchors int64 `json:"pageMismatchTaggedAnchors,omitempty"`

	// PenguinEarlyAnchorProtected: Doc is protected by goodness of early
	// anchors.
	PenguinEarlyAnchorProtected bool `json:"penguinEarlyAnchorProtected,omitempty"`

	// PenguinLastUpdate: BEGIN: Penguin related fields. Timestamp when
	// penguin scores were last updated. Measured in days since Jan. 1st
	// 1995.
	PenguinLastUpdate int64 `json:"penguinLastUpdate,omitempty"`

	// PenguinPenalty: Page-level penguin penalty (0 = good, 1 = bad).
	PenguinPenalty float64 `json:"penguinPenalty,omitempty"`

	// PenguinTooManySources: Doc not scored because it has too many anchor
	// sources. END: Penguin related fields.
	PenguinTooManySources bool `json:"penguinTooManySources,omitempty"`

	Perdupstats []*IndexingDocjoinerAnchorStatisticsPerDupStats `json:"perdupstats,omitempty"`

	// PhraseAnchorSpamInfo: Following signals identify spike of spammy
	// anchor phrases. Anchors created during the spike are tagged with
	// LINK_SPAM_PHRASE_SPIKE.
	PhraseAnchorSpamInfo *IndexingDocjoinerAnchorPhraseSpamInfo `json:"phraseAnchorSpamInfo,omitempty"`

	// RedundantAnchorForPhraseCapCount: Total anchor dropped due to exceed
	// per domain phrase cap. Equals to sum of anchors_dropped in the
	// repeated group RedundantAnchorInfoForPhraseCap, but can go higher if
	// the latter reaches the cap of kMaxDomainsToKeepForPhraseCap
	// (indexing/docjoiner/anchors/anchor-loader.h), currently 1000.
	RedundantAnchorForPhraseCapCount int64 `json:"redundantAnchorForPhraseCapCount,omitempty"`

	Redundantanchorinfo []*IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo `json:"redundantanchorinfo,omitempty"`

	Redundantanchorinfoforphrasecap []*IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap `json:"redundantanchorinfoforphrasecap,omitempty"`

	// ScannedAnchorCount: The total number of anchors being scanned from
	// storage.
	ScannedAnchorCount int64 `json:"scannedAnchorCount,omitempty"`

	// SkippedAccumulate: A count of the number of times anchor accumulation
	// has been skipped for this document. Note: Only used when canonical.
	SkippedAccumulate int64 `json:"skippedAccumulate,omitempty"`

	// SkippedOrReusedReason: Reason to skip accumulate, when skipped, or
	// Reason for reprocessing when not skipped.
	SkippedOrReusedReason string `json:"skippedOrReusedReason,omitempty"`

	// SpamLog10Odds: The log base 10 odds that this set of anchors exhibits
	// spammy behavior. Computed in the AnchorLocalizer.
	SpamLog10Odds float64 `json:"spamLog10Odds,omitempty"`

	// Timestamp: Walltime of when anchors were accumulated last.
	Timestamp int64 `json:"timestamp,omitempty"`

	TopPrOffdomainAnchorCount int64 `json:"topPrOffdomainAnchorCount,omitempty"`

	TopPrOndomainAnchorCount int64 `json:"topPrOndomainAnchorCount,omitempty"`

	// TopPrOnsiteAnchorCount: According to anchor quality bucket, anchor
	// with pagrank > 51000 is the best anchor. anchors with pagerank <
	// 47000 are all same.
	TopPrOnsiteAnchorCount int64 `json:"topPrOnsiteAnchorCount,omitempty"`

	// TotalDomainPhrasePairsAboveLimit: The following should be equal to
	// the size of the following repeated group, except that it can go
	// higher than 10,000.
	TotalDomainPhrasePairsAboveLimit int64 `json:"totalDomainPhrasePairsAboveLimit,omitempty"`

	// TotalDomainPhrasePairsSeenApprox: Number of domain/phrase pairs in
	// total -- i.e. how many anchors we would have if the domain/phrase
	// cutoff was set to 1 instead of 200. This is "approx" for large anchor
	// clusters because there can be double counting when the LRU cache
	// forgets about rare domain/phrase pairs.
	TotalDomainPhrasePairsSeenApprox int64 `json:"totalDomainPhrasePairsSeenApprox,omitempty"`

	// TotalDomainsAbovePhraseCap: Number of domains above per domain phrase
	// cap. We see too many phrases in the domains.
	TotalDomainsAbovePhraseCap int64 `json:"totalDomainsAbovePhraseCap,omitempty"`

	// TotalDomainsSeen: Number of domains seen in total.
	TotalDomainsSeen int64 `json:"totalDomainsSeen,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorCount") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorStatistics) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorStatistics
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingDocjoinerAnchorStatistics) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingDocjoinerAnchorStatistics
	var s1 struct {
		PenguinPenalty gensupport.JSONFloat64 `json:"penguinPenalty"`
		SpamLog10Odds  gensupport.JSONFloat64 `json:"spamLog10Odds"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PenguinPenalty = float64(s1.PenguinPenalty)
	s.SpamLog10Odds = float64(s1.SpamLog10Odds)
	return nil
}

// IndexingDocjoinerAnchorStatisticsPerDupStats:
// ----------------------------------------------------------------------
// --- The total number of anchors collected per dupforwarding
// (including the canonical itself). Includes additional data about
// redundant and offdomain counts and the last timestamp it was
// collected from.
type IndexingDocjoinerAnchorStatisticsPerDupStats struct {
	// AnchorCount: Count of anchors kept from forwarding.
	AnchorCount int64 `json:"anchorCount,omitempty"`

	// CollectType: This is EcnCollectType in anchor-ecn-matcher.h for the
	// latest ECN of this dup: - kCollectNormal = 0, // Normal collection. -
	// kCollectUnforwarded = 1, // Forwarding leader docid match only. -
	// kCollectWhitelisted = 2, // Collected anchors matching whitelist. -
	// kCollectNone = 4 // Skipped ECN anchor cluster.
	CollectType int64 `json:"collectType,omitempty"`

	// DupUrl: If missing, the same as the canonical.
	DupUrl string `json:"dupUrl,omitempty"`

	// OffdomainAnchorCount: Count of offdomain anchors.
	OffdomainAnchorCount int64 `json:"offdomainAnchorCount,omitempty"`

	// RedundantAnchorCount: Count of redundant anchors.
	RedundantAnchorCount int64 `json:"redundantAnchorCount,omitempty"`

	// ScannedAnchorCount: The number of anchors being scanned from storage
	// per dupforwarding.
	ScannedAnchorCount int64 `json:"scannedAnchorCount,omitempty"`

	// Timestamp: Walltime when this was scanned last.
	Timestamp int64 `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorCount") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorStatisticsPerDupStats) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorStatisticsPerDupStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo:
// ----------------------------------------------------------------------
// --- The total number of redundant anchors dropped per (domain, text).
// If we receive a large number of anchors from a particular domain,
// then we'll throw out all but 200 of them from that domain. The data
// is sorted by the (domain, text) pairs. This is capped at 10,000
// entries (if less, it will have the same number of elements as the
// above_limit count).
type IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo struct {
	AnchorsDropped int64 `json:"anchorsDropped,omitempty,string"`

	Domain string `json:"domain,omitempty"`

	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorsDropped") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorsDropped") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap struct {
	AnchorsDropped int64 `json:"anchorsDropped,omitempty"`

	Domain string `json:"domain,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorsDropped") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorsDropped") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerAnchorTrustedInfo: This message summarized anchors
// of one trusted site.
type IndexingDocjoinerAnchorTrustedInfo struct {
	// MatchedScore: Difference in KL-divergence from spam and non-spam
	// anchors. Value >0 indicate that anchor text from this trusted source
	// is similar to anchors classified as spam which means that spammy
	// anchors are legitimate.
	MatchedScore float64 `json:"matchedScore,omitempty"`

	// MatchedScoreInfo: Detailed debug information about computation of
	// trusted anchors match. Populated only when
	// --anchorspam_penalizer_debug=true
	MatchedScoreInfo []string `json:"matchedScoreInfo,omitempty"`

	// PhrasesScore: Count of anchors classified as spam using anchor text.
	PhrasesScore float64 `json:"phrasesScore,omitempty"`

	// Site: Site name from anchor.source().site().
	Site string `json:"site,omitempty"`

	// Text: Tokenized text of all anchors from the site.
	Text []string `json:"text,omitempty"`

	// TrustedScore: Fraction of pages with newsy anchors on the site, >0
	// for trusted sites.
	TrustedScore float64 `json:"trustedScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MatchedScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchedScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerAnchorTrustedInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerAnchorTrustedInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingDocjoinerAnchorTrustedInfo) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingDocjoinerAnchorTrustedInfo
	var s1 struct {
		MatchedScore gensupport.JSONFloat64 `json:"matchedScore"`
		PhrasesScore gensupport.JSONFloat64 `json:"phrasesScore"`
		TrustedScore gensupport.JSONFloat64 `json:"trustedScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MatchedScore = float64(s1.MatchedScore)
	s.PhrasesScore = float64(s1.PhrasesScore)
	s.TrustedScore = float64(s1.TrustedScore)
	return nil
}

// IndexingDocjoinerCDocBuildInfo: Holds extra info except annotations
// and raw cdoc for buildint the final cdoc.
type IndexingDocjoinerCDocBuildInfo struct {
	ExtraMessage *Proto2BridgeMessageSet `json:"extraMessage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExtraMessage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExtraMessage") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerCDocBuildInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerCDocBuildInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerDataVersion: DataVersion tracks the version of data
// in CompositeDoc. The notion of "data" here is loose and people can
// define the name of their own. For example, a signal generated by
// Index Signals or an annotation generated by Goldmine (and other
// components) can all be considered as data here. Each field in this
// proto represents the human readable version string and the timestamp
// of one particular data. We choose to explicitly list out all of the
// data here for better understanding about which data are tracked. NOTE
// that human_readable_version is not intended for comparison, use
// timestamp_micros. In addition, we have an annotation about the field
// paths of each data. With proto reflection (using
// google3/net/proto2/util/public/field_path.h), downstream systems can
// take advantage of this annotation to automatically handle newly
// introduced data without modifying their code. Please also see the
// comment of FieldProjector above. There are also some fields in
// DataInfo that annotate who generates the data, the Index Signals or
// Goldmine annotator name.
type IndexingDocjoinerDataVersion struct {
	AcceleratedShoppingSignal *IndexingDocjoinerDataVersionVersionInfo `json:"acceleratedShoppingSignal,omitempty"`

	ChromeCounts *IndexingDocjoinerDataVersionVersionInfo `json:"chromeCounts,omitempty"`

	// InstantNavboost:
	// LINT.ThenChange(//depot/google3/indexing/ames/spanner/schema/websearch
	// _main.sdl)
	InstantNavboost *IndexingDocjoinerDataVersionVersionInfo `json:"instantNavboost,omitempty"`

	Localyp *IndexingDocjoinerDataVersionVersionInfo `json:"localyp,omitempty"`

	LocalypVersion string `json:"localypVersion,omitempty"`

	ModernFormatContent *IndexingDocjoinerDataVersionVersionInfo `json:"modernFormatContent,omitempty"`

	ModernFormatContentVersion string `json:"modernFormatContentVersion,omitempty"`

	// Navboost: LINT.IfChange
	Navboost *IndexingDocjoinerDataVersionVersionInfo `json:"navboost,omitempty"`

	// NavboostVersion: DEPRECATED
	NavboostVersion string `json:"navboostVersion,omitempty"`

	Rankembed *IndexingDocjoinerDataVersionVersionInfo `json:"rankembed,omitempty"`

	UniversalFacts *IndexingDocjoinerDataVersionVersionInfo `json:"universalFacts,omitempty"`

	VideoScoringSignal *IndexingDocjoinerDataVersionVersionInfo `json:"videoScoringSignal,omitempty"`

	VideoScoringSignalVersion string `json:"videoScoringSignalVersion,omitempty"`

	Volt *IndexingDocjoinerDataVersionVersionInfo `json:"volt,omitempty"`

	VoltVersion string `json:"voltVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AcceleratedShoppingSignal") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AcceleratedShoppingSignal") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerDataVersion) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerDataVersion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDocjoinerDataVersionVersionInfo struct {
	HumanReadableVersion string `json:"humanReadableVersion,omitempty"`

	TimestampMicros int64 `json:"timestampMicros,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "HumanReadableVersion") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HumanReadableVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerDataVersionVersionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerDataVersionVersionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerServingTimeClusterId: The serving cluster id
// metadata. Why we cluster the documents. The default value is UNKNOWN.
// Serving-Side Clustering is used for pages which represent the same
// content but are not identical (e.g. translated pages, or paginated
// content). Those documents are not dup-clustered in Alexandria so that
// all documents (and their tokens) are available to search queries.
// However, those documents are assigned the same
// Serving-Time-Cluster-ID (on the same reasontype), which during
// serving guarantees that only one of them is shown to the user.
type IndexingDocjoinerServingTimeClusterId struct {
	// ClusterId: The unique id to distinguish members in cluster. It could
	// be generated in different ways according to reason, e.g.
	// LINK_REL_NEXT_PREVIOUS: it is the fingerprint of the URL of index 0;
	// PAGE_PARAMETER_INFO: it is the fingerprint of pagination pattern
	// (pagination_pattern_fp field in PageParamInfo message).
	ClusterId uint64 `json:"clusterId,omitempty,string"`

	// IndexForDebugging: The member index of this document in cluster.
	// Starts from "0". Note that indices of pages in a cluster may not be
	// consistent with each other, because we may update them at different
	// points in time. Currently only used for debugging.
	IndexForDebugging int64 `json:"indexForDebugging,omitempty"`

	// Reason: The reason why this document is clustered into this cluster.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "LINK_REL_NEXT_PREVIOUS" - The documents are clustered together by
	// link rel=next/previous elements.
	//   "PAGE_PARAMETER_INFO" - The documents are clustered together by
	// page parameter information.
	//   "DEPRECATED_DO_NOT_USE_LANGUAGE_REGION_VARIATION" - Language/Region
	// variation. No longer used as serving-time-cluster-IDs, handled via
	// it's own fields and twiddler.
	//   "SITE_DUP" - The documents are clustered together if they belong to
	// sites which are suspected to be identical.
	//   "FLIPPED_CANONICAL" - The documents are canonicals chosen from the
	// same dup cluster, but at slightly different points in time. This
	// could be because they're serving from different tiers, e.g., daily
	// vs. base, or different segments in teragoogle; or it could simply be
	// a result of non-atomic updates to librarian. While Alexandria
	// guarantees that there will only ever be one canonical, it is possible
	// for an old and a new canonical to be serving at the same time. In
	// such a case, they should share this ID.
	//   "MOBILE_REDIRECTION_DUP" - The documents are clustered together if
	// they are redirected to the same URL on smartphone. This type is only
	// used for smartphone traffic.
	//   "BROKEN_REL_CANONICAL" - The documents are connected by a
	// rel=canonical link that has been found invalid by
	// mr-bad-rel-canonicals.
	//   "ROBOTED_SAME_HOST" - The documents that are roboted and belong to
	// the same host and have the same suffix are clustered together. See
	// http://sites/index-dups/clustering/roboted for details.
	//   "DEPRECATED_DO_NOT_USE_SAME_PRE_RENDER_CHECKSUM" - The documents
	// that have same pre-rendering checksum 96bit are clustered together.
	// This is used as a safe guard for the launch of replacing pre-render
	// checksum 96bit with rendered checksum 96bit.
	Reason string `json:"reason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerServingTimeClusterId) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerServingTimeClusterId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDocjoinerServingTimeClusterIds: This message contains a set
// of cluster ids used to de-dup at serving time. A document could be
// clustered into different clusters according to different properties.
type IndexingDocjoinerServingTimeClusterIds struct {
	// ClusterId: The exact cluster metadata for each individual cluster if
	// any.
	ClusterId []*IndexingDocjoinerServingTimeClusterId `json:"clusterId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDocjoinerServingTimeClusterIds) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDocjoinerServingTimeClusterIds
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsComputedLocalizedAlternateNamesLocaleEntry struct {
	// ClusterId: Cluster-ID of that locale entry. Not Populated if the
	// message is part of a Cluster-Proto (e.g. when loaded as a signal).
	// The data is being populated when the proto is used outside of the
	// cluster context. For instance, when being used as a
	// dups-computed-localized-alternate-name.
	ClusterId uint64 `json:"clusterId,omitempty,string"`

	// DeviceMatchInfo: Device match info calculated only by URL pattern.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "WWW_TO_WWW" - Both canonical and localized url are www version.
	//   "WWW_TO_M" - Canonical is www version but localized url is m
	// version.
	//   "M_TO_M" - Both canonical and localized url are m version.
	//   "M_TO_WWW" - Canonical is m version but localized url is www
	// version.
	DeviceMatchInfo string `json:"deviceMatchInfo,omitempty"`

	// Language: Language/Region code. E.g. "en-US" or "de". Allowed values
	// are language-region codes based on the W3C recommendation
	// http://www.w3.org/TR/html401/struct/dirlang.html#langcodes
	Language string `json:"language,omitempty"`

	// Url: The alternate url representing the content for a specific
	// language and region (or language only).
	Url string `json:"url,omitempty"`

	// UrlEncoding: see webutil/urlencoding
	UrlEncoding int64 `json:"urlEncoding,omitempty"`

	// UrlRegionCode: The region code that was extracted from the URL,
	// either by the TLD or via a pattern (like 'en-ca' as a path element)..
	// Always filled in if known, unlike the sometimes left out region part
	// of the language field. Unknown Region Code
	UrlRegionCode int64 `json:"urlRegionCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsComputedLocalizedAlternateNamesLocaleEntry) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsComputedLocalizedAlternateNamesLocaleEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsLocalizedLocalizedCluster struct {
	// BoostSourceBlocker: Defined as a source-blocker, a result which can
	// be a boost target but should itself not be boosted (e.g. roboted
	// documents). For more details on source and target blocking, please
	// read through the code for
	// quality/twiddler/impls/PROTECTED/local_result_twiddler_v2.cc
	BoostSourceBlocker bool `json:"boostSourceBlocker,omitempty"`

	Cluster []*IndexingDupsLocalizedLocalizedClusterCluster `json:"cluster,omitempty"`

	// DeprecatedHreflangInfo: Since July 2014 those two fiels are no longer
	// populated, the data is stored in the TargetLinkSets instead. The
	// deprecated fields contain values only for docs which have not been
	// processed since July 2014.
	DeprecatedHreflangInfo *IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo `json:"deprecatedHreflangInfo,omitempty"`

	DeprecatedOutlinksInfo *IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo `json:"deprecatedOutlinksInfo,omitempty"`

	// DocumentLanguage: The language of this document (as detected by
	// on-page language detection, not influenced by external anchor signals
	// or other indirect conclusions).
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	DocumentLanguage string `json:"documentLanguage,omitempty"`

	HreflangTargetLink *IndexingDupsLocalizedLocalizedClusterTargetLinkSets `json:"hreflangTargetLink,omitempty"`

	InbodyTargetLink *IndexingDupsLocalizedLocalizedClusterTargetLinkSets `json:"inbodyTargetLink,omitempty"`

	OutlinksTargetLink *IndexingDupsLocalizedLocalizedClusterTargetLinkSets `json:"outlinksTargetLink,omitempty"`

	// SitedupRuleId: The list of Sitedup rule IDs for this specific URL.
	// The value is only populated if the URL has at least one localized
	// cluster fulfilling the following conditions: - spans more than one
	// host - does not have filtering enabled due to other input (e.g. due
	// to being a hreflang cluster).
	SitedupRuleId googleapi.Uint64s `json:"sitedupRuleId,omitempty"`

	// WarningMessage: A warning indicator that a problem has occurred, e.g.
	// cross-domain links being filtered early. The warning is just
	// presented for debugging purposes.
	WarningMessage []string `json:"warningMessage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoostSourceBlocker")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoostSourceBlocker") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedCluster) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsLocalizedLocalizedClusterCluster struct {
	// ClusterId: The cluster id, a unique int64 id for the cluster.
	ClusterId uint64 `json:"clusterId,omitempty,string"`

	// Possible values:
	//   "UNDEFINED_CLUSTER_TYPE"
	//   "COMPUTED_ORGMAP"
	//   "COMPUTED_URL_PATTERN"
	//   "HREFLANG_ANNOTATION"
	//   "HREFLANG_ANNOTATION_OPTIMISTIC_GUESS"
	//   "HREFLANG_ANNOTATION_FROM_BODY"
	//   "PAGE_OUTLINKS"
	//   "NOT_USED_4"
	//   "NOT_USED_6"
	//   "NOT_USED_8"
	//   "NOT_USED_9"
	ClusterType string `json:"clusterType,omitempty"`

	// DeprecatedDebugInfo: Debug Info being attached to each cluster, to
	// understand how it was created. That info is stored in Alexandria, but
	// not available during serving.
	DeprecatedDebugInfo []string `json:"deprecatedDebugInfo,omitempty"`

	// FilteringEnabled: Indicates that filtering can be applied on the
	// category (if many results of one cluster show up on the SERP, only
	// one should be kept).
	FilteringEnabled bool `json:"filteringEnabled,omitempty"`

	// Language: The language as represented by the URL, e.g. 'use this
	// document on the cluster for German queries'.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	Language string `json:"language,omitempty"`

	// RegionCode: Same as language, except for the country. This is the
	// Stable Region Code. This value may be UNKNOWN even though the URL
	// region code is known, namely when the known region code was the main
	// region for the language and for that language no other region is
	// specified (e.g. de-DE being the only german variation). Unknown
	// Region Code
	RegionCode int64 `json:"regionCode,omitempty"`

	// UrlRegionCode: Similar to region_code, but always has the value
	// filled in if known. Unknown Region Code
	UrlRegionCode int64 `json:"urlRegionCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterCluster) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo:
// ClusterInfo no longer being populated (they are the 'old' version of
// storing meta-information only available in old not-reprocessed
// documents, all documents processed since July 2014 use the
// 'TargetLinkSet' instead.
type IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo struct {
	// FpOutlinks: A fingerprint of all outlink-URLs of this document that
	// have been used as algorithmic input.
	FpOutlinks uint64 `json:"fpOutlinks,omitempty,string"`

	// LastModifiedInputTimestampMs: The last time the set of outgoing links
	// of this document was modified. This is the input for our calculation.
	LastModifiedInputTimestampMs int64 `json:"lastModifiedInputTimestampMs,omitempty,string"`

	// LastProcessedOutputTimestampMs: The last time the cross-validation of
	// the links was done. Between that last timestamp and now, only cached
	// results have been used.
	LastProcessedOutputTimestampMs int64 `json:"lastProcessedOutputTimestampMs,omitempty,string"`

	// LinkMember: All verified members of the cluster (including recursive
	// inclusions).
	LinkMember []*IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember `json:"linkMember,omitempty"`

	UnvalidatedOutlink []*IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData `json:"unvalidatedOutlink,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FpOutlinks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FpOutlinks") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData struct {
	// Possible values:
	//   "HTTP"
	//   "HTML"
	//   "SITEMAP"
	AnnotationSource string `json:"annotationSource,omitempty"`

	// CrawlTimestamp: If set, represents the crawl timestamp. If not set,
	// there is no known crawl timestamp for that url.
	CrawlTimestamp int64 `json:"crawlTimestamp,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember struct {
	// Possible values:
	//   "HTTP"
	//   "HTML"
	//   "SITEMAP"
	AnnotationSource string `json:"annotationSource,omitempty"`

	LanguageCode []string `json:"languageCode,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterTargetLink: Message containing
// information about the localized URL linked to from this document in a
// localized-variation-context.
type IndexingDupsLocalizedLocalizedClusterTargetLink struct {
	LinkData *IndexingDupsLocalizedLocalizedClusterTargetLinkLink `json:"linkData,omitempty"`

	MetaData *IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata `json:"metaData,omitempty"`

	TargetDocData *IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData `json:"targetDocData,omitempty"`

	// Possible values:
	//   "VALIDATION_UNKNOWN"
	//   "SELFLINK" - Link is a self link to source URL.
	//   "NO_BACKLINK" - Link doesn't have a backlink path to source URL.
	//   "HAS_BACKLINK" - Link has a backlink path to source URL.
	//   "BLINDLY_TRUSTED" - Link is missing data or was crawled prior to
	// source URL, so its blindly trusted with no verfication of a backlink.
	//   "BLINDLY_TRUSTED_WITH_BACKLINK" - The union of BLINDLY_TRUSTED and
	// HAS_BACKLINK.
	ValidationStatus string `json:"validationStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LinkData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LinkData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLink) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterTargetLinkLink: Basic
// information about the link target, i.e. the URL or the language code
// it's believed to represent.
type IndexingDupsLocalizedLocalizedClusterTargetLinkLink struct {
	AnnotationSourceInfo []*IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo `json:"annotationSourceInfo,omitempty"`

	// CrossDomain: For a link A->B where B is represented by this proto,
	// cross_domain := Host(A) != Host(B).
	CrossDomain bool `json:"crossDomain,omitempty"`

	// Url: The URL the information in TargetLink refers to.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnnotationSourceInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationSourceInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLinkLink) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLinkLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInf
// o: Message describing where was the link discovered and with what
// language annotation.
type IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo struct {
	// AnchorText: Optional field for storing the anchor text the language
	// code was extracted from. Applies to outlinks only.
	AnchorText string `json:"anchorText,omitempty"`

	// AnnotationSource: Information about where the language code was
	// extracted from.
	//
	// Possible values:
	//   "HTTP"
	//   "HTML"
	//   "SITEMAP"
	AnnotationSource string `json:"annotationSource,omitempty"`

	// LanguageCode: Language code extracted from the URL (hreflang or
	// outlink). One URL can represent multiple language codes, like e.g.
	// de-at and de-ch
	LanguageCode string `json:"languageCode,omitempty"`

	// SourceFeedUrl: Optional field that stores the feed URL where a
	// Sitemap annotation was discovered. Only populated if
	// annotation_source is SITEMAP.
	SourceFeedUrl string `json:"sourceFeedUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata: Information
// derived from alexandria when processing the cross-link validation
// (e.g. when this was done the last time, or when we started to see the
// outlink for the first time).
type IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata struct {
	// FirstSeenMs: When was the first time a link seen. Defaults to last
	// crawled timestamp.
	FirstSeenMs int64 `json:"firstSeenMs,omitempty,string"`

	// LastVerifiedMs: When was the last time a link validated. Validation
	// is the process of (re)reading the relevant information for a linked
	// document from its respective row in the document table. Data needed
	// for understanding the correctness of the cluster is copied over to
	// have it available locally.
	LastVerifiedMs int64 `json:"lastVerifiedMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "FirstSeenMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FirstSeenMs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingDupsLocalizedLocalizedClusterTargetLinkSets struct {
	// DirectTargetLink: Direct links are the simplest scenarios where A
	// simply links to B.
	DirectTargetLink []*IndexingDupsLocalizedLocalizedClusterTargetLink `json:"directTargetLink,omitempty"`

	// IndirectTargetLink: Repeated field for URLs that are not directly
	// linking to the document TargetLink refers to. We can encounter the
	// following scenario: A -> Links to B -> links to C (i.e. without (A)
	// linking to (C)). In the context of B, indirect_inclusion would
	// include the link to 'C' but not the link back to 'A'.
	IndirectTargetLink []*IndexingDupsLocalizedLocalizedClusterTargetLink `json:"indirectTargetLink,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DirectTargetLink") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DirectTargetLink") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLinkSets) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLinkSets
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData:
// Information about the URLs being validated.
type IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData struct {
	// ContentLanguage: The detected on-page content language of the
	// document.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	ContentLanguage string `json:"contentLanguage,omitempty"`

	// Possible values:
	//   "UNKNOWN" - Default state.
	//   "CONTENT" - Crawled successfully with contents.
	//   "ROBOTED" - Roboted from accessing the page.
	//   "ERROR" - Fatal server-side error, e.g. 404.
	CrawlStatus string `json:"crawlStatus,omitempty"`

	// CrawlTimestampSeconds: The timestamp of the last crawl attempt from
	// crawl_timestamp column.
	CrawlTimestampSeconds int64 `json:"crawlTimestampSeconds,omitempty"`

	// IsCanonical: Whether the URL being validated is canonical at the time
	// of processing.
	IsCanonical bool `json:"isCanonical,omitempty"`

	// OutgoingLinkData: Repeated field for data about the outgoing hreflang
	// links that appear in the document that the currently processed URL
	// refers to.
	OutgoingLinkData []*IndexingDupsLocalizedLocalizedClusterTargetLinkLink `json:"outgoingLinkData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentLanguage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentLanguage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentEmbeddedContentInfo: This protobuf is used (1)
// To pass data between EmbeddedExporter and the publisher, and (2) As a
// member of CompositeDoc, to stick embedded content output into the
// docjoins. Next tag available: 21
type IndexingEmbeddedContentEmbeddedContentInfo struct {
	// CompressedDocumentTrees: The document's DOM and render tree produced
	// by WebKit as a side effect of rendering the page. It might be
	// compressed or not. Thus, use
	// indexing::embedded_content::UncompressWebkitDocument to decode it.
	CompressedDocumentTrees string `json:"compressedDocumentTrees,omitempty"`

	// ConvertedContents: The converted contents, as produced by the same
	// DocumentUpdater transaction that generated the render tree. Useful
	// whenever one of our users wants to experiment with deriving an
	// annotation from the render tree.
	ConvertedContents string `json:"convertedContents,omitempty"`

	// EmbeddedLinksInfo: Information about all external resources needed to
	// render this page, a.k.a. embedded links. This includes .css files,
	// images embedded in a page, external javascripts, iframes etc.
	EmbeddedLinksInfo *IndexingEmbeddedContentEmbeddedLinksInfo `json:"embeddedLinksInfo,omitempty"`

	// HeadlessResponse: The headless response for rendering the document.
	HeadlessResponse *HtmlrenderWebkitHeadlessProtoRenderResponse `json:"headlessResponse,omitempty"`

	// IsAlternateSnapshot: Indicate if the snapshot is generated from
	// alternate snapshot. If true, the snapshot will be exported even if
	// the snapshot quality score is low.
	IsAlternateSnapshot bool `json:"isAlternateSnapshot,omitempty"`

	// OriginalEncoding: The original encoding of the content crawled from
	// trawler. It's the value of enum i18n::encodings::encoding. We put a
	// int32 here instead of encoding proto to maintain the compatibility of
	// "py_api_version = 1"
	OriginalEncoding int64 `json:"originalEncoding,omitempty"`

	// RawRedirectInfo: *** DEPRECATED *** This field is only populated in
	// fresh_doc which is shutting down.
	RawRedirectInfo *IndexingConverterRawRedirectInfo `json:"rawRedirectInfo,omitempty"`

	// ReferencedResource: Information about all external resources used to
	// render this page, a.k.a. embedded links. This includes .css files,
	// images embedded in a page, external javascripts, iframes etc.
	ReferencedResource []*HtmlrenderWebkitHeadlessProtoReferencedResource `json:"referencedResource,omitempty"`

	// RenderedSnapshot: Only exist in dry run mode.
	RenderedSnapshot *HtmlrenderWebkitHeadlessProtoImage `json:"renderedSnapshot,omitempty"`

	// RenderedSnapshotImage: Snapshot image of a rendered html document
	// (possibly encoded as png, jpeg, or webp).
	RenderedSnapshotImage string `json:"renderedSnapshotImage,omitempty"`

	// RenderedSnapshotMetadata: A collection of values which are needed by
	// the users of the Kodachrome bigtable.
	RenderedSnapshotMetadata *SnapshotSnapshotMetadata `json:"renderedSnapshotMetadata,omitempty"`

	// RenderedSnapshotQualityScore: The quality of the image, 0.0 is the
	// worst, 1.0 is the best. If all dependencies are successfully crawled,
	// the quality should be 1.0. If one or more of the dependencies are
	// unknown, the quality will be lower.
	RenderedSnapshotQualityScore float64 `json:"renderedSnapshotQualityScore,omitempty"`

	RenderingOutputMetadata *IndexingEmbeddedContentRenderingOutputMetadata `json:"renderingOutputMetadata,omitempty"`

	// RichcontentData: The rich content data to recover the original
	// contents from the converted_contents. Useful for offline content
	// analysis.
	RichcontentData *IndexingConverterRichContentData `json:"richcontentData,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CompressedDocumentTrees") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompressedDocumentTrees")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentEmbeddedContentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentEmbeddedContentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingEmbeddedContentEmbeddedContentInfo) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingEmbeddedContentEmbeddedContentInfo
	var s1 struct {
		RenderedSnapshotQualityScore gensupport.JSONFloat64 `json:"renderedSnapshotQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RenderedSnapshotQualityScore = float64(s1.RenderedSnapshotQualityScore)
	return nil
}

type IndexingEmbeddedContentEmbeddedLinksInfo struct {
	// EmbedderInfo: This field is optional only because we're adding it
	// late and want to support records written before that. For newly
	// produced records, this field should always be set.
	EmbedderInfo *IndexingEmbeddedContentEmbedderInfo `json:"embedderInfo,omitempty"`

	Link []*IndexingEmbeddedContentLinkInfo `json:"link,omitempty"`

	// PageSizeInfo: Page download size.
	PageSizeInfo *IndexingEmbeddedContentPageSizeInfo `json:"pageSizeInfo,omitempty"`

	// SumHttpResponseLength: This field is the sum of http_response_length
	// for the embedder and all embedded resources. This is expected to be
	// set only in the docjoins, not in the pinax tables or the exported
	// bigtable.
	SumHttpResponseLength int64 `json:"sumHttpResponseLength,omitempty"`

	UncrawledLinkUrl []string `json:"uncrawledLinkUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EmbedderInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EmbedderInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentEmbeddedLinksInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentEmbeddedLinksInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingEmbeddedContentEmbedderInfo struct {
	ImportanceAsEmbedder int64 `json:"importanceAsEmbedder,omitempty"`

	LinkInfo *IndexingEmbeddedContentLinkInfo `json:"linkInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ImportanceAsEmbedder") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImportanceAsEmbedder") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentEmbedderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentEmbedderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentFetchHostCount: Log how many urls finally goes
// to trawler on a host in rendering.
type IndexingEmbeddedContentFetchHostCount struct {
	Counter []*IndexingEmbeddedContentFetchHostCountCounter `json:"counter,omitempty"`

	Host string `json:"host,omitempty"`

	Num int64 `json:"num,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Counter") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Counter") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentFetchHostCount) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentFetchHostCount
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingEmbeddedContentFetchHostCountCounter struct {
	Name string `json:"name,omitempty"`

	Num int64 `json:"num,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentFetchHostCountCounter) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentFetchHostCountCounter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentFetchUrlResponseMetadata: Capsulate all
// metadata annotated from fetch server. This message will typically go
// through: - EmbeddedContentFetcher, or - EmbeddedLinkGetter->
// DenormalizedContent -> ContentStore. And finally deposit in
// referenced_resources and link_info.
type IndexingEmbeddedContentFetchUrlResponseMetadata struct {
	// Possible values:
	//   "ADS_TYPE_UNKNOWN"
	//   "ADS_TYPE_NON_ADS" - Not ads.
	//   "ADS_TYPE_PATTERN" - Ads by pattern.
	//   "ADS_TYPE_CENTERPIECE_ADS_MATCHER" - Ads by centerpiece ads
	// matcher.
	AdsResourceType string `json:"adsResourceType,omitempty"`

	// CrawlStatus: The field always exists, and has four options: UNKNOWN,
	// CONTENT, ROBOTED and ERROR, which are defined in
	// indexing.converter.CrawlStatus.
	CrawlStatus int64 `json:"crawlStatus,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "NON_CRITICAL" - Not critical.
	//   "CONTENT_BASED" - Critical in terms of content.
	//   "GEOMETRY_LAYOUT_BASED" - Critical in terms of geometry layout.
	//   "THREE_WAY" - Generated by three-way rendering.
	//   "MANUAL" - Manually marked.
	//   "TARGET_MAIN_FRAME"
	//   "ROBOTED" - Roboted critical resources.
	CriticalResourceType string `json:"criticalResourceType,omitempty"`

	// FetchWithSmartphoneUa: True if the response is fetched with
	// SMARTPHONE user agent.
	FetchWithSmartphoneUa bool `json:"fetchWithSmartphoneUa,omitempty"`

	IsAdsResource bool `json:"isAdsResource,omitempty"`

	IsCriticalResource bool `json:"isCriticalResource,omitempty"`

	IsTrivialResource bool `json:"isTrivialResource,omitempty"`

	// NumTrawlerFetches: Number of trawler fetches while fetching this URL.
	// In most cases, this number will be 0 or 1.
	NumTrawlerFetches int64 `json:"numTrawlerFetches,omitempty"`

	// RewriteMethod: Used for logging purposes only here.
	RewriteMethod string `json:"rewriteMethod,omitempty"`

	// RobotsInfo: Note that this robots_info should only be used for
	// noindex_reason and will only be present for TARGET_MAIN_FRAME /
	// TARGET_SUBFRAME fetches.
	RobotsInfo *IndexingConverterRobotsInfo `json:"robotsInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdsResourceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdsResourceType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentFetchUrlResponseMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentFetchUrlResponseMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentLinkInfo: Information about one embedded link.
// Next tag: 18
type IndexingEmbeddedContentLinkInfo struct {
	// ContentLength: Size of the HTTP body (payload of the HTTP response,
	// excluding headers), pre-decompression. Equal to the value of the
	// Content-Length header if any. NOTE: if this proto is converted to
	// from ReferencedResource, we have to use the size of the full HTTP
	// response (i.e. http_response_length) as an approximation, as we could
	// not get the size of HTTP headers.
	ContentLength int64 `json:"contentLength,omitempty"`

	ContentType int64 `json:"contentType,omitempty"`

	// CrawlDuration: Time spent downloading this resource, in milliseconds.
	// Not a timestamp!
	CrawlDuration int64 `json:"crawlDuration,omitempty"`

	// CrawlStatus: Enum values for crawl_status are defined in
	// indexing/converter/proto/converter.proto
	CrawlStatus int64 `json:"crawlStatus,omitempty"`

	CrawlTimestamp int64 `json:"crawlTimestamp,omitempty"`

	DeprecatedRedirect []string `json:"deprecatedRedirect,omitempty"`

	// FetchSourceInfo: Where this resource comes from.
	FetchSourceInfo []*WirelessTranscoderFetchFetchSourceInfo `json:"fetchSourceInfo,omitempty"`

	// FetchStatus: Fetch status from trawler.
	FetchStatus *TrawlerFetchStatus `json:"fetchStatus,omitempty"`

	// FetchUrlResponseMetadata: Populated from embedded-content fetch
	// server.
	FetchUrlResponseMetadata *IndexingEmbeddedContentFetchUrlResponseMetadata `json:"fetchUrlResponseMetadata,omitempty"`

	// Frd: FetchReplyData from trawler.
	Frd *TrawlerFetchReplyData `json:"frd,omitempty"`

	// HttpResponseLength: Size of the full HTTP response (headers and body
	// pre-decompression). Semantically equal to content_length plus size of
	// the HTTP headers.
	HttpResponseLength int64 `json:"httpResponseLength,omitempty"`

	IsCacheable bool `json:"isCacheable,omitempty"`

	IsRobotedContentFromFastnet bool `json:"isRobotedContentFromFastnet,omitempty"`

	// UncompressedContentLength: Size of the HTTP body (payload of the HTTP
	// response, excluding headers), post-decompression. Equal to
	// content_length if the body was not compressed to begin with. NOTE: if
	// this proto is converted to from ReferencedResource, we have to use
	// the size of the full HTTP response as an approximation, as we could
	// not get the size of HTTP headers.
	UncompressedContentLength int64 `json:"uncompressedContentLength,omitempty"`

	Url string `json:"url,omitempty"`

	WebkitFetchMetadata *HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata `json:"webkitFetchMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentLength") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentLength") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentLinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentLinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentOutputGenerationTimestamps: For each of the
// output fields generated by the embedded content system, the Unix
// timestamp of when it was most recently generated. Used for
// controlling the frequency of generation (and thus exporting) of the
// fields which are expensive to generate and/or the consumers of which
// are not able to handle the high load of daily/hourly updates. If a
// timestamp corresponding to an output field is missing, it means the
// last attempt to generate this field failed (which could be mean that
// the document was not important enough for this field to be generated,
// or that we hit a bug in WebKit). In case we choose not to regenerate
// the field (because the latest generation timestamp is too fresh) the
// corresponding timestamp doesn't change. Next tag available: 8
type IndexingEmbeddedContentOutputGenerationTimestamps struct {
	DocumentData int64 `json:"documentData,omitempty"`

	RenderedSnapshot int64 `json:"renderedSnapshot,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentData") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentOutputGenerationTimestamps) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentOutputGenerationTimestamps
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentPageSizeInfo: Page download size information.
type IndexingEmbeddedContentPageSizeInfo struct {
	// NumImages: Images are also resources. num_images <= num_resources.
	NumImages int64 `json:"numImages,omitempty"`

	// NumImagesWithContent: Number of images whose crawl status is CONTENT.
	NumImagesWithContent int64 `json:"numImagesWithContent,omitempty"`

	// NumResources: Numbers below don't include embedder.
	NumResources int64 `json:"numResources,omitempty"`

	// NumResourcesWithContent: Number of resources whose crawl status is
	// CONTENT.
	NumResourcesWithContent int64 `json:"numResourcesWithContent,omitempty"`

	// SumHttpResponseLength: Sum of embedder and all referenced resources.
	SumHttpResponseLength int64 `json:"sumHttpResponseLength,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NumImages") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumImages") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentPageSizeInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentPageSizeInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentRenderCacheStats: Fields used to track cache
// use in the rendering microservice. Next tag available: 6
type IndexingEmbeddedContentRenderCacheStats struct {
	// CacheExpireTimestampUsec: When the rendered content would expire from
	// the cache in microseconds.
	CacheExpireTimestampUsec int64 `json:"cacheExpireTimestampUsec,omitempty,string"`

	CrawledSimhashDistance int64 `json:"crawledSimhashDistance,omitempty"`

	// LastRenderedTimestampUsec: The last time the document was rendered,
	// in microseconds. Does not update in case of cache use.
	LastRenderedTimestampUsec int64 `json:"lastRenderedTimestampUsec,omitempty,string"`

	// Possible values:
	//   "UNKNOWN_CACHE"
	//   "CACHE_MISS" - We didn't find this document in any cache.
	//   "CACHE_SKIPPED" - We found this document in the cache and decided
	// not to use the cached version.
	//   "ARECA_CACHE"
	//   "CRAWLED_SIMHASH_CACHE"
	RenderCache string `json:"renderCache,omitempty"`

	RenderedSimhashDistance int64 `json:"renderedSimhashDistance,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CacheExpireTimestampUsec") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CacheExpireTimestampUsec")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentRenderCacheStats) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentRenderCacheStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingEmbeddedContentRenderRequestConfigConfigParams struct {
	VirtualTime float64 `json:"virtualTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VirtualTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VirtualTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentRenderRequestConfigConfigParams) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentRenderRequestConfigConfigParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingEmbeddedContentRenderRequestConfigConfigParams) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingEmbeddedContentRenderRequestConfigConfigParams
	var s1 struct {
		VirtualTime gensupport.JSONFloat64 `json:"virtualTime"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.VirtualTime = float64(s1.VirtualTime)
	return nil
}

// IndexingEmbeddedContentRenderingFetchStats: Fetch stats during
// rendering.
type IndexingEmbeddedContentRenderingFetchStats struct {
	// FetchHostCount: A host->count mapping to log how many embedded_links
	// in each host finally goes to trawler during rendering.
	FetchHostCount []*IndexingEmbeddedContentFetchHostCount `json:"fetchHostCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FetchHostCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FetchHostCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentRenderingFetchStats) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentRenderingFetchStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingEmbeddedContentRenderingOutputMetadata: Small values from
// rendering output. It's stored as a column in alexandria document
// table. Next tag available: 30
type IndexingEmbeddedContentRenderingOutputMetadata struct {
	ConfigParams *IndexingEmbeddedContentRenderRequestConfigConfigParams `json:"configParams,omitempty"`

	// Exceptions: The exceptions observed during the rendering. In
	// bit-field encoding of enum values of
	// RenderResponse.RenderingException.
	Exceptions int64 `json:"exceptions,omitempty,string"`

	// ExperimentalRenderTimeMsec: Total GCU time for rendering the document
	// in millisecond. This data is from render_stats.render_cost_mgcu in
	// RenderResponse proto. Note that this is *experimental* field. Please
	// check with rendering-infra@ if you want to use.
	ExperimentalRenderTimeMsec int64 `json:"experimentalRenderTimeMsec,omitempty"`

	GenerationTimestamps *IndexingEmbeddedContentOutputGenerationTimestamps `json:"generationTimestamps,omitempty"`

	// Importance: The importance value of the rendered document.
	Importance int64 `json:"importance,omitempty"`

	// LastNewContentProbingTimestamp: The timestamp of last new content
	// probing.
	LastNewContentProbingTimestamp int64 `json:"lastNewContentProbingTimestamp,omitempty"`

	// NewTokensPercentageAfterRendering: Percentage of new tokens in the
	// rendered the document content.
	NewTokensPercentageAfterRendering float64 `json:"newTokensPercentageAfterRendering,omitempty"`

	NumNewTokensFoundInRendering int64 `json:"numNewTokensFoundInRendering,omitempty"`

	Refresh bool `json:"refresh,omitempty"`

	// RenderCacheStats: A collection of fields to track stats on cache use
	// in the Rendering microservice.
	RenderCacheStats *IndexingEmbeddedContentRenderCacheStats `json:"renderCacheStats,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "BLINK_HEADLESS"
	//   "CHROME_HEADLESS"
	RenderEngine string `json:"renderEngine,omitempty"`

	// RenderEvent: Different types of events which happened during
	// rendering.
	RenderEvent []*HtmlrenderWebkitHeadlessProtoRenderEvent `json:"renderEvent,omitempty"`

	// RenderServerCl: The CL from which the render engine was built.
	RenderServerCl int64 `json:"renderServerCl,omitempty,string"`

	RenderTreeQualityScore float64 `json:"renderTreeQualityScore,omitempty"`

	// RenderedSnapshotSignature: Short signature (usually less than 1 KB)
	// which captures a perceptual hash on the rendered image. This is used
	// to determine whether successive renderings should be output. See the
	// library in googlen/snapshot/shared/similarity.* for more info about
	// how this value is interpreted and used.
	RenderedSnapshotSignature string `json:"renderedSnapshotSignature,omitempty"`

	// RenderedTimeUsec: Current time in microseconds the document is going
	// through rendering system. This field is set regardless of whether the
	// document is being rendered or if we are skipping rendering by using a
	// cache.
	RenderedTimeUsec int64 `json:"renderedTimeUsec,omitempty,string"`

	RenderingFetchStats *IndexingEmbeddedContentRenderingFetchStats `json:"renderingFetchStats,omitempty"`

	// SelectionResult: The corpus selection result. Can be used for offline
	// analysis.
	SelectionResult *IndexingEmbeddedContentSelectionResult `json:"selectionResult,omitempty"`

	// SnapshotQualityScore: These scores are copied from
	// htmlrender_webkit_headless_proto.Document.
	SnapshotQualityScore float64 `json:"snapshotQualityScore,omitempty"`

	// WithMissingResources: True if there were any missing resources during
	// the rendering.
	WithMissingResources bool `json:"withMissingResources,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfigParams") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfigParams") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentRenderingOutputMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentRenderingOutputMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingEmbeddedContentRenderingOutputMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingEmbeddedContentRenderingOutputMetadata
	var s1 struct {
		NewTokensPercentageAfterRendering gensupport.JSONFloat64 `json:"newTokensPercentageAfterRendering"`
		RenderTreeQualityScore            gensupport.JSONFloat64 `json:"renderTreeQualityScore"`
		SnapshotQualityScore              gensupport.JSONFloat64 `json:"snapshotQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NewTokensPercentageAfterRendering = float64(s1.NewTokensPercentageAfterRendering)
	s.RenderTreeQualityScore = float64(s1.RenderTreeQualityScore)
	s.SnapshotQualityScore = float64(s1.SnapshotQualityScore)
	return nil
}

// IndexingEmbeddedContentSelectionResult: Output that indicates a url
// should be in our corpus.
type IndexingEmbeddedContentSelectionResult struct {
	// Possible values:
	//   "RENDER_NONE" - The enum value is also used as decision priority,
	// so we assign sparse values here for possible future effort.
	//   "RENDER_SKIP" - Skip rendering by keeping the old data. DEPRECATED
	//   "RENDER_TRIVIAL" - Render with minimum resources, i.e., turn on
	// readonly fetch, turn off js and turn off snapshot.
	//   "RENDER_LIGHT" - Light weight rendering does not generate snapshot.
	//   "RENDER_CONTROL" - Light weight rendering but we will try our best
	// during rendering and fetching.
	//   "RENDER_FULL" - Render with standard features: fetching all
	// embedded links, turn on javascript, generate snapshot.
	//   "RENDER_FORCE" - Always render. DEPRECATED
	//   "RENDER_REJECT" - The url can not be rendered, i.e. pdf.
	RenderEffort string `json:"renderEffort,omitempty"`

	// SelectorId: Indicate which selector has made the decision.
	//
	// Possible values:
	//   "NO_SELECTOR"
	//   "INELIGIBLE" - REJECT
	//   "NO_INDEX" - REJECT
	//   "IMPORTANCE" - LIGHT SKIP
	//   "HOME_PAGE" - LIGHT
	//   "LIGHT_WEIGHT" - LIGHT DEPRECATED
	//   "SMARTPHONE" - LIGHT REJECT DEPRECATED
	//   "VIDEO_SIGNAL" - LIGHT SKIP
	//   "VIDEO_CLASSIFER" - LIGHT SKIP
	//   "PINPOINT_SIGNAL" - LIGHT
	//   "CENTER_PIECE_SIGNAL" - LIGHT
	//   "INDEXABLE_FRAGMENT" - LIGHT
	//   "ESCAPED_FRAGMENT" - LIGHT
	//   "FRAGMENT_REDIRECT" - LIGHT
	//   "META_REFRESH_REDIRECT" - LIGHT
	//   "FORCE" - FORCE_FULL DEPRECATED
	//   "FORCE_BY_TIMESTAMP" - FORCE_FULL DEPRECATED
	//   "INTEREST" - FULL (dry run)
	//   "IMPORTANCE_PROTECTED" - LIGHT DEPRECATED
	//   "NOT_SUPPORTED_CRAWLER_ID" - REJECT
	//   "BLACK_LIST" - REJECT
	//   "NEWS_ONLY" - REJECT - added for Freshdocs
	//   "SAMPLER" - REJECT - added for Freshdocs
	//   "CONTENT_REPLACEMENT_WHITELIST" - LIGHT (for temporary experiment)
	// DEPRECATED
	//   "SMART" - LIGHT TRIVIAL
	//   "SMART_RANDOM" - LIGHT
	//   "SMARTPHONE_SMART" - LIGHT TRIVIAL DEPRECATED
	//   "SMARTPHONE_REJECT" - REJECT
	//   "SMART_GROUND_TRUTH" - LIGHT
	//   "APP" - LIGHT
	//   "CONTROL_GROUP" - CONTROL
	//   "NAVBOOST_COUNT" - LIGHT
	//   "DEFAULT_LIGHT" - LIGHT
	//   "NEWS" - FULL
	SelectorId string `json:"selectorId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RenderEffort") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RenderEffort") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingEmbeddedContentSelectionResult) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingEmbeddedContentSelectionResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingMlVerticalVerticalItem struct {
	// Id: Unique ID.
	Id int64 `json:"id,omitempty"`

	// Name: The description name.
	Name string `json:"name,omitempty"`

	// PetacatId: The corresponding Petacat ID.
	PetacatId int64 `json:"petacatId,omitempty"`

	// Probability: The probability of the vertical, whose value is in [0.0,
	// 1.0].
	Probability float64 `json:"probability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMlVerticalVerticalItem) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMlVerticalVerticalItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingMlVerticalVerticalItem) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingMlVerticalVerticalItem
	var s1 struct {
		Probability gensupport.JSONFloat64 `json:"probability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Probability = float64(s1.Probability)
	return nil
}

// IndexingMobileInterstitialsProtoDesktopInterstitials: Desktop
// interstitials signal. The message contains both fields for site-level
// signal lookup in Index Signals (go/index-signals) and fields for
// final attachment in DocJoin.
type IndexingMobileInterstitialsProtoDesktopInterstitials struct {
	Details []*IndexingMobileInterstitialsProtoDesktopInterstitialsDetails `json:"details,omitempty"`

	// PipelineEpoch: Epoch of the interstitial offline pipeline generating
	// this signal.
	PipelineEpoch string `json:"pipelineEpoch,omitempty"`

	// PipelinePattern: If present, pipeline_pattern identifies the cluster
	// of URLs for which the signal value was smeared.
	PipelinePattern string `json:"pipelinePattern,omitempty"`

	// UrlTree: URL tree of interstitial patterns belong to the host, to be
	// used as site-level signal in Index Signals. A pattern may contain a
	// payload InterstitialPatternPayload, which will indicate the violated
	// interstitial types of this pattern.
	UrlTree *IndexingUrlPatternUrlTreeUrlTree `json:"urlTree,omitempty"`

	// ViolatesDesktopInterstitialPolicy: Overall policy violation status.
	// If this is true, at least one of the InterstitialSignal below
	// indicates a violation.
	ViolatesDesktopInterstitialPolicy bool `json:"violatesDesktopInterstitialPolicy,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Details") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Details") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMobileInterstitialsProtoDesktopInterstitials) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMobileInterstitialsProtoDesktopInterstitials
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingMobileInterstitialsProtoDesktopInterstitialsDetails: An
// optional message that may contain details of the signals computation.
type IndexingMobileInterstitialsProtoDesktopInterstitialsDetails struct {
	BasicInfo *IndexingMobileInterstitialsProtoInterstitialBasicInfo `json:"basicInfo,omitempty"`

	// IsSmearedSignal: Indicates whether the signal value is "smeared",
	// e.g. extrapolated from other URLs.
	IsSmearedSignal bool `json:"isSmearedSignal,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BasicInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BasicInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMobileInterstitialsProtoDesktopInterstitialsDetails) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMobileInterstitialsProtoDesktopInterstitialsDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingMobileInterstitialsProtoInterstitialBasicInfo: Basic
// interstitial info, shared by all layout types. This message can be
// used to quickly iterate through detected interstitials, if layout
// type specific details are not required. Note: this message stores
// info for one primary interstitial as detected by a particular layout
// codepath. Some codepaths, e.g. overlay interstitial detection, may
// find multiple interstitial candidates; such details can be found in
// codepath-specific messages below.
type IndexingMobileInterstitialsProtoInterstitialBasicInfo struct {
	// AbsoluteBox: Stores the geometry of detected interstitial in absolute
	// page pixels.
	AbsoluteBox *HtmlrenderWebkitHeadlessProtoBox `json:"absoluteBox,omitempty"`

	// Possible values:
	//   "UNSPECIFIED"
	//   "GENERIC" - Interstitial content analysis was run, but failed to
	// determine a particular content type.
	//   "APP_INSTALL_PROMO" - Interstitial content appears to promote a
	// mobile app install.
	//   "COOKIE" - Interstitial content appears to be in response to legal
	// obligation to warn users about usage of cookies on the web page.
	//   "ADULT_CONTENT" - Interstitial content appears to be in response to
	// legal obligation to warn users about adult content on the web page.
	//   "LOGIN" - Interstitial content appears to be asking users to login.
	// Also the page seems to have private content that is not publicly
	// viewable.
	//   "HEALTH_CARE_PROFESSIONAL" - Interstitial content appears to be
	// asking users whether they are health care professionals.
	//   "WHITELISTED" - A special type indicating whitelisted content that
	// never violates interstitial policy.
	//   "ADS" - Interstitial content appears to be ads.
	//   "SUBSCRIPTION" - Interstitial content appears to be asking users to
	// subscribe to newsletter.
	ContentType string `json:"contentType,omitempty"`

	// Possible values:
	//   "NORMAL" - Normal rendering. Default value. For this detection uses
	// the default value of the rendering completion delay
	// FLAGS_webkit_completion_virtual_delay (currently 5 seconds) to detect
	// the overlay interstitials, i.e. the page is analyzed as it appears at
	// 5 seconds after rendering start time.
	//   "DELAYED" - Delayed rendering. For this detection mode, the web
	// page is allowed to run for an extended duration, and then analysed.
	// This detects a common type of overlay interstitials that appear after
	// a longer timeout.
	//   "AFTER_SCROLL" - After scroll rendering. For this detection mode,
	// the web page is allowed to run for an initial duration, then a user
	// scroll action is emulated, before analysing the page contents. This
	// detects a common type of overlay interstitials that appear after a
	// user scroll action.
	DetectionMode string `json:"detectionMode,omitempty"`

	// Possible values:
	//   "INTERSTITIAL_LAYOUT_TYPE_UNSPECIFIED"
	//   "OVERLAY" - Overlay layout type includes interstitials implemented
	// as popups, typically using CSS z-index to hover above main content
	// and occlude it.
	//   "SCROLLABLE" - Scrollable layout type includes large inline
	// interstitials that are typically inserted before the main content
	// starts, and require the user to scroll past them.
	//   "STANDALONE" - Standalone layout type includes interstitials that
	// appear as a separate page, and typically redirect the browser to main
	// content after a delay or a user action.
	//   "DENSITY" - Could be any type of layout. Usually it means it's an
	// interstitial not for its layout but for its content.
	LayoutType string `json:"layoutType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbsoluteBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbsoluteBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMobileInterstitialsProtoInterstitialBasicInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMobileInterstitialsProtoInterstitialBasicInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingMobileVoltCoreWebVitals: Core Web Vitals
// (https://web.dev/vitals/) carried in VoltSignal: the field data
// metrics extracted from UKM aggregated 75-percentile data.
type IndexingMobileVoltCoreWebVitals struct {
	// Cls: Cumulative Layout Shift.
	Cls int64 `json:"cls,omitempty,string"`

	// Fid: First Input Delay.
	Fid int64 `json:"fid,omitempty,string"`

	Inp int64 `json:"inp,omitempty,string"`

	// Lcp: Largest Contentful Paint.
	Lcp int64 `json:"lcp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Cls") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cls") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMobileVoltCoreWebVitals) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMobileVoltCoreWebVitals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingMobileVoltVoltPerDocData: The protocol buffer stored in the
// legacyperdocdata muppet attachment for VOLT (go/volt). The data is
// used for ranking changes. Only CWV signals and secure signal are
// stored. MobileFriendliness is stored separately in the
// legacyperdocdata. Safe browsing and BAS/AER conditions are not used
// for ranking.
type IndexingMobileVoltVoltPerDocData struct {
	// DesktopCwv: Desktop Core Wev Vital metrics. NOTE(yunchengz): This
	// field will not be populated in Muppet.
	DesktopCwv *IndexingMobileVoltCoreWebVitals `json:"desktopCwv,omitempty"`

	DesktopDisplayUrlIsHttps bool `json:"desktopDisplayUrlIsHttps,omitempty"`

	DisplayUrlIsHttps bool `json:"displayUrlIsHttps,omitempty"`

	// MobileCwv: Mobile Core Web Vital metrics. NOTE(yunchengz): This field
	// will not be populated in Muppet.
	MobileCwv *IndexingMobileVoltCoreWebVitals `json:"mobileCwv,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DesktopCwv") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DesktopCwv") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingMobileVoltVoltPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingMobileVoltVoltPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingPrivacyAccessAccessRequirements struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "CHILD_SAFETY_CONTENT"
	RestrictionCategories []string `json:"restrictionCategories,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "RestrictionCategories") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RestrictionCategories") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingPrivacyAccessAccessRequirements) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingPrivacyAccessAccessRequirements
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingSignalAggregatorAdaptiveIntervalData: State data for
// AdaptiveFrequencyEstimator
type IndexingSignalAggregatorAdaptiveIntervalData struct {
	ClicksGoodInterval float64 `json:"clicksGoodInterval,omitempty"`

	ClicksGoodPriorWeight float64 `json:"clicksGoodPriorWeight,omitempty"`

	ClicksTotalInterval float64 `json:"clicksTotalInterval,omitempty"`

	ClicksTotalPriorWeight float64 `json:"clicksTotalPriorWeight,omitempty"`

	CtrwiInterval float64 `json:"ctrwiInterval,omitempty"`

	CtrwiPriorWeight float64 `json:"ctrwiPriorWeight,omitempty"`

	DwellsInterval float64 `json:"dwellsInterval,omitempty"`

	DwellsPriorWeight float64 `json:"dwellsPriorWeight,omitempty"`

	LuDwellsInterval float64 `json:"luDwellsInterval,omitempty"`

	LuDwellsPriorWeight float64 `json:"luDwellsPriorWeight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClicksGoodInterval")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClicksGoodInterval") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorAdaptiveIntervalData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorAdaptiveIntervalData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorAdaptiveIntervalData) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorAdaptiveIntervalData
	var s1 struct {
		ClicksGoodInterval     gensupport.JSONFloat64 `json:"clicksGoodInterval"`
		ClicksGoodPriorWeight  gensupport.JSONFloat64 `json:"clicksGoodPriorWeight"`
		ClicksTotalInterval    gensupport.JSONFloat64 `json:"clicksTotalInterval"`
		ClicksTotalPriorWeight gensupport.JSONFloat64 `json:"clicksTotalPriorWeight"`
		CtrwiInterval          gensupport.JSONFloat64 `json:"ctrwiInterval"`
		CtrwiPriorWeight       gensupport.JSONFloat64 `json:"ctrwiPriorWeight"`
		DwellsInterval         gensupport.JSONFloat64 `json:"dwellsInterval"`
		DwellsPriorWeight      gensupport.JSONFloat64 `json:"dwellsPriorWeight"`
		LuDwellsInterval       gensupport.JSONFloat64 `json:"luDwellsInterval"`
		LuDwellsPriorWeight    gensupport.JSONFloat64 `json:"luDwellsPriorWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClicksGoodInterval = float64(s1.ClicksGoodInterval)
	s.ClicksGoodPriorWeight = float64(s1.ClicksGoodPriorWeight)
	s.ClicksTotalInterval = float64(s1.ClicksTotalInterval)
	s.ClicksTotalPriorWeight = float64(s1.ClicksTotalPriorWeight)
	s.CtrwiInterval = float64(s1.CtrwiInterval)
	s.CtrwiPriorWeight = float64(s1.CtrwiPriorWeight)
	s.DwellsInterval = float64(s1.DwellsInterval)
	s.DwellsPriorWeight = float64(s1.DwellsPriorWeight)
	s.LuDwellsInterval = float64(s1.LuDwellsInterval)
	s.LuDwellsPriorWeight = float64(s1.LuDwellsPriorWeight)
	return nil
}

// IndexingSignalAggregatorAgeWeightedCoverageData: Accumulated coverage
// data for an url using a constant half-life time. Next tag: 28
type IndexingSignalAggregatorAgeWeightedCoverageData struct {
	// AverageChanceTime: Weighted averged timestamps of the decayed
	// chances.
	AverageChanceTime float64 `json:"averageChanceTime,omitempty"`

	// Chances: Numbers below are all total in the decayed manner. To get
	// rate of impression/clicks, divide by chances.
	Chances float64 `json:"chances,omitempty"`

	ClicksBad float64 `json:"clicksBad,omitempty"`

	ClicksGood float64 `json:"clicksGood,omitempty"`

	ClicksImage float64 `json:"clicksImage,omitempty"`

	ClicksTotal float64 `json:"clicksTotal,omitempty"`

	ClicksUnclassified float64 `json:"clicksUnclassified,omitempty"`

	// CoverageTimestamp: Epoch seconds at which this weighted coverage data
	// was calculated.
	CoverageTimestamp int64 `json:"coverageTimestamp,omitempty,string"`

	CtrWeightedImpressions float64 `json:"ctrWeightedImpressions,omitempty"`

	// Dwells: Dwells from KnowledgePanel and WebAnswers.
	Dwells float64 `json:"dwells,omitempty"`

	// FirstBaseCoverageTimestamp: Epoch seconds at which this url first
	// gets coverage in BASE.
	FirstBaseCoverageTimestamp int64 `json:"firstBaseCoverageTimestamp,omitempty,string"`

	// FirstCoveragePagerankNs: The pagerank when the url was serving for
	// the first time.
	FirstCoveragePagerankNs int64 `json:"firstCoveragePagerankNs,omitempty"`

	// FirstCoverageTimestamp: Epoch seconds at which this url first gets
	// coverage data.
	FirstCoverageTimestamp int64 `json:"firstCoverageTimestamp,omitempty,string"`

	Firstseen int64 `json:"firstseen,omitempty,string"`

	Impressions float64 `json:"impressions,omitempty"`

	// IntervalData: Interval Data to track the average time between
	// clicks_total, clicks_good, and ctr_weighted_impression.
	IntervalData *IndexingSignalAggregatorAdaptiveIntervalData `json:"intervalData,omitempty"`

	Language int64 `json:"language,omitempty"`

	// LastDwellDateInDays: Indicates the date when this document received
	// the last KnowledgePanel or WebAnswer dwell. Note: The date is
	// identified in terms of number of days since Epoch.
	LastDwellDateInDays int64 `json:"lastDwellDateInDays,omitempty"`

	// LastGoodClickDateInDays: Indicates the date when this document
	// received the last good click. Note: The date is identified in terms
	// of number of days since Epoch.
	LastGoodClickDateInDays int64 `json:"lastGoodClickDateInDays,omitempty"`

	// LastImpressionDateInDays: Indicates the date when this document
	// received the last impression. Note: The date is identified in terms
	// of number of days since Epoch.
	LastImpressionDateInDays int64 `json:"lastImpressionDateInDays,omitempty"`

	// LastLuDwellDateInDays: Indicates the date when this document received
	// the last LocalUniversal dwell. Note: The date is identified in terms
	// of number of days since Epoch.
	LastLuDwellDateInDays int64 `json:"lastLuDwellDateInDays,omitempty"`

	// LastPseudoImpressionsDateInDays: Indicates the date when this
	// document received the last pseudo-impression. I.e., when it was
	// retrieved as a result but GWS would not show it because of the
	// document's age in the index. Note: The date is identified in terms of
	// number of days since Epoch.
	LastPseudoImpressionsDateInDays int64 `json:"lastPseudoImpressionsDateInDays,omitempty"`

	// LuDwells: Dwells from LocalUniversal.
	LuDwells float64 `json:"luDwells,omitempty"`

	// Repid: Repid in Alexandria pipeline.
	Repid string `json:"repid,omitempty"`

	// TotalChances: Total number of chances on this urls (not decayed).
	TotalChances int64 `json:"totalChances,omitempty,string"`

	Url string `json:"url,omitempty"`

	// Urlfp: Temporary variable, only used during mapreduce.
	Urlfp int64 `json:"urlfp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AverageChanceTime")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageChanceTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorAgeWeightedCoverageData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorAgeWeightedCoverageData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorAgeWeightedCoverageData) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorAgeWeightedCoverageData
	var s1 struct {
		AverageChanceTime      gensupport.JSONFloat64 `json:"averageChanceTime"`
		Chances                gensupport.JSONFloat64 `json:"chances"`
		ClicksBad              gensupport.JSONFloat64 `json:"clicksBad"`
		ClicksGood             gensupport.JSONFloat64 `json:"clicksGood"`
		ClicksImage            gensupport.JSONFloat64 `json:"clicksImage"`
		ClicksTotal            gensupport.JSONFloat64 `json:"clicksTotal"`
		ClicksUnclassified     gensupport.JSONFloat64 `json:"clicksUnclassified"`
		CtrWeightedImpressions gensupport.JSONFloat64 `json:"ctrWeightedImpressions"`
		Dwells                 gensupport.JSONFloat64 `json:"dwells"`
		Impressions            gensupport.JSONFloat64 `json:"impressions"`
		LuDwells               gensupport.JSONFloat64 `json:"luDwells"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageChanceTime = float64(s1.AverageChanceTime)
	s.Chances = float64(s1.Chances)
	s.ClicksBad = float64(s1.ClicksBad)
	s.ClicksGood = float64(s1.ClicksGood)
	s.ClicksImage = float64(s1.ClicksImage)
	s.ClicksTotal = float64(s1.ClicksTotal)
	s.ClicksUnclassified = float64(s1.ClicksUnclassified)
	s.CtrWeightedImpressions = float64(s1.CtrWeightedImpressions)
	s.Dwells = float64(s1.Dwells)
	s.Impressions = float64(s1.Impressions)
	s.LuDwells = float64(s1.LuDwells)
	return nil
}

// IndexingSignalAggregatorAggregatedScore: Aggregated signal used by
// NumericSignalAggregator. Next field id: 25
type IndexingSignalAggregatorAggregatedScore struct {
	// Deviation: A number reflecting the deviation of Url scores.
	Deviation float64 `json:"deviation,omitempty"`

	// M2: State variables for West & Chan variance algorithm used to be
	// stored here directly. Now they are stored inside
	// RunningMeanAndVarianceInternalState.
	M2 float64 `json:"m2,omitempty"`

	// MaxScoreUrl: Input UrlScore with max score.
	MaxScoreUrl *IndexingSignalAggregatorUrlScore `json:"maxScoreUrl,omitempty"`

	Mean float64 `json:"mean,omitempty"`

	// MeanScore: Overall stats that are only available in final aggregation
	// results. The aggregated score.
	MeanScore float64 `json:"meanScore,omitempty"`

	// MinScoreUrl: Input UrlScore with min score.
	MinScoreUrl *IndexingSignalAggregatorUrlScore `json:"minScoreUrl,omitempty"`

	NumImportantUrls int64 `json:"numImportantUrls,omitempty,string"`

	// NumUrlsMatched: Final Stats that are also available in intermediate
	// output. Number of Urls matching the class.
	NumUrlsMatched int64 `json:"numUrlsMatched,omitempty,string"`

	// NumUrlsWithSignal: Not every matching url has a signal.
	NumUrlsWithSignal int64 `json:"numUrlsWithSignal,omitempty,string"`

	// PatternLayer: Experimental layer of the corresponding pattern.
	//
	// Possible values:
	//   "PRODUCTION"
	//   "EXPERIMENTAL_LAYER_A"
	//   "EXPERIMENTAL_LAYER_B"
	//   "NEXT_LAYER" - Reserved for the next layer.
	PatternLayer string `json:"patternLayer,omitempty"`

	// PatternsUsedInMediation: Optionally populated in mediators. A list of
	// patterns that actually contributed to the final mediated signal.
	PatternsUsedInMediation []string `json:"patternsUsedInMediation,omitempty"`

	// Percentile: Score percentile of matching urls. If present, it has N
	// entries for buckets of roughly equal number of urls. N is specified
	// the aggregation. The value is the min score in that bucket.
	Percentile []float64 `json:"percentile,omitempty"`

	RunningMeanAndVarianceInternalState *IndexingSignalAggregatorRunningMeanAndVarianceInternalState `json:"runningMeanAndVarianceInternalState,omitempty"`

	// Samples: Random samples.
	Samples []*IndexingSignalAggregatorUrlScore `json:"samples,omitempty"`

	// Scores: for calculating percentile
	Scores []float64 `json:"scores,omitempty"`

	// SignalId: For debugging purposes, this is an id of the signal
	// associated with this AggregatedScore. For pattern score, this may be
	// the length of the pattern.
	SignalId int64 `json:"signalId,omitempty"`

	// SingleUrlScore: If this field presents, it is for a single url. No
	// other field should appear.
	SingleUrlScore *IndexingSignalAggregatorUrlScore `json:"singleUrlScore,omitempty"`

	// TotalScore: summation varaible used to get mean
	TotalScore float64 `json:"totalScore,omitempty"`

	// TotalScoreLow: low-order part of total_score
	TotalScoreLow float64 `json:"totalScoreLow,omitempty"`

	// TotalScoreSqr: summation variable for calculating deviation note,
	// these are now only used for legacy and debugging purposes
	TotalScoreSqr float64 `json:"totalScoreSqr,omitempty"`

	// TotalScoreSqrLow: low order part of total_score_sq
	TotalScoreSqrLow float64 `json:"totalScoreSqrLow,omitempty"`

	// TotalWeight: for calculating weighted mean/dev
	TotalWeight float64 `json:"totalWeight,omitempty"`

	// TotalWeightLow: low order part of total_weight
	TotalWeightLow float64 `json:"totalWeightLow,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Deviation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Deviation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorAggregatedScore) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorAggregatedScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorAggregatedScore) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorAggregatedScore
	var s1 struct {
		Deviation        gensupport.JSONFloat64 `json:"deviation"`
		M2               gensupport.JSONFloat64 `json:"m2"`
		Mean             gensupport.JSONFloat64 `json:"mean"`
		MeanScore        gensupport.JSONFloat64 `json:"meanScore"`
		TotalScore       gensupport.JSONFloat64 `json:"totalScore"`
		TotalScoreLow    gensupport.JSONFloat64 `json:"totalScoreLow"`
		TotalScoreSqr    gensupport.JSONFloat64 `json:"totalScoreSqr"`
		TotalScoreSqrLow gensupport.JSONFloat64 `json:"totalScoreSqrLow"`
		TotalWeight      gensupport.JSONFloat64 `json:"totalWeight"`
		TotalWeightLow   gensupport.JSONFloat64 `json:"totalWeightLow"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Deviation = float64(s1.Deviation)
	s.M2 = float64(s1.M2)
	s.Mean = float64(s1.Mean)
	s.MeanScore = float64(s1.MeanScore)
	s.TotalScore = float64(s1.TotalScore)
	s.TotalScoreLow = float64(s1.TotalScoreLow)
	s.TotalScoreSqr = float64(s1.TotalScoreSqr)
	s.TotalScoreSqrLow = float64(s1.TotalScoreSqrLow)
	s.TotalWeight = float64(s1.TotalWeight)
	s.TotalWeightLow = float64(s1.TotalWeightLow)
	return nil
}

// IndexingSignalAggregatorRunningMeanAndVarianceInternalState: Internal
// state of the West & Chan running variance algorithm. Fields of this
// proto should not be accessed directly; instead, please use
// RunningMeanAndVarianceUtil. The fields of this message only have
// meaning in the context of the West & Chan algorithm, which is
// documented (or Wikipedia-linked) in the doc comments of
// RunningMeanAndVarianceUtil. We do however give some explanation of
// the meanings of these fields in the context of the algorithm (i.e. if
// you have the Wikipedia page open and are ready to do some math). Also
// see the file doc of RunningMeanAndVarianceUtil for a specification
// and more info about the algorithm. Notation: The data set is X =
// {(x_1, w_1), ..., (x_n, w_n)}. It consists of n weighted data points.
// The ith data point has value x_i and weight w_i. REQUIRES: x_i is
// finite for each i. w_i is finite for each i. w_i >= 0 for each i.
type IndexingSignalAggregatorRunningMeanAndVarianceInternalState struct {
	// M2: The variable which in the Wikipedia page is referred to as M_2:
	// m2 = w_1 * (x_1 - mean)^2 + ... + w_n * (x_n - mean)^2. The algorithm
	// implemented in RunningMeanAndVarianceUtil provides a way to update m2
	// in a numerically stable way when the data set grows. If total_weight
	// = 0, then m2 is meaningless, and its value is unspecified, except
	// that it must be finite and >= 0.
	M2 float64 `json:"m2,omitempty"`

	// Mean: Mean of the data set, mean = (w_1 * x_1 + ... + w_n * x_n) /
	// total_weight. The algorithm implemented in RunningMeanAndVarianceUtil
	// provides a way to update this mean in a numerically stable way when
	// the data set grows. If total_weight = 0, then mean is meaningless,
	// and its value is unspecified, except that it must be finite.
	Mean float64 `json:"mean,omitempty"`

	// TotalWeight: Total weight of the data set, total_weight = w_1 + ... +
	// w_n.
	TotalWeight float64 `json:"totalWeight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "M2") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "M2") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorRunningMeanAndVarianceInternalState) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorRunningMeanAndVarianceInternalState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorRunningMeanAndVarianceInternalState) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorRunningMeanAndVarianceInternalState
	var s1 struct {
		M2          gensupport.JSONFloat64 `json:"m2"`
		Mean        gensupport.JSONFloat64 `json:"mean"`
		TotalWeight gensupport.JSONFloat64 `json:"totalWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.M2 = float64(s1.M2)
	s.Mean = float64(s1.Mean)
	s.TotalWeight = float64(s1.TotalWeight)
	return nil
}

type IndexingSignalAggregatorSccData struct {
	ParentPattern *IndexingSignalAggregatorSccSignal `json:"parentPattern,omitempty"`

	// Pattern: The most immediate pattern data.
	Pattern *IndexingSignalAggregatorSccSignal `json:"pattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ParentPattern") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ParentPattern") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorSccData) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorSccData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingSignalAggregatorSccSignal struct {
	ClicksBad float64 `json:"clicksBad,omitempty"`

	ClicksImage float64 `json:"clicksImage,omitempty"`

	ClicksTotal float64 `json:"clicksTotal,omitempty"`

	// DebugInfo: For debugging purpose only.
	DebugInfo []string `json:"debugInfo,omitempty"`

	// NumImageUrls: This represents the number of urls with image clicks. A
	// url can have both image and non-image clicks, in which case we set
	// num_image_urls to be the ratio of image_clicks vs total clicks. For
	// example, if a url has 10 total clicks and 7 image clicks,
	// num_image_urls will be set to 0.7.
	NumImageUrls float64 `json:"numImageUrls,omitempty"`

	NumUrls int64 `json:"numUrls,omitempty,string"`

	// Pattern: For debugging purpose only.
	Pattern string `json:"pattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClicksBad") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClicksBad") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorSccSignal) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorSccSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorSccSignal) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorSccSignal
	var s1 struct {
		ClicksBad    gensupport.JSONFloat64 `json:"clicksBad"`
		ClicksImage  gensupport.JSONFloat64 `json:"clicksImage"`
		ClicksTotal  gensupport.JSONFloat64 `json:"clicksTotal"`
		NumImageUrls gensupport.JSONFloat64 `json:"numImageUrls"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClicksBad = float64(s1.ClicksBad)
	s.ClicksImage = float64(s1.ClicksImage)
	s.ClicksTotal = float64(s1.ClicksTotal)
	s.NumImageUrls = float64(s1.NumImageUrls)
	return nil
}

// IndexingSignalAggregatorUrlPatternSignals: Contains only the signals
// necessary to perform per-URL click prediction. Used by Index
// Selection for scoring. NEXT ID TO USE: 7
type IndexingSignalAggregatorUrlPatternSignals struct {
	Coverage *IndexingSignalAggregatorAgeWeightedCoverageData `json:"coverage,omitempty"`

	PagerankScore *IndexingSignalAggregatorAggregatedScore `json:"pagerankScore,omitempty"`

	PatternScore *IndexingSignalAggregatorAggregatedScore `json:"patternScore,omitempty"`

	PriorSignal []*IndexingSignalAggregatorUrlPatternSignalsPriorSignal `json:"priorSignal,omitempty"`

	RegexpPatternScore *IndexingSignalAggregatorAggregatedScore `json:"regexpPatternScore,omitempty"`

	SccData *IndexingSignalAggregatorSccData `json:"sccData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Coverage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Coverage") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorUrlPatternSignals) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorUrlPatternSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingSignalAggregatorUrlPatternSignalsPriorSignal: This message
// provides a container for any signal used in scoring, and allows
// UrlPatternSignals to extend beyond (regexp_)pattern_score and
// pagerank_score.
type IndexingSignalAggregatorUrlPatternSignalsPriorSignal struct {
	AggregatedScore *IndexingSignalAggregatorAggregatedScore `json:"aggregatedScore,omitempty"`

	// Possible values:
	//   "PRIOR_SIGNAL_PAGERANK"
	//   "PRIOR_SIGNAL_PATTERN"
	//   "PRIOR_SIGNAL_REGEXP_PATTERN"
	//   "PRIOR_SIGNAL_CLICKRANK"
	//   "PRIOR_SIGNAL_LENGTH"
	//   "PRIOR_SIGNAL_SIBYL"
	//   "PRIOR_SIGNAL_TENSORFLOW"
	PriorSignalId string `json:"priorSignalId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregatedScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorUrlPatternSignalsPriorSignal) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorUrlPatternSignalsPriorSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// IndexingSignalAggregatorUrlScore: Representation of numeric signal of
// a url.
type IndexingSignalAggregatorUrlScore struct {
	// DsacNumWeeklyPerfRecords: The number of weekly performance records if
	// the UrlScore is extracted from the DSAC data. It should be used in
	// case a URL is no longer served. As of 2014-10-14, this field is for
	// the evaluation purpose only.
	DsacNumWeeklyPerfRecords int64 `json:"dsacNumWeeklyPerfRecords,omitempty"`

	// EligibleExperimentalLayer: If this field is set, it indicates the url
	// is eligible to be aggregated to one of the experimental layers.
	//
	// Possible values:
	//   "PRODUCTION"
	//   "EXPERIMENTAL_LAYER_A"
	//   "EXPERIMENTAL_LAYER_B"
	//   "NEXT_LAYER" - Reserved for the next layer.
	EligibleExperimentalLayer string `json:"eligibleExperimentalLayer,omitempty"`

	// FirstServedTimestamp: The timestamp of the first time this document
	// is served anywhere.
	FirstServedTimestamp int64 `json:"firstServedTimestamp,omitempty,string"`

	// IsImportant: Whether this url has important signal. Used for keeping
	// patterns that match too few URLs but some of them have good clicks.
	IsImportant bool `json:"isImportant,omitempty"`

	// Score: score might be missing if the url does not have signal.
	Score float64 `json:"score,omitempty"`

	// Url: url might be missing if we can get it from sstable key.
	Url string `json:"url,omitempty"`

	// Weight: weight for this url.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DsacNumWeeklyPerfRecords") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DsacNumWeeklyPerfRecords")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSignalAggregatorUrlScore) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSignalAggregatorUrlScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSignalAggregatorUrlScore) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSignalAggregatorUrlScore
	var s1 struct {
		Score  gensupport.JSONFloat64 `json:"score"`
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	s.Weight = float64(s1.Weight)
	return nil
}

// IndexingSpeechSpeechPropertiesProto: The information about spoken
// content that's based on purely the media resource contents (and not
// the embedding page or context, etc).
type IndexingSpeechSpeechPropertiesProto struct {
	// AudioDuration: Duration of audio in processed fragment (including
	// non-speech), in seconds.
	AudioDuration int64 `json:"audioDuration,omitempty"`

	// AudioOnly: If true, the media file is audio-only. If false, also has
	// video track(s).
	AudioOnly bool `json:"audioOnly,omitempty"`

	// EstimatedAudioDuration: Estimated duration of audio in the whole file
	// (including non-speech), in seconds. If this is greater than 0, then
	// it will either be equal to audio_duration (when truncated_file is
	// false), or to the length of the content (audio or video) according to
	// the file header (when truncated_file is true).
	EstimatedAudioDuration int64 `json:"estimatedAudioDuration,omitempty"`

	// EstimatedAudioDurationConfidence: Our confidence in the duration
	// estimate, on a scale from 0 (not confident) to 1 (very confident). An
	// estimate should have a confidence of at least 0.5 if it is to be
	// shown to users.
	EstimatedAudioDurationConfidence float64 `json:"estimatedAudioDurationConfidence,omitempty"`

	// LanguageCode: The spoken language, see
	// i18n/identifiers/languagecode.h and go/gl2014. This may or may not
	// match the language of the written page. (Examples: "en", "sv",
	// "zh-CN").
	LanguageCode string `json:"languageCode,omitempty"`

	// NumWords: Total number of recognized words in processed fragment.
	NumWords int64 `json:"numWords,omitempty"`

	// RecognizerAccuracy: Measure of the estimated output accuracy from the
	// speech recognition code, from 0 to 1. Based on word-level confidence
	// and possibly other factors.
	RecognizerAccuracy float64 `json:"recognizerAccuracy,omitempty"`

	// SpeechDuration: Duration of speech in processed fragment, in seconds.
	SpeechDuration int64 `json:"speechDuration,omitempty"`

	// TruncatedFile: If true, we may have processed a truncated file (most
	// likely due to a size-cutoff when crawling). As a result, the audio
	// duration is a lower bound and the other fields reflect only the
	// processed prefix of the file.
	TruncatedFile bool `json:"truncatedFile,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioDuration") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioDuration") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingSpeechSpeechPropertiesProto) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingSpeechSpeechPropertiesProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingSpeechSpeechPropertiesProto) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingSpeechSpeechPropertiesProto
	var s1 struct {
		EstimatedAudioDurationConfidence gensupport.JSONFloat64 `json:"estimatedAudioDurationConfidence"`
		RecognizerAccuracy               gensupport.JSONFloat64 `json:"recognizerAccuracy"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EstimatedAudioDurationConfidence = float64(s1.EstimatedAudioDurationConfidence)
	s.RecognizerAccuracy = float64(s1.RecognizerAccuracy)
	return nil
}

// IndexingUrlPatternUrlTreeBigTreeBranch: Representing a dominating
// branch of the URL tree.
type IndexingUrlPatternUrlTreeBigTreeBranch struct {
	Features *IndexingUrlPatternUrlTreeUrlFeatures `json:"features,omitempty"`

	// PatternId: The fingerprint of the features string.
	PatternId uint64 `json:"patternId,omitempty,string"`

	Payload *Proto2BridgeMessageSet `json:"payload,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Features") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Features") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeBigTreeBranch) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeBigTreeBranch
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingUrlPatternUrlTreeUrlFeature struct {
	Fingerprint uint64 `json:"fingerprint,omitempty,string"`

	// FingerprintWithGroupInType: If consider position when calculating
	// fingerprint of url feature.
	FingerprintWithGroupInType bool `json:"fingerprintWithGroupInType,omitempty"`

	// GroupInType: Used together w/ type field to group features, for
	// finding features with too many possible values.
	GroupInType string `json:"groupInType,omitempty"`

	// Possible values:
	//   "HOST_SEGMENT"
	//   "PATH_SEGMENT"
	//   "DOCUMENT_NAME_SEGMENT"
	//   "QUERY_NAME"
	//   "QUERY_VALUE"
	//   "HOST_SEGMENT_COUNT"
	//   "PATH_SEGMENT_COUNT"
	//   "QUERY_COUNT"
	//   "GMAIL_SUBJECT"
	//   "GMAIL_BODY_TEXT"
	//   "GMAIL_BODY_TREE"
	//   "PROTOCOL" - app uri: :////
	//   "PACKAGE_ID"
	//   "SCHEME"
	//   "AUTHORITY"
	//   "APP_URI_PATH_SEGMENT"
	//   "APP_URI_PATH_SEGMENT_COUNT"
	//   "APP_URI_DOCUMENT_NAME_SEGMENT"
	//   "APP_URI_QUERY_NAME"
	//   "APP_URI_QUERY_VALUE"
	Type string `json:"type,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Fingerprint") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlFeature) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingUrlPatternUrlTreeUrlFeatures struct {
	Feature []*IndexingUrlPatternUrlTreeUrlFeature `json:"feature,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Feature") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Feature") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingUrlPatternUrlTreeUrlTree struct {
	// BigBranch: Keeping information for dominating branches separately, to
	// prevent docs on smaller branches from being dropping during sampling.
	BigBranch []*IndexingUrlPatternUrlTreeBigTreeBranch `json:"bigBranch,omitempty"`

	DebugInfo *IndexingUrlPatternUrlTreeUrlTreeDebugInfo `json:"debugInfo,omitempty"`

	Key *IndexingUrlPatternUrlTreeUrlTreeKey `json:"key,omitempty"`

	// Node: node(0) is root.
	Node []*IndexingUrlPatternUrlTreeUrlTreeNode `json:"node,omitempty"`

	// RetrievalTimestamp: Used in url pattern matcher for cache
	// invalidation.
	RetrievalTimestamp int64 `json:"retrievalTimestamp,omitempty"`

	// Site: The key for this UrlTree, also will be the key in sstable. The
	// old format is site, while the new format will be UrlTreeKey. Only one
	// field can be set in the same time for site and key.
	Site string `json:"site,omitempty"`

	// Timestamp: The time when this UrlTree is built, encoded as seconds
	// past the epoch (Jan 1, 1970).
	Timestamp int64 `json:"timestamp,omitempty"`

	// TreeInfo: Any additional information.
	TreeInfo *Proto2BridgeMessageSet `json:"treeInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BigBranch") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BigBranch") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlTree) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlTree
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingUrlPatternUrlTreeUrlTreeDebugInfo struct {
	InnerSimilarity float64 `json:"innerSimilarity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InnerSimilarity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InnerSimilarity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlTreeDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlTreeDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingUrlPatternUrlTreeUrlTreeDebugInfo) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingUrlPatternUrlTreeUrlTreeDebugInfo
	var s1 struct {
		InnerSimilarity gensupport.JSONFloat64 `json:"innerSimilarity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.InnerSimilarity = float64(s1.InnerSimilarity)
	return nil
}

// IndexingUrlPatternUrlTreeUrlTreeKey: A UID of URL Tree. There is a
// hash function and a equality function for UrlTreeKey in
// //indexing/url_pattern/url_tree/util/url-tree-key-util.h. When adding
// or deprecating a field in this proto, please also update the hash
// function and the equality function. LINT.IfChange
type IndexingUrlPatternUrlTreeUrlTreeKey struct {
	// Possible values:
	//   "UNKNOWN"
	//   "DESKTOP"
	//   "SMARTPHONE"
	CrawlerId string `json:"crawlerId,omitempty"`

	Domain string `json:"domain,omitempty"`

	Hostname string `json:"hostname,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CrawlerId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CrawlerId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlTreeKey) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlTreeKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type IndexingUrlPatternUrlTreeUrlTreeNode struct {
	IndexOfSubTreeWithSplittingFeature int64 `json:"indexOfSubTreeWithSplittingFeature,omitempty"`

	IndexOfSubTreeWithoutSplittingFeature int64 `json:"indexOfSubTreeWithoutSplittingFeature,omitempty"`

	Parent int64 `json:"parent,omitempty"`

	// PathFromRoot: The path from root to current node. This is only used
	// for debugging.
	PathFromRoot string `json:"pathFromRoot,omitempty"`

	// PatternId: This is only used in leaf nodes which represents a url
	// pattern. It is the fingerprint of the splitting url features from
	// root to the leaf.
	PatternId uint64 `json:"patternId,omitempty,string"`

	Payload *Proto2BridgeMessageSet `json:"payload,omitempty"`

	SplittingFeature *IndexingUrlPatternUrlTreeUrlFeature `json:"splittingFeature,omitempty"`

	// SplittingFeatureScore: The information gain of content features when
	// selecting this splitting feature to split the node.
	SplittingFeatureScore float64 `json:"splittingFeatureScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IndexOfSubTreeWithSplittingFeature") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "IndexOfSubTreeWithSplittingFeature") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *IndexingUrlPatternUrlTreeUrlTreeNode) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingUrlPatternUrlTreeUrlTreeNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *IndexingUrlPatternUrlTreeUrlTreeNode) UnmarshalJSON(data []byte) error {
	type NoMethod IndexingUrlPatternUrlTreeUrlTreeNode
	var s1 struct {
		SplittingFeatureScore gensupport.JSONFloat64 `json:"splittingFeatureScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SplittingFeatureScore = float64(s1.SplittingFeatureScore)
	return nil
}

// IndexingVideosAsrTranscriptRepairAnnotation: This proto captures the
// output of analyses that ran on Automatic Speech Recogntion produced
// by the recognizer.
type IndexingVideosAsrTranscriptRepairAnnotation struct {
	// Possible values:
	//   "UNDEFINED_GIBBERISH_RESULT" - The status of this document is
	// unknown.
	//   "NOT_GIBBERISH"
	//   "IS_GIBBERISH" - The transcript is gibberish and should not be
	// used.
	//   "GIBBERISH_UNSUPPORTED_LANGUAGE" - Gibberish detection was not run
	// because the language is not supported. Consider this not gibberish.
	//   "GIBBERISH_DECLINED" - Gibberish detection declined to run for an
	// unspecified reason. Consider this not gibberish.
	//   "GIBBERISH_DETECTION_FAILED" - Gibberish detection ran, but failed.
	// Consider this not gibberish.
	GibberishResult string `json:"gibberishResult,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GibberishResult") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GibberishResult") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *IndexingVideosAsrTranscriptRepairAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod IndexingVideosAsrTranscriptRepairAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KaltixPerDocData struct {
	// KaltixRank: approx. 2 bytes for top 1B
	KaltixRank int64 `json:"KaltixRank,omitempty"`

	// LocalKaltixRank: empty for now
	LocalKaltixRank int64 `json:"LocalKaltixRank,omitempty"`

	// SiteKaltixRank: empty for now
	SiteKaltixRank int64 `json:"SiteKaltixRank,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KaltixRank") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KaltixRank") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KaltixPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod KaltixPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KeGovernanceTypedRegions: Wrapper message containing list of regions
// and their corresponding type of region signal to use in data
// governance.
type KeGovernanceTypedRegions struct {
	// RegionType: The particular type of region should be explicitly set to
	// disambiguate.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "FRONTEND_REGION_CODE" - Region code as seen by search frontend
	// (FrontendRequest::region_code). This is based on the user's physical
	// location, and can be overridden by both the region picker in search
	// settings and the gl url param. Among Oolong location views, this
	// corresponds to the unique jurisdiction view, i.e.
	// JurisdictionLocationView::createUnique if the LocationContext is
	// fetched by GWS.
	//   "TRUSTED_LOCATION_VIEW_REGION_CODE" - This represents a trusted
	// location that is hard to spoof and can be used for legal purposes
	// such as applying restrictions based on the user's "physical"
	// location. Among Oolong's location views, this corresponds to
	// TrustedLocationView.
	RegionType string `json:"regionType,omitempty"`

	// Regions: Values are go/iii RegionCode in capital case. It is a good
	// practice to keep elements in this list unique, although not enforced.
	// In case of duplicated entries, they'll be treated as if there were
	// only one entry of the same value.
	Regions []string `json:"regions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RegionType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RegionType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KeGovernanceTypedRegions) MarshalJSON() ([]byte, error) {
	type NoMethod KeGovernanceTypedRegions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersAnyType: Accepts any non-empty value. This is meant
// for special cases allowing any value or any composition to be valid
// in a slot. If you are thinking of using this, please contact
// mrf-team@.
type KnowledgeAnswersAnyType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersAnyType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersAnyType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersAttributeType: An attribute type configures a value
// whose type is intended to be a attribute defined in the schema.
type KnowledgeAnswersAttributeType struct {
	// Attribute: Use in parsing: the value filled with must be in the list
	// of this. If no attribute ids are specified, this value can be filled
	// with any attribute.
	Attribute []string `json:"attribute,omitempty"`

	// PivotEntitySlot: If exist, the attribute will be applied on the given
	// pivot slot. This helps type checking when qrewrite constructs
	// function calls with an attribute-typed slot.
	PivotEntitySlot string `json:"pivotEntitySlot,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attribute") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attribute") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersAttributeType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersAttributeType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersBooleanType: A BooleanType configures a yes/no value.
type KnowledgeAnswersBooleanType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersBooleanType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersBooleanType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersCollectionType: A CollectionType configures a value
// whose type is intended to be a collection.
type KnowledgeAnswersCollectionType struct {
	// Collection: The collection this value is filled with must be one of
	// these collections (denoted by a /collection/* id). If no collections
	// are specified, this value can be filled with any collection.
	Collection []string `json:"collection,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Collection") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Collection") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersCollectionType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersCollectionType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersCompoundType: A CompoundType configures a value
// composed of multiple answer values.
type KnowledgeAnswersCompoundType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersCompoundType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersCompoundType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersContainerType struct {
	SlotNames []string `json:"slotNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SlotNames") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SlotNames") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersContainerType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersContainerType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersDateType: A DateType configures a value whose type is
// intended to be a date. LINT.IfChange Next id: 16
type KnowledgeAnswersDateType struct {
	// AllowAllRangeResolutions: If true, will allow all resolutions that
	// are ranges.
	AllowAllRangeResolutions bool `json:"allowAllRangeResolutions,omitempty"`

	// AllowAllResolutions: If true, overrides all other options in this
	// message and allows any kind of DateTime annotation.
	AllowAllResolutions bool `json:"allowAllResolutions,omitempty"`

	// AllowAllResolutionsExceptHolidays: If true, will allow all
	// resolutions except holidays.
	AllowAllResolutionsExceptHolidays bool `json:"allowAllResolutionsExceptHolidays,omitempty"`

	// AllowAllResolutionsWithout4digit24hrTime: If true, will allow
	// resolutions that aren't contiguous sequences of 4 digits annotated as
	// 24-hr times. These are often mis-interpreted years or postcodes.
	AllowAllResolutionsWithout4digit24hrTime bool `json:"allowAllResolutionsWithout4digit24hrTime,omitempty"`

	// AllowAllResolutionsWithoutTime: If true, will allow resolutions
	// without an explicit hour. Symbolic ranges such as [this evening] are
	// not considered as explicit hour, but the range [1-3pm] is considered
	// as explicit.
	AllowAllResolutionsWithoutTime bool `json:"allowAllResolutionsWithoutTime,omitempty"`

	// AllowDayResolution: If true, will parse a mention to DateTime of
	// resolution day. This allows parsing strings like "August 30th",
	// "2012-12-25";
	AllowDayResolution bool `json:"allowDayResolution,omitempty"`

	// AllowDayResolutionExceptHolidaysOrOrdinal: If true, will allow day
	// resolutions except holidays or ordinal numbers, such as "today",
	// "December 13", but "Christmas", "first" are not allowed.
	AllowDayResolutionExceptHolidaysOrOrdinal bool `json:"allowDayResolutionExceptHolidaysOrOrdinal,omitempty"`

	// AllowHourResolution: If true, will allow resolutions with an explicit
	// hour such as "8am", "5pm".
	AllowHourResolution bool `json:"allowHourResolution,omitempty"`

	// AllowMonthResolution: If true, will parse a mention to DateTime of
	// resolution month. This allows parsing strings like "this August",
	// "2012-12";
	AllowMonthResolution bool `json:"allowMonthResolution,omitempty"`

	// AllowNowResolution: If true, will allow "now" resolutions, but not
	// any other time
	AllowNowResolution bool `json:"allowNowResolution,omitempty"`

	// AllowSymbolicTime: If true, will allow symbolic time resolutions such
	// as "tonight".
	AllowSymbolicTime bool `json:"allowSymbolicTime,omitempty"`

	// AllowTimeResolutionsWithoutExplicitTimezone: If true, will allow time
	// resolutions without an explicit timezone.
	AllowTimeResolutionsWithoutExplicitTimezone bool `json:"allowTimeResolutionsWithoutExplicitTimezone,omitempty"`

	// AllowYearResolution: If true, will parse a mention to DateTime of
	// resolution year. This allows parsing strings like "Next year ",
	// "2010";
	AllowYearResolution bool `json:"allowYearResolution,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// Possible values:
	//   "DATE_TIME_DEFAULT" - By default, formats as precise as possible
	// based on the answer's datetime value. E.g., [oscar award date] ->
	// March 27,2022 at 5:00 PM PDT
	//   "DATE_ONLY" - Only keeps the date even if answer value has the
	// time. E.g., [Top gun release date] -> May 27, 2022
	//   "DATE_WITH_DAY_OF_WEEK" - Only keeps the date and add the day of
	// the week. E.g., [presidential election vote date] -> Tuesday,
	// November 8, 2022
	//   "DATE_YEAR_ONLY" - Only keeps the year even if answer value has the
	// full date or time. E.g., [bond movies] -> 1962
	//   "DATE_MONTH_ONLY" - Only keeps the month even if answer value has
	// the full date or time. E.g., [Obama birth Month] -> August
	SubType string `json:"subType,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowAllRangeResolutions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowAllRangeResolutions")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersDateType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersDateType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersDependencyType struct {
	ContainerType *KnowledgeAnswersContainerType `json:"containerType,omitempty"`

	IntersectType *KnowledgeAnswersIntersectType `json:"intersectType,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	SameType *KnowledgeAnswersSameType `json:"sameType,omitempty"`

	UnionType *KnowledgeAnswersUnionType `json:"unionType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContainerType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContainerType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersDependencyType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersDependencyType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersDialogReferentialResolution: How a piece of data was
// resolved through external data (either elsewhere in the query, or
// from a previous query). Examples: [obama and his age] -> "his" is
// resolved from the Obama entity obama -> "he" is resolved from the
// Obama entity starbucks -> Q2 is resolved from the list of shops
type KnowledgeAnswersDialogReferentialResolution struct {
	// RefersToFullMrf: True iff this ReferentialResolution is part of an
	// intent and refers to the full MRF subtree (rather than just the
	// intent).
	RefersToFullMrf bool `json:"refersToFullMrf,omitempty"`

	// Possible values:
	//   "NONE" - No referential resolution.
	//   "SAFT_PRONOUN" - A referential pronoun like "she" was used to
	// resolve a matching entity.
	//   "NOUN_PHRASE" - A phrase like "this man" or "that movie" was used
	// to resolve a matching entity.
	//   "LOCAL_SEMANTIC_FUNCTION_MERGE" - Legacy Local SemanticFn logic was
	// used to combine the previous interpretation with the current one.
	//   "CONTEXTUAL_SUBGRAMMAR_ANNOTATION" - The Location subgrammar
	// produced an annotation from an AttentionalEntity.
	//   "RIPPLES_LIST_SELECTION" - Ripples performed a list selection when
	// the user issues a query like "the third one".
	ResolutionType string `json:"resolutionType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RefersToFullMrf") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RefersToFullMrf") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersDialogReferentialResolution) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersDialogReferentialResolution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersDurationType: A DurationType configures a value whose
// type is a duration.
type KnowledgeAnswersDurationType struct {
	// RangeConstraint: Range constraint limits the set of durations
	// accepted. The values of the range are in milliseconds. Currently,
	// this constraint is only enforced in Loose Parser.
	RangeConstraint *KnowledgeAnswersRangeConstraint `json:"rangeConstraint,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RangeConstraint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RangeConstraint") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersDurationType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersDurationType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersEntityType: An EntityType configures a value whose
// type is intended to be an entity. Entities may be specified using
// either the collection(s) to which they belong, or explicitly via a
// list of KG-ids. Both collections and ids can be specified, in which
// case the type will be the union of the id(s) and all mids within the
// collection(s). Next available tag: 9
type KnowledgeAnswersEntityType struct {
	// Collection: This field specifies that containing entity must be: - in
	// *any* 'collection' if 'in_all_collections' is false (default) - in
	// *every* 'collection' if 'in_all_collections' is true. The collection
	// field contains strings of the form '/collection/'. If no collections
	// are specified, this value can be filled with any entity. A collection
	// specified as an empty string has a special meaning for Aqua
	// induction, which is that the type includes all entities.
	Collection []string `json:"collection,omitempty"`

	// ExcludedCollection: The entity that this value is filled with must
	// not be any of these collections (denoted by a /collection/* id). This
	// restriction does not affect parsing; it is used only to filter
	// attributes in the extraction flow.
	ExcludedCollection []string `json:"excludedCollection,omitempty"`

	// Id: The entity that this value is filled with must be one of the
	// following explicitly specified KG-ids.
	Id []string `json:"id,omitempty"`

	// Identifier: The entity that this value is filled with must be of the
	// explicit type and/or contain the explicitly specified id. This field
	// can not be used for kg mids, which should directly use the id field
	// above.
	Identifier []*KnowledgeAnswersIntentQueryIdentifier `json:"identifier,omitempty"`

	InAllCollections bool `json:"inAllCollections,omitempty"`

	// IncludeGeolocationData: If this is set to true for a slot and the
	// entity is a location, the latitude and longitude will be available in
	// variables $SlotName_Latitude and $SlotName_Longitude, respectively.
	// The latitude and longitude data comes from KG.
	IncludeGeolocationData bool `json:"includeGeolocationData,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// StbrDomain: This field is deprecated. It is not removed completely
	// since this proto was saved with this field in proto text files used
	// by the Grammy tool.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "DEFAULT"
	//   "SPORTS"
	//   "FINANCE"
	StbrDomain []string `json:"stbrDomain,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Collection") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Collection") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersEntityType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersEntityType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentModifiers: Modifiers decorate a Meaning
// Expression (i.e. intent FunctionCall) with signals that depend on the
// source language's grammar and syntax. See go/intent-modifiers for
// details. NOTE: Modifiers don't necessarily impact
// go/intent-resolution semantics. LINT.IfChange
type KnowledgeAnswersIntentModifiers struct {
	// AlternateLanguage: Language of all of the non-annotation tokens of
	// the query interpretation, if it is different than |language|. This
	// can happen with English smearing, e.g. [height rousseau] will trigger
	// as "fr" when issued in fr/FR, but really the language is "en". This
	// can also happen when we have extra information about the language
	// model, e.g. language="zh", alternate_language="zh-Hant".
	AlternateLanguage string `json:"alternateLanguage,omitempty"`

	// Possible values:
	//   "UNKNOWN_DEFINITENESS"
	//   "DEFINITE"
	//   "INDEFINITE"
	Definiteness string `json:"definiteness,omitempty"`

	// Language: Language of parsed query.
	Language string `json:"language,omitempty"`

	// Mood: Since there's only IMPERATIVE, consider using Marker.command
	// instead.
	//
	// Possible values:
	//   "UNKNOWN_MOOD"
	//   "IMPERATIVE" - E.g. [turn on the light] Other possible values:
	// Interrogative, Subjunctive, ...
	Mood string `json:"mood,omitempty"`

	// Possible values:
	//   "UNKNOWN_PLURALITY"
	//   "SINGULAR"
	//   "PLURAL"
	Plurality string `json:"plurality,omitempty"`

	// PolarQuestion: Whether or not the question is a polar (yes/no)
	// question.
	PolarQuestion bool `json:"polarQuestion,omitempty"`

	// Sentiment: Sentiment analysis attached to an intent implies the
	// sentiment user expressed behind that query. This is generated by the
	// Empathetic Servlet in the QRewrite.
	Sentiment *SentimentSentiment `json:"sentiment,omitempty"`

	// Possible values:
	//   "UNKNOWN_TENSE"
	//   "PRESENT"
	//   "FUTURE"
	//   "PAST"
	Tense string `json:"tense,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlternateLanguage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlternateLanguage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentModifiers) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentModifiers
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryAnnotationLayerSignals: Signals coming
// from the Annotation Layer of TUIG. See more details at
// http://go/unified-intent-generation-apis.
type KnowledgeAnswersIntentQueryAnnotationLayerSignals struct {
	CustomVehicleActionArgumentAnnotatorSignals *KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals `json:"customVehicleActionArgumentAnnotatorSignals,omitempty"`

	FreetextAnnotationSignals *KnowledgeAnswersIntentQueryFreetextAnnotationSignals `json:"freetextAnnotationSignals,omitempty"`

	NimbleAnnotationSignals *KnowledgeAnswersIntentQueryNimbleAnnotationSignals `json:"nimbleAnnotationSignals,omitempty"`

	NtprAnnotationSignals *KnowledgeAnswersIntentQueryNTPRAnnotationSignals `json:"ntprAnnotationSignals,omitempty"`

	QrefAnnotationSignals *KnowledgeAnswersIntentQueryQrefAnnotationSignals `json:"qrefAnnotationSignals,omitempty"`

	SemanticAnnotationSignals *KnowledgeAnswersIntentQuerySemanticAnnotationSignals `json:"semanticAnnotationSignals,omitempty"`

	TeleportArgumentAnnotatorSignals *KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals `json:"teleportArgumentAnnotatorSignals,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CustomVehicleActionArgumentAnnotatorSignals") to unconditionally
	// include in API requests. By default, fields with empty or default
	// values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CustomVehicleActionArgumentAnnotatorSignals") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryAnnotationLayerSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryAnnotationLayerSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersIntentQueryArgPath struct {
	Components []*KnowledgeAnswersIntentQueryArgPathComponent `json:"components,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Components") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Components") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgPath) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgPath
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgPathComponent: LINT.IfChange(ArgPath)
// Given a FunctionCall and an Argument somewhere in it, an ArgPath is a
// list of name-index pairs that uniquely determines the path down to
// that Argument. For each pair, the |index|, starting from zero,
// distinguishes between "sibling" (i.e. belonging to the same
// sub-FunctionCall) Arguments with the same name. For example, given
// the following FunctionCall: A(X=D(W=5), Z=B(Z=6), Z=C(Y=7)) The path
// to the Z=6 argument is {{"Z", 0}, {"Z", 0}} It's the first of two Z
// "siblings" under A, then the only Z under B. The path to the Y=7
// argument is {{"Z", 1}, {"Y", 0}} It's the second of two Z "siblings"
// under A, then the only Y under C. The path to the Z=B(...) argument
// is {{"Z", 0}} It's the first of two Z "siblings" under A.
type KnowledgeAnswersIntentQueryArgPathComponent struct {
	ArgName string `json:"argName,omitempty"`

	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArgName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArgName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgPathComponent) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgPathComponent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgument: A message representing the
// function argument. Next ID: 9 Important: If you add new fields that
// do not reflect signals data, but actual semantics of the
// FunctionCall, please also update CreateFuncallCopyWithoutSignals and
// CreateFuncallCopyWithArgumentSignals in function_call_utils.
// LINT.IfChange
type KnowledgeAnswersIntentQueryArgument struct {
	// EvalData: This field is used inside Aqua and outside Aqua for
	// identifying the token indices and/or byte offsets of this argument
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// HeuristicEvalData: Eval_data was not derived at parsing time (i.e. is
	// not expected to be produced by the IG), but heuristically determined
	// by matching the ArgumentValue to an annotation/query fragment.
	HeuristicEvalData *NlpSemanticParsingAnnotationEvalData `json:"heuristicEvalData,omitempty"`

	// Key: Slot schema key for this Argument. Note: This is still under
	// development and not available for general use. Contact
	// meaning-platform-eng@ for questions. Note: Currently
	// MeaningSchemaSlotKey proto has both mid and unique_id. In future,
	// only mid will be present in it. We are in the process of moving
	// "unique_id" out of it. See (b/168907943). Note: The logged version of
	// intent_query will only have "mid" populated in it to save space and
	// avoid data duplication.
	Key *KnowledgeAnswersMeaningSchemaSlotKey `json:"key,omitempty"`

	// Modifiers: A flattened representation of all intent modifiers that
	// apply to this argument.
	Modifiers *KnowledgeAnswersIntentModifiers `json:"modifiers,omitempty"`

	// Name: Name of this argument. If this Argument is part of a
	// FunctionCall, it must have a name or it is not well-formed. If this
	// Argument is from an Annotator, the name field should be empty.
	Name string `json:"name,omitempty"`

	// Signals: Signals associated with this argument.
	Signals *KnowledgeAnswersIntentQueryArgumentSignals `json:"signals,omitempty"`

	// Value: The value of this argument.
	Value *KnowledgeAnswersIntentQueryArgumentValue `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgument) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenance: NextId: 11
type KnowledgeAnswersIntentQueryArgumentProvenance struct {
	// Anaphor: If populated, the current query contains an anaphor that
	// refers to the value. For example: U: Weather in Paris.
	// [Weather(location=paris)] G: 65 degrees and sunny. U: How many people
	// live there? [Population(city=paris)] The "there" in the current query
	// would have the "anaphor" field set. NOTE: after a string rewrite this
	// field will not be populated anymore if the rewrite replaced the
	// anaphor with the corresponding value. For example, if we rewrite [How
	// many people there] to [How many people in Paris], the
	// CurrentQuerySignals for "paris" will not contain an "anaphor" message
	// anymore in the following turns. It will only contain an eval_data for
	// the span that corresponds to "paris" in the query.
	Anaphor *KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor `json:"anaphor,omitempty"`

	AttentionalEntity *KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity `json:"attentionalEntity,omitempty"`

	// CurrentQuery: NOTE: PreviousQuery is used for values that originate
	// directly from QRef entities annotated in the user query.
	// AttentionalEntity is used for values that come from the system
	// (entities published by a dialog). These values could also originate
	// from an entity annotated by QRef in the query, but this is not
	// necessarily the case. SearchAnswerValue is used for values that come
	// from the system as part of the answer of the user query. For example:
	// U: Wife of Barack Obama G: Barack Obama's wife is Michelle Obama Here
	// "Barack Obama" can have an ArgumentProvenance of PreviousQuery, or
	// AttentionalEntity if a dialog publishes that entity and the
	// interpretation pulls the value from it. "Michelle Obama" can have an
	// ArgumentProvenance of SearchAnswerValue, or AttentionalEntity if the
	// dialog publishes that entity and the interpretation pulls the value
	// it.
	CurrentQuery *KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery `json:"currentQuery,omitempty"`

	InjectedContextualSchema *KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema `json:"injectedContextualSchema,omitempty"`

	PreviousQuery *KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery `json:"previousQuery,omitempty"`

	PreviousResponseMeaning *KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning `json:"previousResponseMeaning,omitempty"`

	PreviousTaskState *KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState `json:"previousTaskState,omitempty"`

	SearchAnswerValue *KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue `json:"searchAnswerValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anaphor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anaphor") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity: The
// value is carried over from an attentional entity. For example, in a
// dialog about a movie that publishes an attentional entity for
// /m/matrix: U: What is the cast. [Cast(location=/m/matrix)] G: The
// cast includes Keanu Reeves and others. U: Great, buy some tickets.
// [BuyTickets(movie=/m/matrix)] On the second user query, the "movie"
// argument would have a provenance of ATTENTIONAL_ENTITY.
type KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity struct {
	// AttentionalEntityKey: This key can be used to recover the attentional
	// entity from the corresponding attentional_entities::EntityCache.
	AttentionalEntityKey uint64 `json:"attentionalEntityKey,omitempty,string"`

	// MentionProperties: Source information from the
	// AttentionalEntityReader.
	MentionProperties *AttentionalEntitiesMentionProperties `json:"mentionProperties,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AttentionalEntityKey") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttentionalEntityKey") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery: NOTE:
// These comments should stay in sync with the comments in
// logs/proto/knowledge/interpretation/intent_query.proto LINT.IfChange
// The argument comes from the current query. For example: U: Book a
// hotel in Paris. [BookHotel(location=/m/paris)] The "location"
// argument would have a provenance of CURRENT_QUERY.
type KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery struct {
	// EvalData: The span(s) in the query where the value comes from. Note
	// that if the argument is split across the current and previous query,
	// this message should *NOT* be populated. Please use PreviousQuery
	// below, populating it's eval-data fields accordingly.
	EvalData []*NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	NeuralLocationAnnotator *KnowledgeAnswersIntentQueryArgumentProvenanceNeuralLocationAnnotator `json:"neuralLocationAnnotator,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema:
//
//	The value is carried from injected contextual schema. Such schemas
//
// can be injected by go/qu-biasing-config for particular clients when
// their biasing configs are triggered for their traffic Config: (if
// QRewrite source == CARS_IMMERSIVE then inject LocalCarListings and
// Cars) Context: (QRewrite source == CARS_IMMERSIVE) U: Red
// [LocalCarListings(Cars() & RelatedTo(/m/red))] In this case, both
// LocalCarListings and Cars are spanless injected contextual schemas.
type KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema struct {
}

// KnowledgeAnswersIntentQueryArgumentProvenanceNeuralLocationAnnotator:
// The value is used for CurrentQuery.annotator and
// PreviousQuery.annotator to indicate what annotator annotated the
// argument
type KnowledgeAnswersIntentQueryArgumentProvenanceNeuralLocationAnnotator struct {
}

// KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery: The value
// is carried over from either the previous winning IntentQuery or an
// entity annotated by QRef in a previous query. For example: U: How old
// is Obama. [Age(person=/m/obama)] G: Barack Obama is 56 years old. U:
// Who is his wife. [Spouse(person=/m/obama)] The "person" argument
// would have a provenance of PREVIOUS_QUERY. However, if a dialog
// publishes an attentional entity for "Obama", the "person" argument
// can have a provenance of ATTENTIONAL_ENTITY instead. This includes
// arguments with provenance that spans both the current and previous
// query.
type KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery struct {
	// CurrentQueryEvalData: The span(s) in the current query where the
	// value comes from. This is used when the argument spans both the
	// current and previous query. Eg jfk death -> [death, when] spans both
	// queries.
	CurrentQueryEvalData []*NlpSemanticParsingAnnotationEvalData `json:"currentQueryEvalData,omitempty"`

	// EvalData: The span(s) in the query where the value comes from.
	EvalData []*NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// EventId: The event ID of the query where this value was pulled from.
	EventId *EventIdMessage `json:"eventId,omitempty"`

	NeuralLocationAnnotator *KnowledgeAnswersIntentQueryArgumentProvenanceNeuralLocationAnnotator `json:"neuralLocationAnnotator,omitempty"`

	Role *KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole `json:"role,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "QUERY_STRING"
	//   "INTERPRETATION"
	//   "QUERY_JOIN"
	//   "PROMPT"
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CurrentQueryEvalData") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CurrentQueryEvalData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole: The
// role that this data played in the previous query.
type KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole struct {
	IntentId string `json:"intentId,omitempty"`

	SlotName string `json:"slotName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning struct {
}

// KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState: Value
// is derived from previous task state (go/taskstates).
type KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState struct {
	// ArgumentName: Argument names in the DialogIntentState that the
	// argument corresponds to. This is repeated so it can handle complex
	// argument update paths. (ordered from outermost argument to innermost
	// argument)
	ArgumentName []string `json:"argumentName,omitempty"`

	// CurrentQueryEvalData: The span(s) in the current query (if any) used
	// to resolve the previous query's DIS. Example: U: Barack Obama G: Do
	// you want his age or his height? U: The first one. G: Age(/m/obama) In
	// this example, the intent is derived from the previous query's DIS,
	// but also needs to be resolved in the current query since the user was
	// presented with multiple options.
	CurrentQueryEvalData []*NlpSemanticParsingAnnotationEvalData `json:"currentQueryEvalData,omitempty"`

	// DialogIntentStateId: The id of the specific DialogIntentState
	// instance that the argument corresponds to.
	DialogIntentStateId string `json:"dialogIntentStateId,omitempty"`

	// IntentName: Intent name of the DialogIntentState that the argument
	// corresponds to.
	IntentName string `json:"intentName,omitempty"`

	ListCandidate *KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate `json:"listCandidate,omitempty"`

	PreviousFunctionCall *KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePreviousFunctionCall `json:"previousFunctionCall,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArgumentName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArgumentName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCand
// idate: The value is carried over from a field_candidate in a
// DialogIntentState. For example: U: Send a message to John. G: Which
// John do you want to message? U: John A.
// [ListPresentationIntent(contact_disambiguation.person=0)] On the
// second user query, the "contact_disambiguation.person" argument would
// have a provenance of PREVIOUS_TASK_STATE_LIST_CANDIDATE.
type KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate struct {
	// CandidateIndex: The presented_index of the field_candidate in the
	// DialogIntentState field_signals that the argument corresponds to.
	CandidateIndex int64 `json:"candidateIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CandidateIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CandidateIndex") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePrevious
// FunctionCall: The value was carried over from the previous function
// call. For example: U: Create an alarm titled "Wake".
// [CreateAlarm(title=Wake)] G: Sure, at what time? U: 5 am.
// [CreateAlarm(title=Wake,time=5am)] On the second user query, the
// "title" argument would have a provenance of PREVIOUS_TASK_STATE.
type KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePreviousFunctionCall struct {
}

// KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor: Signals
// about an anaphor in the query: for example an occurrence of the
// pronoun "it".
type KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor struct {
	// EvalData: If populated, the spans in the current query where this
	// value was annotated. This is a repeated field because some values can
	// be annotated from a set of discontiguous spans (e.g. some intent
	// phrases), but in most cases this field will contain only one item or
	// it will be empty (for values inferred from context without the use of
	// anaphora).
	EvalData []*NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue: The
// value was carried over from a SearchAnswerValue triggered by a
// previous query (go/search-answer-values). For example: U: Movies with
// Tom Cruise. [Movies(actor=/m/tom_cruise)] G: Tom Cruise's movies
// include Top Gun, The Mummy, and 52 others. U: Reviews for the second
// one. [Reviews(movie=/m/the_mummy)] The "movie" argument in the last
// query would have a provenance of SEARCH_ANSWER_VALUE.
type KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue struct {
	// EventId: This identifies the SearchAnswerValues where this value was
	// pulled from.
	EventId *EventIdMessage `json:"eventId,omitempty"`

	// MetadataValueIndex: Each SearchAnswerValue can have a primary value
	// and a list of metadata values. If this index is set, this value was
	// pulled from the metadata value at this index, otherwise it was pulled
	// from the primary value.
	MetadataValueIndex int64 `json:"metadataValueIndex,omitempty"`

	// Text: The display text of this answer value. It's taken from the
	// search answer value display text if present, or the canonical name if
	// it's an entity.
	Text string `json:"text,omitempty"`

	// ValueIndex: The index of the SearchAnswerValue where this value was
	// pulled from.
	ValueIndex int64 `json:"valueIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EventId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EventId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryArgumentSignals: A message representing
// the signals associated with an argument. NEXT ID TO USE: 57 For
// //depot/google3/logs/proto/knowledge/interpretation/intent_query.proto
//
//	in the "ThenChange", fields under Argument.signals in the serving
//
// proto are stored directly under Argument on the logging side. For
// example, see
// http://google3/nlp/semantic_parsing/data_management/logs/web_logs/semantic_logging_converters/semantic_logging_request_argument_converter.cc?l=58&rcl=322925428.
// LINT.IfChange
type KnowledgeAnswersIntentQueryArgumentSignals struct {
	// AddedByCloseAnswers: Whether this argument was added by CloseAnswers
	// in Postref. This bit is used to mark the corresponding
	// interpretation/intent query as such by setting
	// is_close_interpretation bit.
	AddedByCloseAnswers bool `json:"addedByCloseAnswers,omitempty"`

	// AllowedFuzzyMatch: For this argument, backend performed fuzzy match.
	AllowedFuzzyMatch bool `json:"allowedFuzzyMatch,omitempty"`

	// AnnotatedRelationship: Relationships between entities
	AnnotatedRelationship []*LogsSemanticInterpretationIntentQueryWebrefEntityRelationship `json:"annotatedRelationship,omitempty"`

	// AnnotationLayerSignals: Signals to facilitate orchestration of TUIG
	// annotations.
	AnnotationLayerSignals *KnowledgeAnswersIntentQueryAnnotationLayerSignals `json:"annotationLayerSignals,omitempty"`

	// ChainId: One or more ChainIds from a ChainAnnotation whose
	// "organization_mid" matches the MID. As of 2021-01 multiple chain_ids
	// may be specified if the organization for MID controls multiple
	// chains. See go/chains-lckp-robust-triggering for motivation.
	ChainId []*LocalsearchChainId `json:"chainId,omitempty"`

	// ClusterInfo: If the literal.obj_type of the argument value is ID
	// (Entity), this stores cluster scoring information for that entity, if
	// the entity belongs to a cluster.
	ClusterInfo *QualityViewsExtractionClusterInfo `json:"clusterInfo,omitempty"`

	// CollectionMembership: If the literal.obj_type of the argument value
	// is ID (Entity), this represents the collection that the entity in
	// this argument is a member of.
	CollectionMembership []*KnowledgeAnswersIntentQueryCollectionMembership `json:"collectionMembership,omitempty"`

	// ContextResolution: How this argument was resolved through context
	// from a previous query. Examples: obama -> "he" is resolved from the
	// Obama entity starbucks -> Q2 is resolved from the list of shops
	// (Attentional Entities)
	//
	// Possible values:
	//   "NONE"
	//   "SAFT_PRONOUN"
	//   "NOUN_PHRASE"
	//   "LOCAL_SEMANTIC_FUNCTION_MERGE"
	//   "CONTEXTUAL_SUBGRAMMAR_ANNOTATION"
	ContextResolution string `json:"contextResolution,omitempty"`

	// DeprecatedFreebaseType: If the literal.obj_type of the argument value
	// is ID (Entity), this represents freebase types of the entity in this
	// argument.
	DeprecatedFreebaseType []string `json:"deprecatedFreebaseType,omitempty"`

	// DeprecatedSupportingMid: A list of mids that "support" this argument
	// in voting, i.e, results that support these mids will be treated as if
	// they support the argument. This field has been deprecated in favor of
	// related_entity. b/27363861
	DeprecatedSupportingMid []string `json:"deprecatedSupportingMid,omitempty"`

	// EntityNumber: Signals about what other entities this entity implies /
	// is implied by. This is useful for grounding. Example: b/138388207:
	// suppressing song intents if the artist entity doesn't link to the
	// song title. This value specifies the order of annotations in a QRef
	// annotation chain so they can refer to each other.
	EntityNumber int64 `json:"entityNumber,omitempty"`

	// EntityRelationship: Signals about what other entities this entity
	// implies / is implied by. This is useful for grounding. Example:
	// b/138388207: suppressing song intents if the artist entity doesn't
	// link to the song title.
	EntityRelationship []*NlpSemanticParsingQRefAnnotationEntityRelationship `json:"entityRelationship,omitempty"`

	// ExpressionStatus: Status indicating whether the user has completely
	// expressed the semantics of the argument.
	ExpressionStatus *NlpSemanticParsingExpressionStatus `json:"expressionStatus,omitempty"`

	// FromManualSymbolAnnotation: Whether the argument entity comes from a
	// manual graphic symbol annotation. This is later used as a heuristic
	// for poor web result quality.
	FromManualSymbolAnnotation bool `json:"fromManualSymbolAnnotation,omitempty"`

	// FromSymbolAnnotation: Whether the argument entity comes from a
	// graphic symbol annotation. This is later used as a heuristic for poor
	// web result quality.
	FromSymbolAnnotation bool `json:"fromSymbolAnnotation,omitempty"`

	// GaiaId: The gaia id for the entity (person or plus page).
	GaiaId uint64 `json:"gaiaId,omitempty,string"`

	GroundingSignals *KnowledgeAnswersIntentQueryGroundingSignals `json:"groundingSignals,omitempty"`

	// IsAUngroundedTypeOf: If the argument is entity, the ungrounded type
	// the entity is. For example, the entity argument is /m/0p83l
	// (Jasmine), the value of this field should be "Plant" if it is
	// present.
	IsAUngroundedTypeOf string `json:"isAUngroundedTypeOf,omitempty"`

	// IsDefaultValue: If true, the value of the argument is populated with
	// the default value specified by the system if the value can't be
	// inferred from the input query. In IntentConfig case, the default
	// value is specified by using IntentConfig.slot.default_value.
	IsDefaultValue bool `json:"isDefaultValue,omitempty"`

	// IsEnum: Set when the argument has an enum value - a
	// normalized_string_type from the intent catalog.
	IsEnum bool `json:"isEnum,omitempty"`

	// IsEvalDataHeuristic: Set when the eval_data was not derived at
	// parsing time, but heuristically determined by matching the
	// ArgumentValue to an annotation/query fragment.
	IsEvalDataHeuristic bool `json:"isEvalDataHeuristic,omitempty"`

	// IsGenieAnnotation: Whether this annotation was propagated as part of
	// a Genie rewrite (go/genie-aqua).
	IsGenieAnnotation bool `json:"isGenieAnnotation,omitempty"`

	// IsIntentgenAnnotation: Whether this argument was annotated by
	// Intentgen QUIK model (go/intentgen-quik)
	IsIntentgenAnnotation bool `json:"isIntentgenAnnotation,omitempty"`

	// IsNimbleAnnotation: Whether this argument was annotated by nimble
	// (go/nimble-annotator)
	IsNimbleAnnotation bool `json:"isNimbleAnnotation,omitempty"`

	// Location: Entity location information (latitude/longitude) from
	// freebase.
	Location *GeostorePointProto `json:"location,omitempty"`

	// LocationMarkersSignals: The usual semantic role associated with the
	// signal from lightweight tokens attached to this argument span.
	LocationMarkersSignals *KnowledgeAnswersIntentQueryLocationMarkersSignals `json:"locationMarkersSignals,omitempty"`

	// MediaEntitySignals: Signals about the media entity for this argument.
	MediaEntitySignals *KnowledgeAnswersIntentQueryMediaEntitySignals `json:"mediaEntitySignals,omitempty"`

	// MergedImpliedEntity: List of QRef implied entities merged into this
	// entity during parsing. Clients should not rely on the order, as it is
	// derivation-dependent.
	MergedImpliedEntity []*KnowledgeAnswersIntentQueryImpliedEntity `json:"mergedImpliedEntity,omitempty"`

	// MidEquivalentToCollection: For collection arguments, it is useful to
	// save what was the original mid that qref annotated. For example, if
	// the collection is /collection/films, we'll have the mid for /en/film
	// here (/m/02vxn).
	MidEquivalentToCollection string `json:"midEquivalentToCollection,omitempty"`

	// MultipleHorizontalListSelectionMatches: Whether there were multiple
	// equally good matches from horizontal_list_selection.
	MultipleHorizontalListSelectionMatches bool `json:"multipleHorizontalListSelectionMatches,omitempty"`

	// MuninSignals: Signals derived from Munin Function call annotations.
	MuninSignals *KnowledgeAnswersIntentQueryMuninSignals `json:"muninSignals,omitempty"`

	// OnDeviceAnnotationSignals: Additional signals for on-device
	// annotations.
	OnDeviceAnnotationSignals *KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals `json:"onDeviceAnnotationSignals,omitempty"`

	// OysterId: The oyster feature id. NOTE: As of Mar 2017, the cell ID
	// field of the feature ID might not be set. See
	// http://b/35447230#comment10
	OysterId *GeostoreFeatureIdProto `json:"oysterId,omitempty"`

	// ParsedDueToExperiment: Experiment ID for experiments that were used
	// to parse this FunctionCall. Empty indicates no experiments used.
	ParsedDueToExperiment []string `json:"parsedDueToExperiment,omitempty"`

	// PersonalEntity: Personal entities are compound entities made up of
	// entities and their attributes, where the entities can be compound
	// too. E.g., "my father's mother" can have a summary node annotation of
	// "Mother(Father(Myself))"
	PersonalEntity []*KnowledgeAnswersIntentQueryPersonalEntity `json:"personalEntity,omitempty"`

	// Provenance: Information about where the value of this argument came
	// from. For example, it could have been explicitly provided in the
	// query, pulled in from the previous state, or pulled from attentional
	// entities.
	Provenance []*KnowledgeAnswersIntentQueryArgumentProvenance `json:"provenance,omitempty"`

	// QrefConfidenceScore: The QRef confidence score for an entity
	// argument.
	QrefConfidenceScore float64 `json:"qrefConfidenceScore,omitempty"`

	// QrefInterpretationIndex: The index of the QueryJoin interpretation
	// from which this annotation is taken. We copy over the value given by
	// nlp.semantic_parsing.annotators.QrefAnnotator. The value will be "-1"
	// if the annotation is coming from low confidence Qref annotations.
	// NOTE - this is generated from as QRef's interetation_number.
	QrefInterpretationIndex int64 `json:"qrefInterpretationIndex,omitempty"`

	// RawQueryText: A copy of the span of canonical (raw) parser input text
	// corresponding to this annotation.
	RawQueryText string `json:"rawQueryText,omitempty"`

	// RelatedEntity: List of entities that are semantically related to the
	// argument as well as details of the relationship.
	RelatedEntity []*NlpSemanticParsingRelatedEntity `json:"relatedEntity,omitempty"`

	// RelatednessSignals: Relatedness Matrix signals about this argument,
	// e.g., query_popularity.
	RelatednessSignals *KnowledgeAnswersIntentQueryRelatednessSignals `json:"relatednessSignals,omitempty"`

	// ResolvedFromContext: Whether this argument was resolved through
	// context from a previous query. Examples: obama -> "he" is resolved
	// from the Obama entity starbucks -> Q2 is resolved from the list of
	// shops
	ResolvedFromContext bool `json:"resolvedFromContext,omitempty"`

	// ResolvedFromPronoun: Whether this argument was resolved from a
	// pronoun mention in the query. Eg: [how old was obama when *he* became
	// president]
	ResolvedFromPronoun bool `json:"resolvedFromPronoun,omitempty"`

	// ResultSupport: The list of result supports for this Argument.
	ResultSupport []*UniversalsearchNewPackerKnowledgeResultSupport `json:"resultSupport,omitempty"`

	// SaftSignals: Signals derived from SAFT.
	SaftSignals *KnowledgeAnswersIntentQuerySaftSignals `json:"saftSignals,omitempty"`

	// ShoppingIds: Equivalent shopping ids for the argument.
	ShoppingIds *KnowledgeAnswersIntentQueryShoppingIds `json:"shoppingIds,omitempty"`

	// SupportTransferRules: go/stbr supportthis is an
	SupportTransferRules []*LogsSemanticInterpretationIntentQuerySupportTransferRule `json:"supportTransferRules,omitempty"`

	// SupportTransferSignals: Support Transfer signals for this entity.
	SupportTransferSignals *KnowledgeAnswersIntentQuerySupportTransferSignals `json:"supportTransferSignals,omitempty"`

	// UngroundedValueType: Type of ungrounded argument. It is exclusively
	// used when simple_value.ungrounded_value is populated.
	UngroundedValueType *KnowledgeAnswersValueType `json:"ungroundedValueType,omitempty"`

	// WebrefEntitiesIndex: Webref entity index for this argument, necessary
	// for interpreting the relationship structure, and the list to index
	// into. Specifically we need this to understand qref implications since
	// they edges are represented with entity indexes.
	WebrefEntitiesIndex int64 `json:"webrefEntitiesIndex,omitempty"`

	// WebrefListSource: This represents which list entities index refers
	// to.
	//
	// Possible values:
	//   "UNSET"
	//   "INTERPRETATION_LIST"
	//   "ANNOTATION_LIST"
	//   "CANDIDATE_LIST"
	WebrefListSource string `json:"webrefListSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddedByCloseAnswers")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddedByCloseAnswers") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryArgumentSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryArgumentSignals
	var s1 struct {
		QrefConfidenceScore gensupport.JSONFloat64 `json:"qrefConfidenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QrefConfidenceScore = float64(s1.QrefConfidenceScore)
	return nil
}

// KnowledgeAnswersIntentQueryArgumentValue: A message representing the
// value of an argument. All types in the "value" oneof should have a
// corresponding field in the ValueType or OpaqueType protos defined in
// knowledge/answers/config/value.proto. This is specified by annotating
// each ArgumentValue type with options of the form (value_type_name) =
// A unit test ensure that this field is set and is valid for all types
// in ArgumentValue. A small number of special cases (such as funcall
// and simple_value) are allowed to omit the annotation. See
// intent_query_proto_test.cc for details. Note: If you are trying to
// add a new OpaqueType, stop; OpaqueType is deprecated, refer to
// go/opaque_type for details. If you think this is the only way to
// implement your feature, attend an office hours (go/meaning-help) and
// discuss with the MRF team. Next Id: 41
type KnowledgeAnswersIntentQueryArgumentValue struct {
	// AogSlot: Custom type used by actions-on-google in-dialog queries. See
	// go/3p-custom-intents-wrt-meaning-catalog
	AogSlot *NlpSemanticParsingProtoActionsOnGoogleAogSlot `json:"aogSlot,omitempty"`

	// AppAnnotation: Device actions custom types.
	AppAnnotation *NlpSemanticParsingAppAnnotation `json:"appAnnotation,omitempty"`

	Audio *NlpSemanticParsingModelsMediaAudio `json:"audio,omitempty"`

	// CalendarEvent: Calendar custom types. Details in go/cal-ref.
	CalendarEvent *AssistantApiCoreTypesCalendarEvent `json:"calendarEvent,omitempty"`

	// CalendarEventWrapper: Details in
	// go/multi-account-event-representation.
	CalendarEventWrapper *AssistantApiCoreTypesCalendarEventWrapper `json:"calendarEventWrapper,omitempty"`

	CalendarReference *QualityQrewriteCalendarReference `json:"calendarReference,omitempty"`

	// ComplexQueriesRewrite: Custom type used by Complex Queries. This is
	// populated based on the output of the RPC to the Complex Queries Boq
	// node.
	ComplexQueriesRewrite *QualityGenieComplexQueriesComplexQueriesOutputRewrite `json:"complexQueriesRewrite,omitempty"`

	// ComponentReference: Component reference between WebrefEntity and
	// Mention. This should only ever be set in argument values in
	// WebrefEntities (e.g. in a QueryJoin). The processing expectation is
	// that the value including the component reference is discarded
	// altogether and replaced by reference target. Use
	// QueryJoinToMeaningStructConverter to perform the replacement. An
	// example value parallel to this reference may exist, but it's meant
	// purely for human consumption and should not be used.
	ComponentReference *RepositoryWebrefComponentReference `json:"componentReference,omitempty"`

	// Coreference: A value that is a coreference or variable binding to
	// some other part of the tree. See go/mrf-variables.
	Coreference *KnowledgeAnswersIntentQueryCoreference `json:"coreference,omitempty"`

	// DateTime: *** Opaque types that are likely to become fully supported:
	// *** Represents: date and time expressions. Annotated by: datetime
	// subgrammar.
	DateTime *NlpSemanticParsingDatetimeDateTime `json:"dateTime,omitempty"`

	// Device: Media custom types. For example use, see
	// go/valyrian-media-dd.
	Device *NlpSemanticParsingModelsMediaCastDeviceAnnotation `json:"device,omitempty"`

	// DeviceId: DeviceId custom types. Details in go/reply-broadcast
	DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"`

	// DeviceUserIdentity: DeviceUserIdentity custom types. Details in
	// go/reply-broadcast
	DeviceUserIdentity *AssistantApiCoreTypesDeviceUserIdentity `json:"deviceUserIdentity,omitempty"`

	// Duration: Represents: duration expressions (e.g. 5 minutes).
	// Annotated by: datetime subgrammar.
	Duration *NlpSemanticParsingDatetimeDuration `json:"duration,omitempty"`

	// Funcall: *** Fully supported types *** An argument can also be a
	// function call.
	Funcall *KnowledgeAnswersIntentQueryFunctionCall `json:"funcall,omitempty"`

	// HomeAutomationDevice: HomeAutomation custom types. Details in
	// go/smarthome_with_monastery.
	HomeAutomationDevice *AssistantVerticalsHomeautomationProtoHomeAutomationDevice `json:"homeAutomationDevice,omitempty"`

	// Location: Represents: location expressions. Annotated by: location
	// subgrammar.
	Location *NlpSemanticParsingLocalLocation `json:"location,omitempty"`

	Media *NlpSemanticParsingModelsMediaMediaAnnotation `json:"media,omitempty"`

	// MessageNotification: Custom type used by tap-to-read for embedding a
	// MessageNotification message in a GetMessageContent intent.
	MessageNotification *AssistantApiCoreTypesMessageNotification `json:"messageNotification,omitempty"`

	// Money: Represents: money expressions (e.g. 25$). Annotated by: number
	// subgrammar.
	Money *NlpSemanticParsingModelsMoneyMoney `json:"money,omitempty"`

	// NarrativeNewsProvider: Custom type used by NarrativeNews. This is
	// populated by the narrative news provider annotator, and it differs
	// semantically from a mid for a news brand in that it doesn't refer to
	// the field of widely known news brands but rather but to the specific
	// audio news RSS feeds that the narrative news feature serves. (There
	// is of course substantial overlap between those two concepts)
	NarrativeNewsProvider *NlpSemanticParsingModelsNarrativeNewsNewsProvider `json:"narrativeNewsProvider,omitempty"`

	// Number: Represents: number expressions. Annotated by: number
	// subgrammar.
	Number *NlpSemanticParsingNumberNumber `json:"number,omitempty"`

	// OnDevice: OnDevice custom types. Device on which an intent should be
	// fulfilled. Differs semantically from device fields used by Media and
	// HomeAutomation: this is annotated by the on_device subgrammar, and
	// will not output any metadata beyond what the subgrammar outputs. See
	// go/on_device_induction_quality.
	OnDevice *NlpSemanticParsingModelsOnDevice `json:"onDevice,omitempty"`

	// Person: Represents: structured person names, including common names
	// and personal contacts. Annotated by: go/person-subgrammar.
	Person *NlpSemanticParsingModelsPersonPerson `json:"person,omitempty"`

	// PersonalIntelligenceEntity: Entity parsed from manual grammar
	// interpretation in the Personal Intelligence domain.
	PersonalIntelligenceEntity *NlpSemanticParsingPersonalIntelligenceEntity `json:"personalIntelligenceEntity,omitempty"`

	ProductivityListItem *AssistantProductivityListItem `json:"productivityListItem,omitempty"`

	// Recurrence: Represents: intervals of recurrence for repeated tasks.
	// See go/recurrence-subgrammar Annotated by: recurrence subgrammar.
	Recurrence *NlpSemanticParsingModelsRecurrence `json:"recurrence,omitempty"`

	Reminder *QualityActionsReminder `json:"reminder,omitempty"`

	// SensitiveValue: Sensitive value, see go/sensitive-intents and
	// go/a4w-multi-turn-dialog
	SensitiveValue *KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard `json:"sensitiveValue,omitempty"`

	// Sensitivity: Argument level query sensitivities. 1) Statically
	// defined Sensitivity is copied from IntentSlot at serving time so it
	// can be propagated along with FunctionCall to places where the Intent
	// Catalog is not available. See go/sensitive-intents for details. 2)
	// For the same reason, contextual sensitivites (eg., from
	// AttentionalEntity mentions) are populated here too. See
	// go/tagging-sensitive-ae for details.
	Sensitivity []*KnowledgeAnswersSensitivitySensitivity `json:"sensitivity,omitempty"`

	ShoppingMerchant *NlpSemanticParsingModelsShoppingAssistantMerchant `json:"shoppingMerchant,omitempty"`

	// ShoppingOffer: Shopping custom types. See go/sopa-attentional.
	ShoppingOffer *NlpSemanticParsingModelsShoppingAssistantOffer `json:"shoppingOffer,omitempty"`

	ShoppingProduct *NlpSemanticParsingModelsShoppingAssistantProduct `json:"shoppingProduct,omitempty"`

	ShoppingProductExpression *NlpSemanticParsingModelsShoppingAssistantProductExpression `json:"shoppingProductExpression,omitempty"`

	ShoppingStore *NlpSemanticParsingModelsShoppingAssistantStore `json:"shoppingStore,omitempty"`

	// SimpleValue: When literal is a datetime, it's really just an ISO 8601
	// datetime string. This case will eventually be replaced with the
	// date_time field, which is more expressive and can also represent
	// recurrences, ranges, etc. Likewise, simple_value will replace the
	// other types of simple values that literal is currently being used to
	// represent.
	SimpleValue *KnowledgeAnswersIntentQuerySimpleValue `json:"simpleValue,omitempty"`

	// Timer: Productivity custom types. Team: go/productivity-assistance.
	Timer *QualityActionsTimer `json:"timer,omitempty"`

	// Timezone: Represents: timezone expressions (e.g. Eastern Daylight
	// Time). Annotated by: datetime subgrammar.
	Timezone *NlpSemanticParsingDatetimeTimeZone `json:"timezone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AogSlot") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AogSlot") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryArgumentValue) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryArgumentValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryAttributeSignal: Contains an attribute id
// and it's completion score.
type KnowledgeAnswersIntentQueryAttributeSignal struct {
	AttributeId string `json:"attributeId,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryAttributeSignal) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryAttributeSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryAttributeSignal) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryAttributeSignal
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// KnowledgeAnswersIntentQueryCollectionMembership: A message
// representing the collection membership of an entity.
type KnowledgeAnswersIntentQueryCollectionMembership struct {
	// CollectionId: Human readable id of the collection.
	CollectionId string `json:"collectionId,omitempty"`

	// CollectionMid: Identifier of the collection, usually a MID (/m/xyz or
	// /g/zyw).
	CollectionMid string `json:"collectionMid,omitempty"`

	// CollectionScore: The collection score for a entity.
	CollectionScore float64 `json:"collectionScore,omitempty"`

	// Score: Different types of scores for the collection. Each score type
	// has at most one score.
	Score []*KnowledgeAnswersIntentQueryCollectionScore `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CollectionId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CollectionId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryCollectionMembership) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryCollectionMembership
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryCollectionMembership) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryCollectionMembership
	var s1 struct {
		CollectionScore gensupport.JSONFloat64 `json:"collectionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CollectionScore = float64(s1.CollectionScore)
	return nil
}

type KnowledgeAnswersIntentQueryCollectionScore struct {
	// Possible values:
	//   "UNKNOWN"
	//   "GENERAL" - The collection score is for general use. It is not
	// context based.
	ScoreType string `json:"scoreType,omitempty"`

	ScoreValue float64 `json:"scoreValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ScoreType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ScoreType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryCollectionScore) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryCollectionScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryCollectionScore) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryCollectionScore
	var s1 struct {
		ScoreValue gensupport.JSONFloat64 `json:"scoreValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ScoreValue = float64(s1.ScoreValue)
	return nil
}

// KnowledgeAnswersIntentQueryCoreference: A message representing a
// coreferenced value defined elsewhere in the meaning struct.
type KnowledgeAnswersIntentQueryCoreference struct {
	// ArgPath: A coreference is represented by an argument path starting
	// from the root of the whole tree to the referenced value.
	ArgPath *KnowledgeAnswersIntentQueryArgPath `json:"argPath,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArgPath") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArgPath") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryCoreference) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryCoreference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals
// : Signals associated with CustomVehicleActionArgumentAnnotator
// annotations.
type KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals struct {
	// AdditionalAnnotationData: Stores any additional data which is
	// required only at the intent fulfilment phase.
	AdditionalAnnotationData map[string]string `json:"additionalAnnotationData,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalAnnotationData") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalAnnotationData")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryFreetextAnnotationSignals: Signals
// associated with FreetextAnnotator annotations. Empty. The signal
// being present is enough for the conformance checking library to be
// able to check.
type KnowledgeAnswersIntentQueryFreetextAnnotationSignals struct {
}

// KnowledgeAnswersIntentQueryFunctionCall: A message representing the
// function call of an answers intent query. Next ID: 19 Important: If
// you add new fields that do not reflect signals data, but actual
// semantics of the FunctionCall, please also update
// CreateFuncallCopyWithoutSignals and
// CreateFuncallCopyWithArgumentSignals in function_call_utils.
// LINT.IfChange
type KnowledgeAnswersIntentQueryFunctionCall struct {
	// Argument: A list of arguments of this function call.
	Argument []*KnowledgeAnswersIntentQueryArgument `json:"argument,omitempty"`

	// CatalogVersion: The corresponding meaning catalog version that was
	// used to generate this FunctionCall.
	CatalogVersion int64 `json:"catalogVersion,omitempty,string"`

	// ContextualSensitivity: Contextual Sensitivity
	// (go/contextual-sensitivity) metadata indicating that a policy- or
	// privacy- sensitive conversation context (previous queries, rewritten
	// user queries, and previous system responses, like attentional
	// entities) is used to generate this FunctionCall. This needs
	// propagation (1) from Interp to DialogIntentState (DIS) (see
	// b/148479837) and (2) from QRewrite/QUS down to Assistant Server's
	// memory finalizer. One can use
	// knowledge/answers/sensitivity/sensitivity_reader.h to parse this
	// proto. NOTE(b/149091449): This is part of the migration of contextual
	// sensitivity protos from Interp sensitivity extension.
	// (nlp::semantic_parsing::sensitivity) to this proto field. See the bug
	// to track the migration progress and for more details.
	ContextualSensitivity []*KnowledgeAnswersSensitivitySensitivity `json:"contextualSensitivity,omitempty"`

	// EnabledRemodelings: Contains data about which remodelings are being
	// used for this funcall. For more information see
	// go/meaning-remodeling-framework.
	EnabledRemodelings *NlpMeaningMeaningRemodelingControl `json:"enabledRemodelings,omitempty"`

	// IgnoredTokens: A list of token lists that were ignored during parsing
	// because they are known context phrases for this interpretation. For
	// example, for query [tell me how tall height of Obama really],
	// assuming "tell me", "tall", "of", "really" are explained and thus
	// ignored, with corresponding prior 0.9, 0.8, 0.7, 0.6, following
	// ignored tokens will be populated: { ignored_tokens { token { ngram:
	// "tell me", prior: 0.9} score: 0.9 } ignored_tokens { token { ngram:
	// "tall", prior: 0.8} token { ngram: "of", prior: 0.7} score: 0.56 //
	// currently score = prior1 * prior2 * ... * prior N } ignored_tokens {
	// token { ngram: "really", prior: 0.6} score: 0.6 } } These tokens can
	// serve two purpose: 1) debug info to show why an interpretation is
	// generated; 2) carry the signals for downstream usage. Note: This
	// field is under active development, and significant changes could
	// happen. Please contact porky-pig@ if you want to use it.
	IgnoredTokens []*KnowledgeAnswersIntentQueryTokens `json:"ignoredTokens,omitempty"`

	// Key: The primary key for this FunctionCall. Note: This is still under
	// development and not available for general use. Contact
	// meaning-platform-eng@ for questions.
	Key *KnowledgeAnswersMeaningSchemaKey `json:"key,omitempty"`

	// Marker: The marker specifies the purpose of this meaning struct /
	// function call: Is it asking a question, and if yes, for which
	// slot(s)? Is it a command, statement, etc? This corresponds to a (very
	// coarse) notion of dialog acts. In the absence of this field, it will
	// be inferred using the following algorithm (subject to marker
	// applicability rules specified in marker.proto, see also
	// go/requested-slots): 1) Use the underlying Meaning Schema's default
	// marker, if applicable. 2) Assume that the Meaning Struct is polar or
	// a statement. The presence of a marker will affect the value type of
	// this function call.
	Marker *KnowledgeAnswersMarker `json:"marker,omitempty"`

	// Modifiers: A flattened representation of all intent modifiers that
	// apply to this function call.
	Modifiers *KnowledgeAnswersIntentModifiers `json:"modifiers,omitempty"`

	// Name: Name of this function call. The name must be present. If it is
	// omitted, the FunctionCall is not well-formed.
	Name string `json:"name,omitempty"`

	// Sensitivity: Intent level query sensitivity (go/sensitive-intents).
	// This metadata comes directly from Intent Catalog, indicating a
	// single-shot query sensitivity without putting context into
	// considerations. Therefore, this requires a one-to-one match with each
	// intent registered in Intent Catalog.
	Sensitivity *KnowledgeAnswersSensitivitySensitivity `json:"sensitivity,omitempty"`

	// Signals: Signals at the function call level
	Signals *KnowledgeAnswersIntentQueryFunctionCallSignals `json:"signals,omitempty"`

	// UnexplainedTokens: A list of tokens that were ignored during parsing
	// that cannot be explained by context phrases.
	UnexplainedTokens []*KnowledgeAnswersIntentQueryTokens `json:"unexplainedTokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Argument") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Argument") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryFunctionCall) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryFunctionCall
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryFunctionCallSignals: Next ID: 35
type KnowledgeAnswersIntentQueryFunctionCallSignals struct {
	// ArgumentComposingMid: The argument mid that was used to compose the
	// entity for a concept interpretation, along with the
	// intent_composing_mid (one of the intent's equivalent MIDs).
	ArgumentComposingMid string `json:"argumentComposingMid,omitempty"`

	// AttributeSignals: The attributes from which this intent was generated
	// during execution of AttributeSignalsProvider. |attribute_signals| is
	// only populated for single entity funcalls.
	AttributeSignals []*KnowledgeAnswersIntentQueryAttributeSignal `json:"attributeSignals,omitempty"`

	// ConceptEntityMid: An entity that represents the concept of an
	// entity-attribute intent by being composed of an intent equivalent MID
	// and the argument MID.
	ConceptEntityMid string `json:"conceptEntityMid,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "LOW"
	//   "MEDIUM"
	//   "HIGH"
	//   "ALWAYS_TRIGGER"
	ConfidenceLevel string `json:"confidenceLevel,omitempty"`

	// DedupedFuncalls: FunctionCall-s that this funcall was deduped
	// against.
	DedupedFuncalls []*KnowledgeAnswersIntentQueryFunctionCall `json:"dedupedFuncalls,omitempty"`

	// ExpressionStatus: Status indicating whether the user has completely
	// expressed their intended semantics. (See
	// go/streaming-nlu-fulfilment-protocol-v1 for more info. )
	ExpressionStatus *NlpSemanticParsingExpressionStatus `json:"expressionStatus,omitempty"`

	// Possible values:
	//   "NONE_FREEFOLKS_TRIGGER"
	//   "LOW_CONF_FREEFOLKS_TRIGGER"
	//   "HIGH_CONF_FREEFOLKS_TRIGGER"
	FreefolksTrigger string `json:"freefolksTrigger,omitempty"`

	// GroundingSignals: Grounding signals for ranking/filtering, as well as
	// whether to use Grounding Box and PGRP in AnswersRewriter. See comment
	// on GroundingSignals for details.
	GroundingSignals *KnowledgeAnswersIntentQueryGroundingSignals `json:"groundingSignals,omitempty"`

	// HighConfidence: Used to indicate that an interpretation is high
	// confidence and triggers different voting behavior. This bit should
	// only be set for verticals. DEPRECATED. Use confidence_level instead.
	HighConfidence bool `json:"highConfidence,omitempty"`

	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "ORBIT"
	//   "LEXICON"
	IntentAnnotationSources []string `json:"intentAnnotationSources,omitempty"`

	// IntentComposingMid: An intent_relevant_mid that was used to compose
	// the entity for a concept interpretation, along with
	// argument_composing_mid (the question's argument MID).
	IntentComposingMid string `json:"intentComposingMid,omitempty"`

	// IntentProvenance: Information about where the value of this intent
	// came from. For example, it could have been explicitly provided in the
	// query, pulled in from the previous dialog state, or pulled from
	// previous queries.
	IntentProvenance []*KnowledgeAnswersIntentQueryArgumentProvenance `json:"intentProvenance,omitempty"`

	// IntentRelevantMid: KG mids of entities that represent this intent.
	// These entities are seen as equivalent to the Intent definition, and
	// are specified in the Intent Catalog as relevant_mid.
	IntentRelevantMid []string `json:"intentRelevantMid,omitempty"`

	// IsCloseInterpretation: Whether the interpretation was generated using
	// similar queries in POSTREF. In case POSTREF_AQUA generated the same
	// entity-attribute interpretation, this is still set to true.
	IsCloseInterpretation bool `json:"isCloseInterpretation,omitempty"`

	// IsDisambiguationCardIntent: Denotes whether this is an intent being
	// fulfilled from user tapping a disambiguation card. More info in
	// go/cardea-deck.
	IsDisambiguationCardIntent bool `json:"isDisambiguationCardIntent,omitempty"`

	// IsDisambiguationIntent: Denotes whether this is a sub-intent of an
	// ambiguous SystemUncertain intent go/intent-disambiguation.
	IsDisambiguationIntent bool `json:"isDisambiguationIntent,omitempty"`

	// IsNeuralCategoricalInterpretation: Whether the interpretation was
	// generated from the neural categorical parser.
	IsNeuralCategoricalInterpretation bool `json:"isNeuralCategoricalInterpretation,omitempty"`

	// IsUiCompositionIntent: Denotes this is a sub-intent used for
	// composing an Assistant UI response. The assistant dialog should
	// output ui_composition_shelf in the SystemResponse if it can fulfill
	// the intent. More info in go/davinci-design and
	// go/davinci-di-fulfillment
	IsUiCompositionIntent bool `json:"isUiCompositionIntent,omitempty"`

	// LocalSignals: Information about Local results to be used in the
	// Packer for Local Categorical derived intent deduplication and
	// conformance.
	LocalSignals *KnowledgeAnswersIntentQueryLocalSignals `json:"localSignals,omitempty"`

	// OsrpJourneyTag: A tag to annotate user's journey (e.g.,
	// JourneyFollowCampusUpdates). This will be used for Journey OSRP demo
	// (go/josrp-sprint). !!NOTE!! This field is reserved for Journey OSRP
	// demo, and will be deprecated shortly after its completion. DO NOT
	// USE.
	OsrpJourneyTag string `json:"osrpJourneyTag,omitempty"`

	// ParsedDueToExperiment: Experiments that caused this FunctionCall to
	// parse, without which this would not have parsed.
	ParsedDueToExperiment []string `json:"parsedDueToExperiment,omitempty"`

	// ParsingSignals: Parsing signals for ranking/filtering.
	ParsingSignals *KnowledgeAnswersIntentQueryParsingSignals `json:"parsingSignals,omitempty"`

	// PrefulfillmentRankingScore: Identifies a score, determined before
	// fulfillment but after grounding. Written by the Prefulfillment
	// Ranker, and used as a signal for ACE Ranking.
	PrefulfillmentRankingScore float64 `json:"prefulfillmentRankingScore,omitempty"`

	// PrefulfillmentSignals: All the input signals to the Prefulfillment
	// Ranker.
	PrefulfillmentSignals *AssistantPrefulfillmentRankerPrefulfillmentSignals `json:"prefulfillmentSignals,omitempty"`

	// ReferentialResolution: Describes how this intent was resolved via
	// external data (either elsewhere in the query, or in a previous
	// query).
	ReferentialResolution *KnowledgeAnswersDialogReferentialResolution `json:"referentialResolution,omitempty"`

	// RefxSummaryNodeId: The id of the summary node if this funcall
	// represents an mdvc interpretation
	RefxSummaryNodeId string `json:"refxSummaryNodeId,omitempty"`

	// ResultSupport: The list of result supports for this FunctionCall.
	ResultSupport []*UniversalsearchNewPackerKnowledgeResultSupport `json:"resultSupport,omitempty"`

	// Possible values:
	//   "UNKNOWN_ROLE"
	//   "QUERY_INTERPRETATION" - MRF expression is from a QI, and
	// represents the user's primary intent.
	//   "DERIVED_INTENT" - MRF expression is a generated DI.
	Role string `json:"role,omitempty"`

	// SelectedByPrefulfillmentRanking: Identifies whether the
	// Prefulfillment Ranker selected this intent for emission. This is
	// needed temporarily while migrating intent emitters from ACE to
	// QUS/PFR. See go/pfr-intent-emitter for more info
	SelectedByPrefulfillmentRanking bool `json:"selectedByPrefulfillmentRanking,omitempty"`

	// ShoppingIds: Equivalent shopping ids for the function call.
	ShoppingIds *KnowledgeAnswersIntentQueryShoppingIds `json:"shoppingIds,omitempty"`

	// SignalsFallbackIntents: Additional intents to be used for intent
	// scoring. This field must only be populated when we cannot find a
	// single unified intent. For example, when we compute signals for a
	// LocalEntities function call, this means we could not find a unified
	// intent to capture all the local results. In this case, we add a
	// fallback intent for each local result (e.g. GeoSchool, GeoRestaurant,
	// and GeoBank if those are the results we show).
	SignalsFallbackIntents []*KnowledgeAnswersIntentQuerySignalComputationFallbackIntent `json:"signalsFallbackIntents,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ArgumentComposingMid") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArgumentComposingMid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryFunctionCallSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryFunctionCallSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryFunctionCallSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryFunctionCallSignals
	var s1 struct {
		PrefulfillmentRankingScore gensupport.JSONFloat64 `json:"prefulfillmentRankingScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PrefulfillmentRankingScore = float64(s1.PrefulfillmentRankingScore)
	return nil
}

// KnowledgeAnswersIntentQueryGroundingSignals: Grounding-related
// signals to be propagated down stream. Next ID: 12
type KnowledgeAnswersIntentQueryGroundingSignals struct {
	// AddedByGrounding: True if the argument was added during grounding.
	// This signal is intended to be used with ArgumentSignals. Note that
	// the added argument's value must be a FunctionCall that only contains
	// resolutions, i.e. grounding cannot add/modify/delete any ungrounded
	// values.
	AddedByGrounding bool `json:"addedByGrounding,omitempty"`

	// GroundabilityScore: Score indicating how grounded the intent is,
	// populated by the Grounding Box, used by the pre-fulfillment ranker,
	// see http://go/prefulfillment-ranker.
	GroundabilityScore float64 `json:"groundabilityScore,omitempty"`

	// NumConstraints: Sum of the number of constraints used by the
	// Grounding Box to ground each variable.
	NumConstraints float64 `json:"numConstraints,omitempty"`

	// NumConstraintsSatisfied: Sum of the number of constraints satisfied
	// for each variable. Depending on the match score for a constraint,
	// this number can be fractional and is in the range [0,
	// num_constraints].
	NumConstraintsSatisfied float64 `json:"numConstraintsSatisfied,omitempty"`

	// NumGroundableArgs: Number of groundable arguments in the parsed
	// intent.
	NumGroundableArgs float64 `json:"numGroundableArgs,omitempty"`

	// NumGroundedArgs: Number of arguments that got actually grounded.
	NumGroundedArgs float64 `json:"numGroundedArgs,omitempty"`

	// NumVariables: Number of arguments, possibly nested, that the
	// Grounding Box tried to ground.
	NumVariables float64 `json:"numVariables,omitempty"`

	// NumVariablesGrounded: Number of arguments, possibly nested, that the
	// Grounding Box was able to ground. This includes ambiguously grounded
	// arguments.
	NumVariablesGrounded float64 `json:"numVariablesGrounded,omitempty"`

	// PgrpOutputFormat: PGRP outputs PROD_INTENT_FACTORY intent format by
	// default. See go/intent-conversion-locations-in-sage. Experimental
	// flags can change or make PGRP output additional intents formatted for
	// PORTMON_FULFILLMENT (e.g. with RDs). This is used by the PortMon/ARM
	// dark launch (go/arm-dark-launch-infra). Longer term, this will be
	// replaced by DGS system-internal transformations (go/if-dgs).
	//
	// Possible values:
	//   "INTENT_FORMAT_UNSPECIFIED"
	//   "PROD_INTENT_FACTORY"
	//   "PORTMON_FULFILLMENT"
	PgrpOutputFormat string `json:"pgrpOutputFormat,omitempty"`

	// UsesGroundingBox: If true, then GroundingBox and PGRP are used in
	// AnswersRewriter to process the intent. Other post-processing steps,
	// including IGDP, are adjusted accordingly. Note this will be removed
	// once GroundingBox is fully launched and all prod traffic goes through
	// it. Before that happens, each IG that needs to go through GB and PGRP
	// (post GB ranking pruning) will need to explicitly set this field to
	// true. See http://go/gb-impl and http://go/gb-post-ranker-pruner for
	// details.
	UsesGroundingBox bool `json:"usesGroundingBox,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddedByGrounding") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddedByGrounding") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryGroundingSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryGroundingSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryGroundingSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryGroundingSignals
	var s1 struct {
		GroundabilityScore      gensupport.JSONFloat64 `json:"groundabilityScore"`
		NumConstraints          gensupport.JSONFloat64 `json:"numConstraints"`
		NumConstraintsSatisfied gensupport.JSONFloat64 `json:"numConstraintsSatisfied"`
		NumGroundableArgs       gensupport.JSONFloat64 `json:"numGroundableArgs"`
		NumGroundedArgs         gensupport.JSONFloat64 `json:"numGroundedArgs"`
		NumVariables            gensupport.JSONFloat64 `json:"numVariables"`
		NumVariablesGrounded    gensupport.JSONFloat64 `json:"numVariablesGrounded"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GroundabilityScore = float64(s1.GroundabilityScore)
	s.NumConstraints = float64(s1.NumConstraints)
	s.NumConstraintsSatisfied = float64(s1.NumConstraintsSatisfied)
	s.NumGroundableArgs = float64(s1.NumGroundableArgs)
	s.NumGroundedArgs = float64(s1.NumGroundedArgs)
	s.NumVariables = float64(s1.NumVariables)
	s.NumVariablesGrounded = float64(s1.NumVariablesGrounded)
	return nil
}

// KnowledgeAnswersIntentQueryIdentifier: Identifiers are references to
// a specific entity of a specified type, such as a TIMER_ID XXX. For
// more backround and uses see go/grounding-common-ids.
type KnowledgeAnswersIntentQueryIdentifier struct {
	Id string `json:"id,omitempty"`

	// Possible values:
	//   "UNKNOWN_ID_TYPE"
	//   "ALARM"
	//   "CALENDAR"
	//   "KG"
	//   "LIST"
	//   "NOTE"
	//   "PROVIDER"
	//   "STOPWATCH"
	//   "TIMER"
	//   "DEVICE" - An go/identifier-for-generalized-device generalized
	// device ID
	//   "DEVICE_SETTING" - An identifier type for device settings. Its
	// value is a stringified
	// nlp_semantic_parsing.models.device.DeviceSetting enum plus optionally
	// a field path that points to a specific part of the device setting.
	// Examples: "AIRPLANE_MODE" (a device setting) "BRIGHTNESS_LEVEL" (a
	// device setting) "AIRPLANE_MODE.status" (the "status" field of
	// AIRPLANE_MODE). "BRIGHTNESS_LEVEL.level" (the "level" field of
	// BRIGHTNESS_LEVEL). While the device setting itself is represented by
	// the DeviceSetting enum mentioned above, the names of fields depend on
	// how the setting is modeled, and can vary from implementation to
	// implementation.
	//   "ROOM" - An assistant.context.RoomId aka
	// DeviceId.home_graph_device_id
	//   "STRUCTURE" - An assistant.context.StructureId aka
	// DeviceId.home_graph_device_id
	//   "ZONE" - An identifier for a zone. See: go/zone-gp and
	// go/smarthome-zones
	//   "REMINDER"
	//   "RECIPE"
	//   "PERSON" - Comms specific id types. go/call-object-iff
	//   "COMM_ENDPOINT"
	//   "NEWS"
	//   "MEDIA" - Media specific id types. go/media-gb-data
	//   "CONCEPT" - Concept and relation identifiers
	// (go/discovered-not-designed)
	//   "RELATION"
	//   "ATTENTIONAL_ENTITY"
	//   "AUDIO_MESSAGE_METADATA_ID" - A secondary speech id for Audio
	// Message Metadata go/audio-message-gp.
	//   "BROADCAST" - Broadcast feature identifier
	// go/routines-broadcast-device-gp
	IdType string `json:"idType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryImpliedEntity: Signals for
// $QRefImpliedEntities that are merged into entity arguments during
// parsing.
type KnowledgeAnswersIntentQueryImpliedEntity struct {
	// AnnotatedSpan: A copy of the span of canonical (raw) parser input
	// text corresponding to this annotation. Copied from
	// QRefAnnotation.annotated_span.
	AnnotatedSpan string `json:"annotatedSpan,omitempty"`

	// EvalData: This field is used inside Aqua for evaluation purposes.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsUngroundedValue: TODO (b/143536264): Create a new ImpliedTokens
	// message and remove this. Whether the implied entity is ungrounded
	// value, set to true when the entity doesn't have a KG mid.
	IsUngroundedValue bool `json:"isUngroundedValue,omitempty"`

	// Mid: The KG mid of the implied entity.
	Mid string `json:"mid,omitempty"`

	// QrefConfidenceScore: The QRef confidence (in [0, 1]) of the entity
	// being correctly annotated.
	QrefConfidenceScore float64 `json:"qrefConfidenceScore,omitempty"`

	// ShoppingIds: All ShoppingIds for this implied entity that need to be
	// copied to IntentQuery (FunctionCall) if this implied entity is used
	// in intent generation. See go/iql-shopping-ids for details.
	ShoppingIds *KnowledgeAnswersIntentQueryShoppingIds `json:"shoppingIds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotatedSpan") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotatedSpan") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryImpliedEntity) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryImpliedEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryImpliedEntity) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryImpliedEntity
	var s1 struct {
		QrefConfidenceScore gensupport.JSONFloat64 `json:"qrefConfidenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QrefConfidenceScore = float64(s1.QrefConfidenceScore)
	return nil
}

// KnowledgeAnswersIntentQueryIndexingIQLAttachment: Mustang/Kgraph
// attachment to encode IQL expressions annotated by Webref, Pianno, and
// other applications. This is currently a prototype implementation. The
// attachment is not yet output in production. Please contact simonz@
// for more info. The planned use-cases include: - Pianno page-level
// intents (go/pianno-design). - Compound entity representations
// (go/compounds-in-refx). See go/iql-in-wma for more details about IQL
// attachment and its encoding design. Next available tag: 5
type KnowledgeAnswersIntentQueryIndexingIQLAttachment struct {
	// IqlEncodingVersion: The version of encoder for the IQL FunctionCalls.
	// We bump up the version when, but not limited to, we change how an IQL
	// is converted to a byte array, or the change of byte compression
	// algorithm.
	IqlEncodingVersion int64 `json:"iqlEncodingVersion,omitempty"`

	// IqlFuncalls: A compressed byte array that represents IQL
	// FunctionCalls. A list of IQL FunctionCalls are first encoded as a
	// byte array. The byte array is then compressed. For more details on
	// the encoding, see go/iql-in-wma.
	IqlFuncalls string `json:"iqlFuncalls,omitempty"`

	// PiannoConfidenceScoreE2: The Pianno confidence scores of all intents
	// of the IQL FunctionCalls. For space reasons this is stored as a [0,
	// 100] integer that represents the confidence up to two decimal points
	// (fixed point). Convert it to confidence_score using the following
	// formula: float pianno_confidence_score = pianno_confidence_score_e2 /
	// 100.0f It should have the same number of elements as the IQL
	// expressions after decoding. For non-Pianno top level intents, this
	// score is 0.
	PiannoConfidenceScoreE2 []int64 `json:"piannoConfidenceScoreE2,omitempty"`

	// PiannoIqlBitmap: A bit map indicating if the intents in the IQL
	// FunctionCalls are top level intents for Pianno (go/pianno). This is a
	// repeated field. In the event of more than 32 intents, the first
	// uint32/ represents the 1st to the 32nd intents, and the second uint32
	// represents/ the 33rd to the 64th intents, and so on. Within each
	// uint32, the bits are in reversed order, i.e. the right-most bit of
	// the first uint32 indicating if the first intent in IQL expressions is
	// a top level intent for Pianno. The prevailing (unused) bits of the
	// last uint32 are filled with 0s.
	PiannoIqlBitmap []int64 `json:"piannoIqlBitmap,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IqlEncodingVersion")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IqlEncodingVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryIndexingIQLAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryIndexingIQLAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryLocalResultSignals: A message that stores
// signals relating to a Local result.
type KnowledgeAnswersIntentQueryLocalResultSignals struct {
	// GcidIntent: Geo intents corresponding to the gcids obtained from the
	// Local result.
	GcidIntent []string `json:"gcidIntent,omitempty"`

	// SalientTermSet: Salient terms associated with this Local result based
	// on the result gcids.
	SalientTermSet *QualitySalientTermsSalientTermSet `json:"salientTermSet,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GcidIntent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GcidIntent") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryLocalResultSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryLocalResultSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryLocalSignals: A message that stores
// information about Local results to be used in the Packer for Local
// Categorical derived intent deduplication and conformance.
type KnowledgeAnswersIntentQueryLocalSignals struct {
	// LocalResultSignals: Signals relating to each Local result.
	LocalResultSignals []*KnowledgeAnswersIntentQueryLocalResultSignals `json:"localResultSignals,omitempty"`

	// MinSalientTermSimilarity: Minimum salient term similarity between
	// Local results.
	MinSalientTermSimilarity float64 `json:"minSalientTermSimilarity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalResultSignals")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalResultSignals") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryLocalSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryLocalSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryLocalSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryLocalSignals
	var s1 struct {
		MinSalientTermSimilarity gensupport.JSONFloat64 `json:"minSalientTermSimilarity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MinSalientTermSimilarity = float64(s1.MinSalientTermSimilarity)
	return nil
}

// KnowledgeAnswersIntentQueryLocationMarkersSignals: Signals from
// LightweightToken. The span for an argument may have been extended to
// include lightweight token markers such as FROM or TO. This signal
// provides the semantics for the range extension.
type KnowledgeAnswersIntentQueryLocationMarkersSignals struct {
	// Type: The type of the lightweight token match.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "SOURCE" - The semantic role of the linguist marker is that of
	// "source" or "origin," often indicated by the preposition "from" in
	// the English language.
	//   "GOAL" - The semantic role of the linguist marker is that of "goal"
	// or "destination," often indicated by the preposition "to" in the
	// English language.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryLocationMarkersSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryLocationMarkersSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryMediaEntitySignals: Signals about the
// media entity.
type KnowledgeAnswersIntentQueryMediaEntitySignals struct {
	// ArtistTitle: For songs, this is the name of the primary artist, i.e.
	// "Shallow" would "Lady Gaga" set.
	ArtistTitle string `json:"artistTitle,omitempty"`

	// Name: Name of the media entity, i.e. "Lady Gaga".
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArtistTitle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArtistTitle") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryMediaEntitySignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryMediaEntitySignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryMuninSignals: Signals derived from Munin
// Function call annotations.
type KnowledgeAnswersIntentQueryMuninSignals struct {
	// IsIsolated: If the modifier is only a good soft modifier by itself,
	// then we would trigger only if it's the only modifier
	IsIsolated bool `json:"isIsolated,omitempty"`

	// SoftModifierCollection: Signals for $ListQueryRuleWithSoftModifier.
	// Collections allowed by the soft modifier.
	SoftModifierCollection []string `json:"softModifierCollection,omitempty"`

	// TextIsGenerated: If true, the text for this argument did not come
	// from the query, but was generated somehow else.
	TextIsGenerated bool `json:"textIsGenerated,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsIsolated") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsIsolated") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryMuninSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryMuninSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryNTPRAnnotationSignals: Signals associated
// with NTPRAnnotator annotations. Empty. The signal being present is
// enough for the conformance checking library to be able to check.
type KnowledgeAnswersIntentQueryNTPRAnnotationSignals struct {
}

// KnowledgeAnswersIntentQueryNimbleAnnotationSignals: Signals
// associated with NimbleAnnotator annotations.
type KnowledgeAnswersIntentQueryNimbleAnnotationSignals struct {
	// AnnotationSource: Where the annotation has been read from.
	//
	// Possible values:
	//   "SSTABLE" - Annotation was obtained from SStable.
	//   "LG" - Annotation was obtained from Livegraph snapshot (see
	// go/nimble-from-lg).
	//   "TS" - Annotation was obtained from Topic Server.
	//   "PRIVATE_SSTABLE" - Annotation was obtained from Private SStable.
	AnnotationSource string `json:"annotationSource,omitempty"`

	// Type: A client-controlled identifier that the client can use to
	// distinguish between different sets of annotations.
	Type string `json:"type,omitempty"`

	// Version: Version identifier used to isolate different clients from
	// each other. A client should intersect this list of versions with the
	// ones the client is interested in, and use the annotation if the
	// intersection is non-empty.
	Version []string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryNimbleAnnotationSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryNimbleAnnotationSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals: Signals coming
// from on-device annotators.
type KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals struct {
	// Provenance: Provenance of the annotator. Equivalent to the
	// `provenance` field in OnDeviceParserInput::AnnotationInfo. This is
	// used to map from AnnotationInfo to nlp_sage.ScoredAnnotation, since
	// nlp_sage.ScoredAnnotation doesn't have a native `provenance` field.
	// Note in the (very) long term, we'd like to replace ScoredAnnotation
	// with Argument altogether.
	Provenance string `json:"provenance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Provenance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Provenance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryParsingSignals: Parsing-related signals.
// Only horizontal signals should appear directly as fields on this
// message. Each domain should create their own extension for anything
// that they need to propagate down stream from AQUA. Note that this
// proto is not the same as the Superroot proto ParsingSignals
// (http://google3/knowledge/proto/scoring-signals.proto), which is a
// Superroot-specific signal used in Scoring. Next ID: 7
type KnowledgeAnswersIntentQueryParsingSignals struct {
	// CalibratedParsingScore: A parsing score that is independently
	// calibrated by each parser/IG, used by pre-fulfillment ranker, see
	// http://go/prefulfillment-ranker.
	CalibratedParsingScore float64 `json:"calibratedParsingScore,omitempty"`

	// EffectiveArgSpanLength: The total effective length of the spans for
	// the arguments used to construct the parse. May include vertical
	// specific adjustments. Eg: For the query [delete my 7 p.m. alarm
	// called chicken] and intent
	// Delete_alarm(alarm_object=RD(category=AlarmObject( label="chicken",
	// trigger_time_datetime=<< 7 PM >>))), the effective argument span is
	// "7 p.m." + "chicken" (total length of 13).
	EffectiveArgSpanLength float64 `json:"effectiveArgSpanLength,omitempty"`

	// InQueryMaxEffectiveArgSpanLength: This is a cross-intent feature
	// which is calculated by iterating all intent candidates. This feature
	// should be populated in post-IG stage (before GB).
	InQueryMaxEffectiveArgSpanLength float64 `json:"inQueryMaxEffectiveArgSpanLength,omitempty"`

	// QrewriteCallPathInfo: This proto holds the complete call path info of
	// the QRewrite client (e.g. the QUS's phase like "RBT","QBT"; the QUS's
	// candidate type like "Identity"; and the ACE's candidate type like
	// "FuzzyMatcher").
	QrewriteCallPathInfo *NlpLoggingQRewriteClientCallPathInfo `json:"qrewriteCallPathInfo,omitempty"`

	// QrewriteCallPathInfoFingerprint: This proto holds the fingerprint of
	// the call path info of QRewrite client (e.g. the QUS's phase like
	// "RBT","QBT"; the QUS's candidate type like "Identity"; and the ACE's
	// candidate type like "FuzzyMatcher").
	QrewriteCallPathInfoFingerprint uint64 `json:"qrewriteCallPathInfoFingerprint,omitempty,string"`

	// Source: The parser that calibrated the parsing score below.
	//
	// Possible values:
	//   "UNKNOWN_PARSING_SOURCE"
	//   "SAGE" - Score is calibrated by Sage IG.
	//   "UNSTRUCTURED_INTENTS" - The FunctionCall is produced by the
	// Unstructured Intent IG. See go/unstructured-intents-ig.
	//   "NSP" - The FunctionCall is produced by NSP in TUIG. This is
	// consumed in QUS, to route behavior specific to NSP.
	//   "AQUA" - The FunctionCall is produced by Aqua.
	//   "PHONE_GENIE" - The FunctionCall is produced by PhoneGenie in TUIG.
	// See go/phone-genie-tuig
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CalibratedParsingScore") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalibratedParsingScore")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryParsingSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryParsingSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryParsingSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryParsingSignals
	var s1 struct {
		CalibratedParsingScore           gensupport.JSONFloat64 `json:"calibratedParsingScore"`
		EffectiveArgSpanLength           gensupport.JSONFloat64 `json:"effectiveArgSpanLength"`
		InQueryMaxEffectiveArgSpanLength gensupport.JSONFloat64 `json:"inQueryMaxEffectiveArgSpanLength"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CalibratedParsingScore = float64(s1.CalibratedParsingScore)
	s.EffectiveArgSpanLength = float64(s1.EffectiveArgSpanLength)
	s.InQueryMaxEffectiveArgSpanLength = float64(s1.InQueryMaxEffectiveArgSpanLength)
	return nil
}

// KnowledgeAnswersIntentQueryPersonalEntity: A message encapsulating
// all "/collection/personal_memory" annotations from QRef annotator.
// These annotations are present in personal_summary_node_child proto
// field of input QRefAnnotation proto. NEXT ID TO USE: 5
type KnowledgeAnswersIntentQueryPersonalEntity struct {
	// AttributeId: Attribute ID of a personal_summary_node_child.
	AttributeId string `json:"attributeId,omitempty"`

	EntityRelationship []*KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship `json:"entityRelationship,omitempty"`

	// FreebaseMid: The mid of the entity in freebase associated with this
	// span.
	FreebaseMid string `json:"freebaseMid,omitempty"`

	// PersonalEntityChild: Every PersonalEntity might itself rescursively
	// contain related Personal Entities, e.g. for, "my father's mother" a
	// parent Personal Entity for 'Mother()' contains a child Personal
	// Entity of the form 'Mother(Myself)'.
	PersonalEntityChild []*KnowledgeAnswersIntentQueryPersonalEntity `json:"personalEntityChild,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryPersonalEntity) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryPersonalEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship: The
// relationship information from QRef. Only included if the
// QRefAnnotator is initialised with include_annotated_relationships.
type KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship struct {
	// EntityIndex: The index of the other entity in the relationship.
	EntityIndex int64 `json:"entityIndex,omitempty"`

	// LinkPropertyName: Names of the relationship links.
	LinkPropertyName []string `json:"linkPropertyName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryQrefAnnotationSignals: Signals associated
// with Qref annotations.
type KnowledgeAnswersIntentQueryQrefAnnotationSignals struct {
	// Score: Numeric value associated with each annotation within the Qref
	// servlet output.
	Score float64 `json:"score,omitempty"`

	// TrustedNameConfidence: Trusted name confidence signal
	// https://g3doc.corp.google.com/repository/webref/preprocessing/names/tnc_classifier/README.md
	TrustedNameConfidence float64 `json:"trustedNameConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryQrefAnnotationSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryQrefAnnotationSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryQrefAnnotationSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryQrefAnnotationSignals
	var s1 struct {
		Score                 gensupport.JSONFloat64 `json:"score"`
		TrustedNameConfidence gensupport.JSONFloat64 `json:"trustedNameConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	s.TrustedNameConfidence = float64(s1.TrustedNameConfidence)
	return nil
}

// KnowledgeAnswersIntentQueryRelatednessSignals: Relatedness Matrix
// signals for FunctionCall Arguments.
type KnowledgeAnswersIntentQueryRelatednessSignals struct {
	QueryPopularity float64 `json:"queryPopularity,omitempty"`

	YoutubeViews uint64 `json:"youtubeViews,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "QueryPopularity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QueryPopularity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryRelatednessSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryRelatednessSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryRelatednessSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryRelatednessSignals
	var s1 struct {
		QueryPopularity gensupport.JSONFloat64 `json:"queryPopularity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QueryPopularity = float64(s1.QueryPopularity)
	return nil
}

// KnowledgeAnswersIntentQuerySaftSignals: Signals derived from
// overlapping saft annotations.
type KnowledgeAnswersIntentQuerySaftSignals struct {
	// Possible values:
	//   "UNMARKED"
	//   "PERSON"
	//   "NOMINAL_PERSON"
	//   "ORGANIZATION"
	//   "LOCATION"
	//   "OTHER"
	EntityType string `json:"entityType,omitempty"`

	IsHeadOfIntent bool `json:"isHeadOfIntent,omitempty"`

	// IsVerb: Saft often marks verbs as head of intent and we may want to
	// ignore those.
	IsVerb bool `json:"isVerb,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "SINGULAR"
	//   "PLURAL"
	Number string `json:"number,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySaftSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySaftSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQuerySemanticAnnotationSignals: Signals
// associated with nlp_ig::v1::SemanticAnnotator.
type KnowledgeAnswersIntentQuerySemanticAnnotationSignals struct {
	// Category: Name of the subgrammar category this annotation is
	// associated with.
	Category string `json:"category,omitempty"`

	// Domain: Name of the subgrammar domain.
	Domain string `json:"domain,omitempty"`

	Features []*KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature `json:"features,omitempty"`

	// Score: Numeric value associated with each subgrammar annotation. Used
	// for in-domain ranking inside the Aqua Analyzer. This field is not
	// guaranteed to be in any range. Furthermore, this field should never
	// be compared for annotations with differing 'domain' value. The field
	// is included here for making the Aqua Analyzer work with subgrammar
	// annotations that have been generated in a different Aqua Analyzer
	// (typically by TUIG SemanticAnnotationServlet). TL;DR: Consumers of
	// this message are STRONGLY DISCOURAGED from using this field.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySemanticAnnotationSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySemanticAnnotationSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQuerySemanticAnnotationSignals) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQuerySemanticAnnotationSignals
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature: Aqua
// features exported from a subgrammar. Primarily added here for
// External Subgrammar Annotations to work. See go/esa-exported-features
// for details. NOTE: Feature names can change and the existence of any
// feature is not guaranteed. Get in touch with ig-eng@ before using
// these features.
type KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature struct {
	Name string `json:"name,omitempty"`

	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

type KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard struct {
	// DoNotUseDebugOnlyDecryptedValue: Decrypted and deserialized contents
	// of |encrypted_value|. This field should never be populated in prod.
	// This is only provided for easier human inspection when using dev
	// builds (dev keys are public).
	DoNotUseDebugOnlyDecryptedValue *KnowledgeAnswersIntentQueryArgumentValue `json:"doNotUseDebugOnlyDecryptedValue,omitempty"`

	// EncryptedValue: Encrypted protobuffer of type ArgumentValue.
	EncryptedValue string `json:"encryptedValue,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DoNotUseDebugOnlyDecryptedValue") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DoNotUseDebugOnlyDecryptedValue") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryShoppingIds: Additional shopping
// identifiers related to an entity or IQL function call. This must be
// passed along to the shopping backend (go/o4) to aid in fulfillment.
// Because the shopping data models do not always line up 1-1 with KG
// entities and are not always reconciled with each other, the message
// may contain multiple ids. Next id: 8 LINT.IfChange
type KnowledgeAnswersIntentQueryShoppingIds struct {
	// AspectClusterIds: A shopping aspect cluster id. These are attributes
	// mined from mentions in web articles.
	AspectClusterIds googleapi.Uint64s `json:"aspectClusterIds,omitempty"`

	// BrandEntityId: Brand entity id. Brands are fully reconciled with KG
	// entities so there should never be ambiguity as to which brand applies
	// (those would be separate MIDs).
	BrandEntityId uint64 `json:"brandEntityId,omitempty,string"`

	// BxCategoryIds: A category in the shopping browseonomy, a taxonomy of
	// product types that can be found at go/bx. This field is expected to
	// contain the deepest node in the browseonomy that the intent or
	// argument pertains to, which may be an internal node. It does not
	// contain the entire path of categories.
	BxCategoryIds []int64 `json:"bxCategoryIds,omitempty"`

	Measures []*KnowledgeAnswersIntentQueryShoppingIdsMeasureValue `json:"measures,omitempty"`

	// MerchantIds: List of merchant customer account IDs associated with a
	// merchant entity in KG. NOTE: Soon to be deprecated, see
	// go/merchant_mids_in_indexer design
	MerchantIds googleapi.Int64s `json:"merchantIds,omitempty"`

	// MerchantSourceIds: A shopping merchant source id, i.e. the key used
	// to identify Shopping Merchants as they are imported into KG. For
	// reference, these IDs are populated in: * CommerceDB under
	// BusinessIdentification.knowledge_graph.source_id * KG using the
	// /shopping/merchant/id predicate
	MerchantSourceIds googleapi.Int64s `json:"merchantSourceIds,omitempty"`

	// TagIds: Moka attributes of a product. This includes color tags but
	// currently not brand. We allow the possibility for multiple tag ids,
	// as multiple Moka tag ids may map to the same mid, and we may not be
	// able to find a single matching Moka tag. Also, cross-category Moka
	// colors intentionally map a single color mentioned in the query to an
	// expansion of many tags representing points in LAB color space
	// (although this representation is expected to change).
	TagIds googleapi.Int64s `json:"tagIds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AspectClusterIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AspectClusterIds") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryShoppingIds) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryShoppingIds
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryShoppingIdsMeasureValue: A measured value
// of a product (e.g. Hard drive size = 1 TB). The value is measured in
// the facet's base unit. This does not necessarily match the unit
// expressed by the user in the query. The exact unit is known to the O4
// server and is used in fulfillment.
type KnowledgeAnswersIntentQueryShoppingIdsMeasureValue struct {
	FacetId int64 `json:"facetId,omitempty,string"`

	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FacetId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FacetId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryShoppingIdsMeasureValue) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryShoppingIdsMeasureValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryShoppingIdsMeasureValue) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryShoppingIdsMeasureValue
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// KnowledgeAnswersIntentQuerySignalComputationFallbackIntent: A message
// representing an intent to use for intent scoring if the root intent
// is invalid.
type KnowledgeAnswersIntentQuerySignalComputationFallbackIntent struct {
	// Intent: The intent name of the fallback intent.
	Intent string `json:"intent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Intent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Intent") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySignalComputationFallbackIntent) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySignalComputationFallbackIntent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQuerySimpleValue: A message representing a
// simple literal value.
type KnowledgeAnswersIntentQuerySimpleValue struct {
	BoolValue bool `json:"boolValue,omitempty"`

	DoubleValue float64 `json:"doubleValue,omitempty"`

	Identifier *KnowledgeAnswersIntentQueryIdentifier `json:"identifier,omitempty"`

	IntValue int64 `json:"intValue,omitempty,string"`

	StringValue string `json:"stringValue,omitempty"`

	// UngroundedValue: Ungrounded value contains the part of the query (or
	// web snippet, etc.) that was not understood. For more information on
	// this field, see the "Ungrounded value" item in the table of contents
	// of go/iql-v1
	UngroundedValue string `json:"ungroundedValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySimpleValue) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySimpleValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQuerySimpleValue) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQuerySimpleValue
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	return nil
}

// KnowledgeAnswersIntentQuerySupportTransferSignals: Signals indicating
// whether this entity received or transferred support (and from which
// entities).
type KnowledgeAnswersIntentQuerySupportTransferSignals struct {
	// SupportTransferSource: Entities that transferred support to this
	// entity (mids).
	SupportTransferSource []string `json:"supportTransferSource,omitempty"`

	// SupportTransferTarget: Entities that received support from this
	// entity (mids).
	SupportTransferTarget []string `json:"supportTransferTarget,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SupportTransferSource") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SupportTransferSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQuerySupportTransferSignals) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQuerySupportTransferSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals: Signals
// associated with TeleportArgumentAnnotator annotations. Empty. The
// signal being present is enough for the conformance checking library
// to be able to check.
type KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals struct {
}

// KnowledgeAnswersIntentQueryToken: A token represents an ngram with
// relevant information about it. If the token is a context phrase, it
// will have a prior score associated with it. The prior is computed via
// knowledge/answers/query_generalization/
// word_prior/word_prior_from_examples_lib.cc, and ranges between 0 and
// 1. Stopwords and intent tokens (primary and component) have a score
// of 1.0.
type KnowledgeAnswersIntentQueryToken struct {
	// EvalData: This field is used inside Aqua and outside Aqua for
	// identifying the token indices and/or byte offsets of this Token.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Ngram: |ngram| should be populated with a string from the raw query,
	// not the normalized tokens. E.g. The ngram in the ignored token for
	// the Height intent on the query [Height of barack obama], will be
	// "Height". The ngram in the ignored token for the Videos intent on the
	// query [vidéos] will be "vidéos".
	Ngram string `json:"ngram,omitempty"`

	// ParsedDueToExperiment: Experiments that caused this Token to parse,
	// without which this would not have parsed.
	ParsedDueToExperiment []string `json:"parsedDueToExperiment,omitempty"`

	Prior float64 `json:"prior,omitempty"`

	// Possible values:
	//   "UNKNOWN" - We don't know how this token was explained. This will
	// be the provenance for unexplained tokens.
	//   "INTENT_PRIMARY" - This is a PRIMARY or core token in the Intent
	// Annotation. This is currently NOT USED by the LooseParser.
	//   "INTENT_COMPONENT" - This token is a part of the Intent Annotation,
	// one of the tokens that helped us identify the intent of the query and
	// create a parse. eg. [wife] in [who is obama' wife]
	//   "STOPWORD" - This token was explained away as safe-to-ignore after
	// the parse. eg. [is] in [who is obama's wife]
	//   "CONTEXT_INTENT" - This token is a context phrase for the intent in
	// the parse. eg. [who] in [who is obama's wife]
	//   "CONTEXT_ANSWER_TYPE" - This token is a context phrase, and
	// indicates how the context phrase was learned for the intent (by
	// sharing context phrases between intents with the same answer type).
	// This is currently NOT USED by the LooseParser.
	//   "CONTEXT_ENTITY_TYPE" - This is currently NOT USED by the
	// LooseParser.
	//   "PUNCTUATION" - This token is punctuation, and so is explained as
	// safe-to-ignore.
	//   "LOCATION_ALIAS_ANNOTATION" - This token's data was derived
	// directly from an alias-type Location annotation. For example, the
	// Location subgrammar generates an annotation with {type: ALIAS
	// alias_location: HERE} for [where am i]
	// (http://screen/BhuAnCgtujUG9Pu), so LooseParser may use this
	// annotation's byte information in generating tokens downstream.
	//   "OPTIONALIZED" - Term is not a hard coded stopword, but online
	// scoring considered it not important for term explanation.
	Provenance string `json:"provenance,omitempty"`

	// ProvenanceId: Unique identifiers for the provenance of this token,
	// for example, NLP Repository Example IDs.
	ProvenanceId []string `json:"provenanceId,omitempty"`

	ProvenanceLanguage string `json:"provenanceLanguage,omitempty"`

	Synonyms []*KnowledgeAnswersIntentQueryTokenSynonym `json:"synonyms,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryToken) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryToken) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryToken
	var s1 struct {
		Prior gensupport.JSONFloat64 `json:"prior"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Prior = float64(s1.Prior)
	return nil
}

// KnowledgeAnswersIntentQueryTokenSynonym: A TokenSynonym contains
// information about synonyms of a Token's ngram. The synonyms were the
// ones used during parsing for token explanation in place of the
// original ngrams. Example 1: [present population of nyc] We can
// generate interpretation kc:/location/statistical_region:population by
// converting "present" to its synonym "current", which is a context
// phrase for the intent. The ngram for this token would be "present"
// and the string "current" would be stored in synonym_ngram. Example 2:
// [nys important cities] We can generate interpretation
// kc:/location/us_state:cities by converting "important" to its synonym
// "major" or its synonym "biggest", because both "major cities" and
// "biggest cities" are attribute phrases for the intent. In this case,
// the ngram in this Token is "important cities", and the token_synonyms
// (specifically, the synonym_ngram field) would store "major cities"
// and "biggest cities", since those are the actual synonym ngrams that
// match the attribute phrases. For context phrases, we generally should
// have only one matched_squery_synonyms, since we try to find the best
// synonyms to use using the context phrase score. However, for
// attribute phrase we don't really have enough info to determine which
// synonym is better if they both trigger the same intent, and hence we
// will propagate both synonyms.
type KnowledgeAnswersIntentQueryTokenSynonym struct {
	// Possible values:
	//   "UNKNOWN"
	//   "SQUERY"
	Source string `json:"source,omitempty"`

	SynonymNgram string `json:"synonymNgram,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Source") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Source") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryTokenSynonym) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryTokenSynonym
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersIntentQueryTokens: Tokens includes a list of tokens,
// with an aggregated score of the priors of the tokens, if any.
type KnowledgeAnswersIntentQueryTokens struct {
	// Score: Score for this group of tokens is currently product of priors.
	Score float64 `json:"score,omitempty"`

	Token []*KnowledgeAnswersIntentQueryToken `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntentQueryTokens) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntentQueryTokens
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersIntentQueryTokens) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersIntentQueryTokens
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type KnowledgeAnswersIntersectType struct {
	SlotNames []string `json:"slotNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SlotNames") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SlotNames") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersIntersectType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersIntersectType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersMarker: A Marker specifies a Meaning Expression's
// (i.e. intent FunctionCall) purpose. NOTE: Markers always impact
// go/intent-resolution semantics.
type KnowledgeAnswersMarker struct {
	Command *KnowledgeAnswersMarkerCommand `json:"command,omitempty"`

	OpenQuestion *KnowledgeAnswersMarkerOpenQuestion `json:"openQuestion,omitempty"`

	PolarQuestion *KnowledgeAnswersMarkerPolarQuestion `json:"polarQuestion,omitempty"`

	StateOfAffairs *KnowledgeAnswersMarkerStateOfAffairs `json:"stateOfAffairs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Command") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Command") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersMarker) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersMarker
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersMarkerCommand: Indicates a command, instructing
// someone to do something which might be explicit (e.g. [call me]) or
// implicit (e.g. [can you call me]).
type KnowledgeAnswersMarkerCommand struct {
}

// KnowledgeAnswersMarkerOpenQuestion: Indicates a question, requesting
// the value of a specified slot. Not applicable if the requested slot
// simultaneously appears as an argument. See go/requested-slots for
// details. Next ID: 3
type KnowledgeAnswersMarkerOpenQuestion struct {
	// SlotKey: Note: This is still under development and not available for
	// general use. Contact meaning-platform-eng@ for questions.
	SlotKey *KnowledgeAnswersMeaningSchemaSlotKey `json:"slotKey,omitempty"`

	// SlotName: One or multiple slots may be requested by the marker. See
	// go/mrf-multiple-output-slots for details on requesting multiple
	// output slots.
	SlotName []string `json:"slotName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SlotKey") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SlotKey") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersMarkerOpenQuestion) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersMarkerOpenQuestion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersMarkerPolarQuestion: Indicates a question, requesting
// the truth-value/actualness of a state of affairs denoted by the
// expression encompassed by the FunctionCall this appears on. Often
// this is a yes/no question, e.g. [was tom cruise in top gun] :
// ActedIn.polar(Movie=/m/top_gun, Actor=/m/tom_cruise) Not all polar
// questions will necessarily have a yes/no answer; the expected
// resolution of a polar question is a StateOfAffairs. e.g. [is
// chocolate good for you] : FoodItemAttribute.polar(/m/chocolate,
// /m/healthy) which may not have a simple yes/no answer. See
// go/mrf-polar-questions for details.
type KnowledgeAnswersMarkerPolarQuestion struct {
}

// KnowledgeAnswersMarkerStateOfAffairs: Indicates a reference to a
// particular state of affairs denoted by the expression encompassed by
// the FunctionCall this appears on. The state may be actual e.g. [new
// york is a city] : IsA.state(/m/new_york, /m/city) or not e.g. [1+1=3]
// : Addition.state(Sum=3, Addend=1, Addend=1) The state can also
// represent an proposition of an action, e.g. [cinar gave jason a
// cookie] : Give.state(Giver=cinar, Receiver=jason, Object=cookie) See
// go/mrf-polar-questions for details.
type KnowledgeAnswersMarkerStateOfAffairs struct {
}

// KnowledgeAnswersMeaningSchemaKey: The primary key for an intent. Next
// ID: 3
type KnowledgeAnswersMeaningSchemaKey struct {
	// DeprecatedVersion: The version has been changed to be defined as a
	// horizontal version on the entire meaning catalog instead of
	// per-schema.
	DeprecatedVersion int64 `json:"deprecatedVersion,omitempty,string"`

	// Mid: The minted MID for an intent.
	Mid string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeprecatedVersion")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeprecatedVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersMeaningSchemaKey) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersMeaningSchemaKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersMeaningSchemaSlotKey: The primary key for a
// MeaningSchema slot. Next ID: 3 For
// //depot/google3/logs/proto/knowledge/interpretation/intent_query.proto
//
//	in the "ThenChange", please update Argument.SlotKey. LINT.IfChange
type KnowledgeAnswersMeaningSchemaSlotKey struct {
	// Mid: The minted MID for the slot. This ID uniquely identifies the
	// slot globally.
	Mid string `json:"mid,omitempty"`

	// UniqueId: A stable unique ID for this intent minted from go/uniqueid.
	// NOTE: This is considered a private field used only for internal
	// Intent Catalog purposes (i.e. as a source ID for generating this
	// intent's associated MID). Additionally, this field is only populated
	// on the schema. TODO (b/168907943): Move "unique_id" out of
	// MeaningSchemaSlotKey proto message. Note: Please do not use this
	// field. It is going to be moved out of this proto message.
	UniqueId int64 `json:"uniqueId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersMeaningSchemaSlotKey) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersMeaningSchemaSlotKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersMeasurementType: A MeasurementType configures a value
// that consists of a measurement. The expected value should have a
// number and a mid representing the unit. Note: this is currently only
// used for attribute answer value types. Configuration intent slot as
// measurement is yet to be supported (or instead we should universally
// use SemanticType).
type KnowledgeAnswersMeasurementType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersMeasurementType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersMeasurementType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersNormalizedStringType: A NormalizedStringType
// configures a value that is one of the listed normalized_values. An
// arbitrary mapping from input strings to normalized_values can be
// specified in the local intent config. Only alphabetical strings can
// be used as normalized_values. This type should NOT be used for: -
// Mids, ids, dates, or other structured data. Use an annotator instead,
// and address any quality issues at the annotator level. - Simplifying
// grammar rules. If you are not using the normalized_values in your
// question semantics, you should remove the slot. Use additional
// query_examples instead.
type KnowledgeAnswersNormalizedStringType struct {
	NormalizedValue []string `json:"normalizedValue,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NormalizedValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NormalizedValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersNormalizedStringType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersNormalizedStringType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersNumberType: A NumberType configures a value whose
// type is intended to be numeric.
type KnowledgeAnswersNumberType struct {
	// KeepAsString: If true, the semantics of the NumberType argument are
	// retained as a string, rather than being converted to a float-type
	// object. This option is particularly useful in cases where leading 0s
	// in the user input are meaningful, e.g. for zip codes or sports jersey
	// numbers. For the user- specified value "01", for instance, the
	// PathQuery semantics will be: def $Slot "01"
	KeepAsString bool `json:"keepAsString,omitempty"`

	// RangeConstraint: Range constraint limits the set of numbers accepted
	// by this type. The constraint applies to all subtypes. Currently, this
	// constraint is only enforced in Loose Parser.
	RangeConstraint *KnowledgeAnswersRangeConstraint `json:"rangeConstraint,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// SubType: sub_type is a list of the NumberSubTypes which are accepted.
	// If the list is empty, that means all numeric or ordinal values are
	// accepted. If multiple values are specified, then this value accepts
	// any of the sub_types in the list.
	//
	// Possible values:
	//   "NONE" - Matches either numeric or ordinal values.
	//   "ORDINAL" - Matches only ordinal numbers.
	//   "NUMERIC" - Matches only numeric values (e.g. "1", but not "1st" or
	// "first"). This matches either integers or floating-point numbers.
	//   "INTEGER" - This matches ONLY integers.
	//   "FLOAT" - This matches ONLY floating-point numbers.
	SubType []string `json:"subType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KeepAsString") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KeepAsString") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersNumberType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersNumberType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersOpaqueAogType: Custom opaque type used by
// actions-on-google in-dialog queries. See
// go/3p-custom-intents-wrt-meaning-catalog
type KnowledgeAnswersOpaqueAogType struct {
}

type KnowledgeAnswersOpaqueAppAnnotationType struct {
}

type KnowledgeAnswersOpaqueAudioType struct {
}

type KnowledgeAnswersOpaqueCalendarEventType struct {
}

// KnowledgeAnswersOpaqueCalendarEventWrapperType: Used for sensitive
// calendar events that require additional BUILD visibility protection.
// See go/multi-account-event-representation.
type KnowledgeAnswersOpaqueCalendarEventWrapperType struct {
}

type KnowledgeAnswersOpaqueCalendarReferenceType struct {
}

type KnowledgeAnswersOpaqueComplexQueriesRewriteType struct {
}

type KnowledgeAnswersOpaqueComponentReferenceIndexType struct {
}

type KnowledgeAnswersOpaqueDeviceIdType struct {
}

type KnowledgeAnswersOpaqueDeviceType struct {
}

type KnowledgeAnswersOpaqueDeviceUserIdentityType struct {
}

type KnowledgeAnswersOpaqueHomeAutomationDeviceType struct {
}

type KnowledgeAnswersOpaqueLocationType struct {
}

type KnowledgeAnswersOpaqueMediaType struct {
}

type KnowledgeAnswersOpaqueMessageNotificationType struct {
}

type KnowledgeAnswersOpaqueMoneyType struct {
}

type KnowledgeAnswersOpaqueNewsProviderType struct {
}

type KnowledgeAnswersOpaqueOnDeviceType struct {
}

type KnowledgeAnswersOpaquePersonType struct {
}

// KnowledgeAnswersOpaquePersonalIntelligenceEntityType: Entity parsed
// from manual grammar interpretation in the Personal Intelligence
// domain.
type KnowledgeAnswersOpaquePersonalIntelligenceEntityType struct {
}

type KnowledgeAnswersOpaqueProductivityListItemType struct {
}

type KnowledgeAnswersOpaqueRecurrenceType struct {
}

type KnowledgeAnswersOpaqueReminderType struct {
}

type KnowledgeAnswersOpaqueShoppingMerchantType struct {
}

type KnowledgeAnswersOpaqueShoppingOfferType struct {
}

type KnowledgeAnswersOpaqueShoppingProductExpressionType struct {
}

type KnowledgeAnswersOpaqueShoppingProductType struct {
}

type KnowledgeAnswersOpaqueShoppingStoreType struct {
}

type KnowledgeAnswersOpaqueTimerType struct {
}

// KnowledgeAnswersOpaqueType: Note: OpaqueType is deprecated and
// addition of new fields is not allowed. Refer to go/opaque_type for
// details. If you think this is the only way to implement your feature,
// attend an office hours (go/meaning-help) and discuss with the MRF
// team. An OpaqueType configures a value whose type is only
// interpretable by _specific_ clients of the intent catalog. This means
// horizontal 'features' like pretty printing, correct logging, intent
// blacklisting and signal aggregation will not work for opaque value
// types. It has a field for each type in IntentQuery that is not
// covered by a non-opaque type (specifically: protocol messages). The
// fields are themselves messages declared in this file. The specific
// opaque value types must be empty messages. If you find a need to add
// any fields to these messages, make them non-opaque and implement all
// of the code to treat them as first class types. It is allowable for a
// value to have more than one of the opaque types. See
// http://go/opaque-type-for-value-type. LINT.IfChange Next Id: 31
type KnowledgeAnswersOpaqueType struct {
	AogType *KnowledgeAnswersOpaqueAogType `json:"aogType,omitempty"`

	AppAnnotationType *KnowledgeAnswersOpaqueAppAnnotationType `json:"appAnnotationType,omitempty"`

	AudioType *KnowledgeAnswersOpaqueAudioType `json:"audioType,omitempty"`

	CalendarEventType *KnowledgeAnswersOpaqueCalendarEventType `json:"calendarEventType,omitempty"`

	CalendarEventWrapperType *KnowledgeAnswersOpaqueCalendarEventWrapperType `json:"calendarEventWrapperType,omitempty"`

	CalendarReferenceType *KnowledgeAnswersOpaqueCalendarReferenceType `json:"calendarReferenceType,omitempty"`

	ComplexQueriesRewriteType *KnowledgeAnswersOpaqueComplexQueriesRewriteType `json:"complexQueriesRewriteType,omitempty"`

	ComponentReferenceType *KnowledgeAnswersOpaqueComponentReferenceIndexType `json:"componentReferenceType,omitempty"`

	DeviceIdType *KnowledgeAnswersOpaqueDeviceIdType `json:"deviceIdType,omitempty"`

	DeviceType *KnowledgeAnswersOpaqueDeviceType `json:"deviceType,omitempty"`

	DeviceUserIdentityType *KnowledgeAnswersOpaqueDeviceUserIdentityType `json:"deviceUserIdentityType,omitempty"`

	HomeAutomationDeviceType *KnowledgeAnswersOpaqueHomeAutomationDeviceType `json:"homeAutomationDeviceType,omitempty"`

	LocationType *KnowledgeAnswersOpaqueLocationType `json:"locationType,omitempty"`

	MediaType *KnowledgeAnswersOpaqueMediaType `json:"mediaType,omitempty"`

	MessageNotificationType *KnowledgeAnswersOpaqueMessageNotificationType `json:"messageNotificationType,omitempty"`

	MoneyType *KnowledgeAnswersOpaqueMoneyType `json:"moneyType,omitempty"`

	NarrativeNewsProviderType *KnowledgeAnswersOpaqueNewsProviderType `json:"narrativeNewsProviderType,omitempty"`

	OnDeviceType *KnowledgeAnswersOpaqueOnDeviceType `json:"onDeviceType,omitempty"`

	PersonType *KnowledgeAnswersOpaquePersonType `json:"personType,omitempty"`

	PersonalIntelligenceEntityType *KnowledgeAnswersOpaquePersonalIntelligenceEntityType `json:"personalIntelligenceEntityType,omitempty"`

	ProductivityListItemType *KnowledgeAnswersOpaqueProductivityListItemType `json:"productivityListItemType,omitempty"`

	RecurrenceType *KnowledgeAnswersOpaqueRecurrenceType `json:"recurrenceType,omitempty"`

	ReminderType *KnowledgeAnswersOpaqueReminderType `json:"reminderType,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	ShoppingMerchantType *KnowledgeAnswersOpaqueShoppingMerchantType `json:"shoppingMerchantType,omitempty"`

	ShoppingOfferType *KnowledgeAnswersOpaqueShoppingOfferType `json:"shoppingOfferType,omitempty"`

	ShoppingProductExpressionType *KnowledgeAnswersOpaqueShoppingProductExpressionType `json:"shoppingProductExpressionType,omitempty"`

	ShoppingProductType *KnowledgeAnswersOpaqueShoppingProductType `json:"shoppingProductType,omitempty"`

	ShoppingStoreType *KnowledgeAnswersOpaqueShoppingStoreType `json:"shoppingStoreType,omitempty"`

	TimerType *KnowledgeAnswersOpaqueTimerType `json:"timerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AogType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AogType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersOpaqueType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersOpaqueType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersPlexityRequirement: Plexity is a conceptual
// distinction between viewing something (a slot filler, for example) as
// a single individual, or as a complex concept consisting of multiple
// individuals or subparts. Note that plexity is not the same as (or
// correlated with) either grammatical number or with distributive and
// collective interpretations of the slot. The PlexityRequirement proto
// and Plexity enum are defined outside ValueType as we may move the
// plexity specification to a different place in the intent protos in
// future.
type KnowledgeAnswersPlexityRequirement struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// SimplePlexity: Simple plexity: the slot's filler must allow the
	// specified plexity value, for example it must contain multiple
	// individuals if the plexity is MULTIPLEX.
	//
	// Possible values:
	//   "UNSPECIFIED_PLEXITY" - Plexity is unknown or unspecified.
	//   "UNIPLEX" - Viewed as a single individual. Potential example: the
	// output slot of Ordinal, i.e. the meaning of [the third spielberg
	// movie].
	//   "MULTIPLEX" - Viewed as consisting of multiple individuals or
	// subparts. Example: the Last.list slot "game in NBA season" in [last
	// game in NBA season].
	//   "ANY_PLEXITY" - Either uniplex or multiplex. Example: the
	// Buy.product slot for [buy] in [buy a book], [buy a book and a
	// magazine], [buy everything grimm wrote].
	SimplePlexity string `json:"simplePlexity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersPlexityRequirement) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersPlexityRequirement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersPolarQuestionType: A special type representing a
// polar question.
type KnowledgeAnswersPolarQuestionType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersPolarQuestionType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersPolarQuestionType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersRangeConstraint struct {
	Max *KnowledgeAnswersRangeConstraintRangeEndpoint `json:"max,omitempty"`

	Min *KnowledgeAnswersRangeConstraintRangeEndpoint `json:"min,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Max") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Max") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersRangeConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersRangeConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersRangeConstraintRangeEndpoint struct {
	// IsExclusive: If true, then this endpoint's value is not included in
	// the range.
	IsExclusive bool `json:"isExclusive,omitempty"`

	// Value: The value of this endpoint
	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsExclusive") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsExclusive") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersRangeConstraintRangeEndpoint) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersRangeConstraintRangeEndpoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeAnswersRangeConstraintRangeEndpoint) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeAnswersRangeConstraintRangeEndpoint
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

type KnowledgeAnswersSameType struct {
	SlotName string `json:"slotName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SlotName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SlotName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSameType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSameType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSemanticType: A SemanticType configures a value
// determined by another source, in particular another intent or a
// semantic frame. See go/unifying-intents and go/framery.
type KnowledgeAnswersSemanticType struct {
	// AllowAll: If true, is compatible with a schema whose answer_type is
	// any semantic_type including empty (since by default schemas return
	// themselves as semantic_types (b/211438997). This is used primarily
	// for slot composition. Example: for the slot name: Operand type {
	// semantic_type { allow_all: true } entity_type {} } * An entity_type
	// or a schema with answer_type 'entity_type' can fill Operand. * A
	// schema with either (a) no answer_type or (b) answer_type with
	// !semantic_type.names().empty() can fill Operand * A schema with
	// answer_type 'date' CAN NOT fill Operand. Note that when there is an
	// explicit answer_type, the 'self' semantic_type is not considered.
	AllowAll bool `json:"allowAll,omitempty"`

	// IncludesContainingIntent: Determines whether or not the meaning
	// schema that contains this semantic_type conforms to a function call
	// with the name and arguments taken from the meaning schema. As it
	// refers to the "containing_intent", this field should only be set in a
	// semantic_type declared in an intent's type_members field. The
	// behavior of this field is undefined in other cases, for example,
	// declaring the type of an intent slot. On Assistant, we use meaning
	// schemas for argument types to represent both function call values as
	// well as a reusable tool to host other argument values (opaque types,
	// normalized strings, subsets of entities) across intents. Teams need
	// this information to run conformance checks and annotate new data.
	// Example: If the intents below are in the intent catalog, then: -
	// Intent(slot="some string") is conformant, because Type has
	// string_type{} in its type_members. - Intent(slot=Type()) is not
	// conformant, because Type has set
	// semantic_type.includes_containing_intent to false. -
	// Intent(slot=SubType()) is conformant, because type_members is not
	// inherited. { id: "Intent" slot: { name: "slot" type: { semantic_type
	// { name: "Type" }} } } { id: "Type" type_members { string_type{}
	// semantic_type { includes_containing_intent: false } } } { id:
	// "SubType" parent { id: "Type" relationship_type: SUBTYPE } }
	IncludesContainingIntent bool `json:"includesContainingIntent,omitempty"`

	// Name: Names of valid sources of the semantics (for example: a frame
	// or an intent).
	Name []string `json:"name,omitempty"`

	// NameRemodelings: Contains data about current schema remodelings at
	// the SemanticType name level. The "name" field contains all possible
	// semantic type names and "semantic_type_name_remodelings" acts as an
	// overlay to determine which ones to surface based on which schema
	// remodeling IDs are requested. For more information see
	// go/meaning-remodeling-framework.
	NameRemodelings []*NlpMeaningSemanticTypeNameMeaningRemodelings `json:"nameRemodelings,omitempty"`

	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowAll") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowAll") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSemanticType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSemanticType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityArgumentEvalPolicy: Policy controlling
// argument level eval.
type KnowledgeAnswersSensitivityArgumentEvalPolicy struct {
	// PolicyName: Optional cannery policy name. If it presents then Intent
	// Scrubber will use the corresponding Cannery rule for argument
	// scrubbing and redaction instead. It should only be used for existing
	// complex argment value types such as HomeAutomationDevice.
	PolicyName string `json:"policyName,omitempty"`

	// RedactQuerySpan: Redact corresponding span of the string query.
	RedactQuerySpan bool `json:"redactQuerySpan,omitempty"`

	// Replacement: Customized replacement phrase, if missing
	// ${ArgumentName}_REDACTED is used as default.
	Replacement string `json:"replacement,omitempty"`

	// ScrubArgumentValue: Scrub argument value and signals before saving to
	// eval storage. If not set, 1) inherit the policy from the outer
	// argument if there is one (for nested intents); 2) finally default to
	// type based scrubbing: see go/argument-type-scrubbing.
	ScrubArgumentValue bool `json:"scrubArgumentValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PolicyName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PolicyName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityArgumentEvalPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityArgumentEvalPolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityInstruction: Instructions (eg., logging,
// disambiguation, ads serving) of handling a sensitive intent and its
// data. LINT.IfChange NextId: 8
type KnowledgeAnswersSensitivityInstruction struct {
	Argument *KnowledgeAnswersSensitivityInstructionArgument `json:"argument,omitempty"`

	Intent *KnowledgeAnswersSensitivityInstructionIntent `json:"intent,omitempty"`

	// LegacyAssistantSensitivity: This field is for backward compatibility.
	LegacyAssistantSensitivity *SearchPolicyRankableSensitivity `json:"legacyAssistantSensitivity,omitempty"`

	// MultiAccountAllowed: Controls whether a top-level intent is
	// multi-account approved. NLU will do go/cross-account-understanding
	// only for intents with this bit on. Also, this bit should be
	// propagated to user turn Attentionl Entities to extend protection of
	// cross-account data to next turns. In principle fulfillment services
	// (e.g., Monastery) should only dispatch such intents to multi-account
	// approved fulfillers (schemas), at least when the user has a linked
	// dasher account. The Assistant runtime policy engine should treat a
	// query as dasher data if 1) this bit is true in the string redaction,
	// and 2) the user has a linked dasher account, and apply a more
	// restrictive rule for whitelisting, regardless of the actual account
	// provenance in Sensitivity. Example: [User logged in to their personal
	// gmail account.] Q1: "Schedule a meeting tiltled okr review at 3pm".
	// Assistant: "Should I scheduled it on your xyz@gmail.com account?" Q2:
	// "No, add it to my xyz@bigcorp.com account." We don't know Q1 is
	// dasher data until Q2. To prevent leaking of Q1 to non-dasher approved
	// binaries, this bit should be used as a proactive measure. It might
	// introduce some over-triggering (e.g., user says "Yes" in Q2), but is
	// much better than blindly treating every query as dasher, not
	// considering whether it actually triggers any multi-account capable
	// intents or not (see b/164420114 for example).
	MultiAccountAllowed bool `json:"multiAccountAllowed,omitempty"`

	PreviousQuery *KnowledgeAnswersSensitivityInstructionPreviousQuery `json:"previousQuery,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Argument") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Argument") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityInstruction) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityInstruction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityInstructionArgument: Slot/Argument level
// instructions.
type KnowledgeAnswersSensitivityInstructionArgument struct {
	Eval *KnowledgeAnswersSensitivityArgumentEvalPolicy `json:"eval,omitempty"`

	Logging *KnowledgeAnswersSensitivityLoggingPolicy `json:"logging,omitempty"`

	Serving *KnowledgeAnswersSensitivityServingPolicy `json:"serving,omitempty"`

	Storage *KnowledgeAnswersSensitivityStoragePolicy `json:"storage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Eval") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Eval") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityInstructionArgument) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityInstructionArgument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityInstructionIntent: Intent level
// instructions apply to the entire intent and all its argument values.
type KnowledgeAnswersSensitivityInstructionIntent struct {
	Eval *KnowledgeAnswersSensitivityIntentEvalPolicy `json:"eval,omitempty"`

	Footprints *KnowledgeAnswersSensitivityMyActivityPolicy `json:"footprints,omitempty"`

	Logging *KnowledgeAnswersSensitivityLoggingPolicy `json:"logging,omitempty"`

	Serving *KnowledgeAnswersSensitivityServingPolicy `json:"serving,omitempty"`

	Storage *KnowledgeAnswersSensitivityStoragePolicy `json:"storage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Eval") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Eval") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityInstructionIntent) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityInstructionIntent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityInstructionPreviousQuery: Instructions for
// knowledge_context.PreviousQuery. See go/apps-userdata-guidelines.
type KnowledgeAnswersSensitivityInstructionPreviousQuery struct {
	Logging *KnowledgeAnswersSensitivityLoggingPolicy `json:"logging,omitempty"`

	Serving *KnowledgeAnswersSensitivityServingPolicy `json:"serving,omitempty"`

	Storage *KnowledgeAnswersSensitivityStoragePolicy `json:"storage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Logging") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Logging") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityInstructionPreviousQuery) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityInstructionPreviousQuery
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityIntentEvalPolicy: Policy controlling
// intent level eval.
type KnowledgeAnswersSensitivityIntentEvalPolicy struct {
	// AllArguments: Policy for all arguments, so no need to repeat on every
	// argument.
	AllArguments *KnowledgeAnswersSensitivityArgumentEvalPolicy `json:"allArguments,omitempty"`

	// Enabled: Controls whether to enabled limited logging (rpc
	// whitelisting + GWS log query redaction) if the intent wins
	// post-fulfillment ranking.
	Enabled bool `json:"enabled,omitempty"`

	// NestedIntentOnly: The eval policy won't apply if the annotated intent
	// is a root. This check is majorly to prevent calling IntentScrubber
	// halfway from InterpretationScrubber via nested intents.
	NestedIntentOnly bool `json:"nestedIntentOnly,omitempty"`

	// ScrubEntireIntent: Scrub entire intent before saving to eval storage,
	// leaving only intent name and sensitivity info.
	ScrubEntireIntent bool `json:"scrubEntireIntent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllArguments") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllArguments") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityIntentEvalPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityIntentEvalPolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityLoggingPolicy: Policies controlling the
// logging.
type KnowledgeAnswersSensitivityLoggingPolicy struct {
	// ScrubArgumentValue: The contents of the argument value should be
	// scrubbed before being written to logs.
	ScrubArgumentValue bool `json:"scrubArgumentValue,omitempty"`

	// ScrubContext: If this is set to true, this Sensitivity's presence
	// will result in QRewrite to enable AS logging to scrub any discourse
	// context.
	ScrubContext bool `json:"scrubContext,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ScrubArgumentValue")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ScrubArgumentValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityLoggingPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityLoggingPolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityMyActivityPolicy: Policy controlling
// MyActivity.
type KnowledgeAnswersSensitivityMyActivityPolicy struct {
	// Possible values:
	//   "UNKNOWN_ACTION"
	//   "REPLY_TO_BROADCAST"
	//   "INITIATE_CALL"
	//   "SEARCH_EMAIL"
	//   "SEND_SMS"
	//   "SEND_MESSAGE"
	//   "SEND_EMAIL"
	//   "SEND_CHAT_MESSAGE"
	//   "VIEW_AGENDA"
	//   "SHOW_CALENDAR_EVENT"
	//   "ADD_CALENDAR_EVENT"
	//   "DELETE_CALENDAR_EVENT"
	//   "MODIFY_CALENDAR_EVENT"
	//   "SEARCH_CALENDAR"
	//   "SEARCH_TEXT_MESSAGE"
	//   "REPLY_TO_MESSAGE"
	//   "REPLY_TO_NOTIFICATION"
	//   "READ_MESSAGE_NOTIFICATION"
	//   "REPLY_TO_READ_MESSAGE_NOTIFICATION"
	//   "SEARCH_GMAIL"
	//   "YOUTUBE_KIDS"
	//   "SEND_DIGITAL_OBJECT"
	//   "SEND_FEEDBACK"
	//   "SHARE_PHOTO"
	//   "SHARE_VIDEO"
	//   "SHARE_MUSIC"
	//   "SHARE_SCREENSHOT"
	//   "SHARE_WEBPAGE"
	//   "REDIAL_CALL"
	//   "RETURN_CALL"
	//   "RETURN_MISSED_CALL"
	//   "ROUTINE"
	//   "DIAL_INTO_MEETING"
	//   "SHARE_DIGITAL_OBJECT"
	//   "COMPOSE_EMAIL"
	//   "FIND_ON_APP_OR_BROWSER"
	//   "KEYBOARD_DICTATION"
	//   "SEARCH_GSUITE"
	//   "JOIN_MEETING"
	//   "CREATE_MEETING"
	//   "CREATE_MEMORY"
	//   "IN_CALL_PUNT"
	//   "TELL_MY_FAMILY"
	//   "ADD_REMINDER"
	//   "SHOW_REMINDER"
	//   "UPDATE_REMINDER"
	//   "DELETE_REMINDER"
	//   "SHOW_LIST"
	//   "MODIFY_LIST"
	//   "SHOW_NOTE"
	//   "MODIFY_NOTE"
	//   "READ_SLEEP"
	//   "WRITE_SLEEP"
	//   "READ_ACTIVITY"
	//   "WRITE_ACTIVITY"
	//   "READ_NUTRITION"
	//   "WRITE_NUTRITION"
	//   "READ_WELLNESS"
	//   "WRITE_WELLNESS"
	MyActivityRedactedAction string `json:"myActivityRedactedAction,omitempty"`

	// MyActivityRedactionKey: This field will be translated by footprints
	// and is used to describe the content that was redacted that will be
	// displayed to the user in MyActivity.
	MyActivityRedactionKey string `json:"myActivityRedactionKey,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MyActivityRedactedAction") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MyActivityRedactedAction")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityMyActivityPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityMyActivityPolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivitySensitivity: Canonical representation of
// query sensitivites. See go/sensitive-intents for more details.
type KnowledgeAnswersSensitivitySensitivity struct {
	// AccountProvenance: Used to annotate the provenace of cross-account
	// personal data. See go/cross-account-understanding. Sensitivity could
	// be annotated at query, intent, and argument levels. Query and intent
	// could have data from multiple accounts, so this field is repeated. A
	// sensitive knowledge_context.PreviousQuery might be dropped to prevent
	// leaking cross-account data via Genie rewrite. For arguments, the best
	// practice is to not blend multi-account data, and this field should be
	// treated as singular to make ownership clear. When publishing
	// attentional entities, contextual NLU might drop an argument that
	// contains data from a different account for data protection. Mixing
	// multi-account data in one argument will cause data from the primary
	// account to be dropped altogether, which is an unnecessary quality
	// loss.
	AccountProvenance []*QualityQrewriteAccountProvenance `json:"accountProvenance,omitempty"`

	// Instruction: Instruction of handling sensitive intent/argument data.
	// Can be specified in Intent Catalog.
	Instruction *KnowledgeAnswersSensitivityInstruction `json:"instruction,omitempty"`

	// Source: This should be systematically added without requiring the
	// feature developers to add a source. This is for debug purpose as to
	// whether the Sensitivity's trace/path included any of landmark code
	// path helpful for tracing back the sensitivity sources. One should add
	// a new source when one sees fits. It's chronological order as to which
	// source is added first. One should not manually add a source. The same
	// source can be repeated if the Sensitivity object went through the
	// same code path twice.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "INTENT_CATALOG" - This is reserved for Intent
	// (FunctionCall.sensitivity) Sensitivity that comes from intent
	// catalog's definition.See go/sensitive-intents.
	//   "GENIE_REWRITER" - Sensitivity of the current query can be pulled
	// from sensitive context, such as a previous query and attentional
	// entities, by Genie Rewriter. See
	// go/sensitive-ae#heading=h.t81b1cz8i2l2.
	//   "FUNCTION_CALL_ARGUMENT_VALUE" - Sensitivity of the current query
	// can be due to intent_query's Argument.value.sensitivity proto field
	// as opposed to the free-form legacy interp extension's free-form
	// value. Argument.value.sensitivity May be set due to IntentCatalog
	// definition or to inheritance from an attentional entity that replaced
	// the argument's value. In that case, we shall see both sources present
	// in the repeated field. Ex: source: INTENT_CATALOG source:
	// ATTENTIONAL_ENTITY source: FUNCTION_CALL_ARGUMENT_VALUE
	//   "ATTENTIONAL_ENTITY" - Sensitivity of the current query can be due
	// to inheriting the sensitivity of either system-turn or user-turn
	// attentional entity. User-turn AE sensitivity may come from intent
	// catalog but becomes AE when AttentionalEntityReader converts the
	// user-turn argument value as an AE. Ex: source: INTENT_CATALOG source:
	// FUNCTION_CALL_ARGUMENT_VALUE source: ATTENTIONAL_ENTITY
	//   "PII_DETECTOR" - Until its complete deprecation, the legacy
	// SensitivityMode created by PiiDetector in QRewrite is wrapped around
	// knowledge::answers::Sensitivity and is attached to Interpretation as
	// a repeated extension.
	//   "DIALOG_STATE" - Sensitivity can arise due to the current query
	// being a follow-on query in a dialog.
	//   "ON_DEVICE" - This is set if a SensitivityMode is set on device
	// (like Marble) and the server is converting it into a full Sensitivity
	// proto. This includes only previous queries marked by the device.
	//   "FUNCTION_CALL" - Whether the sensitivity is read from
	// FunctionCall.sensitivity
	//   "END_OF_QREWRITE" - When Interp Sensitivity is finalized before
	// outputing from QRewrite.
	//   "SYSTEM_RESPONSE" - When Sensitivity is created or tagged based on
	// the system response, such as components in the fulfillment stage.
	//   "DIALOG_INTENT_STATE" - When the sensitivity is copied to
	// DialogIntentState.
	//   "ANALYZER_POST_PROCESSOR" - When the sensitivity is propagated by
	// AnalyzerResponseHackPostProcessor.
	//   "SAGE" - When the sensitivity is propagated by Sage.
	//   "ANNOTATION_ARGUMENT_VALUE" - When the sensitivity is from
	// Annotation.argument.value.sensitivity.
	//   "DIALOG_INTENT_STATE_INTENT" - When the sensitivity is from
	// DialogIntentState.intent.sensitivity.
	//   "DIALOG_INTENT_STATE_INTENT_CONTEXTUAL" - When the sensitivity is
	// from DialogIntentState.intent.contextual_sensitivity.
	//   "IGDP" - When the sensitivity is propagated by IGDP via intent
	// conversion.
	Source []string `json:"source,omitempty"`

	// Type: Sensitivity type. See the enum definition below.
	//
	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "INTENT" - go/sensitive-intents or cs/f:pii_detector.cc
	//   "CONTEXTUAL" - go/contextual-sensitivity
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountProvenance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountProvenance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivitySensitivity) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivitySensitivity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityServingPolicy: Policies controlling RPC
// Whitelist at serving time.
type KnowledgeAnswersSensitivityServingPolicy struct {
	// EnableRpcWhitelist: If this is set to true, QRewrite will enable RPC
	// Whitelist to be applied in Assistant Server and Genie Rewriter.
	EnableRpcWhitelist bool `json:"enableRpcWhitelist,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EnableRpcWhitelist")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EnableRpcWhitelist") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityServingPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityServingPolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersSensitivityStoragePolicy: Policies controlling the
// storage.
type KnowledgeAnswersSensitivityStoragePolicy struct {
	// EncryptArgumentValue: The contents of the argument value should be
	// encrypted before being written to a persistent storage (even if the
	// storage has short time-to-live). No-op when specified at intent
	// level.
	EncryptArgumentValue bool `json:"encryptArgumentValue,omitempty"`

	// EncryptQueryAnnotationData: If this is set true, we encrypt
	// QueryAnnotationDataProto prior to writing it to Footprint
	// ASSISTANT_EPHEMERAL corpus. This enables restricting ACL to the data.
	EncryptQueryAnnotationData bool `json:"encryptQueryAnnotationData,omitempty"`

	// ScrubAuxiliaryFieldsInConversationSnapshot: If this is set to true,
	// the following fields in ConversationSnapshot are scrubbed: *
	// circulated_state.squery * spoken_query * All client_op arguments
	// |from_assistant| interactions
	ScrubAuxiliaryFieldsInConversationSnapshot bool `json:"scrubAuxiliaryFieldsInConversationSnapshot,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EncryptArgumentValue") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncryptArgumentValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersSensitivityStoragePolicy) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersSensitivityStoragePolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersStateOfAffairsType: A special type representing a
// StateOfAffairs. Currently (as of 2021Q2) this is duplicative with
// semantic_type { name: "StateOfAffairs" } but we (mrf-team) will
// encourage clients to migrate to this new type.
type KnowledgeAnswersStateOfAffairsType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersStateOfAffairsType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersStateOfAffairsType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersStringType: A StringType configures a value whose
// type is intended to be arbitrary text.
type KnowledgeAnswersStringType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// SingleToken: If true, this value will match a single token. If false,
	// this value will match any nonzero number of tokens.
	SingleToken bool `json:"singleToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersStringType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersStringType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersTimeZoneType: A TimeZoneType configures a value whose
// type is a timezone.
type KnowledgeAnswersTimeZoneType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersTimeZoneType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersTimeZoneType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersTrackingNumberType: A TrackingNumberType configures a
// value whose type is a TrackingNumber.
type KnowledgeAnswersTrackingNumberType struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersTrackingNumberType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersTrackingNumberType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersTypeTrait: A TypeTrait configures a value that has a
// property with any of the given trait_id. In practice this means: -
// any entity that has a metadata ID defined in the KP type_schema, -
// any intent that has a slot with the given ID. When comparing trait_id
// to metadata IDs or slot IDs, we lowercase and normalize for
// comparison.
type KnowledgeAnswersTypeTrait struct {
	// Remodelings: Contains data about current schema remodelings at this
	// ValueType level. For more information see
	// go/meaning-remodeling-framework.
	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	TraitId []string `json:"traitId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodelings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodelings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersTypeTrait) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersTypeTrait
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeAnswersUnionType struct {
	SlotNames []string `json:"slotNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SlotNames") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SlotNames") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersUnionType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersUnionType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeAnswersValueType: Specifies the allowed type(s) that a value
// can have, e.g. for a Slot. For example, having both entity_type and
// string_type present in a ValueType field of a Slot means that the
// Slot can take _either_ an an EntityType _or_ StringType as a value,
// and nothing else. It may be helpful to think of this proto as being
// called something like AllAllowedValueTypes. Next tag id: 25
// LINT.IfChange
type KnowledgeAnswersValueType struct {
	// AnyType: This type is meant to accept "any" type and allow any and
	// all composition. As such, it should not be used for any composition
	// algorithms, e.g. in Loose Parser. See more detailed discussion at
	// go/any-type-in-mrf. This type may appear on an answer_type, implying
	// that the output of that Meaning Schema is allowed to nest in any
	// other slot. However, support for this is NOT implemented in Loose
	// Parser due to risk of overcomposition, but the MRF Conformance
	// checker allows for this. If you are thinking of using this, please
	// contact mrf-team@.
	AnyType *KnowledgeAnswersAnyType `json:"anyType,omitempty"`

	AttributeType *KnowledgeAnswersAttributeType `json:"attributeType,omitempty"`

	BooleanType *KnowledgeAnswersBooleanType `json:"booleanType,omitempty"`

	CollectionType *KnowledgeAnswersCollectionType `json:"collectionType,omitempty"`

	CompoundType *KnowledgeAnswersCompoundType `json:"compoundType,omitempty"`

	DateType *KnowledgeAnswersDateType `json:"dateType,omitempty"`

	// DependencyType: Used for configuring dynamic types to allow for type
	// transparency. See: go/type-dependencies
	DependencyType *KnowledgeAnswersDependencyType `json:"dependencyType,omitempty"`

	DurationType *KnowledgeAnswersDurationType `json:"durationType,omitempty"`

	EntityType *KnowledgeAnswersEntityType `json:"entityType,omitempty"`

	// InputCompositionConfig: When specified on a slot's type, restricts
	// composition based on the enum value. This does not mean anything when
	// the value type is to be interpreted as an output_type.
	//
	// Possible values:
	//   "UNSPECIFIED_COMPOSITION" - An unspecified value is required by
	// enum best practices. It will not be used anywhere as the default is
	// ALL_COMPOSITION.
	//   "ALL_COMPOSITION"
	//   "PRIMITIVES_ONLY_COMPOSITION"
	//   "PRIMITIVES_AND_OPERATORS_OF_PRIMITIVES_COMPOSITION" - To handle
	// cases where we have a Group of entities
	//   "PRIMITIVES_AND_SEMANTIC_TYPES_COMPOSITION" - Allows primitives
	// only, or specific FunctionCalls with explicitly listed
	// semantic_types.
	InputCompositionConfig string `json:"inputCompositionConfig,omitempty"`

	MeasurementType *KnowledgeAnswersMeasurementType `json:"measurementType,omitempty"`

	// NormalizedStringType: Note that normalized_string_type is NOT
	// supported in the loose parser. A slot with this type will cause the
	// intent to not be parsed.
	NormalizedStringType *KnowledgeAnswersNormalizedStringType `json:"normalizedStringType,omitempty"`

	NumberType *KnowledgeAnswersNumberType `json:"numberType,omitempty"`

	OpaqueType *KnowledgeAnswersOpaqueType `json:"opaqueType,omitempty"`

	PlexityRequirement *KnowledgeAnswersPlexityRequirement `json:"plexityRequirement,omitempty"`

	// Possible values:
	//   "ALL" - Value can be singular or plural.
	//   "PLURAL_ONLY" - Value is always plural.
	//   "SINGULAR_ONLY" - Value is always singular.
	PluralityType string `json:"pluralityType,omitempty"`

	PolarQuestionType *KnowledgeAnswersPolarQuestionType `json:"polarQuestionType,omitempty"`

	SemanticType *KnowledgeAnswersSemanticType `json:"semanticType,omitempty"`

	StateOfAffairsType *KnowledgeAnswersStateOfAffairsType `json:"stateOfAffairsType,omitempty"`

	StringType *KnowledgeAnswersStringType `json:"stringType,omitempty"`

	TimezoneType *KnowledgeAnswersTimeZoneType `json:"timezoneType,omitempty"`

	TrackingNumberType *KnowledgeAnswersTrackingNumberType `json:"trackingNumberType,omitempty"`

	// WithTrait: Extra trait information for compound value types. Note:
	// currently the semantics of having both the data type (e.g.
	// "entity_type") and "with_trait" is an OR operation. Eg.
	// HorizontalDateRestrict has a SetToModify slot that accepts some
	// collections like /collection/films. And also intent queries
	// with_trait date, start_date, etc.
	WithTrait *KnowledgeAnswersTypeTrait `json:"withTrait,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnyType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnyType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeAnswersValueType) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeAnswersValueType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphDateTimeProto: /////////// DATE //////////
type KnowledgeGraphDateTimeProto struct {
	// Days: A day of month, 1-31. If present, year and month must be
	// present as well, and must form a valid date.
	Days int64 `json:"days,omitempty"`

	// Hours: Hour of the day, 0-23
	Hours int64 `json:"hours,omitempty"`

	// Microseconds: Microsecond, in the interval [0, 999999]. If present,
	// seconds have to be present as well.
	Microseconds int64 `json:"microseconds,omitempty"`

	// Minutes: Minute, 0-59. If present, hours have to be present as well.
	Minutes int64 `json:"minutes,omitempty"`

	// Months: A month, 1-12. If present, year must be present as well.
	Months int64 `json:"months,omitempty"`

	// Seconds: Second, in the interval [0, 60], where 60 is an exceptional
	// value reserved for leap seconds. If present, minutes have to be
	// present as well.
	Seconds int64 `json:"seconds,omitempty"`

	// TzOffset: Timezone offset in seconds (can be positive/negative). If
	// present, hours have to be present as well If absent, we expect the
	// time above to be in local time (a.k.a. civil time,
	// go/httat#civil_time).
	TzOffset int64 `json:"tzOffset,omitempty,string"`

	// Years: A year.
	Years int64 `json:"years,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Days") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Days") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphDateTimeProto) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphDateTimeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphNestedStruct: A nested struct is a recursive tree
// structure for storing a set of triples. more info can be found at
// go/nested-struct-primer
type KnowledgeGraphNestedStruct struct {
	// PredicateObjs: predicate_objs.pred should be unique within the list.
	PredicateObjs []*KnowledgeGraphNestedStructPredicateObjs `json:"predicateObjs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PredicateObjs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PredicateObjs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphNestedStruct) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphNestedStruct
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeGraphNestedStructPredicateObjs struct {
	Objs []*KnowledgeGraphTripleObj `json:"objs,omitempty"`

	Pred string `json:"pred,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Objs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Objs") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphNestedStructPredicateObjs) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphNestedStructPredicateObjs
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphQualifier: A qualifier represents an extra piece of
// context about an assertion/fact. See go/qualifiers-in-kg for more
// details.
type KnowledgeGraphQualifier struct {
	// Pred: The qualifier pred must be a qualifier property defined in KG
	// schema as applying to the predicate of the triple this qualifier is
	// attached to.
	Pred string `json:"pred,omitempty"`

	Value *KnowledgeGraphTripleObj `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Pred") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Pred") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphQualifier) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphQualifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphQualifierSet: A QualifierSet represents a grouping of
// qualifiers that together with an SPO make up a logical assertion or
// fact. One triple can contain multiple qualifier sets and thus
// represent several different assertions about the same SPO.
type KnowledgeGraphQualifierSet struct {
	Qualifiers []*KnowledgeGraphQualifier `json:"qualifiers,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Qualifiers") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Qualifiers") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphQualifierSet) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphQualifierSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphTriple: A Triple is a representation of data with a
// Subject, a Predicate, and an Object, For example: (Triple, IS-A,
// "data representation"). Triples are a very good representation of
// data where the relationship between data points is significant,
// because the Object of a Triple can be the Subject of another Triple:
// (Triple, HAS-A, Subject) (Subject, IS-A, "Term of a proposition") The
// ease with which Triples can represent relationships makes them an
// excellent candidate for representing graphs. Next id: 21
type KnowledgeGraphTriple struct {
	// IsNegation: If is_negation is set to true then this triple is
	// considered a statement that the fact is false. This allows for the
	// storage of both what we know to be true and what we know to be false.
	IsNegation bool `json:"isNegation,omitempty"`

	// Obj: obj is the value of a relationship.
	Obj *KnowledgeGraphTripleObj `json:"obj,omitempty"`

	// Pred: pred is an arbitrary node id representing the predicate (name)
	// of a graph relationship.
	Pred string `json:"pred,omitempty"`

	Provenance []*KnowledgeGraphTripleProvenance `json:"provenance,omitempty"`

	// QualifierSets: WARNING: This is currently defined for experimentation
	// purposes only. Please do not set. Data set in this field will not be
	// published to any systems downstream of Livegraph. Together with the
	// SPO of this triple, each qualifier set here represents a different
	// logical assertion/fact.
	QualifierSets []*KnowledgeGraphQualifierSet `json:"qualifierSets,omitempty"`

	// Sub: sub is an arbitrary node id representing the source entity of a
	// graph relationship.
	Sub string `json:"sub,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsNegation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsNegation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphTriple) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphTriple
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type KnowledgeGraphTripleObj struct {
	BoolValue bool `json:"boolValue,omitempty"`

	DatetimeValue *KnowledgeGraphDateTimeProto `json:"datetimeValue,omitempty"`

	DoubleValue float64 `json:"doubleValue,omitempty"`

	// DurationValue: seconds
	DurationValue int64 `json:"durationValue,omitempty,string"`

	// IdValue: An id representing an entity (mid or hrid)
	IdValue string `json:"idValue,omitempty"`

	Int64Value int64 `json:"int64Value,omitempty,string"`

	// Locale: The language code for the object value. It must be a BCP
	// 47-compliant language tag (b/10005172). See also go/kg-data-l10n.
	Locale string `json:"locale,omitempty"`

	NestedStructValue *KnowledgeGraphNestedStruct `json:"nestedStructValue,omitempty"`

	ProtoValue *KnowledgeGraphTripleObjProto `json:"protoValue,omitempty"`

	S2cellId uint64 `json:"s2cellId,omitempty,string"`

	// StringValue: A UTF-8 string value to be used for the following
	// expected schema types: - /type/rawstring - /type/text - /type/key
	StringValue string `json:"stringValue,omitempty"`

	Uint64Value uint64 `json:"uint64Value,omitempty,string"`

	// UriValue: A UTF-8 string value to be used for expected type /type/uri
	// - b/68760994.
	UriValue string `json:"uriValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphTripleObj) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphTripleObj
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *KnowledgeGraphTripleObj) UnmarshalJSON(data []byte) error {
	type NoMethod KnowledgeGraphTripleObj
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	return nil
}

type KnowledgeGraphTripleObjProto struct {
	// Data: The encoded proto data.
	Data string `json:"data,omitempty"`

	// DescriptorFullName: The full name of the proto descriptor, such as
	// 'music.AlbumSummary'.
	DescriptorFullName string `json:"descriptorFullName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphTripleObjProto) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphTripleObjProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeGraphTripleProvenance: Message containing information about
// the source of this triple. See go/kg-provenance for an explanation of
// the fields.
type KnowledgeGraphTripleProvenance struct {
	// AccessRequired: Specifies the contract or legal visibility required
	// to see the Triple. See go/kg-triple-level-access-controls for details
	// and background. Note that we use an int32 here so that we won't lose
	// values when decoding on a stale binary. The int32 references to the
	// enum storage_graph_bfg.Triple.Provenance.AccessRequirement.
	AccessRequired int64 `json:"accessRequired,omitempty"`

	// Creator: Historically, this field was used to encode the Freebase
	// User ID, Google username, or Google MDB group that was responsible
	// for the pipeline that is producing this data. However, there is
	// currently no horizontal validation in place, and as of Q3 2018, this
	// field is used essentially as a free-form string by multiple data
	// providers. NOTE: Do not use this field in new pipelines without first
	// consulting with the OWNERS of this proto.
	Creator string `json:"creator,omitempty"`

	// DatasetMid: The dataset which asserted this data. Must be a valid
	// mid. See go/kg-provenance
	DatasetMid uint64 `json:"datasetMid,omitempty,string"`

	// IsSupportingData: Indicates that the corresponding data is supporting
	// evidence for reconciliation only, and is *not* an assertion that
	// should be visible to other systems or to external users. Note that
	// this also means that no provenances indicating supporting data will
	// be visible in the composed graph. Please see
	// go/supporting-kg-triples-design-doc for additional details and
	// background.
	IsSupportingData bool `json:"isSupportingData,omitempty"`

	// LgMetadata: Internal metadata used by Livegraph and possibly other
	// horizontal KG infra systems. This is not part of the logical triple
	// or its provenance, and contents may not be visible downstream of LG.
	LgMetadata *StorageGraphBfgLivegraphProvenanceMetadata `json:"lgMetadata,omitempty"`

	// PolicyMetadata: Metadata specifying data governance policies. This
	// information will be processed and enforced in KE systems. For more
	// context, see go/ke-triple-dg-policy-and-metadata. WARNING: This field
	// is WIP and please do not populate it without consulting
	// ke-data-governance@.
	PolicyMetadata *StorageGraphBfgPolicyMetadata `json:"policyMetadata,omitempty"`

	// Process: An identifier for the process that asserted this triple.
	Process string `json:"process,omitempty"`

	// Possible values:
	//   "REQUIRES_CITATION"
	//   "REQUIRES_PCOUNSEL_REVIEW"
	//   "UNRESTRICTED_WITHIN_GOOGLE_NO_3P_USE"
	Restrictions []string `json:"restrictions,omitempty"`

	// SourceCategory: Used to measure impact of 3P contributions. See
	// go/ke-metrics.
	//
	// Possible values:
	//   "THIRD_PARTY"
	//   "CURATION"
	//   "PARTNER_FEED"
	//   "EXTRACTION"
	SourceCategory string `json:"sourceCategory,omitempty"`

	// SourceDocId: The websearch doc_id of the source_url. Used in
	// conjunction with source_category for measuring 3P contributions.
	SourceDocId int64 `json:"sourceDocId,omitempty,string"`

	// SourceUrl: If the triple was extracted from the web, the source URL
	// where the assertion was found. Used for citation if needed (see
	// restrictions field below).
	SourceUrl string `json:"sourceUrl,omitempty"`

	// SpiiCertification: A fact about potentially sensitive personal info
	// (http://what/SPII) can be "certified" iff it meets specific
	// requirements. See go/kg-spii-certification for details.
	SpiiCertification *StorageGraphBfgSpiiCertification `json:"spiiCertification,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessRequired") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessRequired") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeGraphTripleProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeGraphTripleProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// KnowledgeVerticalsWeatherProtoUserSpecifiedLocation: A user specified
// location to trigger weather for a specific location. Also it can be
// generalized for other verticals.
type KnowledgeVerticalsWeatherProtoUserSpecifiedLocation struct {
	// FeatureId: (Mandatory) Oyster ID.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// LatLng: (Mandatory) Coordinates of the location for which weather is
	// requested.
	LatLng *GoogleTypeLatLng `json:"latLng,omitempty"`

	// LocationName: The name to display. If specified it will override the
	// formatted address of "feature_id".
	LocationName string `json:"locationName,omitempty"`

	// Mid: MID corresponding to the location from feature_id.
	Mid string `json:"mid,omitempty"`

	// Timezone: The timezone to display the current conditions observation
	// time. Optional and will override the timezone of "feature_id".
	Timezone string `json:"timezone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *KnowledgeVerticalsWeatherProtoUserSpecifiedLocation) MarshalJSON() ([]byte, error) {
	type NoMethod KnowledgeVerticalsWeatherProtoUserSpecifiedLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalCitation struct {
	// CountryCode: For Courts, the country the court is in. For Statues,? 3
	// leter country code ISO 3166 alpha2
	CountryCode string `json:"CountryCode,omitempty"`

	ParseType int64 `json:"ParseType,omitempty"`

	// State: State or province of the court or statue (if applicable) What
	// standard?
	State string `json:"State,omitempty"`

	// Type: DocType
	Type int64 `json:"Type,omitempty"`

	Courtdocument *LegalCitationCourtDocument `json:"courtdocument,omitempty"`

	Law *LegalCitationLaw `json:"law,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitation) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationCourtDocument: Information about a published version of
// the document. Not all references/documents will have this because
// some will be vendor and/or media neutral.
type LegalCitationCourtDocument struct {
	// ArguedBefore: One entry per judge who listened to the case in this
	// court
	ArguedBefore []*LegalPerson `json:"ArguedBefore,omitempty"`

	ArguedDate *LegalDate `json:"ArguedDate,omitempty"`

	// CertiorariCourtName: For an appeal, the name of the lower court that
	// sent this up Abbreviation form? Verbose form?
	CertiorariCourtName string `json:"CertiorariCourtName,omitempty"`

	CertiorariRelationship int64 `json:"CertiorariRelationship,omitempty"`

	// CourtTerm: Usually the name of a month. Not sure really what it
	// means.
	CourtTerm string `json:"CourtTerm,omitempty"`

	// DecidedDate: Various dates related to the generation of document most
	// of these are opinion-centric
	DecidedDate *LegalDate `json:"DecidedDate,omitempty"`

	FiledDate *LegalDate `json:"FiledDate,omitempty"`

	// MemoID: Not sure what this is. But I've seen it.
	MemoID string `json:"MemoID,omitempty"`

	ModifiedDate *LegalDate `json:"ModifiedDate,omitempty"`

	// Syllabus: A summary of the document or a syllabus for this document
	Syllabus string `json:"Syllabus,omitempty"`

	Court *LegalCitationCourtDocumentCourt `json:"court,omitempty"`

	Opinioninfo []*LegalCitationCourtDocumentOpinionInfo `json:"opinioninfo,omitempty"`

	Perdocketinfo []*LegalCitationCourtDocumentPerDocketInfo `json:"perdocketinfo,omitempty"`

	Pub []*LegalCitationCourtDocumentPub `json:"pub,omitempty"`

	Unknowndate []*LegalCitationCourtDocumentUnknownDate `json:"unknowndate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArguedBefore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArguedBefore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocument) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalCitationCourtDocumentCourt struct {
	// DisplayName: The name of the court to be displayed to users.
	DisplayName string `json:"DisplayName,omitempty"`

	// Level: Maybe be redundant with the Name. We can remove this later if
	// we don't find it useful. Court Level
	Level int64 `json:"Level,omitempty"`

	// Name: Court id for matching records; "name" is a historic misnomer.
	Name string `json:"Name,omitempty"`

	// OriginalName: The name of the court as taken directly from the source
	// document
	OriginalName string `json:"OriginalName,omitempty"`

	Namecomponent []*LegalCitationCourtDocumentCourtNameComponent `json:"namecomponent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentCourt) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentCourt
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationCourtDocumentCourtNameComponent: The name broken down
// into its various components, such as core court, state, and district
type LegalCitationCourtDocumentCourtNameComponent struct {
	Text string `json:"Text,omitempty"`

	Type int64 `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentCourtNameComponent) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentCourtNameComponent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationCourtDocumentOpinionInfo: A variety of opinions may be
// published as a single document. We have one OpinionInfo for each
// opinion About the "CONCURRING" opinion type: It means that a judge
// "concurs" to the conclusion (judegment) of the majority of the court,
// however, he may not agree with the argument in the primary opinion.
// If multiple judges "concur" or "dissent" the primary opinion, then
// one judge delivers their opinion, and other judges are said to "join"
// him.
type LegalCitationCourtDocumentOpinionInfo struct {
	Bench int64 `json:"Bench,omitempty"`

	// DeliveredBy: if Type == PER_CURIAM, then DeliveredBy is unnecessary
	// since it is delivered by the full court. Who delivered the opinion?
	DeliveredBy *LegalPerson `json:"DeliveredBy,omitempty"`

	// JoinedBy: Who agrees with the opinion
	JoinedBy *LegalPerson `json:"JoinedBy,omitempty"`

	// Type: OpinionType
	Type int64 `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bench") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bench") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentOpinionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentOpinionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationCourtDocumentPerDocketInfo: Information associated with
// a docket. Note that multiple dockets can be combined and argued as
// one and produce a single opinion
type LegalCitationCourtDocumentPerDocketInfo struct {
	// DocketID: An alpha-numeric (usually, mostly numeric) string used to
	// identify the case by the court
	DocketID string `json:"DocketID,omitempty"`

	// Petitioner: Who is bringing the action? (X in X vs. Y)
	Petitioner []*LegalPerson `json:"Petitioner,omitempty"`

	// PetitionerCounsel: Who represents the petitioner?
	PetitionerCounsel []*LegalPerson `json:"PetitionerCounsel,omitempty"`

	// Respondent: Who is responding to the action? (Y in X vs. Y)
	Respondent []*LegalPerson `json:"Respondent,omitempty"`

	// RespondentCounsel: Who represents the respondent?
	RespondentCounsel []*LegalPerson `json:"RespondentCounsel,omitempty"`

	// Topic: The "in re" or "matter of" field.
	Topic string `json:"Topic,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocketID") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocketID") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentPerDocketInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentPerDocketInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalCitationCourtDocumentPub struct {
	// Page: Page number
	Page string `json:"Page,omitempty"`

	// Paragraph: Paragraph number
	Paragraph string `json:"Paragraph,omitempty"`

	// Reporter: The publisher of the opinion. For example, 'U.S.' - United
	// States Reports 'S. Ct.' - Supreme Court Reporter 'L. Ed. 2d' -
	// Lawyers Edition Second Series
	Reporter string `json:"Reporter,omitempty"`

	// Volume: For documents published by a court reporter. Vendor/Media
	// neutral citations will probably not have this.
	Volume int64 `json:"Volume,omitempty"`

	// Year: This is the publication year. In many citations, there is one
	// year listed and it is typically the year the opinion was handed down.
	// For example: Roe v. Wade, 410 U.S. 113 (1973) Occasionally, the
	// publication year of the reporter is included. This happens typically
	// when the law reporter volume numbers are numbered within a calendar
	// year. For example, Swiss Bank Corp. v. Air Canada, [1988] 1 F.C. 71.
	// It some (most?) areas, publication date is denoted by [] while
	// opinion date is denoted by ().
	Year int64 `json:"Year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Page") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Page") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentPub) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentPub
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationCourtDocumentUnknownDate: Dates that we didn't fully
// parse, so we don't know exactly what they are, but we are keeping in
// case it's all we have.
type LegalCitationCourtDocumentUnknownDate struct {
	Date *LegalDate `json:"Date,omitempty"`

	Description string `json:"Description,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Date") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Date") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationCourtDocumentUnknownDate) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationCourtDocumentUnknownDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalCitationLaw struct {
	RevisionDate *LegalDate `json:"RevisionDate,omitempty"`

	// Status: LawStatus
	Status int64 `json:"Status,omitempty"`

	// Type: LawType
	Type int64 `json:"Type,omitempty"`

	Collectionname *LegalCitationLawCollectionName `json:"collectionname,omitempty"`

	Level []*LegalCitationLawLevel `json:"level,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RevisionDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RevisionDate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationLaw) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationLaw
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationLawCollectionName: this is used to store information
// about law collections Normalized is the normalized name for the law
// (e.g., USC for USCA and USCS) Source is the text that represents the
// law in the citation
type LegalCitationLawCollectionName struct {
	Normalized string `json:"Normalized,omitempty"`

	Source string `json:"Source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Normalized") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Normalized") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationLawCollectionName) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationLawCollectionName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LegalCitationLawLevel: Law have tree-like sturcture (title, section,
// etc), but the levels and their names are not fixed. e.g., we could
// have: US Constitution -> Article 3 -> Section 4, OR, US Code -> Title
// 12 -> Chapter 6 -> Sub-chapter I -> Section 602, OR, US Code -> Title
// 10 -> Sub-title A -> Part 2 -> Chapter 32 -> Section 523. We use a
// repeated group to represent this structure. NOTE: Always insert
// higher levels before lower levels,
type LegalCitationLawLevel struct {
	// Depth: A counter that specifies the depth of the level in the parse
	Depth int64 `json:"Depth,omitempty"`

	// LevelTypeNormalized: "SECTION, TITLE, PART, etc."
	LevelTypeNormalized string `json:"LevelTypeNormalized,omitempty"`

	// LevelTypeSourceText: "Section, Sect., §, etc"
	LevelTypeSourceText string `json:"LevelTypeSourceText,omitempty"`

	// LevelTypeString: deprecated
	LevelTypeString string `json:"LevelTypeString,omitempty"`

	// Name: The name of the chapter/section/etc.
	Name string `json:"Name,omitempty"`

	// Type: deprecated
	Type int64 `json:"Type,omitempty"`

	// Value: "3", "42(a)", etc
	Value string `json:"Value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Depth") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Depth") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalCitationLawLevel) MarshalJSON() ([]byte, error) {
	type NoMethod LegalCitationLawLevel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalDate struct {
	Day int64 `json:"Day,omitempty"`

	Month int64 `json:"Month,omitempty"`

	Year int64 `json:"Year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Day") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Day") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalDate) MarshalJSON() ([]byte, error) {
	type NoMethod LegalDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LegalPerson struct {
	Description string `json:"Description,omitempty"`

	LastName string `json:"LastName,omitempty"`

	OtherNames string `json:"OtherNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LegalPerson) MarshalJSON() ([]byte, error) {
	type NoMethod LegalPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStyleAestheticsScoreSignals: Aesthetics score of a style
// image. Check http://go/styleai-indexing-g3doc#aesthetic-model for
// more details about the Style AI Aesthetics Model.
type LensDiscoveryStyleAestheticsScoreSignals struct {
	// DiscretizedAestheticsScore: Aesthetics score discretized into range
	// [0, 100].
	DiscretizedAestheticsScore int64 `json:"discretizedAestheticsScore,omitempty"`

	// Possible values:
	//   "VERSION_UNKNOWN"
	//   "AESTHETICS_V1" - V1 model is deprecated.
	//   "AESTHETICS_V2"
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiscretizedAestheticsScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DiscretizedAestheticsScore") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStyleAestheticsScoreSignals) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStyleAestheticsScoreSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStyleBoundingBox: Bounding box with absolute integer
// coordinates.
type LensDiscoveryStyleBoundingBox struct {
	X1 int64 `json:"x1,omitempty"`

	X2 int64 `json:"x2,omitempty"`

	Y1 int64 `json:"y1,omitempty"`

	Y2 int64 `json:"y2,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X1") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X1") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStyleBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStyleBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStylePersonAttributes: This message holds person
// attributes from the LookNet-Person model (go/looknet-person) and the
// Style AI Iconic Person Scorer
// (http://go/styleai-indexing-g3doc#iconic-person-scorer) for the most
// iconic person in a style image. There is an ongoing collaboration
// with the Human Sensing team on LookNet-Person v3
// (go/looknet-person-v3-collaboration) that deals with some of these
// signals together. Hence, the combined proto definition.
// Discretization of float values is recommended by CDS for cheaper and
// more efficient storage. Next ID: 11
type LensDiscoveryStylePersonAttributes struct {
	// DiscretizedFaceVisibilityScore: The visibility of the face of the
	// most iconic person in the image discretized into range [0, 100].
	DiscretizedFaceVisibilityScore int64 `json:"discretizedFaceVisibilityScore,omitempty"`

	DiscretizedFemaleConfidence int64 `json:"discretizedFemaleConfidence,omitempty"`

	// DiscretizedMaleConfidence: Male and female confidence scores are
	// discretized into the [0, 100] range.
	DiscretizedMaleConfidence int64 `json:"discretizedMaleConfidence,omitempty"`

	// DiscretizedPredictedAge: Age prediction is rounded to the first
	// decimal place and multiplied by 10 (e.g. 12.3 -> 123). *** Not
	// populated in Amarna for legal reasons. ***
	DiscretizedPredictedAge int64 `json:"discretizedPredictedAge,omitempty"`

	// DiscretizedVisualSaliencyScore: The area ratio of the most iconic
	// person to the whole image discretized into range [0, 100].
	DiscretizedVisualSaliencyScore int64 `json:"discretizedVisualSaliencyScore,omitempty"`

	// PersonBoundingBox: Bounding box of the most iconic person in the
	// image.
	PersonBoundingBox *LensDiscoveryStyleBoundingBox `json:"personBoundingBox,omitempty"`

	PersonVisibilityScores *LensDiscoveryStylePersonAttributesPersonVisibilityScores `json:"personVisibilityScores,omitempty"`

	// PredictedAgeBucket: Bucketed version of the predicted age.
	//
	// Possible values:
	//   "PERSON_AGE_UNKNOWN"
	//   "PERSON_AGE_YOUNG_ADULT"
	//   "PERSON_AGE_20_29" - Between 20 and 29 years old (inclusive).
	//   "PERSON_AGE_30_49" - Between 30 and 49 years old (inclusive).
	//   "PERSON_AGE_50_64" - Between 50 and 64 years old (inclusive).
	//   "PERSON_AGE_65_74" - Between 65 and 74 years old (inclusive).
	//   "PERSON_AGE_ABOVE_75"
	PredictedAgeBucket string `json:"predictedAgeBucket,omitempty"`

	// Possible values:
	//   "VERSION_UNKNOWN"
	//   "LOOKNET_PERSON_V2B" - LookNet-Person v2b uses Person Visibility v1
	// model's outputs for person visibility predictions.
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiscretizedFaceVisibilityScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DiscretizedFaceVisibilityScore") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStylePersonAttributes) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStylePersonAttributes
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LensDiscoveryStylePersonAttributesPersonVisibilityScores struct {
	// DiscretizedPersonVisibilityScore: A measure of the visibility of the
	// most iconic person between [0, 100], derived by combining all label
	// predictions by the Person Visibility model according to
	// go/person-visibility-formula. Higher values indicate greater
	// visibility while lower values indicate lesser visibility.
	DiscretizedPersonVisibilityScore int64 `json:"discretizedPersonVisibilityScore,omitempty"`

	// PersonVisibilityPredictions: Repeated for # of PersonVisibility
	// types.
	PersonVisibilityPredictions []*LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction `json:"personVisibilityPredictions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiscretizedPersonVisibilityScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DiscretizedPersonVisibilityScore") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStylePersonAttributesPersonVisibilityScores) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStylePersonAttributesPersonVisibilityScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction struct {
	// DiscretizedIconicPersonVisibilityConfidence: Confidence score of the
	// visibility type prediction discretized into range [0, 100].
	DiscretizedIconicPersonVisibilityConfidence int64 `json:"discretizedIconicPersonVisibilityConfidence,omitempty"`

	// IconicPersonVisibilityType: Classification of how much of the body of
	// the most iconic person in the image is visible.
	//
	// Possible values:
	//   "PERSON_VISIBILITY_UNKNOWN"
	//   "PERSON_VISIBILITY_HEAD_AND_SHOULDERS_ONLY"
	//   "PERSON_VISIBILITY_HALF_LENGTH"
	//   "PERSON_VISIBILITY_THREE_QUARTER_LENGTH"
	//   "PERSON_VISIBILITY_FULL_LENGTH"
	IconicPersonVisibilityType string `json:"iconicPersonVisibilityType,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiscretizedIconicPersonVisibilityConfidence") to unconditionally
	// include in API requests. By default, fields with empty or default
	// values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DiscretizedIconicPersonVisibilityConfidence") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStylePersonDetectionSignals: This message holds bounding
// boxes of detected people in the image. Next ID: 3
type LensDiscoveryStylePersonDetectionSignals struct {
	// DetectedPersons: Information of all detected people in the image,
	// sorted by decreasing size of the bounding box. We store a maximum of
	// 10 detected people.
	DetectedPersons []*LensDiscoveryStylePersonDetectionSignalsDetectedPerson `json:"detectedPersons,omitempty"`

	// Possible values:
	//   "VERSION_UNKNOWN"
	//   "FASTER_RCNN" - Faster-RCNN model is used with the LookNet-Person
	// v2b person attributes model. There are plans to upgrade to different
	// person detectors with upcoming LookNet-Person v3 model. PTAL at
	// b/203233422 for more context.
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DetectedPersons") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DetectedPersons") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStylePersonDetectionSignals) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStylePersonDetectionSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStylePersonDetectionSignalsDetectedPerson: Holds
// information about a detected person in the image.
type LensDiscoveryStylePersonDetectionSignalsDetectedPerson struct {
	// BoundingBox: Bounding box of the detected person.
	BoundingBox *LensDiscoveryStyleBoundingBox `json:"boundingBox,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStylePersonDetectionSignalsDetectedPerson) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStylePersonDetectionSignalsDetectedPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LensDiscoveryStyleStyleImageTypeSignals: Prediction of a style image
// type: Stage, Stock, Street or Outfits. Check
// http://go/styleai-indexing-g3doc#style-image-type-classifier for more
// details about the Style AI Style Image Type Classifier.
type LensDiscoveryStyleStyleImageTypeSignals struct {
	// StyleImageTypePredictions: Repeated for # of StyleImageType types.
	StyleImageTypePredictions []*LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction `json:"styleImageTypePredictions,omitempty"`

	// Possible values:
	//   "VERSION_UNKNOWN"
	//   "STYLE_IMAGE_TYPE_V1"
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "StyleImageTypePredictions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "StyleImageTypePredictions") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStyleStyleImageTypeSignals) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStyleStyleImageTypeSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction struct {
	// DiscretizedStyleImageTypeConfidence: Style image type confidence
	// discretized into range [0, 100].
	DiscretizedStyleImageTypeConfidence int64 `json:"discretizedStyleImageTypeConfidence,omitempty"`

	// StyleImageType: Predicted style image type.
	//
	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "TYPE_STAGE"
	//   "TYPE_STOCK"
	//   "TYPE_STREET"
	//   "TYPE_OUTFITS"
	StyleImageType string `json:"styleImageType,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiscretizedStyleImageTypeConfidence") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DiscretizedStyleImageTypeConfidence") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction) MarshalJSON() ([]byte, error) {
	type NoMethod LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ListSnippetResponse: Data to generate the list snippets UI.
type ListSnippetResponse struct {
	Header *ListSnippetResponseRow `json:"header,omitempty"`

	// IsTable: Should list be formatted as a table?
	IsTable bool `json:"isTable,omitempty"`

	Row []*ListSnippetResponseRow `json:"row,omitempty"`

	// TotalRows: The number of rows annotated in the doc, of which 'row' is
	// a subset.
	TotalRows int64 `json:"totalRows,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Header") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Header") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ListSnippetResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListSnippetResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ListSnippetResponseRow struct {
	Column []string `json:"column,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Column") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Column") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ListSnippetResponseRow) MarshalJSON() ([]byte, error) {
	type NoMethod ListSnippetResponseRow
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LocalWWWInfo: Next Id: 36
type LocalWWWInfo struct {
	Address []*LocalWWWInfoAddress `json:"address,omitempty"`

	BrickAndMortarStrength float64 `json:"brickAndMortarStrength,omitempty"`

	Cluster []*LocalWWWInfoCluster `json:"cluster,omitempty"`

	Docid uint64 `json:"docid,omitempty,string"`

	// Geotopicality: Information about geo locations, rather than
	// individual businesses.
	Geotopicality *RepositoryAnnotationsGeoTopicality `json:"geotopicality,omitempty"`

	Hours []*LocalWWWInfoOpeningHours `json:"hours,omitempty"`

	// IsLargeChain: Does this LocalWWWInfo represent a widely-distributed
	// chain?
	IsLargeChain bool `json:"isLargeChain,omitempty"`

	IsLargeLocalwwwinfo bool `json:"isLargeLocalwwwinfo,omitempty"`

	Phone []*LocalWWWInfoPhone `json:"phone,omitempty"`

	// SiteSiblings: These are per-document signals independent of any
	// particular address.
	SiteSiblings int64 `json:"siteSiblings,omitempty"`

	// Url: These are for convenience during intermediate data processing,
	// and should be cleared before the data gets into doc-joins.
	Url string `json:"url,omitempty"`

	WrapptorItem []*LocalWWWInfoWrapptorItem `json:"wrapptorItem,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Address") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Address") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *LocalWWWInfo) UnmarshalJSON(data []byte) error {
	type NoMethod LocalWWWInfo
	var s1 struct {
		BrickAndMortarStrength gensupport.JSONFloat64 `json:"brickAndMortarStrength"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BrickAndMortarStrength = float64(s1.BrickAndMortarStrength)
	return nil
}

// LocalWWWInfoAddress: These are the addresses, phone numbers, and
// opening hours related to this document, or the local businesses
// mentioned on this document. We currently populate these fields from
// web extractions, i.e, from the data present explicitly on the
// document, but in future, they can also be filled with data coming
// from the local index. We populate addresses and phone numbers only if
// there are <= 4 addresses and phone numbers on the document,
// respectively. This is primarily for space reasons.
type LocalWWWInfoAddress struct {
	AddrFprint uint64 `json:"addrFprint,omitempty,string"`

	Address *GeostoreAddressProto `json:"address,omitempty"`

	LatE7 int64 `json:"latE7,omitempty"`

	LngE7 int64 `json:"lngE7,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddrFprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddrFprint") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfoAddress) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfoAddress
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LocalWWWInfoCluster struct {
	AddrFprint uint64 `json:"addrFprint,omitempty,string"`

	// AnnotationConfidence: Confidence score for business mention
	// annotations which is copied from
	// LocalEntityAnnotations::location_confidence.
	AnnotationConfidence float64 `json:"annotationConfidence,omitempty"`

	Clusterdocid uint64 `json:"clusterdocid,omitempty,string"`

	Clusterid string `json:"clusterid,omitempty"`

	// Confidence: Probability that this is the authority page of the
	// business. Same as LocalListing.authority_page_probability, only set
	// for pages with page_type_flags & AUTHORITY.
	Confidence float64 `json:"confidence,omitempty"`

	// FeatureType: Feature type for this listing, from
	// LocalListing::info::related_feature. A
	// geostore::FeatureProto::TypeCategory. Intended primarily to indicate
	// POI-ness (i.e., TYPE_ESTABLISHMENT_POI).
	FeatureType int64 `json:"featureType,omitempty"`

	// Hours: Opening hours for the business, from Local attributes and/or
	// extracted annotations.
	Hours *GeostoreTimeScheduleProto `json:"hours,omitempty"`

	// Possible values:
	//   "LOCAL" - Data comes from attributes in the Local index.
	//   "EXTRACTED_ONPAGE" - Data comes from annotations on this page.
	HoursSource string `json:"hoursSource,omitempty"`

	IncludeInIndex bool `json:"includeInIndex,omitempty"`

	// IsPlusbox: TODO(local-universal) Consider deleting is_plusbox once
	// the new scheme that uses make_plusbox_visible rolled out.
	IsPlusbox bool `json:"isPlusbox,omitempty"`

	LatitudeE6 int64 `json:"latitudeE6,omitempty"`

	// Level: DEPRECATED / NO LONGER WRITTEN. URL path level from actual
	// references to this webpage.
	Level int64 `json:"level,omitempty"`

	LongitudeE6 int64 `json:"longitudeE6,omitempty"`

	// MakePlusboxVisible: A hint for frontend to decide whether this
	// plusbox should be visible or not.
	MakePlusboxVisible bool `json:"makePlusboxVisible,omitempty"`

	// MenuUrl: Menu link for the business. Currently only comes from Local
	// attributes.
	MenuUrl []string `json:"menuUrl,omitempty"`

	// PageTypeFlags: Type of the web reference.
	PageTypeFlags int64 `json:"pageTypeFlags,omitempty"`

	PhoneFprint uint64 `json:"phoneFprint,omitempty,string"`

	PhoneNumber *TelephoneNumber `json:"phoneNumber,omitempty"`

	PostalAddress *PostalAddress `json:"postalAddress,omitempty"`

	// Relevance: DEPRECATED / NO LONGER WRITTEN. How relevant the webpage
	// is to the business (clustering distance). Same as
	// LocalListing::Reference.relevance. Typically only set for pages with
	// (page_type_flags & WEB_EXTRACTION && !AUTHORITY).
	Relevance float64 `json:"relevance,omitempty"`

	ShowInSnippets bool `json:"showInSnippets,omitempty"`

	Source []string `json:"source,omitempty"`

	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddrFprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddrFprint") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfoCluster) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfoCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *LocalWWWInfoCluster) UnmarshalJSON(data []byte) error {
	type NoMethod LocalWWWInfoCluster
	var s1 struct {
		AnnotationConfidence gensupport.JSONFloat64 `json:"annotationConfidence"`
		Confidence           gensupport.JSONFloat64 `json:"confidence"`
		Relevance            gensupport.JSONFloat64 `json:"relevance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnnotationConfidence = float64(s1.AnnotationConfidence)
	s.Confidence = float64(s1.Confidence)
	s.Relevance = float64(s1.Relevance)
	return nil
}

// LocalWWWInfoOpeningHours: Populated from StoreHoursAnnotations.
type LocalWWWInfoOpeningHours struct {
	Hours *GeostoreTimeScheduleProto `json:"hours,omitempty"`

	HoursFprint uint64 `json:"hoursFprint,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Hours") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hours") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfoOpeningHours) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfoOpeningHours
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LocalWWWInfoPhone struct {
	PhoneFprint uint64 `json:"phoneFprint,omitempty,string"`

	PhoneNumber *TelephoneNumber `json:"phoneNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PhoneFprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PhoneFprint") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfoPhone) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfoPhone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LocalWWWInfoWrapptorItem: A single WrapptorItem, with a business
// name, an address and a phone number. We keep only the fingerprints of
// address and phone number. The full address and phone protos will be
// elsewhere within LocalWWWInfo.
type LocalWWWInfoWrapptorItem struct {
	AddrFprint uint64 `json:"addrFprint,omitempty,string"`

	BizName string `json:"bizName,omitempty"`

	PhoneFprint uint64 `json:"phoneFprint,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AddrFprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddrFprint") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalWWWInfoWrapptorItem) MarshalJSON() ([]byte, error) {
	type NoMethod LocalWWWInfoWrapptorItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LocalsearchChainId: An unique identification of a chain. The
// following are the possible chain id forms: 1) prominent_entity_id
// only: The entity uniquely represents a chain, which may have multiple
// sitechunks. 2) sitechunk only: The sitechunk uniquely represents a
// chain while the chain currently does not have an entity in KG. 3)
// prominent_entity_id + sitechunk: The chain could be represented by
// the entity, but not merged at last, and the sitechunks represents the
// chain better. 4) prominent_entity_id + category: There are multiple
// subchains for the prominent entity, and category is used to
// differentiate subchains. NOTE: the size and complexity of the ChainId
// proto has implications in the serving system and should be
// thoughtfully kept under control.
type LocalsearchChainId struct {
	// Category: The category associated with this chain, currently only
	// used for subchains.
	Category string `json:"category,omitempty"`

	// ProminentEntityId: The Knowledge Graph (KG) entity of the chain,
	// found and used in chain mining.
	ProminentEntityId string `json:"prominentEntityId,omitempty"`

	// Sitechunk: The website sitechunk/domain that is owned by the chain.
	Sitechunk string `json:"sitechunk,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalsearchChainId) MarshalJSON() ([]byte, error) {
	type NoMethod LocalsearchChainId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LocalsearchDocInfo: Next tag: 23
type LocalsearchDocInfo struct {
}

// LocalsearchProtoInternalFoodOrderingActionMetadata: * Proto
// representing the metadata associated with food ordering internal
// action. Next ID: 13
type LocalsearchProtoInternalFoodOrderingActionMetadata struct {
	// ActionType: The action type of this action metadata.
	//
	// Possible values:
	//   "UNKNOWN_ACTION_TYPE" - Unknown type.
	//   "E2E" - Actions lead users to Food Ordering site
	// (orderfood.google.com), powered by end to end partners that signed
	// the full integration contact with Google. This is the default action
	// type for most cases. go/fopa-order-button-placesheet
	//   "TOA" - TOA actions lead users to TOA site (eg.
	// https://ordering.app/cuba512/downtown/contact/).
	// go/payfood-entrypoint-experiments
	//   "AUTOBOT" - DEPRECATED(b/261496948): Autobot has been sunset.
	// Autobot actions lead users to 3p site that support Autobot.
	// go/fo-autobot-triggering
	//   "PAS" - PAS actions lead users to Food Ordering site
	// (orderfood.google.com), but powered by PAS partners. Note that if one
	// restaurant is supported by both E2E and PAS partners, the action type
	// should still be E2E. go/fo-pas-integration
	ActionType string `json:"actionType,omitempty"`

	// HasPrimarilyFoodIntent: If true, it indicates that the merchant has a
	// primarily food intent. This field will only be set when
	// enable_food_gcid_strict_check in FoodOrderingRestrictionProto is
	// true, see go/togo-unified:overlapping-for-le. See
	// go/togo-unified-gcid for how this is calculated.
	HasPrimarilyFoodIntent bool `json:"hasPrimarilyFoodIntent,omitempty"`

	// IsOutOfOperationalHours: If set, indicates that the food ordering
	// service is out of operational hours. This could only be populated if
	// the request explicitly asks for ignore_operational_hours in request
	// (universalsearch/rpc/geo/food_ordering_restriction.proto). Design
	// doc: go/fo-persistent-v1.
	IsOutOfOperationalHours bool `json:"isOutOfOperationalHours,omitempty"`

	// IsWhitelistedExternalRestaurant: When true, indicates that this is a
	// whitelisted restaurant from a first party (but non FO) partner, i.e.
	// a merchant from the orderig app, who is Google owned first party food
	// ordering platform. Design doc: go/onboard-mavn-to-fo. Tracking bug:
	// b/150331855
	IsWhitelistedExternalRestaurant bool `json:"isWhitelistedExternalRestaurant,omitempty"`

	// NextOpeningTime: Next opening time when the food ordering service
	// will be available. This is only present if the unavailability reason
	// is OUT_OF_OPERATIONAL_HOURS.
	NextOpeningTime string `json:"nextOpeningTime,omitempty"`

	// OnlyOrderAheadServicesAvailable: Indicates whether only order ahead
	// services are available. Order ahead services allow only to place
	// order for future and ASAP order can not be placed via them.
	OnlyOrderAheadServicesAvailable bool `json:"onlyOrderAheadServicesAvailable,omitempty"`

	// ServiceInfo: Aggregated service information by service type. Each
	// service type would only have one ServiceInfo. Optional.
	ServiceInfo []*LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo `json:"serviceInfo,omitempty"`

	// SupportedServiceType: Food ordering service type.
	//
	// Possible values:
	//   "UNKNOWN_TYPE" - Default enum value should never be used explicitly
	// as default value field gets cleared from the final response. This can
	// be returned only when all the partners supporting the business are
	// log only partners.
	//   "DELIVERY" - Delivery service type.
	//   "PICKUP" - Pick up service type.
	//   "ANY_TYPE" - ANY_TYPE means that there is no restriction on the
	// service type and both delivery/pickup are fine.
	SupportedServiceType string `json:"supportedServiceType,omitempty"`

	// UnavailabilityReason: Reason for unavailability of internal food
	// ordering action. This is only present when FOPA is unavailable for a
	// particular restaurant. When this is set, all other fields in this
	// proto will not be populated. Note(fo-search): If there are log only
	// partners and this particular restaurant is only supported because of
	// log only partners, this field will not be set to
	// NOT_INTEGRATED_WITH_FOPA.
	//
	// Possible values:
	//   "UNKNOWN_REASON" - Catch-all for unrecognized enum values. See
	// go/protodosdonts.
	//   "NOT_INTEGRATED_WITH_FOPA" - Indicates the restaurant is not
	// integrated with any partner.
	//   "OUT_OF_OPERATIONAL_HOURS" - Indicates that the food ordering
	// service is considered as not available due to out of operational
	// hours. This could only be populated if ignore_operational_hours is
	// set to false in the request
	// (universalsearch/rpc/geo/food_ordering_restriction.proto).
	//   "OUT_OF_SERVICE_AREA" - Unable to deliver to requested address due
	// to border rules etc.
	//   "PERMANENTLY_CLOSED" - Indicates that the resutaurant is
	// permanently closed.
	//   "BLACKLISTED" - Blacklist file:
	// /googledata/superroot/food_ordering/fopa_blacklisted_chains.txt
	// /googledata/superroot/food_ordering/fopa_blacklisted_restaurants.txt
	//   "TEMPORARILY_CLOSED" - Indicates that the resutaurant is
	// temporarily closed.
	UnavailabilityReason string `json:"unavailabilityReason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActionType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LocalsearchProtoInternalFoodOrderingActionMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod LocalsearchProtoInternalFoodOrderingActionMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo
// : Includes all partners that are either open now or supporting order
// ahead.
type LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo struct {
	// AvailablePartnerId: Available partner's id.
	AvailablePartnerId int64 `json:"availablePartnerId,omitempty,string"`

	// LogOnly: Indicates whether the partner is log only.
	LogOnly bool `json:"logOnly,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvailablePartnerId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailablePartnerId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo struct {
	// AvailablePartnerInfo: Information about Food Ordering partner, which
	// is used for whitelisting the partner in Food Ordering entry points
	// such as Placesheet.
	AvailablePartnerInfo []*LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo `json:"availablePartnerInfo,omitempty"`

	// MaxWaitTimeSec: Maximum max_wait_time in second.
	MaxWaitTimeSec int64 `json:"maxWaitTimeSec,omitempty,string"`

	// MinDeliveryFee: Only present for delivery case, service fee is not
	// included.
	MinDeliveryFee *GoogleTypeMoney `json:"minDeliveryFee,omitempty"`

	// MinWaitTimeSec: Minimum min_wait_time in second.
	MinWaitTimeSec int64 `json:"minWaitTimeSec,omitempty,string"`

	// ServiceType: Food ordering service type. Please note that only
	// ServiceType.PICKUP and ServiceType.DELIVERY are valid values for this
	// field.
	//
	// Possible values:
	//   "UNKNOWN_TYPE" - Default enum value should never be used explicitly
	// as default value field gets cleared from the final response. This can
	// be returned only when all the partners supporting the business are
	// log only partners.
	//   "DELIVERY" - Delivery service type.
	//   "PICKUP" - Pick up service type.
	//   "ANY_TYPE" - ANY_TYPE means that there is no restriction on the
	// service type and both delivery/pickup are fine.
	ServiceType string `json:"serviceType,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AvailablePartnerInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailablePartnerInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsProtoIndexingCrawlerIdCrawlerIdProto: Proto-representation of the
// Crawler-ID in Web-Search (Alexandria-Scope). The
// string-representation (covered in
// //indexing/crawler_id/scope/alexandria/crawler_id.h) and the
// proto-representation are identical in meaning. For more information
// in regard to the crawler_id, please look at
// //depot/google3/indexing/crawler_id Used within the following
// components: - WebMirror: To understand the parsed crawler-ID and
// apply attributes within their own tables. - Serving : to identify the
// crawler-ID within the GenericSearchResponse, which implies being
// stored in the MDU and returned by ascorer to Superroot. - QSessions:
// To store the crawler-ID in all logged events for analysis. The
// default values represent the 'empty string' crawler-ID for the
// Alexandria-scope.
type LogsProtoIndexingCrawlerIdCrawlerIdProto struct {
	// Country: The country to crawl the country from, defaults to the
	// default non-specified crawling node (which is interpreted by most
	// web-servers as USA). When specified, the crawling will fetch the
	// document from a node in that country instead.
	//
	// Possible values:
	//   "NO_COUNTRY"
	//   "AUSTRALIA" - The countries are sorted by alphabet for convenience.
	//   "CANADA"
	//   "GREAT_BRITAIN"
	//   "MEXICO"
	//   "RUSSIA"
	Country string `json:"country,omitempty"`

	// DeviceType: The device type, which maps into the useragent to be set
	// when initiating the fetch-request, e.g. desktop-googlebot vs.
	// smartphone-googlebot.
	//
	// Possible values:
	//   "DESKTOP"
	//   "SMARTPHONE" - SMARTPHONE refers to the Android user agent as used
	// for web browsing on Android. It is used in general to get the version
	// of a webpage as returned to smartphones, being both Android or iOS.
	//   "MOBILE" - MOBILE refers to old-styled mobile phones (WAP
	// browsers). No longer used for new data.
	//   "JPMOBILE" - JPMOBILE refers to old-styled mobile phones (CHTML,
	// mainly in japan). No longer used for new data.
	//   "IMAGE" - IMAGE/VIDEO are specific user-agents used for the image
	// and video crawl on the web, variations of the GoogleBot, essentially.
	//   "VIDEO"
	//   "APP" - APP is for app-uris, which is using in Aquarius v1.
	// go/aquarius-design
	//   "ANDROID_APP" - ANDROID_APP and IOS_APP are for universal links,
	// which are using in Calypso / Aquarius universal pipeline.
	// go/v4-indexing
	//   "IOS_APP"
	//   "PIDGIN" - PIDGIN is for synthetic docs served using the Horizon
	// pipeline. go/pidgin-design.
	DeviceType string `json:"deviceType,omitempty"`

	// IndexGrowthExptType: Specifies whether the document is a duplicated
	// document from the index growth experiment, detailed at
	// go/indexsize_exp, defaults to not in any experiment.
	//
	// Possible values:
	//   "INDEX_GROWTH_EXPERIMENT_TYPE_DEFAULT"
	//   "INDEX_GROWTH_EXPERIMENT_TYPE_DUPLICATED" - Denotes a document that
	// is a duplicate.
	IndexGrowthExptType string `json:"indexGrowthExptType,omitempty"`

	// Language: The language being set by the crawler. Defaults to
	// UNKNOWN_LANGUAGE which indicates to not apply an accept-language
	// header on the FetchRequest. When a language is specified, on crawling
	// this language is converted into an accept-language header (e.g.
	// GERMAN -> "Accept-language: de"). Script variations, e.g. ZH-HANS vs.
	// ZH-HANT, are handled as different enum values (e.g. CHINESE vs.
	// CHINESE_T).
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	Language string `json:"language,omitempty"`

	// LanguageCode: Language-code used for identifying the locale of the
	// document. 'language' and 'country' above are used for web-based
	// documents, representing the detected language of the document and the
	// country it was crawled from. The language code here, however, rather
	// represents an artifical language_code applied to manually translated
	// webpages (e.g. feeds), for instance for the pidgin-usecase. They are
	// limited to the set of III-codes being supported by the client, yet
	// are beyond the enum in 'language', e.g. to support variants of
	// English across different countries.
	//
	// Possible values:
	//   "LANGCODE_UNKNOWN"
	//   "LANGCODE_EN_US"
	//   "LANGCODE_EN_AU"
	//   "LANGCODE_EN_CA"
	//   "LANGCODE_DE_DE"
	//   "LANGCODE_FR_FR"
	//   "LANGCODE_FR_CA"
	LanguageCode string `json:"languageCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Country") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Country") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LogsProtoIndexingCrawlerIdCrawlerIdProto) MarshalJSON() ([]byte, error) {
	type NoMethod LogsProtoIndexingCrawlerIdCrawlerIdProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsSemanticInterpretationIntentQueryEntityLinkMetadata: Logs version
// of the repository_webref.EntityLinkMetadata proto Used to represent
// QRef implications
type LogsSemanticInterpretationIntentQueryEntityLinkMetadata struct {
	AggregateFlags *LogsSemanticInterpretationIntentQueryLinkKindFlags `json:"aggregateFlags,omitempty"`

	KindInfo []*LogsSemanticInterpretationIntentQueryLinkKindInfo `json:"kindInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregateFlags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregateFlags") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *LogsSemanticInterpretationIntentQueryEntityLinkMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod LogsSemanticInterpretationIntentQueryEntityLinkMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsSemanticInterpretationIntentQueryLinkKindFlags: Logs version of
// the repository_webref.LinkKindFlags proto Used to represent QRef
// implications Next available tag: 8
type LogsSemanticInterpretationIntentQueryLinkKindFlags struct {
	// Possible values:
	//   "NO_CLUSTER"
	//   "CLUSTER_CHILD_OF" - The main entity is a child of the linked
	// entity.
	//   "CLUSTER_PARENT_OF" - The main entity is a parent of the linked
	// entity.
	Cluster string `json:"cluster,omitempty"`

	// Possible values:
	//   "NO_CONTAINMENT"
	//   "CONTAINED_BY" - The main entity is a geographically contained by
	//   "CONTAINS" - the linked entity. The main entity is a geographical
	// container of
	//   "PARTIAL_OVERLAP" - the linked entity. The main entity partially
	// overlaps with the
	//   "HAS_STREET_NUMBER" - linked entity. The main entity is a street
	// and contains the
	//   "LOCATED_ON_STREET" - street number that is represented by the
	// linked entity. The main entity is a street number and is
	GeoContainment string `json:"geoContainment,omitempty"`

	// Possible values:
	//   "NO_IMPLICATION"
	//   "IMPLIED_BY" - The main entity is implied by the linked entity.
	//   "IMPLIES" - The main entity implies the linked entity.
	//   "BIDIRECTIONAL_IMPLICATION" - Both entities imply each other.
	//   "UNDERMERGED" - Both entities are the same concept.
	Implication string `json:"implication,omitempty"`

	// Possible values:
	//   "NO_LATENT_ENTITY" - There is no latent entity relationship between
	// the entities. Default value, should not be explicitly set.
	//   "LATENT_ENTITY" - The relationship points to a latent entity. For
	// example, if "Lionel Messi" has latent entity "FC Barcelona", this
	// should be populated on the relationship from Messi to Barcelona.
	//   "MANIFEST_ENTITY" - The reverse of LATENT_ENTITY, e.g. from "FC
	// Barcelona" to "Lionel Messi".
	//   "LATENT_ENTITY_V2" - Links pointing to latent entities according to
	// the new hierarchy. See go/refx-latent-entities.
	//   "MANIFEST_ENTITY_V2" - Links pointing to manifest entities
	// according to the new hierarchy.
	LatentEntity string `json:"latentEntity,omitempty"`

	// Possible values:
	//   "NO_MDVC"
	//   "MDVC_SPECIALIZATION_OF" - (Transitive) descendant in MDVC
	// hierarchy.
	//   "MDVC_GENERALIZATION_OF" - (Transitive) ancestor in MDVC hierarchy.
	//   "MDVC_DIMENSION_VALUE" - MDVC attribute.
	//   "MDVC_DIMENSION_VALUE_OF" - MDVC attribute owner.
	//   "MDVC_RESOLUTION" - MDVC resolution.
	//   "MDVC_EXPANDED_OUTPUT" - MDVC_EXPANDED_OUTPUT is used to mark the
	// link between annotated entities and the entities that were added by
	// output expansion, e.g. from a car model to the latest model year.
	Mdvc string `json:"mdvc,omitempty"`

	// Possible values:
	//   "NO_PROPERTY" - There is no property relationship between the
	// entities. Default value, should not be explicitly set.
	//   "EQUIVALENT_TOPIC" - The relationship points from a property to its
	// equivalent topic. For example, from /people/person/parents to
	// /m/Parent.
	//   "EQUIVALENT_PROPERTY" - The relationship points from a topic to an
	// equivalent property. For example, from /m/Parent to
	// /people/person/parents.
	Property string `json:"property,omitempty"`

	// Possible values:
	//   "NO_RESOLUTION"
	//   "MAY_BE_RESOLVED_FROM" - The link type is such that we may add a
	//   "MAY_RESOLVE_TO" - RESOLVED_FROM attribute to it later. The link
	// type is such that we may add a
	//   "RESOLVED_FROM" - RESOLVES_TO attribute to it later. The current
	// entity is resolved from the linked
	//   "RESOLVES_TO" - entity (e.g. the link goes from to ). The current
	// entity is one of the entities that
	Resolution string `json:"resolution,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cluster") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cluster") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LogsSemanticInterpretationIntentQueryLinkKindFlags) MarshalJSON() ([]byte, error) {
	type NoMethod LogsSemanticInterpretationIntentQueryLinkKindFlags
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsSemanticInterpretationIntentQueryLinkKindInfo: Logs version of
// the repository_webref.LinkKindInfo proto Used to represent QRef
// implications
type LogsSemanticInterpretationIntentQueryLinkKindInfo struct {
	Flags *LogsSemanticInterpretationIntentQueryLinkKindFlags `json:"flags,omitempty"`

	KcLinkName string `json:"kcLinkName,omitempty"`

	TopicPropertyName string `json:"topicPropertyName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Flags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Flags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LogsSemanticInterpretationIntentQueryLinkKindInfo) MarshalJSON() ([]byte, error) {
	type NoMethod LogsSemanticInterpretationIntentQueryLinkKindInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsSemanticInterpretationIntentQuerySupportTransferRule: Logs
// version of the repository_webref.SupportTransferRule proto Non-logs
// version supports go/stbr
type LogsSemanticInterpretationIntentQuerySupportTransferRule struct {
	AllowWildcardIntents bool `json:"allowWildcardIntents,omitempty"`

	Domain string `json:"domain,omitempty"`

	IsReverseLink bool `json:"isReverseLink,omitempty"`

	MentionsOnly bool `json:"mentionsOnly,omitempty"`

	SupportShare bool `json:"supportShare,omitempty"`

	TargetCollection string `json:"targetCollection,omitempty"`

	UserCountry string `json:"userCountry,omitempty"`

	UserLanguage string `json:"userLanguage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowWildcardIntents") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowWildcardIntents") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *LogsSemanticInterpretationIntentQuerySupportTransferRule) MarshalJSON() ([]byte, error) {
	type NoMethod LogsSemanticInterpretationIntentQuerySupportTransferRule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// LogsSemanticInterpretationIntentQueryWebrefEntityRelationship: Logs
// version of the repository_webref.WebrefEntityRelationship proto Used
// to represent QRef implications
type LogsSemanticInterpretationIntentQueryWebrefEntityRelationship struct {
	EntityIndex int64 `json:"entityIndex,omitempty"`

	LinkMetadata *LogsSemanticInterpretationIntentQueryEntityLinkMetadata `json:"linkMetadata,omitempty"`

	LinkWeight float64 `json:"linkWeight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LogsSemanticInterpretationIntentQueryWebrefEntityRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod LogsSemanticInterpretationIntentQueryWebrefEntityRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *LogsSemanticInterpretationIntentQueryWebrefEntityRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod LogsSemanticInterpretationIntentQueryWebrefEntityRelationship
	var s1 struct {
		LinkWeight gensupport.JSONFloat64 `json:"linkWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LinkWeight = float64(s1.LinkWeight)
	return nil
}

// LongStructuredSnippet: An experimental long snippet. The protocol
// allows any permutation of headers and plain text paragraphs, but
// typical responses are just paragraphs or alternating headers and
// paragraphs.
type LongStructuredSnippet struct {
	Entry []*LongStructuredSnippetEntry `json:"entry,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entry") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LongStructuredSnippet) MarshalJSON() ([]byte, error) {
	type NoMethod LongStructuredSnippet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type LongStructuredSnippetEntry struct {
	// Header: Is this a header or normal paragraph?
	Header bool `json:"header,omitempty"`

	// Text: The text of the header or paragraph.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Header") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Header") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *LongStructuredSnippetEntry) MarshalJSON() ([]byte, error) {
	type NoMethod LongStructuredSnippetEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MajelContactInformationShortcutInformation: The information on
// whether the contact is related to an app shortcut. Next ID: 2
type MajelContactInformationShortcutInformation struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "NON_SHORTCUT"
	//   "INDIVIDUAL"
	//   "GROUP"
	ShortcutContactType string `json:"shortcutContactType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ShortcutContactType")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ShortcutContactType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *MajelContactInformationShortcutInformation) MarshalJSON() ([]byte, error) {
	type NoMethod MajelContactInformationShortcutInformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MapsQualitySpecialWordsFlags: Flags that describe the information
// about a special word. If you add another flag please add it to the
// special words implemenation in
// google3/maps/quality/internal/special_words.cc. -- Next available id:
// 22 --
type MapsQualitySpecialWordsFlags struct {
	// IsAlleyAffix: An affix that indicates an alley. Alleys are unnamed,
	// numbered routes that are always linked to a "parent street". As these
	// parent streets can be named e.g. "7th street" and alleys might be
	// referred to as "7th alley", we need to be able to distinguish those
	// affixes. For more details about alleys see go/vn-alley-geocoding.
	IsAlleyAffix bool `json:"isAlleyAffix,omitempty"`

	// IsCommonWord: Common words E.g.: center, park, etc.
	IsCommonWord bool `json:"isCommonWord,omitempty"`

	// IsDeconstructible: Whether this special word is part of a name
	// without a separator (like e.g. suffix "strasse" in Freigutstrasse).
	IsDeconstructible bool `json:"isDeconstructible,omitempty"`

	// IsDirectionalModifier: Directional modifier. E.g.: north, south, etc.
	IsDirectionalModifier bool `json:"isDirectionalModifier,omitempty"`

	// IsDistanceMarker: An affix that indicates distance marker on a route,
	// e.g., 'km'.
	IsDistanceMarker bool `json:"isDistanceMarker,omitempty"`

	// IsForbiddenWord: Whether geo paths are forbidden to contain this
	// word.
	IsForbiddenWord bool `json:"isForbiddenWord,omitempty"`

	// IsHouseIdIdentifier: A keyword for a house id.
	IsHouseIdIdentifier bool `json:"isHouseIdIdentifier,omitempty"`

	// IsIntersectionConnector: Intersection. E.g.: and, at, corner.
	IsIntersectionConnector bool `json:"isIntersectionConnector,omitempty"`

	// IsLandmarkIdentifier: An affix that indicates a landmark, e.g.
	// "opposite", "near" etc.
	IsLandmarkIdentifier bool `json:"isLandmarkIdentifier,omitempty"`

	// IsLanguageIndicator: Language indicator. E.g.: platz in German,
	// straat in Dutch.
	IsLanguageIndicator bool `json:"isLanguageIndicator,omitempty"`

	// IsNameSynonym: Whether this is a name synonym and should be allowed
	// to be matched on when searching (that is, added to the retrieval
	// query with the name/ prefix).
	IsNameSynonym bool `json:"isNameSynonym,omitempty"`

	// IsNotForLegacyStreetNumberDetection: Terms which are not allowed to
	// be used by the legacy street number detection.
	IsNotForLegacyStreetNumberDetection bool `json:"isNotForLegacyStreetNumberDetection,omitempty"`

	// IsNotOptionalizable: Terms which are not allowed to be treated as
	// optional.
	IsNotOptionalizable bool `json:"isNotOptionalizable,omitempty"`

	// IsNumber: Numbers. E.g.: 1, one, 2, two.
	IsNumber bool `json:"isNumber,omitempty"`

	// IsNumberSuffix: E.g. suffixes in French: bis, ter.
	IsNumberSuffix bool `json:"isNumberSuffix,omitempty"`

	// IsOptional: Is this special word optional?
	IsOptional bool `json:"isOptional,omitempty"`

	// IsOrdinalNumber: E.g.: 1st, first.
	IsOrdinalNumber bool `json:"isOrdinalNumber,omitempty"`

	// IsPenalizedIfMissing: Optional terms that should not geocode by
	// themselves.
	IsPenalizedIfMissing bool `json:"isPenalizedIfMissing,omitempty"`

	// IsPersonalTitle: Personal titles (e.g. doctor, professor, general,
	// etc.)
	IsPersonalTitle bool `json:"isPersonalTitle,omitempty"`

	// IsStopWord: E.g.: the, in, near, where.
	IsStopWord bool `json:"isStopWord,omitempty"`

	// IsStreetNumberIdentifier: A keyword that denotes a street number,
	// e.g. "number", "unit" etc.
	IsStreetNumberIdentifier bool `json:"isStreetNumberIdentifier,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsAlleyAffix") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsAlleyAffix") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MapsQualitySpecialWordsFlags) MarshalJSON() ([]byte, error) {
	type NoMethod MapsQualitySpecialWordsFlags
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MapsQualitySpecialWordsProto: The goal of the special words are to: -
// Canonicalize the user query by rewriting abbreviations into the
// canonical version that is indexed. - Figure out at index time for
// each element which tokens are important. We use this to decide if an
// address component is matched or not. For instance in "1600
// Pennsylvania Ave NW" since "NW" is recognised as a directional (and
// "Ave" is recognised as a street visible type), "Pennsylvania" becomes
// the name and you can't match this street by just specifying "avenue"
// or "NW".
type MapsQualitySpecialWordsProto struct {
	// Alternate: Alternate versions of this canonical form. This is mainly
	// abbreviations of the canonical form e.g. "St", "NE", etc. This should
	// be present as it is used in the specified language with the correct
	// capitalization, accents, etc. in UTF-8.
	Alternate []string `json:"alternate,omitempty"`

	// Canonical: Canonical versions: the version which is in oyster. This
	// should be present as it is used in the specified language with the
	// correct capitalization, accents, etc. in UTF-8. The canonical can be
	// a single or a multi-token string. There can be several canonicals,
	// e.g. "center" and "centre" in English.
	Canonical []string `json:"canonical,omitempty"`

	// Country: If empty, apply this rule to any country. Otherwise, a list
	// of ISO 3166-1 alpha-2 (2-letter uppercase) country codes that this
	// description applies to.
	Country []string `json:"country,omitempty"`

	// Flags: Boolean flags indicating what type of special word this is.
	Flags *MapsQualitySpecialWordsFlags `json:"flags,omitempty"`

	// Language: The III language code of the language that this description
	// applies to. No language means that this applies worldwide. This could
	// be useful for codes like country codes or airport codes or for
	// displayed language neutral icons. A special word with a language code
	// here also applies to the regional variants of that language (e.g.
	// "en" applies to "en-GB" and "en-US" as well).
	Language []string `json:"language,omitempty"`

	// Possible values:
	//   "AFFIX"
	//   "PREFIX" - the special word comes before the name
	//   "SUFFIX" - the special word comes after the name
	Position string `json:"position,omitempty"`

	// VisibleTypeId: visible_type_id from VisibleTypeProto for visible
	// types converted to the special words. For original special words this
	// field is empty.
	VisibleTypeId []string `json:"visibleTypeId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alternate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alternate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MapsQualitySpecialWordsProto) MarshalJSON() ([]byte, error) {
	type NoMethod MapsQualitySpecialWordsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexBoundingbox: Stores coordinates corresponding to the
// dimensions of the box surrounding the region of interest. Coordinates
// may be normalized or absolute depending on the implementation and
// signal corresponding to this field.
type MediaIndexBoundingbox struct {
	// AreaFraction: The area of the region as a fraction of the image. The
	// value is in the range (0, 1).
	AreaFraction float64 `json:"areaFraction,omitempty"`

	Xmax float64 `json:"xmax,omitempty"`

	Xmin float64 `json:"xmin,omitempty"`

	Ymax float64 `json:"ymax,omitempty"`

	Ymin float64 `json:"ymin,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AreaFraction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AreaFraction") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexBoundingbox) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexBoundingbox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *MediaIndexBoundingbox) UnmarshalJSON(data []byte) error {
	type NoMethod MediaIndexBoundingbox
	var s1 struct {
		AreaFraction gensupport.JSONFloat64 `json:"areaFraction"`
		Xmax         gensupport.JSONFloat64 `json:"xmax"`
		Xmin         gensupport.JSONFloat64 `json:"xmin"`
		Ymax         gensupport.JSONFloat64 `json:"ymax"`
		Ymin         gensupport.JSONFloat64 `json:"ymin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AreaFraction = float64(s1.AreaFraction)
	s.Xmax = float64(s1.Xmax)
	s.Xmin = float64(s1.Xmin)
	s.Ymax = float64(s1.Ymax)
	s.Ymin = float64(s1.Ymin)
	return nil
}

// MediaIndexEntityField: Packages entity id and score together for a
// given source.
type MediaIndexEntityField struct {
	// CustomSource: The custom source should only be a-z[0-9] dashes,
	// underscores, and colons. Special characters should be avoided.
	CustomSource string `json:"customSource,omitempty"`

	EntityId string `json:"entityId,omitempty"`

	QuantizedScore int64 `json:"quantizedScore,omitempty,string"`

	// Possible values:
	//   "UNKNOWN"
	//   "ICA_LABELS"
	//   "VISUAL_DICTIONARY"
	//   "VISUAL_SEARCH_LANDMARK"
	//   "WEBREF_ANNOTATIONS"
	//   "KG_KP"
	//   "SMEARED_VISUAL_DICTIONARY"
	//   "SMEARED_VISUAL_SEARCH_LANDMARK"
	//   "CURATED_SIGNAL"
	//   "LAVD_BONES"
	//   "ICA_H_TOPICALITY"
	//   "WEBREF_CONFIDENCE"
	//   "LAVD_TRAVEL_SNAPWIRE"
	//   "LAVD_TRAVEL_500PX"
	//   "LAVD_TRAVEL_ALAMY"
	//   "LAVD_TRAVEL_EYEEM"
	//   "LAVD_TRAVEL_SHUTTERSTOCK"
	//   "LAVD_TRAVEL_GETTY"
	//   "PROVIDED_PEOPLE"
	//   "KG_AUTOMOTIVE"
	//   "SMEARED_NAVBOOST"
	//   "KIWI_ENTITY_VISUAL_SCORE"
	//   "KIWI_ENTITY_RANK"
	//   "KIWI_ENTITY_VISUAL_SCORE_EXP"
	//   "KIWI_ENTITY_RANK_EXP"
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CustomSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CustomSource") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexEntityField) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexEntityField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexFrameIdentifier: Identifier for frames associated with a
// video.
type MediaIndexFrameIdentifier struct {
	PreviewFrameZeroVariant *MediaIndexFrameIdentifierPreviewFrameZeroVariant `json:"previewFrameZeroVariant,omitempty"`

	// TimestampMs: Offset of the frame from the beginning of the video (in
	// milliseconds).
	TimestampMs int64 `json:"timestampMs,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PreviewFrameZeroVariant") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreviewFrameZeroVariant")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexFrameIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexFrameIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexFrameIdentifierPreviewFrameZeroVariant: This variant
// defines the frame to be the first frame of the video's generated
// preview.
type MediaIndexFrameIdentifierPreviewFrameZeroVariant struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "THREE_SECONDS"
	//   "SIX_SECONDS"
	PreviewLength string `json:"previewLength,omitempty"`

	// XtagList: All xtags used in the generation of the preview. The same
	// frame generated from the same preview with different xtags will
	// likely have different bytes (such as, for example, resulting from a
	// different aspect ratio).
	XtagList *MediaIndexXtagList `json:"xtagList,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PreviewLength") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreviewLength") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexFrameIdentifierPreviewFrameZeroVariant) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexFrameIdentifierPreviewFrameZeroVariant
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexRegion: Metadata associated with a region in an image.
// NEXT_ID: 14
type MediaIndexRegion struct {
	// BoundingBox: The bounding box corresponding to the region.
	BoundingBox *MediaIndexBoundingbox `json:"boundingBox,omitempty"`

	// EntityFields: Detected Entities found within this region.
	EntityFields []*MediaIndexEntityField `json:"entityFields,omitempty"`

	// Labels: The labels associated with the region encoded as a
	// SparseFloatVector to facilitate dot product computation during
	// sorting. The columns are the fingerprints of the labels and the
	// values are the corresponding confidence scores. The vector is L2
	// normalized.
	Labels *MediaIndexSparseFloatVector `json:"labels,omitempty"`

	// PrimiApparelFeaturesV2: PRIMI Apparel Features v2 embedding and
	// tokens.
	PrimiApparelFeaturesV2 string `json:"primiApparelFeaturesV2,omitempty"`

	PrimiApparelTokensV2 []string `json:"primiApparelTokensV2,omitempty"`

	// PrimiGenericFeaturesV25: PRIMI Generic Features v2.5 embedding and
	// tokens.
	PrimiGenericFeaturesV25 string `json:"primiGenericFeaturesV25,omitempty"`

	PrimiGenericTokensV25 []string `json:"primiGenericTokensV25,omitempty"`

	// StarburstFeaturesV4: Starburst v4 embedding and tokens.
	StarburstFeaturesV4 string `json:"starburstFeaturesV4,omitempty"`

	// StarburstFeaturesV5: Starburst v5 embedding and tokens.
	StarburstFeaturesV5 string `json:"starburstFeaturesV5,omitempty"`

	StarburstTokensV4 []string `json:"starburstTokensV4,omitempty"`

	StarburstTokensV5 []string `json:"starburstTokensV5,omitempty"`

	StarburstV4 *ImageContentStarburstVersionGroup `json:"starburstV4,omitempty"`

	StarburstV5 *ImageContentStarburstVersionGroup `json:"starburstV5,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexRegion) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexRegion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type MediaIndexSparseFloatVector struct {
	// Columns: Parallel arrays of column / value. Exactly one of those
	// columns vector should be set. Columns must be in monotonically
	// increasing order.
	Columns googleapi.Int64s `json:"columns,omitempty"`

	ColumnsInt16 string `json:"columnsInt16,omitempty"`

	ColumnsInt32 []int64 `json:"columnsInt32,omitempty"`

	// ColumnsInt64: Columns are fixed integers, used for accelerated parse.
	ColumnsInt64 googleapi.Int64s `json:"columnsInt64,omitempty"`

	ColumnsInt8 string `json:"columnsInt8,omitempty"`

	Values []float64 `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Columns") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Columns") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexSparseFloatVector) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexSparseFloatVector
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexVideoCentroid: Data about the behavior of the video across
// the pages it is embedded in.
type MediaIndexVideoCentroid struct {
	DomainScores []*MediaIndexVideoCentroidDomainScore `json:"domainScores,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DomainScores") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DomainScores") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexVideoCentroid) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexVideoCentroid
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexVideoCentroidDomainScore: See
// go/video-centroid-domain-score.
type MediaIndexVideoCentroidDomainScore struct {
	// Domain: The domain this score was generated for.
	Domain string `json:"domain,omitempty"`

	// NumDocs: Number of pages from the domain used to generate this
	// DomainScore.
	NumDocs int64 `json:"numDocs,omitempty"`

	// Score: In general, lower scores indicate the video is appearing on
	// more diverse pages.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexVideoCentroidDomainScore) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexVideoCentroidDomainScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *MediaIndexVideoCentroidDomainScore) UnmarshalJSON(data []byte) error {
	type NoMethod MediaIndexVideoCentroidDomainScore
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// MediaIndexVideoCoreSignals: Core signals for video content corpus
// which will be fetched for every query. If a signal is required only
// for a subset of search queries then it should be added as a separate
// field in the schema.
type MediaIndexVideoCoreSignals struct {
	Centroid *MediaIndexVideoCentroid `json:"centroid,omitempty"`

	VideoFrames []*MediaIndexVideoFrame `json:"videoFrames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Centroid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Centroid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexVideoCoreSignals) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexVideoCoreSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexVideoFrame: Data about a frame associated with the video.
type MediaIndexVideoFrame struct {
	// Docid: The canonical docid of the frame.
	Docid uint64 `json:"docid,omitempty,string"`

	FrameIdentifier *MediaIndexFrameIdentifier `json:"frameIdentifier,omitempty"`

	// Regions: Metadata associated with regions within this frame.
	Regions []*MediaIndexRegion `json:"regions,omitempty"`

	// StarburstFeaturesV4: Starburst v4 embedding and tokens.
	StarburstFeaturesV4 string `json:"starburstFeaturesV4,omitempty"`

	// StarburstTokensV4: Note: due to the migration to Golden7-source
	// Starburst v4 embedding, no starburst_tokens_v4 will be provided in
	// video content corpus (go/video-content-corpus). But this field is
	// kept in case other purposes may still use it in the proto.
	StarburstTokensV4 []string `json:"starburstTokensV4,omitempty"`

	// ThumbnailType: Set of available thumbnail types for this frame.
	// Should be valid image_base.ThumbnailType values (enumerated at
	// http://google3/image/base/thumbnail-type.proto).
	ThumbnailType googleapi.Int64s `json:"thumbnailType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexVideoFrame) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexVideoFrame
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexVideoFrames: Data about multiple video frames associated
// with the video.
type MediaIndexVideoFrames struct {
	VideoFrames []*MediaIndexVideoFrame `json:"videoFrames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VideoFrames") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VideoFrames") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexVideoFrames) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexVideoFrames
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type MediaIndexXtag struct {
	// Name: Names are all stored case-sensitive, and no case-folding is
	// done for comparisons.
	Name string `json:"name,omitempty"`

	// Value: The value associated with this Xtag. Values are all stored
	// case-sensitive, and no case-folding is done for comparisons.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexXtag) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexXtag
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MediaIndexXtagList: XtagList -- a collection of Xtag instances with
// unique names. This would be associated with one specific piece of
// content.
type MediaIndexXtagList struct {
	Xtags []*MediaIndexXtag `json:"xtags,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Xtags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Xtags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MediaIndexXtagList) MarshalJSON() ([]byte, error) {
	type NoMethod MediaIndexXtagList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MobilePerDocData: Note: This message is also in the RTUpdate protocol
// buffer.
type MobilePerDocData struct {
	Flags int64 `json:"flags,omitempty"`

	// Mobileurl: DEPRECATED: Url of the mobile version of the document.
	// This is set during canonicalization if we do not know that the Web
	// url also serves the mobile version.
	Mobileurl string `json:"mobileurl,omitempty"`

	// TranscodedPageScore: DEPRECATED: The transcoded page quality
	// repesented in 7-bits range from 0 to 127.
	TranscodedPageScore int64 `json:"transcodedPageScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Flags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Flags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MobilePerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod MobilePerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MultiscaleFieldPresence: Defines the presence of a field. This can
// help distinguish between empty vs. not-present annotations.
type MultiscaleFieldPresence struct {
	// Present: Whether the field (data field or pointer) is defined.
	Present bool `json:"present,omitempty"`

	// Possible values:
	//   "WD_UNDEFINED" - proto3 default value.
	//   "WD_WELL_DEFINED"
	//   "WD_PARTIAL"
	WellDefined string `json:"wellDefined,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Present") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Present") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MultiscaleFieldPresence) MarshalJSON() ([]byte, error) {
	type NoMethod MultiscaleFieldPresence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MultiscaleLayerPresence: Defines the presence of a layer (previously
// called "scale").
type MultiscaleLayerPresence struct {
	// ImplicitLength: If the layer is not materialized but things point
	// into it, this gives the effective length.
	ImplicitLength int64 `json:"implicitLength,omitempty"`

	// Present: Whether the layer is present.
	Present bool `json:"present,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImplicitLength") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImplicitLength") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *MultiscaleLayerPresence) MarshalJSON() ([]byte, error) {
	type NoMethod MultiscaleLayerPresence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MultiscalePointerIndex: Pointer to a single node in a target scale.
// `pointer.Index` fields should be annotated with a `(pointer.to)`
// annotation, indicating what scale they point at.
type MultiscalePointerIndex struct {
	// Index: The index of the node that this pointer points to.
	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MultiscalePointerIndex) MarshalJSON() ([]byte, error) {
	type NoMethod MultiscalePointerIndex
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MultiscalePointerSpan: Pointer to a contiguous range of nodes in a
// target scale. `pointer.Span` fields should be annotated with a
// `(pointer.to)` annotation, indicating what scale they point at.
type MultiscalePointerSpan struct {
	// Limit: The exclusive end index for the span of nodes that this
	// pointer points to -- i.e., one plus the index of the last node in the
	// span. Must be greater than or equal to `start`. If equal to `start`,
	// then the target span is empty.
	Limit int64 `json:"limit,omitempty"`

	// Start: The inclusive start index for the span of nodes that this
	// pointer points to -- i.e., the index of the first node in the span.
	Start int64 `json:"start,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Limit") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Limit") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MultiscalePointerSpan) MarshalJSON() ([]byte, error) {
	type NoMethod MultiscalePointerSpan
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MustangReposWwwSnippetsCandidateFeature: CandidateFeature contains a
// pair of feature name and score for a snippet candidate.
type MustangReposWwwSnippetsCandidateFeature struct {
	// Name: Name corresponds to the names in
	// WebChooserScorer::FeatureNames.
	Name string `json:"name,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MustangReposWwwSnippetsCandidateFeature) MarshalJSON() ([]byte, error) {
	type NoMethod MustangReposWwwSnippetsCandidateFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *MustangReposWwwSnippetsCandidateFeature) UnmarshalJSON(data []byte) error {
	type NoMethod MustangReposWwwSnippetsCandidateFeature
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// MustangReposWwwSnippetsOrganicListSnippetResponse: Data to generate
// the list preview for organic list snippets.
type MustangReposWwwSnippetsOrganicListSnippetResponse struct {
	// Header: The texts of header and listing items.
	Header string `json:"header,omitempty"`

	// HeaderTitleRedundancy: The ratio of header tokens covered by title.
	HeaderTitleRedundancy float64 `json:"headerTitleRedundancy,omitempty"`

	// HeaderUsedInSnippet: If the header being used in organic snippet.
	HeaderUsedInSnippet bool `json:"headerUsedInSnippet,omitempty"`

	Items []string `json:"items,omitempty"`

	// OriginalTotalItems: The number of items in the original list.
	OriginalTotalItems int64 `json:"originalTotalItems,omitempty"`

	// RadishScore: The score of the radish signal.
	RadishScore float64 `json:"radishScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Header") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Header") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MustangReposWwwSnippetsOrganicListSnippetResponse) MarshalJSON() ([]byte, error) {
	type NoMethod MustangReposWwwSnippetsOrganicListSnippetResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *MustangReposWwwSnippetsOrganicListSnippetResponse) UnmarshalJSON(data []byte) error {
	type NoMethod MustangReposWwwSnippetsOrganicListSnippetResponse
	var s1 struct {
		HeaderTitleRedundancy gensupport.JSONFloat64 `json:"headerTitleRedundancy"`
		RadishScore           gensupport.JSONFloat64 `json:"radishScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.HeaderTitleRedundancy = float64(s1.HeaderTitleRedundancy)
	s.RadishScore = float64(s1.RadishScore)
	return nil
}

// MustangReposWwwSnippetsSnippetCandidate: This message contains
// features for candidates at the chooser level. For each snippet
// candidate, we also log the final score as the last candidate feature.
type MustangReposWwwSnippetsSnippetCandidate struct {
	// DataSourceType: data_source_type corresponds to the
	// ChosenSnippet::SnippetType enum.
	DataSourceType int64 `json:"dataSourceType,omitempty"`

	Features []*MustangReposWwwSnippetsCandidateFeature `json:"features,omitempty"`

	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataSourceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataSourceType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *MustangReposWwwSnippetsSnippetCandidate) MarshalJSON() ([]byte, error) {
	type NoMethod MustangReposWwwSnippetsSnippetCandidate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// MustangReposWwwSnippetsSnippetsRanklabFeatures: This is a protocol
// buffer to export into flatfiles in ranklab. All fields are converted
// into flatfiles with some specific prefix and a field name like
// 'snippet_features_snippet_data_source_type'.
type MustangReposWwwSnippetsSnippetsRanklabFeatures struct {
	// BrowserWidth: Browser width.
	BrowserWidth int64 `json:"browserWidth,omitempty"`

	// Candidates: Features for snippets candidates, generated by both old
	// and new scorer. Currently only features for chosen candidate is
	// generated.
	Candidates []*MustangReposWwwSnippetsSnippetCandidate `json:"candidates,omitempty"`

	// DisplaySnippet: Snippet features for the final chosen snippet. This
	// field is firstly populated by Muppet, and then overwriten by
	// Superroot if SnippetBrain is triggered.
	DisplaySnippet *QualityPreviewRanklabSnippet `json:"displaySnippet,omitempty"`

	// DocumentLanguage: locale of the document.
	DocumentLanguage string `json:"documentLanguage,omitempty"`

	// OriginalQueryTermCoverages: Original query term coverage in titles
	// and / or snippets.
	OriginalQueryTermCoverages *QualityPreviewSnippetQueryTermCoverageFeatures `json:"originalQueryTermCoverages,omitempty"`

	// QueryLanguage: locale of the query,
	QueryLanguage string `json:"queryLanguage,omitempty"`

	// SnippetDataSourceType: Snippet data source.
	SnippetDataSourceType int64 `json:"snippetDataSourceType,omitempty"`

	// SnippetQueryTermCoverage: Query term coverage in snippets.
	SnippetQueryTermCoverage float64 `json:"snippetQueryTermCoverage,omitempty"`

	// Snippets: Snippet features for Muppet snippet candidates. In
	// production, only the data for chosen snippet will be recorded.
	Snippets []*QualityPreviewRanklabSnippet `json:"snippets,omitempty"`

	// TitleDataSourceType: Title data source.
	TitleDataSourceType int64 `json:"titleDataSourceType,omitempty"`

	// TitleQueryTermCoverage: Query term coverage in titles.
	TitleQueryTermCoverage float64 `json:"titleQueryTermCoverage,omitempty"`

	// TitleSnippetQueryTermCoverage: Query term coverage in titles and
	// snippets.
	TitleSnippetQueryTermCoverage float64 `json:"titleSnippetQueryTermCoverage,omitempty"`

	// Titles: Per-candidate title features for ranklab models, sorted from
	// the best candidate to the worst candidate (i.e., the first element is
	// the actually selected title).
	Titles []*QualityPreviewRanklabTitle `json:"titles,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrowserWidth") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrowserWidth") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MustangReposWwwSnippetsSnippetsRanklabFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod MustangReposWwwSnippetsSnippetsRanklabFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *MustangReposWwwSnippetsSnippetsRanklabFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod MustangReposWwwSnippetsSnippetsRanklabFeatures
	var s1 struct {
		SnippetQueryTermCoverage      gensupport.JSONFloat64 `json:"snippetQueryTermCoverage"`
		TitleQueryTermCoverage        gensupport.JSONFloat64 `json:"titleQueryTermCoverage"`
		TitleSnippetQueryTermCoverage gensupport.JSONFloat64 `json:"titleSnippetQueryTermCoverage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SnippetQueryTermCoverage = float64(s1.SnippetQueryTermCoverage)
	s.TitleQueryTermCoverage = float64(s1.TitleQueryTermCoverage)
	s.TitleSnippetQueryTermCoverage = float64(s1.TitleSnippetQueryTermCoverage)
	return nil
}

// MustangSnippetsRenderedToken: Tidbit token rendered in generating
// snippet/title.
type MustangSnippetsRenderedToken struct {
	// Bolded: Is the rendered token bolded (insided )
	Bolded bool `json:"bolded,omitempty"`

	// ByteOffsetBegin: Byte offset range in the rendered text that
	// corresponds to this token. [byte_offset_begin, byte_offset_end)
	// inclusive
	ByteOffsetBegin int64 `json:"byteOffsetBegin,omitempty"`

	// ByteOffsetEnd: exclusive
	ByteOffsetEnd int64 `json:"byteOffsetEnd,omitempty"`

	// Section: Section and TokenPos of the token.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "BODY_WITH_SOFT_TOKEN"
	//   "GWD"
	//   "META"
	Section string `json:"section,omitempty"`

	TokenPos int64 `json:"tokenPos,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Bolded") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bolded") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *MustangSnippetsRenderedToken) MarshalJSON() ([]byte, error) {
	type NoMethod MustangSnippetsRenderedToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NSRVersionedItem: Message representing a versioned NSR score used for
// experimentation. This protobuf is copied from
// quality_nsr::NSRVersionedItem.
type NSRVersionedItem struct {
	// Value: The NSR value corresponding to this version.
	Value float64 `json:"value,omitempty"`

	// VersionId: The version id.
	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Value") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Value") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NSRVersionedItem) MarshalJSON() ([]byte, error) {
	type NoMethod NSRVersionedItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NSRVersionedItem) UnmarshalJSON(data []byte) error {
	type NoMethod NSRVersionedItem
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// NetFabricRpcVirtualNetworkId: Globally unique identifier for a
// virtual network.
type NetFabricRpcVirtualNetworkId struct {
	// Id: required
	Id int64 `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NetFabricRpcVirtualNetworkId) MarshalJSON() ([]byte, error) {
	type NoMethod NetFabricRpcVirtualNetworkId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpLoggingQRewriteClientCallPathInfo: The proto that holds the
// complete call path info of the QRewrite client (e.g. the QUS's phase
// like "RBT","QBT"; the QUS's candidate type like "Identity"; and the
// ACE's candidate type like "FuzzyMatcher"). Next ID: 5 ACE tags
type NlpLoggingQRewriteClientCallPathInfo struct {
	// QrewriteCandidateId: Indicates the type of candidate rewritten by
	// QRewrite. This field is filled within QRewrite instead of QRewrite
	// clients, and we add this here so this proto is able to hold all tags
	// to form the identifier.
	QrewriteCandidateId *QualityQrewriteCandidateId `json:"qrewriteCandidateId,omitempty"`

	// QusCandidateId: QUS tags Indicates the type of the candidate in QUS
	// that sends the QRewrite request.
	QusCandidateId *QualityQrewriteCandidateId `json:"qusCandidateId,omitempty"`

	// QusClientCallPathInfo: Upstream call path before QUS.
	QusClientCallPathInfo *NlpLoggingQusClientCallPathInfo `json:"qusClientCallPathInfo,omitempty"`

	// QusPhase: Indicates which QUS phase sends the QRewrite request. Note
	// if the QRewrite response is reused in succeeding phases, this field
	// should not be overridden and it is always the phase that initially
	// sends the RPC.
	//
	// Possible values:
	//   "QU_PHASE_UNSPECIFIED" - Invalid value to use as a default.
	//   "QU_PHASE_REQUEST" - Phase in which the QueryUnderstandingRequest
	// for a non-identity Candidate is generated. Produces
	// QueryCandidateInfo.
	//   "QU_PHASE_QREWRITE" - Phase in which QUS calls QRewrite. Produces
	// QRewrite's reply.
	//   "QU_PHASE_QBT" - Phase in which QBT interpretations are ranked.
	// Produces ranked QBT interpretations.
	//   "QU_PHASE_PROBE_QUERY" - Phase in which QUS does a probe query for
	// incomplete search results and produces ranked RBT interpretations on
	// the basis of these. Only runs if understand_mode is
	// PRE_RESULT_AND_PROBE_QUERY.
	//   "QU_PHASE_MULTI_ACCOUNT" - Phase in which QUS does cross-account
	// understanding. Produces AnalyzerResponse whose interpretations
	// contain personal data from multiple accounts.
	//   "QU_PHASE_CQBT" - Deprecated, but see go/qus-contextual-ig for
	// original purpose.
	//   "QU_PHASE_QBT_RESOLUTION" - Phase in which QUS calls resolution
	// service to perform slow intent resolution. Produces resolved intents.
	//   "QU_PHASE_HIGH_PRECISION" - Phase in which QUS calls the fast
	// HighPrecision workflow. Only runs if understand_mode is
	// PRE_RESULT_AND_HIGH_PRECISION.
	//   "QU_PHASE_COMBINED_RBT_RESOLUTION" - Phase in which QUS combines
	// the RBT result and Slow Resolution result. Only runs if
	// understand_mode is PRE_RESULT_AND_PROBE_QUERY_AND_RESOLUTION.
	//   "QU_PHASE_ANALYZER_INPUT" - Phase in which QUS returns the
	// AnalyzerInput as a separate Phase. It copies the AnalyzerInput from
	// QU_PHASE_QREWRITE and returns it as a
	// QueryUnderstandingStreamingResult for the purpose of logging in ACE.
	// See go/analyzerinput-new-qus-phase.
	QusPhase string `json:"qusPhase,omitempty"`

	// ForceSendFields is a list of field names (e.g. "QrewriteCandidateId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QrewriteCandidateId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpLoggingQRewriteClientCallPathInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpLoggingQRewriteClientCallPathInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpLoggingQusClientCallPathInfo: The proto that holds the complete
// call path info of the QUS client (e.g. the candidate type like
// "Identity", "FuzzyMatcher"; The intent generator like "QUS_IG" in
// ACE).
type NlpLoggingQusClientCallPathInfo struct {
	// RewriterType: rewriter_type forms part of a unique key to be used to
	// label QUS Requests from ACE. The need to distinguish between the
	// variety of calls from AS into QUS is for two reasons: (a) currently,
	// assistant eval can do NLU Eval only on certain rewrites (b) later AS
	// Hermetic and NLU Eval can be integrated In the furure, the unique key
	// will be expanded to add intent_generator_type or something similar.
	// There are ongoing discussions to confirm these plans
	//
	// Possible values:
	//   "UNKNOWN_REWRITER_TYPE"
	//   "GENIE"
	//   "FUZZY_MATCHER_HC"
	//   "FUZZY_MATCHER"
	//   "FUZZY_MATCHER_ADDITIONAL_1" - Additional FuzzyMatcher branches,
	// see go/afm-additional-branches
	//   "FUZZY_MATCHER_ADDITIONAL_2"
	//   "IDENTITY"
	//   "MONDEGREEN_ASSISTANT" - Mondegreen Assistant is used in Media
	// queries, Mondegreen is used for YouTube/Voz. See
	// go/project-mondegreen-media
	//   "MONDEGREEN"
	//   "SYNTHETIC"
	//   "SPEECH_RECOGNITION"
	//   "SPEECH_MISRECOGNITION" - Rewriter for misrecognition quick-fixes,
	// see go/pop-ranking-misrecognition-rewriter
	//   "SPELL_CORRECTION" - QUS rewriters.
	//   "AUTO_TRANSLATION"
	//   "AUTO_TRANSLATION_ARGUMENT_TRANSFER" - Auto Translate with argument
	// transfer. go/missandei-argument-transfer-through-qus
	RewriterType string `json:"rewriterType,omitempty"`

	// TemporaryAceTag: The timestamp when QUS request is built in ACE. For
	// now we don't care about the actual meaning of this tag, and only want
	// to guarantee its uniqueness per QUS call.
	TemporaryAceTag int64 `json:"temporaryAceTag,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "RewriterType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RewriterType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpLoggingQusClientCallPathInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpLoggingQusClientCallPathInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpMeaningMeaningRemodeling struct {
	// Deletion: This field can be set to true to indicate that the
	// associated part of the schema is being deleted as part of the
	// remodeling.
	Deletion bool `json:"deletion,omitempty"`

	// Id: The remodeling ID. Each remodeling has a unique ID that is used
	// to associate changes with that remodeling.
	Id int64 `json:"id,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Deletion") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Deletion") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpMeaningMeaningRemodeling) MarshalJSON() ([]byte, error) {
	type NoMethod NlpMeaningMeaningRemodeling
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpMeaningMeaningRemodelingControl: This is the FunctionCall
// counterpart to the "MeaningRemodelings" structure. When present, it
// is used for typechecking the FunctionCall against the schema with the
// remodelings enabled.
type NlpMeaningMeaningRemodelingControl struct {
	RemodelingId googleapi.Int64s `json:"remodelingId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RemodelingId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RemodelingId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpMeaningMeaningRemodelingControl) MarshalJSON() ([]byte, error) {
	type NoMethod NlpMeaningMeaningRemodelingControl
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpMeaningMeaningRemodelings: This proto will be added as a field to
// part of a schema to indicate it is being remodeled.
type NlpMeaningMeaningRemodelings struct {
	Remodeling []*NlpMeaningMeaningRemodeling `json:"remodeling,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Remodeling") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Remodeling") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpMeaningMeaningRemodelings) MarshalJSON() ([]byte, error) {
	type NoMethod NlpMeaningMeaningRemodelings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpMeaningSemanticTypeNameMeaningRemodelings: Associates remodeling
// data with a semantic type name.
type NlpMeaningSemanticTypeNameMeaningRemodelings struct {
	// Name: Semantic type name.
	Name string `json:"name,omitempty"`

	Remodelings *NlpMeaningMeaningRemodelings `json:"remodelings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpMeaningSemanticTypeNameMeaningRemodelings) MarshalJSON() ([]byte, error) {
	type NoMethod NlpMeaningSemanticTypeNameMeaningRemodelings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftAnnotatedPhrase: Representation of a phrase in the document
// with a particular annotation. Provides the ability to annotate
// arbitrary spans in the document. This is intended for representing
// spans that SAFT does NOT consider to be mentions of entities within a
// SAFT document.
type NlpSaftAnnotatedPhrase struct {
	// Info: Annotation for this phrase.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Phrase: Contains start and end pointers to the token array for this
	// span.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Info") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Info") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftAnnotatedPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftAnnotatedPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftConstituencyNode: Constituency parse tree node with tokens as
// the leaf nodes.
type NlpSaftConstituencyNode struct {
	// Child: An arbitrary number of children, ordered from left to right;
	// empty for preterminals. Represented via indices into
	// Document.constituency_node.
	Child []int64 `json:"child,omitempty"`

	// Label: The label of the current node.
	Label string `json:"label,omitempty"`

	// Phrase: A phrase that contains information about the span and the
	// (optional) head token. For terminal nodes the head of the phrase
	// holds the word.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Child") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Child") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftConstituencyNode) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftConstituencyNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftDocument: A document contains the raw text contents of the
// document as well as an analysis. The document can be split into
// tokens which can contain information about POS tags and dependency
// relations. The document can also contain entities and mentions of
// these entities in the document. Next available id: 36
type NlpSaftDocument struct {
	// AnnotatedPhrase: Annotated phrases in the document that are not
	// semantically well-defined mentions of entities.
	AnnotatedPhrase []*NlpSaftAnnotatedPhrase `json:"annotatedPhrase,omitempty"`

	// Annotations: Generic annotations.
	Annotations *Proto2BridgeMessageSet `json:"annotations,omitempty"`

	// Author: Document author(s).
	Author []string `json:"author,omitempty"`

	// BylineDate: Document's byline date, if available: this is the date
	// that will be shown in the snippets in web search results. It is
	// stored as the number of seconds since epoch. See
	// segindexer/compositedoc.proto
	BylineDate int64 `json:"bylineDate,omitempty,string"`

	// ConstituencyNode: Constituency parse tree nodes for the sentences in
	// this document.
	ConstituencyNode []*NlpSaftConstituencyNode `json:"constituencyNode,omitempty"`

	// ConstituencyRoot: The root node of the constituency tree for each
	// sentence. If non-empty, the list of roots will be aligned with the
	// sentences in the document. Note that some sentences may not have been
	// parsed for various reasons; these sentences will be annotated with
	// placeholder "stub parses". For details, see
	// //nlp/saft/components/constituents/util/stub-parse.h.
	ConstituencyRoot []int64 `json:"constituencyRoot,omitempty"`

	// ContentFirstseen: Stores minimum of first time google successfully
	// crawled a document, or indexed the document with contents (i.e, not
	// roboted). It is stored as the number of seconds since epoch. See
	// quality/historical/signals/firstseen/firstseen.proto
	ContentFirstseen int64 `json:"contentFirstseen,omitempty,string"`

	// ContentType: Optional document content_type (from
	// webutil/http/content-type.proto). Used for setting the content_type
	// when converting the SAFT Document to a CompositeDoc. Will be inferred
	// if not given here.
	ContentType int64 `json:"contentType,omitempty"`

	// Contentage: Age of the content of the document. For details, see:
	// quality/historical/shingle/signals/contentage.proto The format has
	// been translated to a canonical timestamp (seconds since epoch).
	Contentage int64 `json:"contentage,omitempty,string"`

	// Date: Document anchor date in YYYYMMDDhhmmss format.
	Date string `json:"date,omitempty"`

	// Docid: Identifier for document.
	Docid string `json:"docid,omitempty"`

	// Entity: Entities in the document.
	Entity []*NlpSaftEntity `json:"entity,omitempty"`

	// EntityLabel: Entity labels used in this document. This field is used
	// to define labels for the Entity::entity_type_probability field, which
	// contains corresponding probabilities. WARNING: This field is
	// deprecated. go/saft-replace-deprecated-entity-type
	EntityLabel []string `json:"entityLabel,omitempty"`

	// FocusEntity: Focus entity. For lexicon articles, like Wikipedia
	// pages, a document is often about a certain entity. This is the local
	// entity id of the focus entity for the document.
	FocusEntity int64 `json:"focusEntity,omitempty"`

	// Golden: Flag for indicating that the document is a gold-standard
	// document. This can be used for putting additional weight on
	// human-labeled documents in contrast to automatically labeled
	// annotations.
	Golden bool `json:"golden,omitempty"`

	// HttpHeaders: HTTP header for document. If the HTTP headers field is
	// set it should be the complete header including the HTTP status line
	// and the trailing cr/nl. HTTP headers are not required to be valid
	// UTF-8. Per the HTTP/1.1 Syntax (RFC7230) standard, non-ASCII octets
	// should be treated as opaque data.
	HttpHeaders string `json:"httpHeaders,omitempty"`

	// Hyperlink: The hyperlinks in the document. Multiple hyperlinks are
	// sorted in left-to-right order.
	Hyperlink []*NlpSaftHyperlink `json:"hyperlink,omitempty"`

	// LabeledSpans: Generic labeled spans (produced by the span labeling
	// framework, go/saft-span-labeling). The map key identifies spans of
	// the same type. By convention, it should be of the form
	// "team_name/span_type_name".
	LabeledSpans map[string]NlpSaftLabeledSpans `json:"labeledSpans,omitempty"`

	// Language: Document language (default is English). This field's value
	// maps cleanly to the i18n.languages.Language proto enum
	// (i18n::languages::Language in C++).
	Language int64 `json:"language,omitempty"`

	// LastSignificantUpdate: Last significant update of the page content,
	// in the same format as the contentage field, and also derived from
	// ContentAge.last_significant_update in
	// quality/historical/shingle/signals/contentage.proto.
	LastSignificantUpdate int64 `json:"lastSignificantUpdate,omitempty,string"`

	// Measure: Measures in the documents. This covers both time expressions
	// as well as physical quantities.
	Measure []*NlpSaftMeasure `json:"measure,omitempty"`

	// PrivacySensitive: True if this document contains privacy sensitive
	// data. When the document is transferred in RPC calls the RPC should
	// use SSL_PRIVACY_AND_INTEGRITY security level.
	PrivacySensitive bool `json:"privacySensitive,omitempty"`

	// Relation: Relations between entities in the document.
	Relation []*NlpSaftRelation `json:"relation,omitempty"`

	// RpcError: True if some RPC which touched this document had an error.
	RpcError bool `json:"rpcError,omitempty"`

	// SemanticNode: The semantic nodes for the document represent arbitrary
	// types of higher-level abstractions beyond entity mention coreference
	// and binary relations between entities. These may include: n-ary
	// relations, semantic frames or events. The semantic nodes for a
	// document are the nodes in a directed acyclic graph, with an adjacency
	// list representation.
	SemanticNode []*NlpSaftSemanticNode `json:"semanticNode,omitempty"`

	// Subsection: Sub-sections for document for dividing a document into
	// volumes, parts, chapters, sections, etc.
	Subsection []*NlpSaftDocument `json:"subsection,omitempty"`

	// SyntacticDate: Document's syntactic date (e.g. date explicitly
	// mentioned in the URL of the document or in the document title). It is
	// stored as the number of seconds since epoch. See
	// quality/timebased/syntacticdate/proto/syntactic-date.proto
	SyntacticDate int64 `json:"syntacticDate,omitempty,string"`

	// Text: Raw text contents of document. (In docjoin attachments from the
	// SAFT goldmine annotator this field will be empty.)
	Text string `json:"text,omitempty"`

	// Title: Optional document title.
	Title string `json:"title,omitempty"`

	// Token: Tokenization of the document.
	Token []*NlpSaftToken `json:"token,omitempty"`

	Topic []*NlpSaftDocumentTopic `json:"topic,omitempty"`

	// Trace: Whether to enable component tracing during analysis of this
	// document. See http://go/saft-tracing for details.
	Trace bool `json:"trace,omitempty"`

	// Url: Source document URL.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotatedPhrase") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotatedPhrase") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftDocument) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftDocumentTopic: Document topic(s).
type NlpSaftDocumentTopic struct {
	// Name: Topic name or identifier.
	Name string `json:"name,omitempty"`

	// Score: Topic score.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftDocumentTopic) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftDocumentTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftDocumentTopic) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftDocumentTopic
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftEntity: Named entities in the document.
type NlpSaftEntity struct {
	// Antecedent: Antecedent for entity. This is used to make coreference
	// chains before the mentions in the document are grouped by entity.
	Antecedent int64 `json:"antecedent,omitempty"`

	// EntityType: Entity type (e.g. PER, ORG, LOC). WARNING: This field is
	// deprecated. go/saft-replace-deprecated-entity-type
	EntityType string `json:"entityType,omitempty"`

	// EntityTypeProbability: Probability distribution over entity types.
	// These values correspond to Document.entity_label values:
	// doc.entity[e].entity_type_probability[n] is the probability that the
	// correct label for doc.entity[e] is doc.entity_label[n]. These
	// probabilities sum to 1.0 (with possible rounding error). WARNING:
	// This field is deprecated. go/saft-replace-deprecated-entity-type
	EntityTypeProbability []float64 `json:"entityTypeProbability,omitempty"`

	// Gender: Gender for entity.
	//
	// Possible values:
	//   "MASCULINE"
	//   "FEMININE"
	//   "NEUTER"
	//   "PLURAL" - deprecated on 2014/7/7
	Gender string `json:"gender,omitempty"`

	// Info: Application-specific information about this entity.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Mention: Mentions of the entity in the document.
	Mention []*NlpSaftMention `json:"mention,omitempty"`

	// Name: Representative entity name.
	Name string `json:"name,omitempty"`

	// Profile: Profile for entity.
	Profile *NlpSaftEntityProfile `json:"profile,omitempty"`

	// Referent: Referent information for discourse context entities that
	// are not mentioned in the document. These can be merged with mentioned
	// entities during analysis if they are deemed to be coreferent.
	// Entities with referents should not have any mentions if they do not
	// corefer with anything. For example, when adding context entities to
	// an input document prior to SAFT analysis, those entities should have
	// a referent and no mentions.
	Referent *NlpSaftReferent `json:"referent,omitempty"`

	// RepresentativeMention: Representative mention, as an index into
	// mention.
	RepresentativeMention int64 `json:"representativeMention,omitempty"`

	// Salience: Score indicating the saliency (centrality) of this entity
	// to the document.
	Salience float64 `json:"salience,omitempty"`

	// Type: Entity types of the entity. These can include SAFT types
	// (/saft/location, /saft/art, /saft/other/living_thing, etc),
	// collections types (/collection/tv_personalities,
	// /collection/statistical_regions, etc), and more. This refers to the
	// type of the entity itself: in "She is on TV", "She" refers to a
	// specific actor, with type "/collection/tv_personalities". Cf.
	// Mention.Type, which is the type of the referring mention.
	Type []*NlpSaftEntityType `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Antecedent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Antecedent") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntity) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftEntity) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftEntity
	var s1 struct {
		Salience gensupport.JSONFloat64 `json:"salience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Salience = float64(s1.Salience)
	return nil
}

// NlpSaftEntityProfile: An entity profile contains a summary of the
// information about a single unique entity. Next available index: 46.
type NlpSaftEntityProfile struct {
	Alternate []*NlpSaftEntityProfileAlternate `json:"alternate,omitempty"`

	// Annotations: Generic annotations.
	Annotations *Proto2BridgeMessageSet `json:"annotations,omitempty"`

	// Attribute: List of attributes for the entity.
	Attribute []*NlpSaftEntityProfileAttribute `json:"attribute,omitempty"`

	// CanonicalName: Canonical entity name.
	CanonicalName string `json:"canonicalName,omitempty"`

	// Possible values:
	//   "COLLECTION_GIVEN_ENTITY"
	//   "ENTITY_GIVEN_COLLECTION"
	CollectionScoreType string `json:"collectionScoreType,omitempty"`

	// Disambiguation: Disambiguation phrase. The combination of entity name
	// and disambiguation phrase should be unique within the corpus.
	Disambiguation string `json:"disambiguation,omitempty"`

	// Embedding: Entity embeding vector, representing the entity in a dense
	// low-dimensional embedding space.
	Embedding []float64 `json:"embedding,omitempty"`

	// Frame: Profile frame in binary SLING encoding.
	Frame string `json:"frame,omitempty"`

	// Gender: Gender of the entity.
	//
	// Possible values:
	//   "MASCULINE"
	//   "FEMININE"
	//   "NEUTER"
	//   "PLURAL" - deprecated on 2014/7/7
	Gender string `json:"gender,omitempty"`

	// Id: Unique global id for entity.
	Id int64 `json:"id,omitempty,string"`

	// Identifier: External identifiers for entity.
	Identifier []*NlpSaftIdentifier `json:"identifier,omitempty"`

	Keyword []*NlpSaftEntityProfileKeyword `json:"keyword,omitempty"`

	// Mid: Freebase MID for entity. This field should be the same as
	// FREEBASE_MID identifier for the entity profile.
	Mid string `json:"mid,omitempty"`

	// Name: Representative name for entity.
	Name string `json:"name,omitempty"`

	// NameLanguage: Language for the name and disambiguation.
	NameLanguage int64 `json:"nameLanguage,omitempty"`

	// Nature: Nature of the entity.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "CONCEPT"
	//   "THING"
	//   "ESTABLISHMENT"
	//   "INDIVIDUAL"
	//   "GIVEN_NAME"
	//   "FAMILY_NAME"
	Nature string `json:"nature,omitempty"`

	Reference []*NlpSaftEntityProfileReference `json:"reference,omitempty"`

	Related []*NlpSaftEntityProfileRelated `json:"related,omitempty"`

	// Type: Entity type.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alternate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alternate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfile) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftEntityProfileAlternate: Alternative names for entity.
type NlpSaftEntityProfileAlternate struct {
	Count int64 `json:"count,omitempty"`

	// Form: see nlp/saft/resolution/name-form.h for values
	Form int64 `json:"form,omitempty"`

	// Frame: frame in SLING encoding
	Frame string `json:"frame,omitempty"`

	Language int64 `json:"language,omitempty"`

	Name string `json:"name,omitempty"`

	// Sources: (1 << SRC_DEFAULT)
	Sources int64 `json:"sources,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfileAlternate) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfileAlternate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSaftEntityProfileAttribute struct {
	// BoolValue: Boolean attribute value, e.g. for IsDeceased.
	BoolValue bool `json:"boolValue,omitempty"`

	// FloatValue: Double attribute value, e.g. for height/weight.
	FloatValue float64 `json:"floatValue,omitempty"`

	// IntValue: Integer attribute value, e.g. IntId("April").
	IntValue int64 `json:"intValue,omitempty,string"`

	// Language: Language, in case the attribute value is a string.
	Language int64 `json:"language,omitempty"`

	// Type: String name of the type of attribute, e.g. /birth/date
	Type string `json:"type,omitempty"`

	// TypeId: Any id of the type of the attribute, e.g. IntId(/birth/date)
	TypeId int64 `json:"typeId,omitempty"`

	// Value: String attribute value, e.g. "April 2010" or "3,235,121".
	Value string `json:"value,omitempty"`

	// ValueType: The type of the value.
	//
	// Possible values:
	//   "ATTRIBUTE_TYPE_STRING"
	//   "ATTRIBUTE_TYPE_INT"
	//   "ATTRIBUTE_TYPE_FLOAT"
	//   "ATTRIBUTE_TYPE_BOOL"
	//   "ATTRIBUTE_TYPE_DATETIME"
	ValueType string `json:"valueType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfileAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfileAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftEntityProfileAttribute) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftEntityProfileAttribute
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// NlpSaftEntityProfileKeyword: Keywords and key phrases for entity.
type NlpSaftEntityProfileKeyword struct {
	Count int64 `json:"count,omitempty"`

	Language int64 `json:"language,omitempty"`

	// Score: Score associated with the keyword. For fine-grained types this
	// is a probability.
	Score float64 `json:"score,omitempty"`

	Term string `json:"term,omitempty"`

	// Possible values:
	//   "CONTEXT"
	//   "MENTION"
	//   "HEADLINE"
	//   "TOPIC"
	//   "TEMPORAL"
	//   "FREEBASE_TYPE"
	//   "FREEBASE_NOTABLE_TYPE"
	//   "FREEBASE_NOTABLE_FOR"
	//   "FINE_TYPE"
	//   "KG_COLLECTION"
	//   "HYPERNYM"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfileKeyword) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfileKeyword
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftEntityProfileKeyword) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftEntityProfileKeyword
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftEntityProfileReference: References to entity.
type NlpSaftEntityProfileReference struct {
	Docid string `json:"docid,omitempty"`

	Entity int64 `json:"entity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfileReference) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfileReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftEntityProfileRelated: Related entities.
type NlpSaftEntityProfileRelated struct {
	// Count: Number of occurrences.
	Count int64 `json:"count,omitempty"`

	// Inverse: Inverse relations can be marked in a bidirectional graph.
	Inverse bool `json:"inverse,omitempty"`

	// RelationId: Optional integer id for the relation.
	RelationId int64 `json:"relationId,omitempty"`

	// RelationIdentifier: Optional external identifier for the relation.
	RelationIdentifier *NlpSaftIdentifier `json:"relationIdentifier,omitempty"`

	// Score: Score for related entity, i.e. p(e->r | e).
	Score float64 `json:"score,omitempty"`

	// TargetId: Profile id of related entity.
	TargetId int64 `json:"targetId,omitempty,string"`

	// TargetIdentifier: Optional external identifier for the target entity.
	TargetIdentifier *NlpSaftIdentifier `json:"targetIdentifier,omitempty"`

	// TargetName: Name of related entity.
	TargetName string `json:"targetName,omitempty"`

	// Type: Type of relation.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityProfileRelated) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityProfileRelated
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftEntityProfileRelated) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftEntityProfileRelated
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftEntityType: A generic type description for an entity.
type NlpSaftEntityType struct {
	// BasedOnMention: This field can be used to specify if the entity type
	// has been annotated or predicted from a specific mention of the
	// entity. However, the entity type does still apply to the entity as a
	// whole, and not just a specific mention.
	BasedOnMention int64 `json:"basedOnMention,omitempty"`

	// Domain: A domain name for the set that this particular type belongs
	// to.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "SAFT" - Coarse entity types, like "/saft/organization".
	//   "SAFT_FINE" - Fine entity types, like
	// "/saft/organization/education".
	//   "SAFT_FINE_MENTION" - Mention-level fine entity types. These are
	// annotated in cases when the entity-level type does not apply to all
	// mentions, like in "Bob is an animal." The based_on_mention value is
	// populated correspondingly.
	//   "COLLECTIONS"
	//   "FREEBASE"
	//   "FIGER"
	//   "ISA"
	Domain string `json:"domain,omitempty"`

	// Info: Application-specific information about this entity type.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Name: The type name, like "/saft/person". See README.entity-types for
	// the inventory of SAFT type tags.
	Name string `json:"name,omitempty"`

	// Score: A score for this type.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BasedOnMention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BasedOnMention") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftEntityType) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftEntityType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftEntityType) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftEntityType
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftHyperlink: A link on an HTML page.
type NlpSaftHyperlink struct {
	// AnchorText: Clean anchor text (no HTML markup).
	AnchorText string `json:"anchorText,omitempty"`

	// ByteEnd: note: inclusive
	ByteEnd int64 `json:"byteEnd,omitempty"`

	// ByteStart: begin/end options are for goldmine AnnotationsFinder to
	// locate the offsets of saft tokens. Start is inclusive by default and
	// end is marked. The indices of the first and last byte covered by the
	// hyperlink.
	ByteStart int64 `json:"byteStart,omitempty"`

	// Phrase: The indices of the first and last token covered by the
	// hyperlink.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Url: (Absolute) URL that the links to.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftHyperlink) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftHyperlink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftIdentifier: External identifier. An external identifier is a
// persistent identifier for an object within a domain.
type NlpSaftIdentifier struct {
	// Domain: Domain for the identifier.
	//
	// Possible values:
	//   "WIKIPEDIA_ARTICLE_NAME"
	//   "WEBREFERENCES_ID"
	//   "FREEBASE_MID"
	//   "WIKIPEDIA_ARTICLE_ID"
	//   "CANONICAL_URL"
	//   "FREEBASE_TOPIC"
	//   "FREEBASE_MID_CHAIN"
	//   "FREEBASE_ID"
	//   "OYSTER_FEATURE_ID"
	//   "WORDNET_SENSE_KEY"
	//   "EXACT_STRING_MATCH"
	//   "GOOGLE_PLAY_ID" - id of the app on play store
	//   "GOOGLE_PLAY_DEVELOPER" - name of the developer
	//   "GOOGLE_PLAY_TITLE" - title of the app
	//   "OXFORD_ID"
	//   "NOUN_COMPOUND"
	Domain string `json:"domain,omitempty"`

	// Id: Identifier within domain.
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftLabeledSpan: A generic span, possibly with an associated
// label. The span may be defined by either byte-level or token-level
// boundaries.
type NlpSaftLabeledSpan struct {
	// ByteEnd: note: inclusive
	ByteEnd int64 `json:"byteEnd,omitempty"`

	// ByteStart: The indices of the first and last byte covered by the
	// span.
	ByteStart int64 `json:"byteStart,omitempty"`

	// Label: The label associated with the span.
	Label string `json:"label,omitempty"`

	// LabelScores: Optionally stores alternative labels with associated
	// scores for the span.
	LabelScores map[string]float64 `json:"labelScores,omitempty"`

	// Score: A score associated with the span.
	Score float64 `json:"score,omitempty"`

	// TokenEnd: note: inclusive
	TokenEnd int64 `json:"tokenEnd,omitempty"`

	// TokenStart: The indices of the first and last token covered by the
	// span.
	TokenStart int64 `json:"tokenStart,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ByteEnd") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ByteEnd") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftLabeledSpan) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftLabeledSpan
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftLabeledSpan) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftLabeledSpan
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftLabeledSpans: A list of labeled spans of the same type.
type NlpSaftLabeledSpans struct {
	LabeledSpan []*NlpSaftLabeledSpan `json:"labeledSpan,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LabeledSpan") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LabeledSpan") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftLabeledSpans) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftLabeledSpans
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftMeasure: Measures in the documents. This covers both time
// expressions as well as physical quantities.
type NlpSaftMeasure struct {
	// Canonical: Canonical value for measurement.
	Canonical float64 `json:"canonical,omitempty"`

	// Granularity: Granularity for measurement.
	Granularity float64 `json:"granularity,omitempty"`

	// Info: Application-specific information about this measure.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Phrase: Phrase containing the measure.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Possible values:
	//   "NUMBER"
	//   "PERCENT"
	//   "ORDINAL"
	//   "DATE"
	//   "TIME"
	//   "PERIOD"
	//   "CURRENCY"
	//   "LENGTH"
	//   "AREA"
	//   "VOLUME"
	//   "MASS"
	//   "TEMPERATURE"
	//   "ANGLE"
	//   "BRIGHTNESS"
	//   "CHARGE"
	//   "DATA"
	//   "DATA_RATE"
	//   "DURATION"
	//   "ENERGY"
	//   "FREQUENCY"
	//   "FUEL_EFFICIENCY"
	//   "POWER"
	//   "PRESSURE"
	//   "SPEED"
	//   "VOLTAGE"
	//   "RESISTANCE"
	//   "FORCE"
	Type string `json:"type,omitempty"`

	Unit string `json:"unit,omitempty"`

	// Value: Measurement value and unit.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Canonical") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Canonical") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftMeasure) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftMeasure
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftMeasure) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftMeasure
	var s1 struct {
		Canonical   gensupport.JSONFloat64 `json:"canonical"`
		Granularity gensupport.JSONFloat64 `json:"granularity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Canonical = float64(s1.Canonical)
	s.Granularity = float64(s1.Granularity)
	return nil
}

// NlpSaftMention: Mentions of the entity in the document.
type NlpSaftMention struct {
	// Confidence: Estimate of the confidence that this mention is in the
	// correct cluster. Zero means this mention is probably in the wrong
	// cluster, 1 means this mention is probably in the correct cluster. See
	// nlp/saft/components/coreference/coreference-confidence.h for details
	// about what "correct cluster" might mean.
	Confidence float64 `json:"confidence,omitempty"`

	// Info: Application-specific information about this mention.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Possible values:
	//   "UNSPECIFIED_KIND"
	//   "REFERENTIAL" - referential mention
	//   "ATTRIBUTIVE" - attributive mention
	//   "MODIFIER" - modifier mention
	Kind string `json:"kind,omitempty"`

	// Possible values:
	//   "UNSPECIFIED_RELATION"
	//   "ALIAS" - This mention refers to the same entity as the enclosing
	// mention. E.g.: [[Google] Inc.]
	//   "NESTED_MODIFIER" - This mention refers to an entity that is used
	// as a modifier to specify or identify the enclosing mention's entity.
	// E.g.: [[California] DMV]
	//   "EPONYM" - This mention refers to an entity that the enclosing
	// mention's entity is named after. E.g.: [[George Washington] Bridge]
	//   "CONJUNCTION" - This mention refers to an entity that forms a
	// co-equal part that makes up the enclosing mention. E.g.: [[Roe] v
	// [Wade]]
	//   "IN_CREATIVE_WORK" - The enclosing mention is the name/title of a
	// creative work. E.g.: [[Batman] Returns]
	//   "SPECIFIED_HEAD" - The enclosing mention is a specific instance or
	// member of the more general entity identified by this mention. E.g.:
	// [2008 [Winter Olympics]]
	NestingRelation string `json:"nestingRelation,omitempty"`

	// Phrase: Phrase for the mention.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Resolution: Mention-level resolution. This is used for encoding the
	// meaning of the mention rather than the entity. For example, definite
	// references and appositions are resolved to the mid for the concept
	// rather than the entity.
	Resolution *NlpSaftMentionResolution `json:"resolution,omitempty"`

	// Possible values:
	//   "UNSPECIFIED"
	//   "CONJUNCTION_ITEM"
	Role string `json:"role,omitempty"`

	// Possible values:
	//   "NAM" - name mention (proper noun)
	//   "NOM" - nominal mention (common noun)
	//   "PRE" - pre-nominal mention
	//   "PRO" - pronominal mention
	//   "CMC" - conjoined mention construction
	//   "NRP" - mention of a non-referential pronoun
	//   "VRB" - Verbal mention (head of verb phrase antecedents in
	// discourse deixis).
	//   "IMP" - Implicit mention (e.g., elliptical subjects in pro-drop
	// languages). The facet in the phrase indicates its role with respect
	// to the phrase token.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftMention) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftMention) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftMention
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// NlpSaftMentionResolution: Mention resolution for encoding the concept
// id (e.g. mid) for a mention.
type NlpSaftMentionResolution struct {
	// Profile: Profile for mention information.
	Profile *NlpSaftEntityProfile `json:"profile,omitempty"`

	// Possible values:
	//   "MATCH"
	//   "BROADER_MATCH"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Profile") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Profile") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftMentionResolution) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftMentionResolution
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftMorphology: Message that stores information about the
// morphology of a token.
type NlpSaftMorphology struct {
	// AttrValue: A list of morphology attribute-value pairs.
	//
	// Possible values:
	//   "OTHER" - Defaults. not in list
	//   "ATTR_ANIMACY" - Animacy.
	//   "UNSP_ANIMACY" - animacy=unsp_r
	//   "ANIMATE" - animacy=anim
	//   "INANIMATE" - animacy=inan
	//   "IRRATIONAL" - animacy=irrat
	//   "RATIONAL" - animacy=rat
	//   "PERSONAL" - animacy=pers
	//   "ATTR_ASPECT" - Aspect.
	//   "UNSP_ASPECT" - aspect=unsp_a
	//   "PERFECT" - aspect=perf
	//   "IMPERFECT" - aspect=imperf
	//   "PROGRESSIVE" - aspect=prog
	//   "ATTR_CASE" - Case.
	//   "UNSP_CASE" - case=unsp_c
	//   "NOMINATIVE" - case=nom
	//   "ACCUSATIVE" - case=acc
	//   "DATIVE" - case=dat
	//   "GENITIVE" - case=gen
	//   "PREPOSITIONAL" - case=prep
	//   "INSTRUMENTAL" - case=ins
	//   "VOCATIVE" - case=voc
	//   "ADVERBIAL" - case=advb
	//   "COMPLEMENTIVE" - case=comp
	//   "LOCATIVE" - case=loc
	//   "OBLIQUE" - case=obl
	//   "PARTITIVE" - case=par
	//   "REFLEXIVE_CASE" - case=reflex
	//   "RELATIVE_CASE" - case=rel
	//   "DIRECT_CASE" - case=dir
	//   "ERGATIVE" - case=erg
	//   "ATTR_DEFINITENESS" - Definiteness.
	//   "UNSP_DEFINITENESS" - definiteness=unsp_d
	//   "DEFINITE" - definiteness=def
	//   "INDEFINITE" - definiteness=indef
	//   "ATTR_DEGREE" - Degree.
	//   "UNSP_DEGREE" - degree=unsp_d
	//   "COMPARATIVE" - degree=cmp
	//   "SUPERLATIVE" - degree=sup
	//   "POSITIVE" - degree=pos
	//   "ABSOLUTE_DEGREE" - degree=sup_a
	//   "RELATIVE_DEGREE" - degree=sup_r
	//   "ATTR_FORM" - Form.
	//   "UNSP_FORM" - form=unsp_f
	//   "ADNOMIAL" - form=adn
	//   "AUXILIARY" - form=aux
	//   "COMPLEMENTIZER" - form=compl
	//   "FINAL_ENDING" - form=fin
	//   "GERUND" - form=ger
	//   "IRREALIS" - form=irr
	//   "LONG_FORM" - form=long
	//   "ORDER_FORM" - form=ord
	//   "REALIS" - form=real
	//   "SHORT_FORM" - form=short
	//   "SPECIFIC_FORM" - form=spcf
	//   "ATTR_GENDER_AGR" - Gender agreement.
	//   "UNSP_GENDER_AGR" - gender_agr=unsp_a
	//   "FEMININE_AGR" - gender_agr=fem_a
	//   "MASCULINE_AGR" - gender_agr=masc_a
	//   "NEUTER_AGR" - gender_agr=neut_a
	//   "ATTR_GENDER" - Gender.
	//   "UNSP_GENDER" - gender=unsp_g
	//   "FEMININE" - gender=fem
	//   "MASCULINE" - gender=masc
	//   "NEUTER" - gender=neut
	//   "PLURALE_TANTUM" - gender=pl_tantum
	//   "COMMON" - gender=com
	//   "ATTR_MOOD" - Mood.
	//   "UNSP_MOOD" - mood=unsp_m
	//   "CONDITIONAL_MOOD" - mood=cnd
	//   "IMPERATIVE" - mood=imp
	//   "INDICATIVE" - mood=ind
	//   "INTERROGATIVE" - mood=inter
	//   "JUSSIVE" - mood=jus
	//   "SUBJUNCTIVE" - mood=sub
	//   "SUBJUNCTIVE1" - mood=sub1
	//   "SUBJUNCTIVE2" - mood=sub2
	//   "OPTATIVE" - mood=opt
	//   "ATTR_NUMBER_AGR" - Number agreement.
	//   "UNSP_NUMBER_AGR" - number_agr=unsp_a
	//   "SINGULAR_AGR" - number_agr=sing_a
	//   "PLURAL_AGR" - number_agr=plur_a
	//   "ATTR_NUMBER" - Number.
	//   "UNSP_NUMBER" - number=unsp_n
	//   "SINGULAR" - number=sing
	//   "PLURAL" - number=plur
	//   "DUAL" - number=dual
	//   "ATTR_PERSON" - Person.
	//   "UNSP_PERSON" - person=unsp_p
	//   "FIRST" - person=1
	//   "SECOND" - person=2
	//   "THIRD" - person=3
	//   "REFLEXIVE_PERSON" - person=reflex
	//   "ATTR_PROPER" - Proper name.
	//   "UNSP_PROPER" - proper=unsp_p
	//   "NOT_PROPER" - proper=false
	//   "PROPER" - proper=true
	//   "ATTR_RECIPROCITY" - Reciprocity.
	//   "UNSP_RECIPROCITY" - reciprocity=unsp_r
	//   "NON_RECIPROCAL" - reciprocity=non-rcp
	//   "RECIPROCAL" - reciprocity=rcp
	//   "ATTR_TENSE" - Tense.
	//   "UNSP_TENSE" - tense=unsp_t
	//   "CONDITIONAL_TENSE" - tense=cnd
	//   "FUTURE" - tense=fut
	//   "PAST" - tense=past
	//   "PRESENT" - tense=pres
	//   "PLUPERFECT" - tense=plup
	//   "IMPERFECT_TENSE" - tense=impf
	//   "ATTR_VOICE" - Voice.
	//   "UNSP_VOICE" - voice=unsp_v
	//   "ACTIVE" - voice=act
	//   "CAUSATIVE" - voice=cau
	//   "PASSIVE" - voice=pass
	//   "ATTR_GENDER_ANTECEDENT" - Gender antecedent.
	//   "UNSP_GENDER_ANTECEDENT" - gender_antecedent=unsp_a
	//   "FEMININE_ANTECEDENT" - gender_antecedent=fem_a
	//   "MASCULINE_ANTECEDENT" - gender_antecedent=masc_a
	//   "NEUTER_ANTECEDENT" - gender_antecedent=neut_a
	//   "ATTR_NUMBER_ANTECEDENT" - Number antecedent.
	//   "UNSP_NUMBER_ANTECEDENT" - number_antecedent=unsp_a
	//   "SINGULAR_ANTECEDENT" - number_antecedent=sing_a
	//   "PLURAL_ANTECEDENT" - number_antecedent=plur_a
	//   "ATTR_HONORIFIC" - Honorific.
	//   "UNSP_HONORIFIC" - honorific=unsp_h
	//   "HONORIFIC" - honorific=hon
	//   "ATTR_FORMALITY" - Formality.
	//   "UNSP_FORMALITY" - formality=unsp_f
	//   "FORMAL" - formality=fml
	//   "INFORMAL" - formality=ifml
	//   "ATTR_INFLECTION_TYPE" - Inflection type (also known as Declension)
	//   "UNSP_INFLECTION_TYPE" - inflection_type=unsp_i
	//   "WEAK_INFLECTION" - inflection_type=weak
	//   "STRONG_INFLECTION" - inflection_type=strong
	//   "MIXED_INFLECTION" - inflection_type=mixed
	AttrValue []string `json:"attrValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttrValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttrValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftMorphology) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftMorphology
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftPhrase: A document phrase marks a range of tokens in a
// document as a phrase. The indices are token positions in the
// document.
type NlpSaftPhrase struct {
	End int64 `json:"end,omitempty"`

	// Possible values:
	//   "EXPLICIT" - explicit phrase, with no implicit facet
	//   "SUBJ" - subject of the phrase token
	//   "DOBJ" - direct object of the phrase token
	Facet string `json:"facet,omitempty"`

	// Head: The head token in the phrase is the id of the top-most token
	// within the phrase. It either has an arc from outside the phrase going
	// to it, or it is a root token of the sentence. A value of -1 indicates
	// that the head has not yet been computed for the phrase (not the same
	// semantics as the head of a token!). Note that even when it is
	// uniquely defined, there is no guarantee that the head is set for
	// entities and measurements within a document: you may need to
	// explicitly compute it.
	Head int64 `json:"head,omitempty"`

	// Start: First and last token in the phrase. The phrase goes from start
	// to end (inclusive).
	Start int64 `json:"start,omitempty"`

	// ForceSendFields is a list of field names (e.g. "End") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "End") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftReferent: A referent contains information about what a
// discourse context entity is referring to. It acts like a canonical
// mention of the entity.
type NlpSaftReferent struct {
	// Distance: Distance of this referent from the markables in the
	// Document. Smaller values imply that the referent is more accessible
	// to be an antecedent for a markable in the Document. The expectation
	// is that this field would increase with every new Document in which
	// this referent is not mentioned.
	Distance float64 `json:"distance,omitempty"`

	// Possible values:
	//   "NAMED" - mentioned by the actual name
	//   "DEFINITE" - refers to a particular object, e.g., "the dog"
	//   "INDEFINITE" - groups of objects, e.g., "dogs"
	Explicitness string `json:"explicitness,omitempty"`

	// Info: Application-specific information about this referent.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Phrase: Entity name phrase. The phrase indices are relative to the
	// token array above. The phrase should normally cover all the tokens in
	// the name and the head must be set to be the head token of the name.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Prominence: Prominence score for referent. This is roughly equivalent
	// to the number of previous mentions of the referent.
	Prominence float64 `json:"prominence,omitempty"`

	// Possible values:
	//   "CONTEXT" - Entity that has been mentioned previously in the
	// discourse context.
	//   "NARRATOR" - The narrator of the discourse. This can be coreferent
	// with first-person non-quoted pronouns in the discourse.
	//   "ADDRESSEE" - The recipient of the message in the discourse. This
	// can be coreferent with non-quoted second-person pronouns in the
	// discourse.
	//   "SUBJECT" - Prominent subject of the discourse context. This can be
	// coreferent with referential third-person pronouns in the discourse
	// that don't have any other possible antecedents in the discourse.
	Role string `json:"role,omitempty"`

	// Token: Tokenized representation for the canonical name of the
	// referent entity.
	Token []*NlpSaftToken `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Distance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Distance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftReferent) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftReferent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftReferent) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftReferent
	var s1 struct {
		Distance   gensupport.JSONFloat64 `json:"distance"`
		Prominence gensupport.JSONFloat64 `json:"prominence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Distance = float64(s1.Distance)
	s.Prominence = float64(s1.Prominence)
	return nil
}

// NlpSaftRelation: Relations between entities in the document. A
// relation is between two different entities in the document. A
// relation can have a number of mentions in the document. Next
// available id: 11
type NlpSaftRelation struct {
	// Identifier: External identifier for relation.
	Identifier *NlpSaftIdentifier `json:"identifier,omitempty"`

	// Info: Application-specific information about this relation.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Possible values:
	//   "ENTITY"
	//   "ATTRIBUTE"
	Kind string `json:"kind,omitempty"`

	// Mention: Mentions of the relation in the document.
	Mention []*NlpSaftRelationMention `json:"mention,omitempty"`

	// Score: Relation score.
	Score float64 `json:"score,omitempty"`

	// Source: Source and target entity indices. These are indices into the
	// entity array in the document. If this is an attribute relation the
	// target is the index of a measure in the document.
	Source int64 `json:"source,omitempty"`

	Target int64 `json:"target,omitempty"`

	// Type: Relation type.
	Type string `json:"type,omitempty"`

	// TypeId: Relation type id.
	TypeId int64 `json:"typeId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Identifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Identifier") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftRelation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftRelation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftRelation) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftRelation
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSaftRelationMention: Mentions of relations in the document. A
// relation mention is between a mention of the source entity and a
// mention of the target entity.
type NlpSaftRelationMention struct {
	// Info: Application-specific information about this relation mention.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Phrase: Phrase in the document that indicates the relation mention.
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Source: Source and target mention indices. These are indices into the
	// mention arrays for their respective entities. The target is not used
	// for attributes.
	Source int64 `json:"source,omitempty"`

	// SourceInfo: The info of the source models or systems of the relation
	// mention.
	SourceInfo []string `json:"sourceInfo,omitempty"`

	Target int64 `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Info") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Info") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftRelationMention) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftRelationMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftSemanticNode: Semantic node for annotating semantic
// constructions in documents. A set of SemanticNode instances
// represents a directed acyclic graph with an adjacency list
// representation. Each node can optionally be connected to some
// existing type system, such as PropBank. Each node can optionally be
// connected to one or more concrete elements in a SAFT document,
// specifically, an entity mention, a measure and/or a token span
// (Phrase). Next available id: 23
type NlpSaftSemanticNode struct {
	// Arc: The arcs from this node. For example, if this node is the root
	// of a subgraph representing a predicate-argument structure, this node
	// will typically refer to the predicate, and there will typically be
	// one arc per argument.
	Arc []*NlpSaftSemanticNodeArc `json:"arc,omitempty"`

	// Confidence: Confidence score for the annotation.
	Confidence float64 `json:"confidence,omitempty"`

	// Description: Human-readable description of the information in the
	// subgraph represented by this node. This field is only meant for
	// display purposes.
	Description string `json:"description,omitempty"`

	// Entity: The entity and mention fields specify a unique entity mention
	// referred to by this semantic node.
	Entity int64 `json:"entity,omitempty"`

	// Implicit: Indicates whether the semantic node is not explicit
	// (grounded) in the text (e.g. pro-drop for a text author or an
	// implicit predicate node for interpreting a compound noun), rather
	// than any explicit phrase or text inside the document.
	Implicit bool `json:"implicit,omitempty"`

	// Info: Application-specific information about this node.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Kind: Encodes the kind of this node and, possibly, the entire
	// subgraph rooted at this node. For example, if this node represents a
	// predicate-argument structure in PropBank, then this node's kind will
	// be PROPBANK, its phrase field will be set to correspond to the span
	// of tokens corresponding to the predicate (such as a verb) and it will
	// have one arc per argument. If the kind is MONOTONIC this node
	// corresponds to a semantic graph node, and arcs correspond to semantic
	// graph edges outgoing from the node. If the kind field is not set,
	// then this node is not directly connected to any type system. In such
	// a case, this node may still optionally have a concrete "payload" in
	// the form of references to an entity mention, measure or span of
	// tokens (Phrase) in a SAFT document. The values or existence of the
	// kind field need not be identical in any subgraph. For example, even
	// if this node's kind field is not set, it may still be the destination
	// node of an arc from some other node whose kind field is set.
	//
	// Possible values:
	//   "PROPBANK"
	//   "MONOTONIC" - Semantic node in the monotonic graphical semantics
	// notation.
	//   "FRAMENET" - FrameNet: frame + frame elements.
	//   "OPEN_RELATION" - Semantic node representing an open relation
	// extraction.
	//   "PATTERN_CLUSTERS" - Semantic node representing an event derived
	// from patterns learned from news clusters.
	//   "OED_WORD_SENSE" - Word senses denoted by OED lexids.
	//   "EVENT" - Semantic node representing an event or event mention.
	//   "NAME" - Semantic node representing a proper name.
	//   "TIME_EXPRESSION" - Semantic node representing a time expression.
	//   "MOLECULE"
	//   "WORDNET" - Word senses denoted by WordNet Word Sense.
	//   "HYPERNYM" - Semantic node representing the hypernym of a mention.
	// Each mention can have multiple hypernyms (each stored in its own
	// SemanticNode), and these hypernyms are not necessarily mutually
	// exclusive. go/hyperpedia, go/contextual-hp-design-doc
	//   "DIALOGUE" - Semantic node representing a dialogue annotation,
	// indicating lines of direct speech, entities who speak these lines, or
	// entire conversations consisting of these lines and speakers. For a
	// detailed reference on the schema for this annotation, see
	// nlp/descartes/dialogue/proto/dialogue.proto.
	//   "ANAPHOR" - Semantic node representing an anaphoric phrase whose
	// interpretation depends on another phrase with which it is not
	// coreferent and to which it is linked by an arc. E.g., He bought a
	// blue car and she bought [one] too.
	//   "SENSE_ANTECEDENT" - Semantic node representing a phrase whose
	// sense (not referent) is the antecedent of an anaphoric phrase such as
	// "one". E.g., He bought a [blue car] and she bought one too.
	//   "NOUN_COMPOUND" - Representing the semantic relation between the
	// components of a noun compound chosen from a fixed inventory of
	// abstract relations.
	//   "ISTA" - Semantic node representing a term in the short-text (iSTA)
	// parse of the document.
	Kind string `json:"kind,omitempty"`

	// Measure: The index of the measure referred to by this semantic node.
	Measure int64 `json:"measure,omitempty"`

	Mention int64 `json:"mention,omitempty"`

	// Phrase: Phrase (span of text) for this node. This field does not need
	// to be set, but if it is, this node has a textual "payload"
	// corresponding to the specified token span. For example, if this node
	// is the root of a subgraph corresponding to a predicate-argument
	// structure, then the phrase field will be set to be the span of tokens
	// corresponding to the predicate (e.g., a verb).
	Phrase *NlpSaftPhrase `json:"phrase,omitempty"`

	// Type: Arbitrary type string for this semantic node, or for the
	// subgraph rooted at this node. This type string might come from an
	// external resource, type system or ontology that contains a predefined
	// set of types.
	Type string `json:"type,omitempty"`

	// Value: Arbitrary value string for this semantic node.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Arc") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Arc") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftSemanticNode) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftSemanticNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftSemanticNode) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftSemanticNode
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// NlpSaftSemanticNodeArc: An arc contained by a source node pointing to
// a destination node in a directed acyclic graph.
type NlpSaftSemanticNodeArc struct {
	// Description: Human-readable description of this arc's type (for
	// display purposes).
	Description string `json:"description,omitempty"`

	// Implicit: Indicates the arc is for an implicit semantic relation
	// between nodes, for example one that does not correspond to a
	// grammatical relation in the text.
	Implicit bool `json:"implicit,omitempty"`

	// Info: Application-specific information about this arc.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// SemanticNode: Index of the semantic node pointed to by this arc.
	SemanticNode int64 `json:"semanticNode,omitempty"`

	// Type: Arc type (akin to an edge label, or semantic operator).
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftSemanticNodeArc) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftSemanticNodeArc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSaftToken: A document token marks a span of bytes in the document
// text as a token or word. Next available index: 16.
type NlpSaftToken struct {
	// Possible values:
	//   "NO_BREAK" - No separation between tokens.
	//   "SPACE_BREAK" - Tokens separated by space.
	//   "LINE_BREAK" - Tokens separated by line break.
	//   "SENTENCE_BREAK" - Tokens separated by sentence break.
	//   "PARAGRAPH_BREAK" - Tokens separated by paragraph break.
	//   "SECTION_BREAK" - Tokens separated by section break.
	//   "CHAPTER_BREAK" - Tokens separated by chapter break.
	BreakLevel string `json:"breakLevel,omitempty"`

	// BreakSkippedText: Whether the break skipped over non-tag text
	// (excluding script/style).
	BreakSkippedText bool `json:"breakSkippedText,omitempty"`

	// Category: Coarse-grained word category for token. See
	// README.categories for category inventory.
	Category string `json:"category,omitempty"`

	End int64 `json:"end,omitempty"`

	// Head: Head of this token in the dependency tree: the id of the token
	// which has an arc going to this one. If it is the root token of a
	// sentence, then it is set to -1.
	Head int64 `json:"head,omitempty"`

	// Info: Annotation for this token.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Label: Label for dependency relation between this token and its head.
	// See README.labels for label inventory.
	Label string `json:"label,omitempty"`

	// Lemma: Word lemma. This is only filled if the lemma is different from
	// the word form.
	Lemma string `json:"lemma,omitempty"`

	// Morph: Morphology information.
	Morph *NlpSaftMorphology `json:"morph,omitempty"`

	// ScriptCode: A string representation (typically four letters,
	// sometimes longer) of the token's Unicode script code, based on BCP
	// 47/CLDR, capitalized according to ISO 15924. See
	// i18n/identifiers/scriptcode.h for details.
	ScriptCode string `json:"scriptCode,omitempty"`

	// Start: [start, end] describe the inclusive byte range of the UTF-8
	// encoded token in document.text. End gives the index of the last byte,
	// which may be a UTF-8 continuation byte, and the length in bytes is
	// end - start + 1. begin/end options are for goldmine AnnotationsFinder
	// to locate the offsets of saft tokens. Start is inclusive by default
	// and end is marked.
	Start int64 `json:"start,omitempty"`

	// Tag: Part-of-speech tag for token. See README.tags for tag inventory.
	Tag string `json:"tag,omitempty"`

	// TagConfidence: Confidence score for the tag prediction -- should be
	// interpreted as a probability estimate that the tag is correct.
	TagConfidence float64 `json:"tagConfidence,omitempty"`

	TextProperties int64 `json:"textProperties,omitempty"`

	// Word: Token word form. This may not be identical to the original. For
	// example, in goldmine annotation we do UTF-8 normalization and
	// punctuation normalization. The punctuation normalization includes
	// inferring the directionality of straight doublequotes -- that is, we
	// map " to open quote (``) or close quote (''), and sometimes we get it
	// wrong. SAFT processing in other contexts (such as queries in
	// qrewrite) involves different normalizations.
	Word string `json:"word,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BreakLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BreakLevel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSaftToken) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSaftToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSaftToken) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSaftToken
	var s1 struct {
		TagConfidence gensupport.JSONFloat64 `json:"tagConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.TagConfidence = float64(s1.TagConfidence)
	return nil
}

// NlpSciencelitArticleData: A copy of the text of an article along with
// references to internal figures and external citations, datasets, etc.
// Next available ID: 19
type NlpSciencelitArticleData struct {
	// AnalyzedText: All the text in this article, separated into Sections
	// and Paragraphs. See nlp_sciencelit.ScaleSetExtensions for the
	// extensions to ScaleSet used.
	AnalyzedText *NlxDataSchemaScaleSet `json:"analyzedText,omitempty"`

	ArticleId []*NlpSciencelitArticleId `json:"articleId,omitempty"`

	// Citation: All references from this article (Bibliography).
	Citation []*NlpSciencelitCitationData `json:"citation,omitempty"`

	// EarliestPubDate: The result of selecting the earliest date from
	// various metadata (PMC, PubMed Metadata, scholar citations).
	EarliestPubDate string `json:"earliestPubDate,omitempty"`

	Metadata *NlpSciencelitArticleMetadata `json:"metadata,omitempty"`

	NonAbstractWordCount int64 `json:"nonAbstractWordCount,omitempty,string"`

	// ParsedFrom: Path of the source document from which this was parsed.
	ParsedFrom string `json:"parsedFrom,omitempty"`

	// PubDate: All dates from the PMC article metadata Year/Mon/Day.
	PubDate []*NlpSciencelitPubDate `json:"pubDate,omitempty"`

	// ReferencedBlock: All figure captions within this article.
	ReferencedBlock []*NlpSciencelitReferencedBlock `json:"referencedBlock,omitempty"`

	// ScholarCitation: Citation for this article.
	ScholarCitation *ScienceCitation `json:"scholarCitation,omitempty"`

	// ScholarDocument: DocJoins with full text article.
	ScholarDocument []*CompositeDoc `json:"scholarDocument,omitempty"`

	// ScholarSignal: May also add the Scholar index signal information:
	ScholarSignal *ScienceIndexSignal `json:"scholarSignal,omitempty"`

	// Source: Source of this article data (e.g., PubMed, scholar index,
	// other source.).
	Source string `json:"source,omitempty"`

	Title string `json:"title,omitempty"`

	// WordCount: Number of words in the entire article and everywhere
	// outside of abstract sections.
	WordCount int64 `json:"wordCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AnalyzedText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnalyzedText") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitArticleData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitArticleData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitArticleId: Article IDs associated with an article (e.g.,
// PMID, DOI, PMC).
type NlpSciencelitArticleId struct {
	Id string `json:"id,omitempty"`

	IdType string `json:"idType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitArticleId) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitArticleId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitArticleMetadata: Next available ID: 20.
type NlpSciencelitArticleMetadata struct {
	// Abstract: Abstract of article from metadata.
	Abstract *NlpSciencelitTokenizedText `json:"abstract,omitempty"`

	ArticleId []*NlpSciencelitArticleId `json:"articleId,omitempty"`

	// Author: Author of article.
	Author []*NlpSciencelitAuthor `json:"author,omitempty"`

	// Dataset: Datasets referenced from this article.
	Dataset []*NlpSciencelitDataset `json:"dataset,omitempty"`

	// DateStr: Most recent date YYYY-MM-DD.
	DateStr string `json:"dateStr,omitempty"`

	// Deleted: Citation for flagged for deletion by source.
	Deleted bool `json:"deleted,omitempty"`

	// Heading: Mesh Terms.
	Heading []*NlpSciencelitMeshHeading `json:"heading,omitempty"`

	Issue string `json:"issue,omitempty"`

	// Journal: Title of journal. For books: Journal = Publisher Volume =
	// Collection
	Journal string `json:"journal,omitempty"`

	Language string `json:"language,omitempty"`

	// LastRevisedDateStr: Last entry revision date YYYY-MM-DD.
	LastRevisedDateStr string `json:"lastRevisedDateStr,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "PUBMED"
	//   "PMC"
	//   "SCHOLAR"
	//   "CORD"
	MetadataSource []string `json:"metadataSource,omitempty"`

	// ParsedFrom: Source Pubmed/Medline XML file.
	ParsedFrom string `json:"parsedFrom,omitempty"`

	// Pmid: PMID of article (for non-pubmed data, this is the docid).
	Pmid string `json:"pmid,omitempty"`

	PublicationType []*NlpSciencelitPublicationType `json:"publicationType,omitempty"`

	// ScamRestrictTokens: Optional ScaM restrict tokens to be added to all
	// GFVs generated from this article's data.
	ScamRestrictTokens *ResearchScamV3Restrict `json:"scamRestrictTokens,omitempty"`

	// Title: Title of article.
	Title string `json:"title,omitempty"`

	// Url: URL(s) for the document. If possible, order by decreasing
	// desirability.
	Url []string `json:"url,omitempty"`

	Volume string `json:"volume,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Abstract") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Abstract") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitArticleMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitArticleMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSciencelitAuthor struct {
	FirstName string `json:"firstName,omitempty"`

	LastName string `json:"lastName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FirstName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FirstName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitAuthor) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitAuthor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitCitationData: Next available ID: 8
type NlpSciencelitCitationData struct {
	ArticleId []*NlpSciencelitArticleId `json:"articleId,omitempty"`

	Author []*NlpSciencelitAuthor `json:"author,omitempty"`

	ExternalLink string `json:"externalLink,omitempty"`

	FullText string `json:"fullText,omitempty"`

	// Reference: Reference used in text (e.g., PMC rid).
	Reference string `json:"reference,omitempty"`

	// ScholarCitation: Scholar citation information from scholar index.
	ScholarCitation *ScienceCitation `json:"scholarCitation,omitempty"`

	// Title: Optional information about the publication.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArticleId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArticleId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitCitationData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitCitationData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSciencelitDataset struct {
	// Possible values:
	//   "UNKNOWN"
	//   "DATABANK" - Associated DataBank marked up by PubMed
	// https://www.nlm.nih.gov/bsd/medline_databank_source.html
	//   "CITATION" - Scholar citation from the article to the dataset
	// Extracted from ScholarCitations in science_search dataset metadata
	//   "MATCH" - Dataset likely created together with the article
	// Extracted from MatchingArticle in science_search dataset metadata
	Association string `json:"association,omitempty"`

	DatasetMetadata *ResearchScienceSearchReconciledMetadata `json:"datasetMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Association") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Association") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitDataset) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitDataset
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitMeshHeading: A full Mesh Heading containing a descriptor
// and optionally multiple qualifiers.
// https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html#meshheadinglist
type NlpSciencelitMeshHeading struct {
	MeshDescriptor *NlpSciencelitSubjectHeading `json:"meshDescriptor,omitempty"`

	MeshQualifier []*NlpSciencelitSubjectHeading `json:"meshQualifier,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MeshDescriptor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MeshDescriptor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitMeshHeading) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitMeshHeading
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitPubDate: Pubdate extracted from PMC article metadata.
type NlpSciencelitPubDate struct {
	DateStr string `json:"dateStr,omitempty"`

	// PubType: "ppub" for a print ISSN and "epub" for an electronic ISSN.
	PubType string `json:"pubType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateStr") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateStr") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitPubDate) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitPubDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSciencelitPublicationType struct {
	// Name: Display name for the publication type, e.g. "Journal Article"
	Name string `json:"name,omitempty"`

	// Ui: MeSH unique identifiers for publication types, e.g. "D016428"
	Ui string `json:"ui,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitPublicationType) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitPublicationType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitReferencedBlock: Data associate with the
// ReferencesBlock. Next available ID: 5
type NlpSciencelitReferencedBlock struct {
	// Caption: Caption tokens - all text in the caption other than the
	// block.
	Caption *NlpSciencelitTokenizedText `json:"caption,omitempty"`

	// Reference: Reference used from the text to point to this figure.
	Reference string `json:"reference,omitempty"`

	// Title: Title tokens - these come from a block within a caption.
	Title *NlpSciencelitTokenizedText `json:"title,omitempty"`

	// Type: Type of figure (table, figure, etc.).
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Caption") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Caption") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitReferencedBlock) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitReferencedBlock
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSciencelitRetrievalQueryEncodingDebugInfo struct {
	// ScamQueryEncoding: The query encoding sent to scam for retrieval.
	ScamQueryEncoding *ResearchScamGenericFeatureVector `json:"scamQueryEncoding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ScamQueryEncoding")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ScamQueryEncoding") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitRetrievalQueryEncodingDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitRetrievalQueryEncodingDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitRetrievalSearchResultDebugInfo: Returned by Delver API
// in SearchResult.debug_info.
type NlpSciencelitRetrievalSearchResultDebugInfo struct {
	// ArticleData: Only set if RequestOptions.debug_return_article_data is
	// true.
	ArticleData *NlpSciencelitArticleData `json:"articleData,omitempty"`

	GoldDocid []string `json:"goldDocid,omitempty"`

	GoldSnippets []string `json:"goldSnippets,omitempty"`

	// IsGold: Not set by server; only used by evals.
	IsGold bool `json:"isGold,omitempty"`

	// RerankingScore: See SearchResultInternal.reranking_score.
	RerankingScore float64 `json:"rerankingScore,omitempty"`

	// ReverseRerankingOrder: See
	// SearchResultInternal.reverse_reranking_order.
	ReverseRerankingOrder int64 `json:"reverseRerankingOrder,omitempty"`

	// SectionIrScore: See SearchResultInternal.section_ir_score.
	SectionIrScore map[string]float64 `json:"sectionIrScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArticleData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArticleData") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitRetrievalSearchResultDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitRetrievalSearchResultDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSciencelitRetrievalSearchResultDebugInfo) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSciencelitRetrievalSearchResultDebugInfo
	var s1 struct {
		RerankingScore gensupport.JSONFloat64 `json:"rerankingScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RerankingScore = float64(s1.RerankingScore)
	return nil
}

// NlpSciencelitRetrievalSearchResultSetDebugInfo: Optionally returned
// by Delver API in the response's debug_info field.
type NlpSciencelitRetrievalSearchResultSetDebugInfo struct {
	QueryEncoding *NlpSciencelitRetrievalQueryEncodingDebugInfo `json:"queryEncoding,omitempty"`

	ScamResponse *ResearchScamQueryResponse `json:"scamResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "QueryEncoding") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QueryEncoding") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitRetrievalSearchResultSetDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitRetrievalSearchResultSetDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitRetrievalSnippetDebugInfo: Returned by Delver API in
// Snippet.debug_info.
type NlpSciencelitRetrievalSnippetDebugInfo struct {
	// GoldHighlightSentenceIndices: Which highlights have sentence overlap
	// with gold snippets. Not ordered. Might only be set for the first gold
	// highlight.
	GoldHighlightSentenceIndices []int64 `json:"goldHighlightSentenceIndices,omitempty"`

	// HighlightIdxToOverlap: Map of highlight index to best overlap with
	// any gold snippet [0,1].
	HighlightIdxToOverlap map[string]float64 `json:"highlightIdxToOverlap,omitempty"`

	// HighlightIdxToSentenceOverlap: Map of highlight index to best overlap
	// with any gold sentence [0,1].
	HighlightIdxToSentenceOverlap map[string]float64 `json:"highlightIdxToSentenceOverlap,omitempty"`

	// IsGold: Not set by server; only used by certain evals. Might only be
	// set for the first gold snippet.
	IsGold bool `json:"isGold,omitempty"`

	// OffsetWithinSection: Byte index of text within the full section text
	// (or within title).
	OffsetWithinSection int64 `json:"offsetWithinSection,omitempty"`

	// SectionIndex: Section within the document. -1 if title.
	SectionIndex int64 `json:"sectionIndex,omitempty"`

	// SectionIrScore: IR score of the section the snippet is coming from.
	SectionIrScore float64 `json:"sectionIrScore,omitempty"`

	// SnippetBleuScore: BLEU score for the entire snippet.
	SnippetBleuScore float64 `json:"snippetBleuScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GoldHighlightSentenceIndices") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "GoldHighlightSentenceIndices") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitRetrievalSnippetDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitRetrievalSnippetDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSciencelitRetrievalSnippetDebugInfo) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSciencelitRetrievalSnippetDebugInfo
	var s1 struct {
		SectionIrScore   gensupport.JSONFloat64 `json:"sectionIrScore"`
		SnippetBleuScore gensupport.JSONFloat64 `json:"snippetBleuScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SectionIrScore = float64(s1.SectionIrScore)
	s.SnippetBleuScore = float64(s1.SnippetBleuScore)
	return nil
}

// NlpSciencelitSubjectHeading: A subject heading from Mesh
type NlpSciencelitSubjectHeading struct {
	Id string `json:"id,omitempty"`

	MajorTopic bool `json:"majorTopic,omitempty"`

	Term string `json:"term,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitSubjectHeading) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitSubjectHeading
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSciencelitTokenizedText: Tokenized text with optional original
// representation.
type NlpSciencelitTokenizedText struct {
	Text string `json:"text,omitempty"`

	Token []string `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSciencelitTokenizedText) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSciencelitTokenizedText
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingAnnotationEvalData: Annotators whose semantics are
// represented via a protocol message should add to that message a field
// or extension of this type and set it using
// Annotator::PopulateAnnotationEvalData to enable span-based evaluation
// metrics in training. Evaluation is done based on token spans. The
// byte span aligns with the token span and is used when saving
// examples. Background: In some settings, the examples used to
// induce/train a grammar do not specify complete semantics of an
// annotation. For example, some examples that come from Ewok specify
// only the span associated with each annotation. This message allows
// evaluation metrics to test the span by embedding it in the semantics.
// LINT.IfChange
type NlpSemanticParsingAnnotationEvalData struct {
	// AdditionalSpans: Additional spans after the first. Empty in all
	// additional_spans.
	AdditionalSpans []*NlpSemanticParsingAnnotationEvalData `json:"additionalSpans,omitempty"`

	NumBytes int64 `json:"numBytes,omitempty"`

	NumTokens int64 `json:"numTokens,omitempty"`

	// StartByte: Byte position within the utterance. Safe to use across
	// different components of the NLU stack as long as said components have
	// access to the same query.
	StartByte int64 `json:"startByte,omitempty"`

	// StartToken: Token position. This is cleared when normalizing examples
	// for storage because tokenization changes over time. DO NOT use these
	// two fields across components that use different tokenizations.
	StartToken int64 `json:"startToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdditionalSpans") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalSpans") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingAnnotationEvalData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingAnnotationEvalData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingAppAnnotation: The App annotator annotates
// potential app name in the parser's input and outputs the proto with
// the details about app(s).
type NlpSemanticParsingAppAnnotation struct {
	// AppInfo: The app_info is to store specific information about
	// installed/uninstalled apps annotated by app annotator servlet. It
	// contains app name, package name, confidence, and source.
	AppInfo []*QualityActionsAppInfo `json:"appInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingAppAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingAppAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDateTimeAnnotation: Example: "Remind me to go to
// the store on (Friday) (9am)" would output two non-overlapping and
// unrelated annotations. One would have a start_date = Friday and the
// other would have start_time = 9am. It's possible for Friday to be one
// of several upcoming Friday's, so start_date is a repeated field. Next
// ID: 10
type NlpSemanticParsingDateTimeAnnotation struct {
	// Possible values:
	//   "UNKNOWN_DATE_TYPE"
	//   "TODAY"
	//   "TOMORROW"
	//   "WEEKEND" - A whole weekend, from Friday to Monday.
	//   "WEEK" - A whole week, from Sunday to the next Sunday.
	DateType string `json:"dateType,omitempty"`

	EndDate []string `json:"endDate,omitempty"`

	EndTime []string `json:"endTime,omitempty"`

	// Possible values:
	//   "UNKNOWN_DAY"
	//   "SUNDAY"
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	EndWeekday string `json:"endWeekday,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// StartDate: NOTE: None of these are co-indexed. If the query is
	// 'morning', there could be multiple start_time's, start_date's,
	// end_date's, and end_time's, and they do not correspond to one another
	// in any structured way.
	StartDate []string `json:"startDate,omitempty"`

	StartTime []string `json:"startTime,omitempty"`

	// Possible values:
	//   "UNKNOWN_DAY"
	//   "SUNDAY"
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	StartWeekday string `json:"startWeekday,omitempty"`

	// Possible values:
	//   "UNKNOWN_TIME_TYPE"
	//   "MORNING"
	//   "AFTERNOON"
	//   "EVENING"
	//   "NIGHT"
	TimeType string `json:"timeType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDateTimeAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDateTimeAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeAbsoluteDateTime: AbsoluteDateTime
// represents the resolved date/time expressions that need no further
// calculation. It has a section for date and a section for time. The
// date section will always be filled; if the time section is filled,
// hour is always filled; for (minute, second, partial_second), they are
// optional with a zero default value. But if partial_second is filled,
// (minute, second) must be filled, even they are 0s; if second is
// filled, minute must be filled. Next field#: 22.
type NlpSemanticParsingDatetimeAbsoluteDateTime struct {
	// AllowPersonal: allow_personal determines if personal datetimes are
	// allowed to be used in the resolution of the personal datetime. If
	// allow_personal is false and a personal date exists, the entire parse
	// will be thrown out.
	AllowPersonal bool `json:"allowPersonal,omitempty"`

	Day int64 `json:"day,omitempty"`

	// Deleted11: Deprecated fields. Do NOT use.
	//
	// Possible values:
	//   "NONE"
	//   "YEAR"
	//   "YEAR_MONTH"
	//   "YEAR_MONTH_DAY"
	Deleted11 string `json:"deleted11,omitempty"`

	// Holiday: season, quarters and holidays will be soon handled as
	// fetched relative datetimes and will be removed from the
	// AbsoluteDateTime message.
	Holiday *NlpSemanticParsingDatetimeHoliday `json:"holiday,omitempty"`

	// Hour: Time is 24-hour military time.
	Hour int64 `json:"hour,omitempty"`

	// HourState: Note: This is marked as deprecated as we are moving into
	// explicit parses using the `meridiem` field, and leave the inference
	// over implicit parses to the grounding/resolution libraries.
	//
	// Possible values:
	//   "UNAMBIGUOUS"
	//   "AMBIGUOUS"
	//   "CHANGEABLE" - Changeable means that by itself, the hour should be
	// unambiguous, but it can be changed through context. Eg. "09:00" vs
	// "09:00pm".
	HourState string `json:"hourState,omitempty"`

	// IsBc: |is_bc| is true if and only the date is Before Christ/Common
	// Era. If |is_bc| is true, only year is meaningful in this proto, as
	// Gregorian calendar is only meaningful for A.D. date/times.
	IsBc bool `json:"isBc,omitempty"`

	// Meridiem: For expressions such as "am", "pm". Note: the name
	// "meridiem" has been taken by a field in message ResolutionProperties.
	// Examples: * "9 am": point { hour: 9 meridiem: AM hour_state:
	// UNAMBIGUOUS }
	//
	// Possible values:
	//   "INVALID_MERIDIEM"
	//   "AM"
	//   "PM"
	Meridiem string `json:"meridiem,omitempty"`

	Minute int64 `json:"minute,omitempty"`

	// Modifier: For expressions such as "around 2 pm".
	//
	// Possible values:
	//   "NO_MOD"
	//   "BEFORE"
	//   "AFTER"
	//   "ON_OR_BEFORE"
	//   "ON_OR_AFTER"
	//   "LESS_THAN"
	//   "MORE_THAN"
	//   "EQUAL_OR_LESS"
	//   "EQUAL_OR_MORE"
	//   "START"
	//   "MID"
	//   "END"
	//   "APPROX"
	//   "ADD" - Identifies additive or subtractive duration quantities as
	// in [10 more min].
	//   "SUBTRACT"
	Modifier string `json:"modifier,omitempty"`

	// Possible values:
	//   "NO_MONTH"
	//   "JANUARY"
	//   "FEBRUARY"
	//   "MARCH"
	//   "APRIL"
	//   "MAY"
	//   "JUNE"
	//   "JULY"
	//   "AUGUST"
	//   "SEPTEMBER"
	//   "OCTOBER"
	//   "NOVEMBER"
	//   "DECEMBER"
	Month string `json:"month,omitempty"`

	// NonGregorianDate: If present then: 1) the incoming non-Gregorian
	// datetime will be converted to Gregorian. 2) exported DateTimeProperty
	// fields will contain the converted Gregorian datetime. 3)
	// DateTimeProperty.source_calendar will be set to the calendar-system
	// that was used to specify the non-Gregorian date.
	NonGregorianDate *NlpSemanticParsingDatetimeNonGregorianDate `json:"nonGregorianDate,omitempty"`

	PartialSecond float64 `json:"partialSecond,omitempty"`

	Properties *NlpSemanticParsingDatetimeDateTimeProperty `json:"properties,omitempty"`

	// Possible values:
	//   "INVALID_QUARTER"
	//   "FIRST_QUARTER"
	//   "SECOND_QUARTER"
	//   "THIRD_QUARTER"
	//   "FOURTH_QUARTER"
	Quarter string `json:"quarter,omitempty"`

	// RangeModifier: Modifier that return the appropriate subrange. For
	// more information, see the description of RangeOfDateTimeModifier.
	// Example: * *early* 2020 * *early* on March 20th When a point have a
	// range_modifier field, the resolution library will expand the point
	// into the widest range in contains. For example, in the case of a
	// single date point like "April 22nd, 2022", the point will be
	// transformed into a range with: - "begin: April 22nd 2022 00:00:00h" -
	// "end: April 22nd 2022 23:59:59h" The modifier will then be applied
	// over that range.
	//
	// Possible values:
	//   "RANGE_MODIFIER_NONE"
	//   "RANGE_MODIFIER_EARLY"
	//   "RANGE_MODIFIER_MIDDLE"
	//   "RANGE_MODIFIER_LATE"
	RangeModifier string `json:"rangeModifier,omitempty"`

	// Possible values:
	//   "INVALID_SEASON"
	//   "SPRING"
	//   "SUMMER"
	//   "FALL"
	//   "WINTER"
	//   "EARLY_SPRING" - Deprecated values. Do not use.
	//   "MID_SPRING"
	//   "LATE_SPRING"
	//   "EARLY_SUMMER"
	//   "MID_SUMMER"
	//   "LATE_SUMMER"
	//   "EARLY_FALL"
	//   "MID_FALL"
	//   "LATE_FALL"
	//   "EARLY_WINTER"
	//   "MID_WINTER"
	//   "LATE_WINTER"
	Season string `json:"season,omitempty"`

	Second int64 `json:"second,omitempty"`

	// Timezone: A string representation of the timezone information, see
	// i18n/identifiers/timezones.{h,cc}.
	Timezone string `json:"timezone,omitempty"`

	// Weekday: The |weekday| field is populated to indicate that a
	// day-of-the-week is explicitly mentioned in an absolute date
	// utterance, such as [Tuesday, July 6th, 2021]. Note that when a
	// day-of-the-week is included in other, non-absolute-date expressions,
	// such as [on Tuesday], then this this field is not populated (and in
	// fact an AbsoluteDateTime is not used at all.) Note: This field is
	// populated only when the original expression contains a
	// day-of-the-week. It is not populated by the grounding library to
	// indicate that the date happens to be a Tuesday. Examples: * "Tuesday,
	// July 6th 2021" --> the day of the week is part of an absolute date
	// expression, so this field is populated: point { year: 2021 month:
	// JULY day: 6 weekday: TUESDAY } * "on Tuesday" --> the day of the week
	// is not part of an absolute date expression, so it is interpreted as a
	// relative datetime: relative { fetched { target { weekday: TUESDAY } }
	// }
	//
	// Possible values:
	//   "NO_DAY_OF_WEEK"
	//   "SUNDAY"
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "WEEKEND" - Sometimes resembles Monday etc. E.g., "2nd weekend."
	Weekday string `json:"weekday,omitempty"`

	// Year: Date.
	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowPersonal") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowPersonal") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeAbsoluteDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeAbsoluteDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingDatetimeAbsoluteDateTime) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingDatetimeAbsoluteDateTime
	var s1 struct {
		PartialSecond gensupport.JSONFloat64 `json:"partialSecond"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PartialSecond = float64(s1.PartialSecond)
	return nil
}

// NlpSemanticParsingDatetimeDateTime: The top-level DATE/TIME
// representation. It can represent either (1) one or multiple Date/Time
// ranges, or (2) one or multiple of Date/Time points, or (3) a
// recurrent date/time expression. Next available ID: 12. Only one of
// |range|, |point| and |recurrent| will be set: |range| contains a list
// of resolved Date/Time ranges. |point| contains a list of resolved
// Date/Time points. |recurrent| contains the representation for
// periodical dates/times. |range| and |point| are repeated to
// accommodate the need when the date/time expression under one
// non-terminal is resolved to a list of correct values. For example,
// "Mondays in April, 2014" may have 4 correct dates.
type NlpSemanticParsingDatetimeDateTime struct {
	// CompositionElement: For temporal expressions that consist of
	// components with different types, the elements in the composition are
	// nested according to the order they should be grounded/resolved. For
	// example, "tomorrow at 8am" has a relative component [tomorrow] and an
	// absolute datetime component [8am] so the annotation will be
	// represented in the following way, indicating that the relative
	// datetime for tomorrow should be grounded first, and then resolve the
	// actual 8am point for that given date: point { hour: 8 hour_state:
	// UNAMBIGUOUS properties { time_format: AM_PM_TOKEN } }
	// composition_element { relative { fetched { ordinal: 1 target { unit:
	// DAY } base_type: CURRENT_DATETIME } } grounding_stage: UNGROUNDED }
	// grounding_stage: UNGROUNDED_COMPOSITION The composition_element field
	// will be populated only when the grounding_stage is set to
	// UNGROUNDED_COMPOSITION and it will hold the nested DateTime value for
	// the rest the compositional expression. More details in:
	// go/datetime-resolution-decoupling.
	CompositionElement *NlpSemanticParsingDatetimeDateTime `json:"compositionElement,omitempty"`

	// Deleted7: Deprecated fields. Do NOT use.
	Deleted7 bool `json:"deleted7,omitempty"`

	Deleted8 bool `json:"deleted8,omitempty"`

	// EvalData: This field of the DateTime message should not in general be
	// used by outside clients of the grammar. It is intended to be used
	// internally in Aqua for evaluation purposes. The rationale is that
	// token counts depend on the particular tokenization used in Aqua which
	// may be different from the one used by the client and may change from
	// time to time. Outside clients should not create a dependency on the
	// current tokenization used in Aqua.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Possible values:
	//   "UNKNOWN_GROUNDING_STAGE" - Default value of DateTime messages for
	// which it is unknown if they are representing a datetime expression as
	// it was explicitly expressed in a document/user query or if it is
	// representing a complete & unambiguous datetime value.
	//   "UNGROUNDED" - DateTime messages that are created to represent an
	// explicit datetime expression as it was expressed in a document/user
	// query have their grounding_stage field assigned to UNGROUNDED. Even
	// if the user's query contains an expression referring to a complete &
	// unambiguous datetime value, it is expected that every interpretation
	// generation parser will still create them having the grounding stage
	// as UNGROUNDED and apply the grounding logic implemented in the
	// DateTimeGrounder class.
	//   "UNGROUNDED_COMPOSITION" - When a datetime expression expressed in
	// a document/user query is a composition of other simpler datetime
	// expressions (e.g. "monday morning next week" is the composition "next
	// week(monday(morning))") it is parsed into a nested composition of
	// DateTime messages which have their grounding_stage fields as
	// UNGROUNDED_COMPOSITION except for the inner-most message which will
	// be set to UNGROUNDED. The grounding logic will compose them and
	// ground their compositions cascading the grounding logic in bottom-up.
	//   "RESOLVED" - During the grounding process, DateTime messages that
	// were resolved but not completed yet will have their grounding_stage
	// field as RESOLVED. This is mainly for internal handling during the
	// grounding process, it is not expected to have DateTime messages with
	// their grounding_stage as RESOLVED being used in a final
	// interpretation.
	//   "PARTIALLY_GROUNDED" - During the grounding process, it may happen
	// that we have an intermediate DateTime message that has a subcomponent
	// already resolved, in that case its grounding_stage field will be
	// PARTIALLY_GROUNDED. This is mainly for internal handling during the
	// grounding process, it is not expected to have DateTime messages with
	// their grounding_stage as PARTIALLY_GROUNDED being used in a final
	// interpretation.
	//   "FULLY_GROUNDED" - DateTime messages which were fully grounded
	// (composed, resolved and completed) with DateTimeGrounder class will
	// have FULLY_GROUNDED as their grounding stage. Every DateTime message
	// used in a final interpretation is expected to have its
	// grounding_stage field to be FULLY_GROUNDED.
	GroundingStage string `json:"groundingStage,omitempty"`

	Point []*NlpSemanticParsingDatetimeAbsoluteDateTime `json:"point,omitempty"`

	Properties *NlpSemanticParsingDatetimeResolutionProperties `json:"properties,omitempty"`

	// Range: Note that there is a difference between this scenario and an
	// ambiguous date/time expression. The latter is resolved to multiple
	// proto messages, not multiple values within one proto message. To be
	// concrete, consider "Monday" in "Monday football". It is ambiguous and
	// can be reasonably resolved to "Monday last week," "Monday this week"
	// and "Monday next week." The 3 values are represented as 3 separate
	// DateTime messages, not 3 values within one DateTime message.
	Range []*NlpSemanticParsingDatetimeRange `json:"range,omitempty"`

	Recurrent *NlpSemanticParsingDatetimeRecurrent `json:"recurrent,omitempty"`

	Relative *NlpSemanticParsingDatetimeRelativeDateTime `json:"relative,omitempty"`

	// Span: See comments of Span.
	Span *NlpSemanticParsingDatetimeSpan `json:"span,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CompositionElement")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompositionElement") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeDateTimeProperty: DateTimeProperty contains
// various metadata about the DateTime interpretation. Next field: 13
type NlpSemanticParsingDatetimeDateTimeProperty struct {
	// Possible values:
	//   "DEFAULT_DATE_FORMAT"
	//   "NUM_MONTH_DAY" - Numerical month followed by day: 5/6 = 6th of May
	//   "NUM_DAY_MONTH" - Numerical day followed by month: 5/6 = 5th of
	// June
	DateFormat string `json:"dateFormat,omitempty"`

	ExpandYearToCurrent bool `json:"expandYearToCurrent,omitempty"`

	// Possible values:
	//   "HOUR_NONE"
	//   "HOUR_UNAMBIGUOUS"
	//   "HOUR_AMBIGUOUS_ORIGINAL"
	//   "HOUR_AMBIGUOUS_INFERRED"
	HourStatus string `json:"hourStatus,omitempty"`

	// Possible values:
	//   "NONE"
	//   "YEAR"
	//   "YEAR_MONTH"
	//   "YEAR_MONTH_DAY"
	InferredDateValue string `json:"inferredDateValue,omitempty"`

	// Metadata: Note: this may be changed to a repeated field in the
	// future.
	//
	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	// PersonalReferenceMetadata: Metadata about the personal reference if
	// the date was generated from a personal reference.
	PersonalReferenceMetadata *CopleyPersonalReferenceMetadata `json:"personalReferenceMetadata,omitempty"`

	// Possible values:
	//   "UNDEFINED"
	//   "CLOSEST_FUTURE"
	//   "CLOSEST_PAST"
	//   "OTHER_FUTURE"
	//   "OTHER_PAST"
	RelationToReference string `json:"relationToReference,omitempty"`

	// Relative: Expresses the relative DateTime query that gave rise to
	// these grounded semantics.
	Relative *NlpSemanticParsingDatetimeRelativeDateTime `json:"relative,omitempty"`

	// Possible values:
	//   "GREGORIAN" - Selected values from ECalType in
	// third_party/icu/source/i18n/calendar.cpp
	//   "BUDDHIST"
	//   "CHINESE"
	//   "COPTIC"
	//   "ETHIOPIC"
	//   "HEBREW"
	//   "INDIAN_NATIONAL"
	//   "ISLAMIC"
	//   "JAPANESE"
	//   "PERSIAN"
	//   "ISLAMIC_UMALQURA"
	SourceCalendar string `json:"sourceCalendar,omitempty"`

	// SourceTypeList: If the annotation was created by using personal data,
	// we record the provenance for that data here.
	SourceTypeList *CopleySourceTypeList `json:"sourceTypeList,omitempty"`

	// Possible values:
	//   "DEFAULT"
	//   "SEPARATED_HMS" - e.g. "7:15"
	//   "AM_PM_TOKEN" - e.g. "7pm"
	//   "WITH_TIMEWORD" - e.g. "7 o'clock"
	TimeFormat []string `json:"timeFormat,omitempty"`

	// TimezoneIsExplicit: True iff the timezone value in AbsoluteDateTime
	// is explicit in the annotated text or not. In the following examples
	// the timezone is explicit: Query Timezone --------------------------
	// -------- 10pst Pacific Standard Time 10 utc UTC 10 sydney time
	// Australia Eastern Time
	TimezoneIsExplicit bool `json:"timezoneIsExplicit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateFormat") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateFormat") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeDateTimeProperty) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeDateTimeProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeDuration: To represent unanchored durations
// - the length of a date/time expression not related to calendar in
// local context. E.g., "play first (DURATION: 5 minutes) of Yellow
// Submarine", "it takes (DURATION: more than 3 days) to finish." In
// contrast, queries like: "wake me up in 5 minutes" will be resolved to
// a AbsoluteDateTime since the query indicates that the reference is
// now. A duration can be turned into a range if either end is anchored.
type NlpSemanticParsingDatetimeDuration struct {
	// EvalData: This field of the Duration message should not in general be
	// used by outside clients of the grammar. It is intended to be used
	// internally in Aqua for evaluation purposes. The rationale is that
	// token counts depend on the particular tokenization used in Aqua which
	// may be different from the one used by the client and may change from
	// time to time. Outside clients should not create a dependency on the
	// current tokenization used in Aqua.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Modifier: For expressions such as "about 2 hrs".
	//
	// Possible values:
	//   "NO_MOD"
	//   "BEFORE"
	//   "AFTER"
	//   "ON_OR_BEFORE"
	//   "ON_OR_AFTER"
	//   "LESS_THAN"
	//   "MORE_THAN"
	//   "EQUAL_OR_LESS"
	//   "EQUAL_OR_MORE"
	//   "START"
	//   "MID"
	//   "END"
	//   "APPROX"
	//   "ADD" - Identifies additive or subtractive duration quantities as
	// in [10 more min].
	//   "SUBTRACT"
	Modifier string `json:"modifier,omitempty"`

	Quantity *NlpSemanticParsingDatetimeQuantity `json:"quantity,omitempty"`

	// Span: See comments of Span.
	Span *NlpSemanticParsingDatetimeSpan `json:"span,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeDuration) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeDuration
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeEvent: This message is defined to be a
// representation of events that could interact with datetimes
// expressions through composition by shifting or fetching. For "native"
// datetime events like sunset, sunrise, etc the type is enough, but
// this should be extended as needed to represent richer event
// information.
type NlpSemanticParsingDatetimeEvent struct {
	// Possible values:
	//   "UNKNOWN_HOLIDAY"
	//   "AIDS_DAY" - https://en.wikipedia.org/wiki/World_AIDS_Day
	//   "AIR_FORCES_DAY" - https://en.wikipedia.org/wiki/Air_Force_Day
	//   "ALL_SAINTS_DAY" - https://en.wikipedia.org/wiki/All_Saints'_Day
	//   "ALL_SOULDS_DAY" - https://en.wikipedia.org/wiki/All_Souls'_Day
	//   "ANZAC_DAY" - https://en.wikipedia.org/wiki/Anzac_Day
	//   "APARECIDA_DAY" -
	// https://en.wikipedia.org/wiki/Our_Lady_of_Aparecida
	//   "APPLE_SAVIOUR_DAY" -
	// https://en.wikipedia.org/wiki/Apple_Feast_of_the_Saviour
	//   "ARBOR_DAY" -
	// https://en.wikipedia.org/wiki/Arbor_Day#Around_the_world
	//   "ARMED_FORCES_DAY" - https://en.wikipedia.org/wiki/Armed_Forces_Day
	//   "ARMISTICE_DAY" - https://en.wikipedia.org/wiki/Armistice_Day
	//   "ASCENSION_DAY" -
	// https://en.wikipedia.org/wiki/Feast_of_the_Ascension
	//   "ASH_WEDNESDAY" - https://en.wikipedia.org/wiki/Ash_Wednesday
	//   "ASSUMPTION_OF_MARY" -
	// https://en.wikipedia.org/wiki/Assumption_of_Mary
	//   "ATATURK_DAY" -
	// https://en.wikipedia.org/wiki/Commemoration_of_Atat%C3%BCrk,_Youth_and_Sports_Day
	//   "BERCHTOLDS_DAY" - https://en.wikipedia.org/wiki/Berchtoldstag
	//   "BLACK_DAY" - https://en.wikipedia.org/wiki/Black_Day_(South_Korea)
	//   "BLACK_FRIDAY" -
	// https://en.wikipedia.org/wiki/Black_Friday_(shopping)
	//   "BRAZIL_PROCLAMATION_DAY" -
	// https://en.wikipedia.org/wiki/Proclamation_of_the_Republic_(Brazil)
	//   "CABOTAGE_DAY" - https://en.wikipedia.org/wiki/Cabotage_Day
	//   "CAMBODIAN_CORONATION_DAY" -
	// https://en.wikipedia.org/wiki/Public_holidays_in_Cambodia
	//   "CANDLEMAS" - Candlemas / Chandeleur / Presentation day: February
	// 2nd https://en.wikipedia.org/wiki/Candlemas
	//   "CARINTHIAN_PLEBISCITE_DAY" -
	// https://en.wikipedia.org/wiki/1920_Carinthian_plebiscite
	//   "CHAKRI_DAY" - https://en.wikipedia.org/wiki/Chakri_dynasty
	//   "CHILDRENS_DAY" - https://en.wikipedia.org/wiki/Children's_Day
	//   "CHINA_COMMUNIST_PARTY_DAY" -
	// https://en.wikipedia.org/wiki/Chinese_Communist_Party
	//   "CHINA_GRAVE_SWEEPING_FESTIVAL" -
	// https://en.wikipedia.org/wiki/Qingming_Festival
	//   "CHINA_HUMILIATION_DAY" - China's National Humiliation Day:
	// September 18th
	//   "LUNAR_NEW_YEAR" - https://en.wikipedia.org/wiki/Lunar_New_Year
	//   "CHRISTMAS" - https://en.wikipedia.org/wiki/Christmas
	//   "CHRISTMAS_EVE" - https://en.wikipedia.org/wiki/Christmas
	//   "CHULA_MEMORIAL_DAY" - https://en.wikipedia.org/wiki/Chulalongkorn
	//   "CIVIL_SERVANT_DAY" -
	// https://en.wikipedia.org/wiki/UN_Public_Service_Day
	//   "COLUMBUS_DAY" - https://en.wikipedia.org/wiki/Columbus_Day
	//   "COMING_OF_AGE_DAY" -
	// https://en.wikipedia.org/wiki/Coming_of_Age_Day
	// https://en.wikipedia.org/wiki/Coming_of_age
	//   "CONFUCIUS_DAY" -
	// https://en.wikipedia.org/wiki/Confucius%27_Birthday
	//   "CONSTITUTION_MEMORIAL_DAY" -
	// https://en.wikipedia.org/wiki/Constitution_Memorial_Day
	// https://en.wikipedia.org/wiki/Constitution_Day
	//   "CONSUMERS_DAY" -
	// https://en.wikipedia.org/wiki/Consumers_International#World_Consumer_Rights_Day
	//   "COPTIC_CHRISTMAS" - https://en.wikipedia.org/wiki/Christmas
	//   "CORPUS_CRISTI" -
	// https://en.wikipedia.org/wiki/Feast_of_Corpus_Christi
	//   "CULTURE_DAY" - https://en.wikipedia.org/wiki/Culture_Day
	//   "CYBER_MONDAY" - https://en.wikipedia.org/wiki/Cyber_Monday
	//   "CZECH_FREEDOM_DEMOCRACY_DAY" -
	// https://en.wikipedia.org/wiki/Struggle_for_Freedom_and_Democracy_Day
	//   "DOCTORS_DAY" -
	// https://en.wikipedia.org/wiki/National_Doctors%27_Day
	//   "EARTH_DAY" - https://en.wikipedia.org/wiki/Earth_Day
	//   "EASTER" - https://en.wikipedia.org/wiki/Easter
	//   "EASTERN_ANNUNCIATION_DAY" -
	// https://en.wikipedia.org/wiki/Feast_of_the_Annunciation
	//   "EASTER_MONDAY" - https://en.wikipedia.org/wiki/Easter_Monday
	//   "ELECTION_DAY" - https://en.wikipedia.org/wiki/Election_day
	//   "ELECTION_DAY_RUNOFF" - https://en.wikipedia.org/wiki/Election_day
	//   "EPIPHANY" - https://en.wikipedia.org/wiki/Epiphany_(holiday)
	//   "FATHERLAND_DEFENDER_DAY" -
	// https://en.wikipedia.org/wiki/Defender_of_the_Fatherland_Day
	//   "FATHERS_DAY" - https://en.wikipedia.org/wiki/Father's_Day
	//   "FIRST_ADVENT_SUNDAY" - https://en.wikipedia.org/wiki/Advent_Sunday
	//   "FLAG_DAY" - https://en.wikipedia.org/wiki/Flag_Day
	//   "FLEMISH_COMMUNITY_DAY" - Day of the Flemish commumity (Jul 11,
	// Belgian holiday)
	// https://en.wikipedia.org/wiki/Day_of_the_Flemish_Community
	//   "FOOLS_DAY" - https://en.wikipedia.org/wiki/April_Fools'_Day
	//   "FOURTH_ADVENT_SUNDAY" -
	// https://en.wikipedia.org/wiki/Advent_Sunday
	//   "FREEDOM_DAY" - https://en.wikipedia.org/wiki/Freedom_Day
	//   "FRENCH_COMMUNITY_DAY" - Day of the French speaking community in
	// Belgium (Sept 27, Belgian holiday)
	// https://en.wikipedia.org/wiki/French_Community_Holiday
	//   "GERMAN_COMMUNITY_DAY" - Day of the German speaking community in
	// Belgium (Nov 15, Belgian Holiday)
	// https://en.wikipedia.org/wiki/Day_of_the_German-speaking_Community
	//   "GOOD_FRIDAY" - https://en.wikipedia.org/wiki/Good_Friday
	//   "GRAND_FATHERS_DAY" -
	// https://en.wikipedia.org/wiki/Grandparents%27_Day
	//   "GRAND_MOTHERS_DAY" -
	// https://en.wikipedia.org/wiki/Grandparents%27_Day
	//   "GRAND_PARENTS_DAY" -
	// https://en.wikipedia.org/wiki/Grandparents%27_Day
	//   "GREAT_PRAYER_DAY" - https://en.wikipedia.org/wiki/Store_Bededag
	//   "GREENERY_DAY" - https://en.wikipedia.org/wiki/Greenery_Day
	//   "GROUNDHOG_DAY" - https://en.wikipedia.org/wiki/Groundhog_Day
	//   "HALLOWEEN" - https://en.wikipedia.org/wiki/Halloween
	//   "HEALTH_DAY" - https://en.wikipedia.org/wiki/World_Health_Day
	//   "HIDIRELLEZ" - https://en.wikipedia.org/wiki/H%C4%B1d%C4%B1rellez
	//   "HOLY_SATURDAY" - https://en.wikipedia.org/wiki/Holy_Saturday
	//   "HONEY_SAVIOUR_DAY" -
	// https://en.wikipedia.org/wiki/Feast_of_the_Cross
	//   "HONG_KONG_HANDOVER_DAY" -
	// https://en.wikipedia.org/wiki/Handover_of_Hong_Kong
	//   "HUMAN_RIGHTS_DAY" - https://en.wikipedia.org/wiki/Human_Rights_Day
	//   "IMMACULATE_CONCEPTION_DAY" -
	// https://en.wikipedia.org/wiki/Feast_of_the_Immaculate_Conception
	//   "INDEPENDENCE_DAY" -
	// https://en.wikipedia.org/wiki/List_of_national_independence_days
	//   "INDEPENDENCE_MOVEMENT_DAY" -
	// https://en.wikipedia.org/wiki/March_1st_Movement
	//   "INTERCESSION_DAY" -
	// https://en.wikipedia.org/wiki/Intercession_of_the_Theotokos
	//   "INTERNATIONAL_WORKERS_DAY" -
	// https://en.wikipedia.org/wiki/International_Workers%27_Day
	//   "INTERNATIONA_WOMEN_DAY" -
	// https://en.wikipedia.org/wiki/International_Women's_Day
	//   "JAPANESE_EMPERORS_BIRTHDAY" -
	// https://en.wikipedia.org/wiki/The_Emperor's_Birthday
	//   "JESUS_BAPTISM" - https://en.wikipedia.org/wiki/Baptism_of_Jesus
	//   "JOHN_HUS_DAY" -
	// https://en.wikipedia.org/wiki/Jan_Hus#Holidays_commemorating_Hus
	//   "JOURNALIST_DAY" -
	// https://en.wikipedia.org/wiki/World_Press_Freedom_Day
	//   "KINGS_DAY" - https://en.wikipedia.org/wiki/Koningsdag
	//   "KING_OF_CAMBODIAS_BIRTHDAY" -
	// https://en.wikipedia.org/wiki/Norodom_Sihamoni
	//   "KING_OF_CAMBODIA_FATHERS_BIRTHDAY" -
	// https://en.wikipedia.org/wiki/Norodom_Sihanouk#Death_and_funeral
	//   "KING_OF_CAMBODIA_MOTHERS_BIRTHDAY" -
	// https://en.wikipedia.org/wiki/Norodom_Monineath
	//   "KING_RAMA_IX_DEATH_ANNIVERSARY" -
	// https://en.wikipedia.org/wiki/Bhumibol_Adulyadej
	//   "KING_RAMA_X_BIRTHDAY" -
	// https://en.wikipedia.org/wiki/Bhumibol_Adulyadej
	//   "KNOWLEDGE_DAY" - https://en.wikipedia.org/wiki/Knowledge_Day
	//   "KOREAN_ALPHABET_DAY" - https://en.wikipedia.org/wiki/Hangul_Day
	//   "KOREAN_MEMORIAL_DAY" -
	// https://en.wikipedia.org/wiki/Memorial_Day_(South_Korea)
	//   "KUPALA_NIGHT" - https://en.wikipedia.org/wiki/Kupala_Night
	//   "KVEN_NATIONAL_DAY" - https://en.wikipedia.org/wiki/Kven_people
	//   "LABOUR_DAY" - https://en.wikipedia.org/wiki/Labour_Day
	//   "LABOUR_THANKSGIVING_DAY" -
	// https://en.wikipedia.org/wiki/Labor_Thanksgiving_Day
	//   "LIBERATION_DAY" - https://en.wikipedia.org/wiki/Liberation_Day
	//   "LITTLE_CHRISTMAS_EVE" -
	// https://da.wikipedia.org/wiki/Lillejuleaften
	//   "MACAU_DAY" - https://en.wikipedia.org/wiki/Macau
	//   "MARDI_GRAS" - https://en.wikipedia.org/wiki/Mardi_Gras
	//   "MARTIAL_DAY" - Martial Day: July 15th
	//   "MARTIN_LUTHER_KING_DAY" -
	// https://en.wikipedia.org/wiki/Martin_Luther_King_Jr._Day
	//   "MAUNDY_THURSDAY" - https://en.wikipedia.org/wiki/Maundy_Thursday
	//   "MAY_DAY" - https://en.wikipedia.org/wiki/May_Day
	//   "MEDICINE_DAY" -
	// https://en.wikipedia.org/wiki/National_Doctors%27_Day
	//   "MELBOURNE_CUP" - https://en.wikipedia.org/wiki/Melbourne_Cup
	//   "MEMORIAL_DAY" - https://en.wikipedia.org/wiki/Memorial_Day
	//   "MIDSUMMER_DAY" - https://en.wikipedia.org/wiki/Midsummer
	//   "MIDSUMMER_EVE" - https://en.wikipedia.org/wiki/Midsummer
	//   "MOTHERING_SUNDAY" - https://en.wikipedia.org/wiki/Mothering_Sunday
	//   "MOTHERS_DAY" - https://en.wikipedia.org/wiki/Mother%27s_Day
	//   "NATIONAL_DAY" - https://en.wikipedia.org/wiki/National_day
	//   "NATIONAL_FOUNDATION_DAY" -
	// https://en.wikipedia.org/wiki/National_Foundation_Day
	//   "NEW_YEAR" - https://en.wikipedia.org/wiki/New_Year
	//   "NEW_YEARS_EVE" - https://en.wikipedia.org/wiki/New_Year
	//   "NURSE_DAY" -
	// https://en.wikipedia.org/wiki/International_Nurses_Day
	//   "OBON_FESTIVAL" - https://en.wikipedia.org/wiki/Bon_(festival)
	//   "OCEAN_DAY" - https://en.wikipedia.org/wiki/Marine_Day
	//   "OCTOBER_REVOLUTION_DAY" -
	// https://en.wikipedia.org/wiki/October_Revolution_Day
	//   "ORTHODOX_CHRISTMAS" - https://en.wikipedia.org/wiki/Christmas
	//   "ORTHODOX_EASTER" - https://en.wikipedia.org/wiki/Easter
	//   "ORTHODOX_NEW_YEAR" - https://en.wikipedia.org/wiki/Old_New_Year
	//   "ORTHODOX_NEW_YEARS_EVE" -
	// https://en.wikipedia.org/wiki/Old_New_Year
	//   "PALM_SUNDAY" - https://en.wikipedia.org/wiki/Palm_Sunday
	//   "PARATROOPERS_DAY" -
	// https://en.wikipedia.org/wiki/Paratroopers%27_Day
	//   "PARENTS_DAY" - https://en.wikipedia.org/wiki/Parents'_Day
	//   "PARIS_PEACE_AGREEMENTS_DAY" -
	// https://en.wikipedia.org/wiki/1991_Paris_Peace_Agreements
	//   "PARLIAMNET_DAY" - Danish Parliamnet day: 1st Tuesday in October
	// (da-DK) specific
	//   "PEACE_DAY" -
	// https://en.wikipedia.org/wiki/International_Day_of_Peace
	//   "PENTECOST" - https://en.wikipedia.org/wiki/Pentecost
	//   "PENTECOST_EVE" - https://en.wikipedia.org/wiki/Pentecost
	//   "PEPERO_DAY" - https://en.wikipedia.org/wiki/Pepero_Day
	//   "PERSIAN_NEW_YEAR" - https://en.wikipedia.org/wiki/Nowruz
	//   "PLOUGHING_CEREMONY_DAY" -
	// https://en.wikipedia.org/wiki/Royal_Ploughing_Ceremony
	//   "POLICE_DAY" - https://en.wikipedia.org/wiki/Police_Day
	//   "POLISH_MAY_HOLIDAYS" -
	// https://en.wikipedia.org/wiki/Public_holidays_in_Poland#May_Holidays
	//   "PORTUGAL_PROCLAMATION_DAY" -
	// https://en.wikipedia.org/wiki/5_October_1910_revolution
	//   "PRESIDENT_DAY" - https://en.wikipedia.org/wiki/Presidents%27_Day
	//   "REFORMATION_DAY" - https://en.wikipedia.org/wiki/Reformation_Day
	//   "REMEMBRANCE_AND_SORROW_DAY" -
	// https://en.wikipedia.org/wiki/Day_of_Remembrance_and_Sorrow
	//   "REMEMBRANCE_DAY" -
	// https://en.wikipedia.org/wiki/National_Memorial_Day_of_the_Exiles_and_Foibe
	//   "REPENTANCE_AND_PRAYER_DAY" -
	// https://en.wikipedia.org/wiki/Bu%C3%9F-_und_Bettag
	//   "REPUBLIC_DAY" - https://en.wikipedia.org/wiki/Republic_Day
	//   "RESPECT_FOR_THE_ELDERLY_DAY" -
	// https://en.wikipedia.org/wiki/Respect_for_the_Aged_Day
	//   "ROSE_DAY" - Rose day: May 14th
	//   "RUSSIAN_GUARD_DAY" -
	// https://en.wikipedia.org/wiki/National_Guard_Day_(Russia)
	//   "SAINT_CYRIL_METHODIUS_DAY" -
	// https://en.wikipedia.org/wiki/Cyril_and_Methodius#Saints_Cyril_and_Methodius'_Day
	//   "SAINT_FLORIAN_DAY" - https://en.wikipedia.org/wiki/Saint_Florian
	//   "SAINT_FRANCIS_DAY" -
	// https://en.wikipedia.org/wiki/Francis_of_Assisi
	//   "SAINT_JOHN_DAY" -
	// https://en.wikipedia.org/wiki/Saint-Jean-Baptiste_Day
	//   "SAINT_JOHN_EVE" -
	// https://en.wikipedia.org/wiki/Saint-Jean-Baptiste_Day
	//   "SAINT_JOSEPH" - https://en.wikipedia.org/wiki/Saint_Joseph's_Day
	//   "SAINT_LEOPOLD_DAY" -
	// https://en.wikipedia.org/wiki/Leopold_III,_Margrave_of_Austria
	//   "SAINT_LUCY_DAY" - https://en.wikipedia.org/wiki/Saint_Lucy's_Day
	//   "SAINT_MARTIN_DAY" - https://en.wikipedia.org/wiki/St._Martin's_Day
	//   "SAINT_NICHOLAS_DAY" -
	// https://en.wikipedia.org/wiki/Saint_Nicholas_Day
	//   "SAINT_OLAF_DAY" - https://en.wikipedia.org/wiki/Olaf_II_of_Norway
	//   "SAINT_RUPERT_DAY" -
	// https://en.wikipedia.org/wiki/Rupert_of_Salzburg
	//   "SAINT_STEPHEN_DAY" -
	// https://en.wikipedia.org/wiki/Saint_Stephen's_Day
	//   "SAMI_NATIONAL_DAY" -
	// https://en.wikipedia.org/wiki/S%C3%A1mi_National_Day
	//   "SCOUTING_DAY" - https://en.wikipedia.org/wiki/Scouts'_Day ?
	//   "SECOND_ADVENT_SUNDAY" -
	// https://en.wikipedia.org/wiki/Advent_Sunday
	//   "SECOND_CHRISTMAS_DAY" - https://en.wikipedia.org/wiki/Christmas
	//   "SHOWA_DAY" - https://en.wikipedia.org/wiki/Sh%C5%8Dwa_Day
	//   "SINAI_DAY" - https://en.wikipedia.org/wiki/Sinai_Liberation_Day
	//   "SINGLES_DAY" - https://en.wikipedia.org/wiki/Singles'_Day
	//   "SONGKRAN_DAY" - https://en.wikipedia.org/wiki/Songkran_(Thailand)
	//   "SPORTS_DAY" - https://en.wikipedia.org/wiki/Sports_day
	//   "SUNFLOWER_MOVEMENT_DAY" -
	// https://en.wikipedia.org/wiki/Sunflower_Student_Movement
	//   "TATIANA_DAY" - https://en.wikipedia.org/wiki/Tatiana_Day
	//   "TEACHERS_DAY" -
	// https://en.wikipedia.org/wiki/List_of_Teachers'_Days
	//   "THAI_CORONATION_DAY" -
	// https://en.wikipedia.org/wiki/Coronation_of_the_Thai_monarch
	//   "THAI_PONGAL_DAY" - https://en.wikipedia.org/wiki/Pongal_(festival)
	//   "THANKSGIVING_DAY" - https://en.wikipedia.org/wiki/Thanksgiving
	//   "THIRD_ADVENT_SUNDAY" - https://en.wikipedia.org/wiki/Advent_Sunday
	//   "TIRADENTES_DAY" - https://en.wikipedia.org/wiki/Tiradentes
	//   "UNITY_DAY" - https://en.wikipedia.org/wiki/Unity_Day
	//   "VALENTINE_DAY" - https://en.wikipedia.org/wiki/Valentine's_Day
	//   "VETERANS_DAY" -
	// https://en.wikipedia.org/wiki/Veterans_Day_(disambiguation)
	//   "VICTORY_DAY" - https://en.wikipedia.org/wiki/Victory_Day
	//   "VIETNAMESE_REUNIFICATION_DAY" -
	// https://en.wikipedia.org/wiki/Reunification_Day
	//   "VIETNAM_COMMUNIST_PARTY_DAY" -
	// https://en.wikipedia.org/wiki/Communist_Party_of_Vietnam
	//   "VIETNAM_REWVOLUATIONARY_PRESS_DAY" - Journalist Day: June 21st
	//   "WALPURGIS_NIGHT" - https://en.wikipedia.org/wiki/Walpurgis_Night
	//   "WENCESLAUS_DAY" -
	// https://en.wikipedia.org/wiki/Wenceslaus_I,_Duke_of_Bohemia#Veneration
	//   "WESTERN_ANNUNCIATION_DAY" -
	// https://en.wikipedia.org/wiki/Feast_of_the_Annunciation
	//   "WHITE_DAY" - https://en.wikipedia.org/wiki/White_Day
	//   "WHIT_MONDAY" - https://en.wikipedia.org/wiki/Whit_Monday
	//   "WOMEN_RIGHTS_DAY" - Women Rights Day: 5th of December
	//   "YOUTH_DAY" - https://en.wikipedia.org/wiki/Youth_Day
	Holiday string `json:"holiday,omitempty"`

	MoonEvent *NlpSemanticParsingDatetimeMoonEventInfo `json:"moonEvent,omitempty"`

	// Possible values:
	//   "INVALID_SUN_EVENT"
	//   "SUNRISE"
	//   "SUNSET"
	//   "DAWN"
	//   "DUSK"
	SunEvent string `json:"sunEvent,omitempty"`

	// Possible values:
	//   "INVALID_EVENT"
	//   "ASTRONOMICAL_EVENT"
	//   "HOLIDAY_EVENT"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Holiday") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Holiday") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeEvent) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeFetchedRelativeDateTime: For a more
// detailed presentation on what's a fetching operation, see
// go/datetime-meaning-schemas. Examples to illustrate how the proto is
// used: I. Fetching day-of-weeks: a) query: "1st 2 Mondays of April"
// proto: ordinal: 1 target {weekday: MONDAY} count: 2 range: {begin
// {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR
// month: APRIL day: 30} b) query: "1st and last Monday of April" proto:
// ordinal: 1 ordinal: -1 target {weekday: MONDAY} range: {begin {year:
// RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month:
// APRIL day: 30} c) query: "next Monday" proto: ordinal: 1 target
// {weekday: MONDAY} d) query: "last 2 Mondays" proto: ordinal: -1
// count: 2 target {weekday: MONDAY} e) query: "this Monday" proto:
// ordinal: 0 target {weekday: MONDAY} f) query: "the monday after next"
// proto: ordinal: 2 target {weekday: MONDAY} g) query: "third Monday in
// April" proto: ordinal: 3 target {weekday: MONDAY} range: {begin
// {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR
// month: APRIL day: 30} h) query: "the monday before last" proto:
// ordinal: -2 target {weekday: MONDAY} i) query: "the second to the
// last monday in April" proto: ordinal: -2 target {weekday: MONDAY}
// range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year:
// RESOLVED_YEAR month: APRIL day: 30} II. Fetching date/time unit: a)
// query: "1st 2 weeks of April" proto: ordinal: 1 target {unit: WEEK}
// count: 2 range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end
// {year: RESOLVED_YEAR month: APRIL day: 30} b) query: "1st and last
// week of April" proto: ordinal: 1 ordinal: -1 target {unit: WEEK}
// range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year:
// RESOLVED_YEAR month: APRIL day: 30} c) query: "next year" proto:
// ordinal: 1 target {unit: YEAR} d) query: "last 2 weeks" proto:
// ordinal: -1 count: 2 target {unit: WEEK} e) query: "this month"
// proto: ordinal: 0 target {unit: MONTH} f) query: "the week after
// next" proto: ordinal: 2 target {unit: WEEK} g) query: "third week in
// April" proto: ordinal: 3 target {unit: WEEK} range: {begin {year:
// RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month:
// APRIL day: 30} h) query: "the week before last" proto: ordinal: -2
// target {unit: WEEK} i) query: "the second to the last week in April"
// proto: ordinal: -2 target {unit: WEEK} range: {begin {year:
// RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month:
// APRIL day: 30} Next field: 9
type NlpSemanticParsingDatetimeFetchedRelativeDateTime struct {
	// Possible values:
	//   "UNKNOWN"
	//   "CURRENT_DATETIME"
	//   "EXPLICIT_PRONOUN"
	BaseType string `json:"baseType,omitempty"`

	// Count: How many to fetch (e.g. [next weekend] vs. [next two weeks])
	Count int64 `json:"count,omitempty"`

	// Metadata: Can be used to tag relative datetime expressions with
	// metadata information in the grammar.
	//
	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	// Ordinal: Encodes expressions like next (+1), last (-1), after next
	// (+2), this (0).
	Ordinal []int64 `json:"ordinal,omitempty"`

	// Range: The restriction range on which fetching is operated, e.g.,
	// "April" in "first Tuesday in/of April." If this field is missing, the
	// operation is done relative to the base_type (or if not given, to the
	// query's reference datetime). When the fetching operation is performed
	// relative to a reference time point, positive ordinal values represent
	// upcoming instances from the reference point, negative ordinal values
	// represent previous instances from the reference point. Similarly,
	// ordinal=0 represents a reference to the "current instance", which may
	// vary depending on the target. E.g. "this week" is simply defined as
	// the week range that contains the current reference time point, but
	// "this " can be ambiguous and its resolution will depend on
	// language/locale conventions ("this monday" in some languages refers
	// to the closest upcoming instance of Monday, while in other languages
	// it represents the Monday instance within the current week).
	Range *NlpSemanticParsingDatetimeRange `json:"range,omitempty"`

	// RangeModifier: Modifier that return the appropriate subrange. For
	// more information, see the description of RangeOfDateTimeModifier.
	// Example: * *early* next week * *late* next Monday
	//
	// Possible values:
	//   "RANGE_MODIFIER_NONE"
	//   "RANGE_MODIFIER_EARLY"
	//   "RANGE_MODIFIER_MIDDLE"
	//   "RANGE_MODIFIER_LATE"
	RangeModifier string `json:"rangeModifier,omitempty"`

	// RelativeRange: If the underlying range comes from a relative datetime
	// expression, encode the expression here instead.
	RelativeRange *NlpSemanticParsingDatetimeResolutionProperties `json:"relativeRange,omitempty"`

	// Target: The target to be fetched. This could be a named day-of-week
	// or month (e.g., "Monday", "April"), or a date/time unit (e.g., "day",
	// "week", "month").
	Target *NlpSemanticParsingDatetimeTargetToFetch `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BaseType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeFetchedRelativeDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeFetchedRelativeDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeHoliday: List of holidays that are not
// fixed absolute or relative dates on the Gregorian calendar.
type NlpSemanticParsingDatetimeHoliday struct {
	// NonFixed: There are 3 types of holidays supported by the datetime
	// subgrammar: 1) NonFixedHolidayEnum: e.g., "easter", "chinese new
	// year". 2) FetchedRelativeDateTime: e.g., "Thanksgiving" => [4th
	// Thursday of November] 3) HolidayByMonthDay: e.g., "xmas" => [December
	// 25] Each holiday of the first type is resolved by a C++ function; the
	// 2nd and 3rd type of holidays are mapped to AbsoluteDateTime and
	// FetchedRelativeDateTime, respectively, in grammar and are not needed
	// to be represented in proto.
	//
	// Possible values:
	//   "UNKNOWN_NON_FIXED_HOLIDAY"
	//   "EASTER"
	//   "CHINESE_NEW_YEAR"
	//   "ORTHODOX_EASTER"
	//   "MARDI_GRAS"
	//   "ASH_WEDNESDAY"
	//   "GOOD_FRIDAY"
	//   "EASTER_MONDAY"
	//   "PENTECOST"
	//   "CORPUS_CRISTI"
	//   "WHIT_MONDAY"
	//   "PALM_SUNDAY"
	//   "MAUNDY_THURSDAY"
	//   "ASCENSION_DAY"
	//   "GREAT_PRAYER_DAY"
	//   "HOLY_SATURDAY"
	//   "PENTECOST_EVE"
	//   "MOTHERING_SUNDAY"
	NonFixed string `json:"nonFixed,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NonFixed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NonFixed") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeHoliday) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeHoliday
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingDatetimeMoonEventInfo struct {
	// Possible values:
	//   "UNKNOWN_MOON_PHASE" - Northern hemisphere | Southern hemisphere X
	// | X
	//   "NEW_MOON" - 🌑 | 🌑
	//   "WAXING_CRESCENT" - 🌒 | 🌘
	//   "FIRST_QUARTER_PHASE" - 🌓 | 🌗
	//   "WAXING_GIBBOUS" - 🌔 | 🌖
	//   "FULL_MOON" - 🌕 | 🌕
	//   "WANING_GIBBOUS" - 🌖 | 🌔
	//   "LAST_QUARTER_PHASE" - 🌗 | 🌓
	//   "WANING_CRESCENT" - 🌘 | 🌒
	Phase string `json:"phase,omitempty"`

	// Possible values:
	//   "INVALID_MOON_EVENT"
	//   "MOONRISE"
	//   "MOONSET"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Phase") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Phase") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeMoonEventInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeMoonEventInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeNonGregorianDate: Non-Gregorian dates are
// similar to AbsoluteDateTime, but use non-Gregorian calendars.
type NlpSemanticParsingDatetimeNonGregorianDate struct {
	// Possible values:
	//   "UNKNOWN_CHINESE_MONTH"
	//   "FIRST_MONTH" - Note1: month names in the enum match
	// ChineseCalendar from ICU libraries. Note2: Chinese calendar has leap
	// months called "閏月" (Rùnyuè) which are added every 33 months. It
	// is normally referred with the same name as the previous month by
	// adding the prefix "閏", e.g.: "閏六月". In ICU library leap
	// months are numbered the same as the month they follow, similarly no
	// leap months are added to the enum below. More details on the
	// different names of the chinese calendar months:
	// https://en.wikipedia.org/wiki/Chinese_calendar#Names_of_months
	// "一月", also traditionally "正月" (Zhēngyuè): Start Month.
	//   "SECOND_MONTH" - "二月", also traditionally "杏月" (Xìngyuè):
	// Apricot Month.
	//   "THIRD_MONTH" - "三月", also traditionally "桃月" (Táoyuè):
	// Peach Month.
	//   "FOURTH_MONTH" - "四月", also traditionally "槐月" (Huáiyuè):
	// Locust Tree Month.
	//   "FIFTH_MONTH" - "五月", also traditionally "蒲月" (Púyuè):
	// Sweet Sedge Month.
	//   "SIXTH_MONTH" - "六月", also traditionally "荷月" (Héyuè):
	// Lotus Month.
	//   "SEVENTH_MONTH" - "七月", also traditionally “蘭月”
	// (Lányuè): Orchid Month.
	//   "EIGHTH_MONTH" - "八月", also traditionally "桂月" (Guìyuè):
	// Osmanthus Month.
	//   "NINTH_MONTH" - "九月", also traditionally "菊月" (Júyuè):
	// Chrysanthemum Month.
	//   "TENTH_MONTH" - "十月", also traditionally "阳月" (Yángyuè):
	// Yang Month.
	//   "ELEVENTH_MONTH" - "十一月", also traditionally "冬月"
	// (Dōngyuè): Winter Month.
	//   "TWELFTH_MONTH" - "十二月", also traditionally "腊月"
	// (Làyuè): Preserved Month.
	ChineseMonth string `json:"chineseMonth,omitempty"`

	// Day: The day is the offset within the month, same as in Gregorian
	// calendars.
	Day int64 `json:"day,omitempty"`

	// Possible values:
	//   "UNKNOWN_HEBREW_MONTH"
	//   "TISHRI" - Note: month names match HebrewCalendar from ICU
	// libraries.
	//   "HESHVAN"
	//   "KISLEV"
	//   "TEVET"
	//   "SHEVAT"
	//   "ADAR_1"
	//   "ADAR"
	//   "NISAN"
	//   "IYAR"
	//   "SIVAN"
	//   "TAMUZ"
	//   "AV"
	//   "ELUL"
	HebrewMonth string `json:"hebrewMonth,omitempty"`

	// Possible values:
	//   "UNKNOWN_ISLAMIC_MONTH"
	//   "MUHARRAM" - Note: month names do *not* match ICU libraries.
	//   "SAFAR"
	//   "RABI_AL_AWWAL"
	//   "RABI_AL_THANI"
	//   "JUMADA_AL_AWWAL"
	//   "JUMADA_AL_THANI"
	//   "RAJAB"
	//   "SHABAN"
	//   "RAMADAN"
	//   "SHAWWAL"
	//   "ZUL_QAADAH"
	//   "ZUL_HIJJAH"
	IslamicMonth string `json:"islamicMonth,omitempty"`

	// Year: The year is relative to the calendar (e.g. 5777 for Hebrew
	// calendar).
	Year int64 `json:"year,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChineseMonth") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChineseMonth") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeNonGregorianDate) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeNonGregorianDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingDatetimeQuantity struct {
	// Modifier: For internal use - DateTime subgrammar users should look at
	// Duration.modifier. = MORE in [3 more days].
	//
	// Possible values:
	//   "NO_MOD"
	//   "BEFORE"
	//   "AFTER"
	//   "ON_OR_BEFORE"
	//   "ON_OR_AFTER"
	//   "LESS_THAN"
	//   "MORE_THAN"
	//   "EQUAL_OR_LESS"
	//   "EQUAL_OR_MORE"
	//   "START"
	//   "MID"
	//   "END"
	//   "APPROX"
	//   "ADD" - Identifies additive or subtractive duration quantities as
	// in [10 more min].
	//   "SUBTRACT"
	Modifier string `json:"modifier,omitempty"`

	// Number: = 3 in "3 milliseconds".
	Number float64 `json:"number,omitempty"`

	// NumberSpan: This field keeps the span info of the number element in a
	// quantity expression, which is useful for downstream components to
	// obtain the number annotations inside a quantity when necessary.
	NumberSpan *NlpSemanticParsingAnnotationEvalData `json:"numberSpan,omitempty"`

	// SymbolicQuantity: Quantities are typically converted into
	// milliseconds, regardless of the units the user used. Sometimes this
	// loses crucial information, e.g., "5 days" vs "5 nights". When
	// quantities are converted to milliseconds, 'symbolic_quantity' will
	// contain the sequence of units that the user actually supplied. This
	// can be more than one element in cases like "one minute and 30
	// seconds". In cases where 'symbolic_quantity' has more than one
	// element, THERE IS NO GUARANTEED ORDER between elements.
	SymbolicQuantity []*NlpSemanticParsingDatetimeQuantity `json:"symbolicQuantity,omitempty"`

	// Unit: = MILLISECOND in "3 milliseconds".
	//
	// Possible values:
	//   "NO_UNIT"
	//   "NANOSECOND"
	//   "MICROSECOND"
	//   "MILLISECOND"
	//   "SECOND"
	//   "MINUTE"
	//   "HOUR"
	//   "DAY"
	//   "WEEK"
	//   "TEN_DAY"
	//   "HALF_MONTH"
	//   "MONTH"
	//   "QUARTER"
	//   "HALF_YEAR"
	//   "YEAR"
	//   "DECADE"
	//   "CENTURY"
	//   "MILLENNIUM"
	//   "NIGHT"
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Modifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Modifier") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeQuantity) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeQuantity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingDatetimeQuantity) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingDatetimeQuantity
	var s1 struct {
		Number gensupport.JSONFloat64 `json:"number"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Number = float64(s1.Number)
	return nil
}

// NlpSemanticParsingDatetimeRange: Range has 4 use cases: 1. with an
// explicit begin and an explicit end, e.g. "from Monday to Wednesday."
// Both |begin| and |end| are filled in this case. 2. a point date/time
// expression is used as a range at a finer granularity. E.g., in "first
// Monday of this month", "this month" is used as a range. In this case,
// only |begin| will be filled and the |end| will be filled during the
// grounding process. 3. a fuzzy date/time range such as "morning" or
// "evening." 4. with a relative begin and a relative end, e.g. "from
// yesterday to next Monday." Note: this may be used in a mixture of
// exact/relative begin and end. Next available ID: 14.
type NlpSemanticParsingDatetimeRange struct {
	// Begin: Deprecated fields. Do NOT use.
	Begin *NlpSemanticParsingDatetimeAbsoluteDateTime `json:"begin,omitempty"`

	BeginRelative *NlpSemanticParsingDatetimeRelativeDateTime `json:"beginRelative,omitempty"`

	// Duration: if |duration| is set, one field from start or finish must
	// be populated, but not both. |exclusive| value is still relevant to
	// decide if the endpoints of the range are included in the range (value
	// defined in the start/finish fields as well as the datetime value
	// resulting of offseting the duration over the given range endpoint).
	Duration *NlpSemanticParsingDatetimeQuantity `json:"duration,omitempty"`

	End *NlpSemanticParsingDatetimeAbsoluteDateTime `json:"end,omitempty"`

	EndRelative *NlpSemanticParsingDatetimeRelativeDateTime `json:"endRelative,omitempty"`

	Exclusive bool `json:"exclusive,omitempty"`

	Finish *NlpSemanticParsingDatetimeDateTime `json:"finish,omitempty"`

	// Possible values:
	//   "NO_FUZZY_RANGE"
	//   "FUZZY_RANGE_MORNING"
	//   "FUZZY_RANGE_AFTERNOON"
	//   "FUZZY_RANGE_EVENING"
	//   "FUZZY_RANGE_NIGHT"
	//   "FUZZY_RANGE_EVE"
	//   "FUZZY_RANGE_DAYTIME"
	//   "FUZZY_RANGE_DAWN"
	//   "FUZZY_RANGE_DUSK"
	//   "FUZZY_RANGE_NIGHTTIME"
	//   "FUZZY_RANGE_EARLY_MORNING" - Deprecated values. Do not use.
	//   "FUZZY_RANGE_MID_MORNING"
	//   "FUZZY_RANGE_LATE_MORNING"
	//   "FUZZY_RANGE_EARLY_AFTERNOON"
	//   "FUZZY_RANGE_MID_AFTERNOON"
	//   "FUZZY_RANGE_LATE_AFTERNOON"
	//   "FUZZY_RANGE_EARLY_EVENING"
	//   "FUZZY_RANGE_MID_EVENING"
	//   "FUZZY_RANGE_LATE_EVENING"
	//   "FUZZY_RANGE_LATE_NIGHT"
	//   "DELETED_11"
	FuzzyRange string `json:"fuzzyRange,omitempty"`

	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	Properties *NlpSemanticParsingDatetimeResolutionProperties `json:"properties,omitempty"`

	// RangeModifier: Modifier that return the appropriate subrange. For
	// more information, see the description of RangeOfDateTimeModifier.
	// Example: * *late* morning
	//
	// Possible values:
	//   "RANGE_MODIFIER_NONE"
	//   "RANGE_MODIFIER_EARLY"
	//   "RANGE_MODIFIER_MIDDLE"
	//   "RANGE_MODIFIER_LATE"
	RangeModifier string `json:"rangeModifier,omitempty"`

	// Start: |start| and |finish| are inclusive unless exclusive field is
	// true. the values in start and finish can be an absolute point, a
	// relative or another range. Recurrences and repeated values are not
	// expected/allowed.
	Start *NlpSemanticParsingDatetimeDateTime `json:"start,omitempty"`

	// SymbolicValue: The field is set if the range is the result of
	// resolving/grounding a relative datetime expression referring to a
	// part of the day. E.g. "morning", "afternoon", "evening", "night",
	// "tonight", etc.
	//
	// Possible values:
	//   "NO_SYMBOLIC_DATETIME"
	//   "SYMBOLIC_MORNING"
	//   "SYMBOLIC_AFTERNOON"
	//   "SYMBOLIC_EVENING"
	//   "SYMBOLIC_NIGHT"
	//   "DELETED_5" - Deprecated fields. Do not use.
	SymbolicValue string `json:"symbolicValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeRange) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeRecurrent: expressions: "every Monday after
// December 1" "every morning starting from this Friday". Note: if a
// recurrent DATE/TIME expression is bounded (limited by a finite
// interval or a finite count), e.g., "every monday in the next 3
// months", "... at 11:00am every Monday for 4 times" the grammar will
// resolve it to a finite number of |range|s. Next available ID: 17.
type NlpSemanticParsingDatetimeRecurrent struct {
	// CountRestriction: How many times it repeats.
	CountRestriction int64 `json:"countRestriction,omitempty"`

	// Exception: An arbitrary exception to the recurrence. This can be an
	// absolute point, a relative, a range or a recurrent expression.
	// Examples: * "every Tuesday except for July 13th 2021" * "every
	// Tuesday except for July 13th and November 2nd" * "every second Monday
	// except during the summer" * "everyday except Thursdays" * "every
	// Friday, except from October 1st to October 22nd"
	Exception []*NlpSemanticParsingDatetimeDateTime `json:"exception,omitempty"`

	// Frequency: |frequency| is used to represent the frequency of the
	// recurrence over a given recurrent period. E.g. "twice a week", "once
	// a month". An unknown frequency is represented with 0, as in just
	// "repeating".
	Frequency int64 `json:"frequency,omitempty"`

	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	// Period: |period| and |unit| specify how often |start_point| or
	// |start_range| repeats. |period| should not be 0.
	Period int64 `json:"period,omitempty"`

	RangeRestriction *NlpSemanticParsingDatetimeRange `json:"rangeRestriction,omitempty"`

	RelativeRangeRestriction *NlpSemanticParsingDatetimeRelativeDateTime `json:"relativeRangeRestriction,omitempty"`

	// Restriction: A recurrent expression can be restricted by either a
	// datetime |restriction| or |count_restriction| below. The restriction
	// datetime can be expressed as an explicit range a relative datetime
	// expression, a datetime point or a recurrent datetime. E.g. "every
	// monday [next month]", "every second tuesday [this year]", etc. If
	// |period| is > 0 and |restriction| is not set, repeat indefinitely.
	// Note that this can support recurrent expressions as |restriction| as
	// well. For example in the expression "every monday on [every other
	// month]" where [every other month] is a restriction expressed as a
	// recurrent datetime.
	Restriction *NlpSemanticParsingDatetimeDateTime `json:"restriction,omitempty"`

	// Start: |start| is used to represent the starting points, ranges or
	// relative datetims in a recurrent expression, for example: "every
	// morning", (range) "everyday at 5 pm", (point) "every second monday"
	// (relative) |start| should never contain a recurrent element.
	Start []*NlpSemanticParsingDatetimeDateTime `json:"start,omitempty"`

	// StartPoint: DO NOT USE: deprecated fields soon to be removed.
	StartPoint []*NlpSemanticParsingDatetimeAbsoluteDateTime `json:"startPoint,omitempty"`

	StartRange []*NlpSemanticParsingDatetimeRange `json:"startRange,omitempty"`

	StartRelative []*NlpSemanticParsingDatetimeRelativeDateTime `json:"startRelative,omitempty"`

	// Target: The target to be fetched. This could be a named day-of-week
	// or month (e.g., "Monday", "April"), or a date/time unit (e.g., "day",
	// "week", "month").
	Target *NlpSemanticParsingDatetimeTargetToFetch `json:"target,omitempty"`

	// TimeInterval: |time_interval| is a time amount or duration, used to
	// described the time interval between the instances of the recurrence.
	// (e.g. "every 3 hours", "every 35 minutes", "every 2 months and 15
	// days", etc)
	TimeInterval *NlpSemanticParsingDatetimeQuantity `json:"timeInterval,omitempty"`

	// Possible values:
	//   "NO_UNIT"
	//   "NANOSECOND"
	//   "MICROSECOND"
	//   "MILLISECOND"
	//   "SECOND"
	//   "MINUTE"
	//   "HOUR"
	//   "DAY"
	//   "WEEK"
	//   "TEN_DAY"
	//   "HALF_MONTH"
	//   "MONTH"
	//   "QUARTER"
	//   "HALF_YEAR"
	//   "YEAR"
	//   "DECADE"
	//   "CENTURY"
	//   "MILLENNIUM"
	//   "NIGHT"
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountRestriction") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountRestriction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeRecurrent) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeRecurrent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeRelativeDateTime: This provides a
// semi-abstract description for relative datetime expressions. -
// ShiftedRelativeDateTime encodes datetimes that arise from
// before/after expressions (e.g. [three days ago], [2 days after March
// 1st]). - FetchedRelativeDateTime encodes expressions that are
// retrieval-type statements (e.g. [next weekend], [the last two
// Mondays]). Next field: 5
type NlpSemanticParsingDatetimeRelativeDateTime struct {
	Fetched *NlpSemanticParsingDatetimeFetchedRelativeDateTime `json:"fetched,omitempty"`

	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	// Modifier: When a relative datetime which resolves into a range is
	// being used as the endpoint of a range (begin_relative/end_relative),
	// its begin/end will be taken accordingly unless this modifier
	// indicates the opposite: begin_relative with relative range and
	// modifier == AFTER means that its end will be taken as the beginning
	// of the resulting range. Similarly, end_relative with a relative range
	// and modifier == BEFORE means that its begin will be taken as the end
	// of the resulting range. E.g. "after next month" will be a range with
	// a begin_relative that will take the end of "next month" as its
	// starting point (exclusive). values other than AFTER and BEFORE in the
	// specific conditions explained here will be ignored and have no effect
	// in the resolution of RelativeDateTimes.
	//
	// Possible values:
	//   "NO_MOD"
	//   "BEFORE"
	//   "AFTER"
	//   "ON_OR_BEFORE"
	//   "ON_OR_AFTER"
	//   "LESS_THAN"
	//   "MORE_THAN"
	//   "EQUAL_OR_LESS"
	//   "EQUAL_OR_MORE"
	//   "START"
	//   "MID"
	//   "END"
	//   "APPROX"
	//   "ADD" - Identifies additive or subtractive duration quantities as
	// in [10 more min].
	//   "SUBTRACT"
	Modifier string `json:"modifier,omitempty"`

	Shifted *NlpSemanticParsingDatetimeShiftedRelativeDateTime `json:"shifted,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Fetched") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Fetched") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeRelativeDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeRelativeDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeResolutionProperties: Encapsulates metadata
// about the query span resolved here.
type NlpSemanticParsingDatetimeResolutionProperties struct {
	// Meridiem: Simple enum container for exporting meridiem mentions.
	// Note: this is marked as deprecated as we are moving to properly parse
	// expressions with explicit meridiem information.
	//
	// Possible values:
	//   "INVALID_MERIDIEM"
	//   "AM"
	//   "PM"
	Meridiem string `json:"meridiem,omitempty"`

	// Metadata: Encodes whether the datetime was phrased in a specific way,
	// see enum above.
	//
	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	// Relative: Expresses the relative DateTime query that gave rise to
	// these grounded semantics.
	Relative *NlpSemanticParsingDatetimeRelativeDateTime `json:"relative,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Meridiem") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Meridiem") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeResolutionProperties) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeResolutionProperties
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingDatetimeShiftedRelativeDateTime struct {
	// Base: The base could be an absolute datetime point for example:
	// "March 1", a relative datetime point, for example: "2 days before
	// March 1" or a symbolic base type, for example: CURRENT_DATETIME. This
	// could also be used to combine EXPLICIT_PRONOUN with the actual value
	// of that reference being setup as a datetime point in base or
	// relative_base
	Base *NlpSemanticParsingDatetimeAbsoluteDateTime `json:"base,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "CURRENT_DATETIME"
	//   "EXPLICIT_PRONOUN"
	BaseType string `json:"baseType,omitempty"`

	// Metadata: Can be used to tag relative datetime expressions with
	// metadata information in the grammar.
	//
	// Possible values:
	//   "NO_METADATA"
	//   "HOLIDAY"
	//   "ORDINAL"
	//   "WEEKEND"
	//   "DECADE"
	//   "MONTH"
	//   "DAY_OF_WEEK"
	//   "YEAR_NUMBER"
	//   "MONTH_YEAR"
	//   "PERSONAL"
	//   "SEASON"
	//   "WEE_HOURS_INFERRED"
	//   "PROACTIVE_DEFAULT_TIME"
	//   "PROACTIVE_DEFAULT_DATE"
	//   "PROACTIVE_DEFAULT_DATETIME"
	//   "HOUR_NUMBER"
	//   "ASTRONOMICAL_EVENT"
	//   "RECURRENT_UNKNOWN_FREQUENCY"
	Metadata string `json:"metadata,omitempty"`

	RelativeBase *NlpSemanticParsingDatetimeResolutionProperties `json:"relativeBase,omitempty"`

	ShiftAmount *NlpSemanticParsingDatetimeQuantity `json:"shiftAmount,omitempty"`

	// ShiftPast: If true, shifting to the past; if false, shifting to the
	// future.
	ShiftPast bool `json:"shiftPast,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Base") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Base") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeShiftedRelativeDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeShiftedRelativeDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeSpan: The byte offset and text of a span.
type NlpSemanticParsingDatetimeSpan struct {
	NumBytes int64 `json:"numBytes,omitempty"`

	// StartByte: 0-based start byte offset of the span.
	StartByte int64 `json:"startByte,omitempty"`

	// Text: The text of the span: a substring of ParserInput's
	// canonical_input.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NumBytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumBytes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeSpan) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeSpan
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingDatetimeTargetToFetch: Next field: 9
type NlpSemanticParsingDatetimeTargetToFetch struct {
	Event *NlpSemanticParsingDatetimeEvent `json:"event,omitempty"`

	// Possible values:
	//   "NO_FUZZY_RANGE"
	//   "FUZZY_RANGE_MORNING"
	//   "FUZZY_RANGE_AFTERNOON"
	//   "FUZZY_RANGE_EVENING"
	//   "FUZZY_RANGE_NIGHT"
	//   "FUZZY_RANGE_EVE"
	//   "FUZZY_RANGE_DAYTIME"
	//   "FUZZY_RANGE_DAWN"
	//   "FUZZY_RANGE_DUSK"
	//   "FUZZY_RANGE_NIGHTTIME"
	//   "FUZZY_RANGE_EARLY_MORNING" - Deprecated values. Do not use.
	//   "FUZZY_RANGE_MID_MORNING"
	//   "FUZZY_RANGE_LATE_MORNING"
	//   "FUZZY_RANGE_EARLY_AFTERNOON"
	//   "FUZZY_RANGE_MID_AFTERNOON"
	//   "FUZZY_RANGE_LATE_AFTERNOON"
	//   "FUZZY_RANGE_EARLY_EVENING"
	//   "FUZZY_RANGE_MID_EVENING"
	//   "FUZZY_RANGE_LATE_EVENING"
	//   "FUZZY_RANGE_LATE_NIGHT"
	//   "DELETED_11"
	FuzzyRange string `json:"fuzzyRange,omitempty"`

	// Possible values:
	//   "NO_MONTH"
	//   "JANUARY"
	//   "FEBRUARY"
	//   "MARCH"
	//   "APRIL"
	//   "MAY"
	//   "JUNE"
	//   "JULY"
	//   "AUGUST"
	//   "SEPTEMBER"
	//   "OCTOBER"
	//   "NOVEMBER"
	//   "DECEMBER"
	Month string `json:"month,omitempty"`

	// Possible values:
	//   "INVALID_QUARTER"
	//   "FIRST_QUARTER"
	//   "SECOND_QUARTER"
	//   "THIRD_QUARTER"
	//   "FOURTH_QUARTER"
	Quarter string `json:"quarter,omitempty"`

	// Possible values:
	//   "INVALID"
	//   "CURRENT_DATETIME" - Returns a full described value for "now". It
	// populates year, month, day, hour, minute and seconds.
	//   "CURRENT_TIME" - Returns a described value for the current time
	// without the date component. It populates hour, minute and seconds (no
	// DATE elements).
	//   "CURRENT_DATE" - Returns a described value for "today". It
	// populates year, month and day (no TIME elements).
	//   "RECENT" - This value is used for references to the fuzzy range of
	// recent time or to subset of the last elements of a list sorted by
	// their temporal relation.
	//   "LATEST" - This value is used for references to the last element of
	// a list sorted by their temporal relation.
	//   "NEXT_DAY" - Returns a described value for "tomorrow". It populates
	// year, month and day (no TIME elements).
	//   "PREVIOUS_DAY" - Returns a described value for "yesterday". It
	// populates year, month and day (no TIME elements).
	//   "DAY_AFTER_NEXT" - Returns a described value for "the day after
	// tomorrow". Note: this is one word in many languages (e.g.
	// "übermorgen", "明後日") It populates year, month and day (no TIME
	// elements).
	//   "DAY_BEFORE_PREVIOUS" - Returns a described value for "the day
	// before yesterday". Note: this is one word in many languages (e.g.
	// "anteayer", "προχθές") It populates year, month and day (no
	// TIME elements).
	Reference string `json:"reference,omitempty"`

	// Possible values:
	//   "INVALID_SEASON"
	//   "SPRING"
	//   "SUMMER"
	//   "FALL"
	//   "WINTER"
	//   "EARLY_SPRING" - Deprecated values. Do not use.
	//   "MID_SPRING"
	//   "LATE_SPRING"
	//   "EARLY_SUMMER"
	//   "MID_SUMMER"
	//   "LATE_SUMMER"
	//   "EARLY_FALL"
	//   "MID_FALL"
	//   "LATE_FALL"
	//   "EARLY_WINTER"
	//   "MID_WINTER"
	//   "LATE_WINTER"
	Season string `json:"season,omitempty"`

	// Unit: Unnamed target: "week", "month" etc. E.g., "1st week of April".
	//
	// Possible values:
	//   "NO_UNIT"
	//   "NANOSECOND"
	//   "MICROSECOND"
	//   "MILLISECOND"
	//   "SECOND"
	//   "MINUTE"
	//   "HOUR"
	//   "DAY"
	//   "WEEK"
	//   "TEN_DAY"
	//   "HALF_MONTH"
	//   "MONTH"
	//   "QUARTER"
	//   "HALF_YEAR"
	//   "YEAR"
	//   "DECADE"
	//   "CENTURY"
	//   "MILLENNIUM"
	//   "NIGHT"
	Unit string `json:"unit,omitempty"`

	// Weekday: Named target: only one of the following is expected.
	//
	// Possible values:
	//   "NO_DAY_OF_WEEK"
	//   "SUNDAY"
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "WEEKEND" - Sometimes resembles Monday etc. E.g., "2nd weekend."
	Weekday []string `json:"weekday,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Event") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Event") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeTargetToFetch) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeTargetToFetch
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingDatetimeTimeZone struct {
	Timezone string `json:"timezone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Timezone") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Timezone") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingDatetimeTimeZone) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingDatetimeTimeZone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingEntitySourceData struct {
	// EntitySources: Indicates backends from which parts of an entity were
	// retrieved.
	//
	// Possible values:
	//   "UNKNOWN_ENTITY_SOURCE"
	//   "QREF_PERSONAL_WALDREF" - Indicates that an entity was retrieved
	// from personal waldref.
	//   "QREF_PERSONAL_TOPIC_SERVER" - Indicates that metadata from
	// personal topic server was attached to an entity.
	//   "MYENTITIES_MODEL_T" - Indicates that an entity was retrieved from
	// Model T.
	EntitySources []string `json:"entitySources,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntitySources") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntitySources") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingEntitySourceData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingEntitySourceData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingExpressionStatus: Status indicating whether the
// user has finished expressing their intended semantics during a
// streaming interaction. Semantics are partially expressed when later,
// unprompted user input is expected to modify the semantics. Future
// inputs are typically additional speech or continued modification of
// argument text in form field. These inputs can trigger modifications
// including adding arguments, changing the intent, or modifying
// existing arguments. Sensing this status can be done both directly and
// indirectly. Fluid Actions directly detects this status as the user
// moves between, or enters and leaves, argument form fields.
// Understanding indirectly detects this status by the pace of the
// user's speech, the semantics of the language, and the user's
// intonation. See go/streaming-nlu-fulfilment-protocol-v1 for details
// about how it is used in the Streaming NLU Fulfillment protocol.
type NlpSemanticParsingExpressionStatus struct {
	// Possible values:
	//   "EXPRESSION_STATUS_UNSPECIFIED" - Expression state is unspecified.
	//   "PARTIAL" - The user is in the process of expressing the
	// intent/argument and has only partially communicated the semantics. As
	// a result, the semantics are partially expressed.
	//   "COMPLETE" - The semantics have been completely expressed and the
	// user is unlikely to modify it without further prompting.
	//   "LIKELY_COMPLETE" - The perception models believe it is likely, but
	// not certain that the user has finished expressing their thought. This
	// signal as a lower latency and lower precision than the COMPLETE
	// status.
	Status string `json:"status,omitempty"`

	// TextCompletenessProbability: Completeness probability as calculated
	// by the parser's completeness layer.
	TextCompletenessProbability float64 `json:"textCompletenessProbability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Status") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Status") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingExpressionStatus) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingExpressionStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingExpressionStatus) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingExpressionStatus
	var s1 struct {
		TextCompletenessProbability gensupport.JSONFloat64 `json:"textCompletenessProbability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.TextCompletenessProbability = float64(s1.TextCompletenessProbability)
	return nil
}

// NlpSemanticParsingLocalAmenities: A list of amenity constraints.
// There is an implicit AND relationship between the different
// constraints.
type NlpSemanticParsingLocalAmenities struct {
	// Type: Applied amenity constraints. Nothing should be inferred about
	// the ordering of the values in this field.
	//
	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "AIR_CONDITIONED"
	//   "BAR"
	//   "BEACH"
	//   "BREAKFAST"
	//   "FREE_BREAKFAST" - Breakfast is provided without an extra fee.
	//   "FREE_PARKING" - Parking is provided without an extra fee.
	//   "FREE_WIFI" - Wifi is provided without an extra fee.
	//   "GYM"
	//   "HEATED_POOL"
	//   "HOT_TUB"
	//   "IN_ROOM_HOT_TUB"
	//   "INDOOR_POOL"
	//   "KID_FRIENDLY"
	//   "NON_SMOKING"
	//   "PET_FRIENDLY"
	//   "POOL"
	//   "RESTAURANT"
	//   "SMOKING"
	//   "TRUCK_PARKING"
	//   "WIFI"
	//   "DEAL"
	//   "LAST_MINUTE"
	//   "ALL_INCLUSIVE" - All inclusive is available as a meal option.
	//   "PARKING"
	//   "SPA"
	//   "FREE_PET_FRIENDLY" - Pets are accepted without an extra fee.
	//   "WIFI_IN_ROOM" - Wifi service is available in the rooms.
	//   "ALL_INCLUSIVE_ONLY" - All inclusive is the only meal option.
	//   "ROOM_SERVICE"
	//   "OUTDOOR_POOL"
	//   "HAS_24_HOUR_FRONT_DESK"
	//   "FREE_GYM" - Gym is available without an extra fee.
	//   "MASSAGE"
	//   "SAUNA"
	//   "KIDS_ACTIVITIES"
	//   "KIDS_CLUB"
	//   "SUITE"
	//   "BALCONY"
	//   "BATHTUB"
	//   "HOUSEKEEPING"
	//   "DAILY_HOUSEKEEPING" - Housekeeping services are provided daily.
	//   "DOG_FRIENDLY"
	//   "THERMAL_POOL"
	//   "TREADMILL"
	//   "PRIVATE_BEACH"
	//   "VIEW_OF_CITY"
	//   "VIEW_OF_GARDEN"
	//   "VIEW_OF_LAKE"
	//   "VIEW_OF_LANDMARK"
	//   "VIEW_OF_OCEAN"
	//   "VIEW_OF_POOL"
	//   "VIEW_OF_VALLEY"
	//   "CASINO"
	//   "KITCHEN"
	//   "AVAILABLE_FOR_ESSENTIAL_WORKERS"
	//   "FREE_CANCELLATION"
	Type []string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalAmenities) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalAmenities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalBasicLocation: Conceptually this describes one
// location. Technically, this is a sequence of location elements with
// the intention that at least one element in the sequence is an actual
// location (rather than a modifier).
type NlpSemanticParsingLocalBasicLocation struct {
	Element []*NlpSemanticParsingLocalLocationElement `json:"element,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Element") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Element") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalBasicLocation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalBasicLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalBusinessType: A high-level categorization of
// business types. Used for location elements that are either
// BUSINESS_NAME or BUSINESS_CATEGORY. The business types roughly
// correspond to QRef collections and should be interpreted broadly.
// E.g., hotel also include motels, youth hostels, and guest houses;
// restaurants includes bars and cafes, etc. Business types can be
// populated by QRef collections; other population is done by grammar
// categories from local_categories.grammar. It is expected that some
// business organizations will match more than one business type. E.g.,
// Safeway is both a grocery store and a pharmacy. Next ID: 43
// NOTE(oksana): LocalCategoryReliable grammar over-rides a few business
// type queries to include hyper_reliable location element. If you
// change this, please make sure that LocalCategoryReliable grammar
// reflects this too. LINT.IfChange
type NlpSemanticParsingLocalBusinessType struct {
	Airline bool `json:"airline,omitempty"`

	Airport bool `json:"airport,omitempty"`

	Bank bool `json:"bank,omitempty"`

	BikeSharingStation bool `json:"bikeSharingStation,omitempty"`

	BusStop bool `json:"busStop,omitempty"`

	ClothingStore bool `json:"clothingStore,omitempty"`

	// CuisineGcid: If the element implies a cuisine type then we include
	// the gcid string when available. Currently this happens for
	// BUSINESS_CATEGORY type. The field is repeated to model categories
	// like "mandarin buffet restaurant" with multiple cuisine gcid's:
	// mandarin_restaurant and buffet_restaurant.
	CuisineGcid []string `json:"cuisineGcid,omitempty"`

	DepartmentStore bool `json:"departmentStore,omitempty"`

	DrugDropOff bool `json:"drugDropOff,omitempty"`

	ElectricVehicleChargingStation bool `json:"electricVehicleChargingStation,omitempty"`

	ElectronicStore bool `json:"electronicStore,omitempty"`

	// Emergency: This field is used to determine the emergency type of the
	// element, which is specified by the grammar parse in
	// (http://cs/file:googledata/localsearch/quality/grammar/local_patterns.asciipb).
	// e.g. "coronavirus_treatment_locations" TODO(b/151330576) Deprecate
	// the emergency field and replace with normal triggering.
	Emergency string `json:"emergency,omitempty"`

	FoodPantry bool `json:"foodPantry,omitempty"`

	GasStation bool `json:"gasStation,omitempty"`

	GroceryStore bool `json:"groceryStore,omitempty"`

	Hairdresser bool `json:"hairdresser,omitempty"`

	HardwareStore bool `json:"hardwareStore,omitempty"`

	Hospital bool `json:"hospital,omitempty"`

	// Hotel: Also youth hostels, guest houses, etc.
	Hotel bool `json:"hotel,omitempty"`

	Parking bool `json:"parking,omitempty"`

	PetStore bool `json:"petStore,omitempty"`

	Pharmacy bool `json:"pharmacy,omitempty"`

	// QrefTransitStation: This is used for transit stations annotated by
	// QRef. The transit_station business_type above is only used for
	// business categories, and therefore is used downstream to find nearby
	// stations rather than a particular station, and so cannot be present
	// in a Location that is a specific station from QRef. For these cases,
	// this business_type is used instead. e.g. "grand central" "millbrae
	// station" "union station" will have business_type qref_transit_station
	QrefTransitStation bool `json:"qrefTransitStation,omitempty"`

	// Restaurant: Also bars and cafes
	Restaurant bool `json:"restaurant,omitempty"`

	Retail bool `json:"retail,omitempty"`

	// School: Pre-k to high school
	School bool `json:"school,omitempty"`

	ShoppingCenter bool `json:"shoppingCenter,omitempty"`

	SoupKitchen bool `json:"soupKitchen,omitempty"`

	SportStore bool `json:"sportStore,omitempty"`

	SubwayStation bool `json:"subwayStation,omitempty"`

	Telecom bool `json:"telecom,omitempty"`

	ToyStore bool `json:"toyStore,omitempty"`

	TrainStation bool `json:"trainStation,omitempty"`

	// TransitLine: A particular line in a transit system, e.g., "3 train",
	// "Red Line", "Cirle Line", etc.
	TransitLine bool `json:"transitLine,omitempty"`

	// TransitOperator: Operator of a transit line, e.g., "MTA", "BART",
	// "CTA", etc.
	TransitOperator bool `json:"transitOperator,omitempty"`

	// TransitStation: The different types of transit station business types
	// will be used to figure out which vehicle types to use when querying
	// Tripfinder's SearchStations service. The stations in that backend
	// seem to be divided into HEAVY_RAIL, SUBWAY, and TRAM. There isn't a
	// very reliable division between intercity rail and commuter rail --
	// Amtrak, LIRR, PATH, and NJ Transit are all classified as HEAVY_RAIL.
	// That's why in these types we make a distinction between train and
	// subway, and not train and muni_rail, (unlike TransitMode in the
	// TravelAction proto).
	TransitStation bool `json:"transitStation,omitempty"`

	// University: Also colleges
	University bool `json:"university,omitempty"`

	// VehicleType: All of the vehicle types serviced by this business or
	// business category. e.g. VEHICLE_TYPE_RAIL and VEHICLE_TYPE__BUS for
	// "transit stop". This allows downstream to serve different result
	// types for transit station categories in different languages. e.g. In
	// en-US "train station" seeks both railway station and subway station
	// results. But the equivalent word in French/Italian/German seeks only
	// railway stations.
	//
	// Possible values:
	//   "VEHICLE_TYPE_ANY" - ABSTRACT
	//   "VEHICLE_TYPE_RAIL" - ABSTRACT Metropolitan railway transport,
	// mostly for local transit.
	//   "VEHICLE_TYPE_METRO_RAIL" - ABSTRACT
	//   "VEHICLE_TYPE_SUBWAY" - Subways run mainly or completely
	// underground.
	//   "VEHICLE_TYPE_TRAM" - Trams run mainly or completely along streets.
	//   "VEHICLE_TYPE_MONORAIL" - Monorails run on track consisting of a
	// single rail, e.g. suspended monorail.
	//   "VEHICLE_TYPE_HEAVY_RAIL" - Heavy rail is rail transit that
	// consists of larger vehicles, typically to transport more people
	// across longer distances.
	//   "VEHICLE_TYPE_COMMUTER_TRAIN" - Commuter trains connect the city
	// with the suburbs. They tend to stop often and run short distances.
	//   "VEHICLE_TYPE_HIGH_SPEED_TRAIN" - High speed trains operate at much
	// higher speed than normal trains. They can also run long distances.
	// Typically with speeds upwards of 200 km/h. Examples are TGV, ICE,
	// Shinkansen.
	//   "VEHICLE_TYPE_LONG_DISTANCE_TRAIN" - Long distance trains connect
	// multiple cities/regions of a country or even multiple countries. They
	// run faster, but not high-speed. Typically speeds under 200 km/h.
	//   "VEHICLE_TYPE_BUS" - Buses cover mass transit over roads.
	//   "VEHICLE_TYPE_INTERCITY_BUS" - A bus that connects cities to each
	// other.
	//   "VEHICLE_TYPE_TROLLEYBUS" - A bus powered by electricity obtained
	// from overhead wires by means of a pole.
	//   "VEHICLE_TYPE_SHARE_TAXI" - Share taxi is sort of bus transport
	// with ability to drop off and pick up passengers anywhere on it route.
	// Generally share taxi uses minibus vehicles.
	//   "VEHICLE_TYPE_FERRY" - Ferries are a means of transit over water,
	// often operated on regular, frequent, return services.
	//   "VEHICLE_TYPE_CABLE_CAR" - Cable cars are a form of transit used in
	// the mountains.
	//   "VEHICLE_TYPE_GONDOLA_LIFT" - An aerial lift (colloquially called
	// "gondola lift") is a means of cable transport in which cabins, cars,
	// gondolas or open chairs are hauled above the ground by means of one
	// or more cables. Examples: gondola lift, aerial tramway. Funicular is
	// a cable railway in which a pair of tram-like vehicles use each other
	// as counter balance to ascend and descend.
	//   "VEHICLE_TYPE_FUNICULAR"
	//   "VEHICLE_TYPE_SPECIAL" - Used for easter eggs.
	//   "VEHICLE_TYPE_HORSE_CARRIAGE"
	//   "VEHICLE_TYPE_AIRPLANE"
	VehicleType []string `json:"vehicleType,omitempty"`

	// Venue: Stadiums, theaters, cinemas, etc.
	Venue bool `json:"venue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Airline") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Airline") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalBusinessType) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalBusinessType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalChainMemberConstraint: ChainMemberConstraint
// for chain filtering enabled queries.
type NlpSemanticParsingLocalChainMemberConstraint struct {
	// ChainIds: Specifies which parent chain mids to filter by.
	ChainIds []string `json:"chainIds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChainIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChainIds") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalChainMemberConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalChainMemberConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalCompoundLocation struct {
	Joiner *NlpSemanticParsingLocalJoiner `json:"joiner,omitempty"`

	Location1 *NlpSemanticParsingLocalLocation `json:"location1,omitempty"`

	// Location2: If location_2 is absent, it should likely be interpreted
	// as an implicit "here". For example, "nearest Starbucks" will be
	// represented as a compound location with "Starbucks" as location_1,
	// "nearest" as the joiner, and empty location_2.
	Location2 *NlpSemanticParsingLocalLocation `json:"location2,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Joiner") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Joiner") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalCompoundLocation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalCompoundLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalContactLocation: Contact information for the
// |contact_location| field in LocationElement.
type NlpSemanticParsingLocalContactLocation struct {
	// Contact: Contact as a location.
	Contact *NlpSemanticParsingModelsCommunicationRecipient `json:"contact,omitempty"`

	// ContactType: The type of contact address (home, work, etc).
	ContactType *NlpSemanticParsingModelsCommunicationPhoneType `json:"contactType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Contact") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Contact") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalContactLocation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalContactLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalCuisineConstraint: Constraint for cuisine
// type, such as "chinese", "italian", "thai", "burgers", etc.
type NlpSemanticParsingLocalCuisineConstraint struct {
	CuisineGcid string `json:"cuisineGcid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CuisineGcid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CuisineGcid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalCuisineConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalCuisineConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalEvChargingStationSpeedConstraint: There is an
// implicit AND relation if multiple EVCS constraint types are
// specified.
type NlpSemanticParsingLocalEvChargingStationSpeedConstraint struct {
	// Possible values:
	//   "UNKNOWN_CHARGING_SPEED"
	//   "FAST_CHARGING_SPEED"
	//   "VERY_FAST_CHARGING_SPEED" - Very fast definition :
	// go/very-fast-speed-qbf-evcs
	ChargingSpeed string `json:"chargingSpeed,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChargingSpeed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChargingSpeed") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalEvChargingStationSpeedConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalEvChargingStationSpeedConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalExtent struct {
	// NonSpecificValue: True for values like "a few".
	NonSpecificValue bool `json:"nonSpecificValue,omitempty"`

	// Possible values:
	//   "METER"
	//   "KILOMETER"
	//   "FOOT"
	//   "YARD"
	//   "MILE"
	//   "BLOCK"
	//   "MINUTE"
	//   "HOUR"
	//   "OTHER_UNITS"
	Units string `json:"units,omitempty"`

	// UnitsString: String representation, e.g., for debug.
	UnitsString string `json:"unitsString,omitempty"`

	// Value: For approximate values such as "a few" or "several", we
	// populate |value| with a specific numeric value which is a generous
	// (i.e., high) interpretation of the text, and we set
	// |non_specific_value| to true.
	Value float64 `json:"value,omitempty"`

	// ValueString: Can hold numbers as well as "a few".
	ValueString string `json:"valueString,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NonSpecificValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NonSpecificValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalExtent) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalExtent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingLocalExtent) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingLocalExtent
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

type NlpSemanticParsingLocalGcidConstraint struct {
	// Gcid: GCID - with the 'gcid:' prefix.
	Gcid string `json:"gcid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Gcid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Gcid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalGcidConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalGcidConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalHealthInsuranceConstraint: Constraint for the
// health insurance network of a provider.
type NlpSemanticParsingLocalHealthInsuranceConstraint struct {
	// Possible values:
	//   "UNKNOWN_HEALTH_INSURANCE"
	//   "ACCEPTS_MEDICARE"
	//   "ACCEPTS_MEDICAID"
	Network string `json:"network,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Network") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Network") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalHealthInsuranceConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalHealthInsuranceConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalHotelType: Hotel Type used by the hotels team
// to differentiate sub classes of accommodations. For any questions
// please contact hotel-search-quality@. Next ID: 48
type NlpSemanticParsingLocalHotelType struct {
	// AllInclusiveResort: Basic accommodation types variations.
	AllInclusiveResort bool `json:"allInclusiveResort,omitempty"`

	BeachResort bool `json:"beachResort,omitempty"`

	BedAndBreakfast bool `json:"bedAndBreakfast,omitempty"`

	BoutiqueHotel bool `json:"boutiqueHotel,omitempty"`

	BusinessHotel bool `json:"businessHotel,omitempty"`

	// Cabin: Other accommodation types.
	Cabin bool `json:"cabin,omitempty"`

	Campsite bool `json:"campsite,omitempty"`

	CapsuleHotel bool `json:"capsuleHotel,omitempty"`

	CasinoAccommodation bool `json:"casinoAccommodation,omitempty"`

	CastleHotel bool `json:"castleHotel,omitempty"`

	Chalet bool `json:"chalet,omitempty"`

	CommonLodgingHouse bool `json:"commonLodgingHouse,omitempty"`

	CondoHotel bool `json:"condoHotel,omitempty"`

	ConventionHotel bool `json:"conventionHotel,omitempty"`

	Cottage bool `json:"cottage,omitempty"`

	EcoHotel bool `json:"ecoHotel,omitempty"`

	ExtendedStayHotel bool `json:"extendedStayHotel,omitempty"`

	Farmstay bool `json:"farmstay,omitempty"`

	Gite bool `json:"gite,omitempty"`

	GolfResort bool `json:"golfResort,omitempty"`

	GuestRanch bool `json:"guestRanch,omitempty"`

	Guesthouse bool `json:"guesthouse,omitempty"`

	Hostel bool `json:"hostel,omitempty"`

	// Hotel: Basic accommodation types.
	Hotel bool `json:"hotel,omitempty"`

	Houseboat bool `json:"houseboat,omitempty"`

	Inn bool `json:"inn,omitempty"`

	// JapaneseInn: Japanese accommodation types.
	JapaneseInn bool `json:"japaneseInn,omitempty"`

	JapaneseInnWithHotSpring bool `json:"japaneseInnWithHotSpring,omitempty"`

	Lodge bool `json:"lodge,omitempty"`

	Lodging bool `json:"lodging,omitempty"`

	LoveHotel bool `json:"loveHotel,omitempty"`

	Motel bool `json:"motel,omitempty"`

	MountainHut bool `json:"mountainHut,omitempty"`

	// Other: Any other lodging related type.
	Other bool `json:"other,omitempty"`

	Pension bool `json:"pension,omitempty"`

	Resort bool `json:"resort,omitempty"`

	SafariLodge bool `json:"safariLodge,omitempty"`

	SeasideResort bool `json:"seasideResort,omitempty"`

	ServicedApartment bool `json:"servicedApartment,omitempty"`

	SkiResort bool `json:"skiResort,omitempty"`

	Suite bool `json:"suite,omitempty"`

	VacationApartment bool `json:"vacationApartment,omitempty"`

	VacationHouse bool `json:"vacationHouse,omitempty"`

	// VacationRental: Vacation rental accommodation types.
	VacationRental bool `json:"vacationRental,omitempty"`

	Villa bool `json:"villa,omitempty"`

	WellnessAndSpaAccommodation bool `json:"wellnessAndSpaAccommodation,omitempty"`

	YouthHostel bool `json:"youthHostel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllInclusiveResort")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllInclusiveResort") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalHotelType) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalHotelType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalHyperReliableData: Message containing
// information about hyper-reliable categories. go/local-hyper-reliable
type NlpSemanticParsingLocalHyperReliableData struct {
	// CommodityStrength: Whether a location is a commodity (distance is an
	// important metric), neutral or non-commodity (distance is not
	// important). Commodity locations are "atm", "gas station", etc.
	// Non-commodity locations are "restaurant", "hotel", etc, and all
	// others are neutral. The value is 1 for commodity queries, 0 for
	// non-commodity queries, no-value for neutral queries (when the field
	// doesn't exist in the grammar). The reason it is a float is to prepare
	// for future changes when we expand the signal value from discrete
	// classes to a score, and the score will be in the range of [0,1].
	CommodityStrength float64 `json:"commodityStrength,omitempty"`

	GcidsynsOverride []*NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride `json:"gcidsynsOverride,omitempty"`

	HyperReliable bool `json:"hyperReliable,omitempty"`

	// RetrievalGcids: Categories used for retrieval and used in Artemis
	// diversity tiers as restricts. See
	// https://ariane.googleplex.com/launch/190585 for details.
	RetrievalGcids []string `json:"retrievalGcids,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommodityStrength")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommodityStrength") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalHyperReliableData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalHyperReliableData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingLocalHyperReliableData) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingLocalHyperReliableData
	var s1 struct {
		CommodityStrength gensupport.JSONFloat64 `json:"commodityStrength"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CommodityStrength = float64(s1.CommodityStrength)
	return nil
}

// NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride: Set only
// when hyper_reliable is true. These are gcids and scores for
// hyper-reliable categories in ariane/182060. These are overridden for
// a few hyper-reliable categories, and may not be present everywhere.
type NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride struct {
	GcidScore float64 `json:"gcidScore,omitempty"`

	HyperReliableGcid string `json:"hyperReliableGcid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GcidScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GcidScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride
	var s1 struct {
		GcidScore gensupport.JSONFloat64 `json:"gcidScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GcidScore = float64(s1.GcidScore)
	return nil
}

// NlpSemanticParsingLocalImplicitLocalCategory: Flags indiciating the
// specific implicit intent, e.g. dining, travel, etc. Next ID = 13
type NlpSemanticParsingLocalImplicitLocalCategory struct {
	Airport bool `json:"airport,omitempty"`

	Bank bool `json:"bank,omitempty"`

	ChargingStation bool `json:"chargingStation,omitempty"`

	GasStation bool `json:"gasStation,omitempty"`

	Gym bool `json:"gym,omitempty"`

	HairSalon bool `json:"hairSalon,omitempty"`

	Hospital bool `json:"hospital,omitempty"`

	Hotel bool `json:"hotel,omitempty"`

	Laundromat bool `json:"laundromat,omitempty"`

	MovieTheater bool `json:"movieTheater,omitempty"`

	PostOffice bool `json:"postOffice,omitempty"`

	Spa bool `json:"spa,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Airport") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Airport") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalImplicitLocalCategory) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalImplicitLocalCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalJoiner struct {
	NumBytes int64 `json:"numBytes,omitempty"`

	NumBytesForConversion int64 `json:"numBytesForConversion,omitempty"`

	// StartByte: The raw input span corresponding to this joiner.
	StartByte int64 `json:"startByte,omitempty"`

	// StartByteForConversion: Byte data added for conversion between this
	// proto and IntentQuery in LooseParser. Must not be used for downstream
	// triggering.
	StartByteForConversion int64 `json:"startByteForConversion,omitempty"`

	// Text: The original joiner string from the tokenized query.
	// Particularly important if the type is OTHER.
	Text string `json:"text,omitempty"`

	// Possible values:
	//   "IN" - Includes "on", as in "Subway on Main St.".
	//   "NEAR" - E.g., "A Starbucks near my location"
	//   "NEAREST" - E.g., "Starbucks closest to my home"
	//   "BETWEEN" - Includes "on the way from X to Y".
	//   "JUNCTION" - E.g., "El Camino and Shoreline"
	//   "UNION" - E.g., "Palo Alto or Menlo Park"
	//   "OTHER_JOINER" - Catch-all for strange relations
	//   "EMPTY_JOINER" - Sometimes there is an implicit joiner that we
	// would like to model. E.g., in [main and 16th Starbucks] we want to
	// have the compound location "main and 16th" so there is an empty
	// joiner between "16th" and "Starbucks". The intention is that when
	// using EMPTY_JOINER at least one of location_1 and location_2 should
	// not be a basic location. In other words, we do not want to create a
	// compound location that spans a sequence of location elements without
	// joiners.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NumBytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumBytes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalJoiner) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalJoiner
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalLocalResultId: This message holds all info the
// local assistant team will need to lookup a LocalResult in search.
type NlpSemanticParsingLocalLocalResultId struct {
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// GeocodingAddress: The full address of the result. This should be a
	// verbose address string that geocodes reliably.
	GeocodingAddress string `json:"geocodingAddress,omitempty"`

	// KgMid: The knowledge graph reference of the result.
	KgMid string `json:"kgMid,omitempty"`

	// Position: The position of the result.
	Position *GeostorePointProto `json:"position,omitempty"`

	// Rect: The position of the result, if it can't be expressed as a
	// pointproto.
	Rect *GeostoreRectProto `json:"rect,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalLocalResultId) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalLocalResultId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalLocation: There are a few types of locations:
// - Basic locations are sequences of location elements which can be
// either actual locations or modifiers. E.g., "Mountain View CA 94040"
// may be the sequence "Mountain View" (an actual location), "CA" (an
// actual location, and "94040" (a numeric modifier). - Compound
// locations: these are two locations combined by a joiner. E.g.,
// "Target in Mountain View CA 94040" has the joiner "in" and two basic
// locations ("Target", and "Mountain View CA 94040"). Note that the
// definition is recursive, e.g., "Parking garage near Target in
// Mountain View". - Vicinity location: indicates an area around a
// certain location. The area can be defined by time or space. E.g.,
// "within 1 hour of Palo Alto", "10 blocks from Union Square", "a few
// miles from here". Next ID: 14 LINT.IfChange()
type NlpSemanticParsingLocalLocation struct {
	// BasicLocation: Exactly one of the location types should be populated.
	BasicLocation *NlpSemanticParsingLocalBasicLocation `json:"basicLocation,omitempty"`

	CompoundLocation *NlpSemanticParsingLocalCompoundLocation `json:"compoundLocation,omitempty"`

	// ContactLocation: DEPRECATED. Instead, use
	// LocationElement.contact_location.
	ContactLocation *NlpSemanticParsingLocalContactLocation `json:"contactLocation,omitempty"`

	// IsMerged: True if the location is merged, for example by
	// CombineLocationsFn.
	IsMerged bool `json:"isMerged,omitempty"`

	// LocationConstraint: The constraint includes various constraints on
	// the location such as amenities, price range, ratings, or attributes
	// such as new, cheap, etc. These constraints are a part of the location
	// but are not modeled as location elements and are not included in the
	// location text. The (debatable) motivation is that they do not stand
	// on their own and are not an intrinsic part of the location. Note on
	// texts and spans. For a location such as "kid friendly hotels with an
	// indoor pool" we expect to get a basic location with a single location
	// element and two constraints: - For the location element: - Both text
	// and span match "hotels" - For the first constraint: - Both text and
	// span match "kid friendly" - For the second constraint: - Both text
	// and span match "indoor pool" - For the full location: - text:
	// "hotels" - span covers "kid friendly hotels with an indoor pool"
	LocationConstraint []*NlpSemanticParsingLocalLocationConstraint `json:"locationConstraint,omitempty"`

	NumBytes int64 `json:"numBytes,omitempty"`

	// ResolvedLocalResult: A LocalResult corresponding to the location the
	// user specified, populated by local dialog (generally following a
	// search). This field will only be set if the location is unambiguous,
	// possibly following a series of disambiguation turns of dialog.
	ResolvedLocalResult *QualityDialogManagerLocalResult `json:"resolvedLocalResult,omitempty"`

	// StartByte: The span, in the raw input, which corresponds to this
	// location, expressed as a byte offset and byte size. This allows the
	// extraction of the location string as it appears in the raw text.
	StartByte int64 `json:"startByte,omitempty"`

	// Text: A string representation of the location. Depending on the
	// annotators and the location itself the string may represent the raw
	// query, the pre-processed query, or something else. As a non-trivial
	// example, for [target address mountain view] we will generate the text
	// "target mountain view" without "address". We make a best-effort to
	// come up with a good string, but make no formal guarantees. You should
	// never present this text directly to outside users.
	Text string `json:"text,omitempty"`

	// UserSpecifiedLocation: A location info including featureId and
	// lat/lng that uniquely identifies the location the user specified.
	UserSpecifiedLocation *KnowledgeVerticalsWeatherProtoUserSpecifiedLocation `json:"userSpecifiedLocation,omitempty"`

	VicinityLocation *NlpSemanticParsingLocalVicinityLocation `json:"vicinityLocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BasicLocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BasicLocation") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalLocation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalLocationConstraint: All the possible location
// constraints. This message is associated with a location and can be
// nested accordingly. E.g., for a compound location the constraint may
// be associated with the entire location or with either of the two
// internal locations (loc_1 and loc_2). There is an implicit AND
// relation between the different constraints. Next ID: 24.
type NlpSemanticParsingLocalLocationConstraint struct {
	// Amenities: LINT.IfChange
	Amenities *NlpSemanticParsingLocalAmenities `json:"amenities,omitempty"`

	ChainMember *NlpSemanticParsingLocalChainMemberConstraint `json:"chainMember,omitempty"`

	Cuisine *NlpSemanticParsingLocalCuisineConstraint `json:"cuisine,omitempty"`

	EvcsSpeedConstraint *NlpSemanticParsingLocalEvChargingStationSpeedConstraint `json:"evcsSpeedConstraint,omitempty"`

	// GcidConstraint: Used for GCID filter. Unlike other grammar, for now
	// this is populated in Superroot (currently based on QBLD
	// classification, and an allowlist of GCID).
	GcidConstraint *NlpSemanticParsingLocalGcidConstraint `json:"gcidConstraint,omitempty"`

	// HealthInsurance: Used for health insurance filter populator.
	HealthInsurance *NlpSemanticParsingLocalHealthInsuranceConstraint `json:"healthInsurance,omitempty"`

	// HyperReliableData: Some constraints are also hyper-reliable, such as
	// [brunch] and [coffee].
	HyperReliableData *NlpSemanticParsingLocalHyperReliableData `json:"hyperReliableData,omitempty"`

	MenuItem *NlpSemanticParsingLocalMenuItem `json:"menuItem,omitempty"`

	New bool `json:"new,omitempty"`

	NumBytes int64 `json:"numBytes,omitempty"`

	Open24Hours bool `json:"open24Hours,omitempty"`

	Price *NlpSemanticParsingLocalPriceConstraint `json:"price,omitempty"`

	Quality *NlpSemanticParsingLocalQualityConstraint `json:"quality,omitempty"`

	Rooms *NlpSemanticParsingLocalRoomConstraint `json:"rooms,omitempty"`

	ScalableAttribute *NlpSemanticParsingLocalScalableAttribute `json:"scalableAttribute,omitempty"`

	Service *NlpSemanticParsingLocalServiceConstraint `json:"service,omitempty"`

	// StartByte: The span, in the raw input, which corresponds to this
	// constraint, expressed as a byte offset and byte size.
	StartByte int64 `json:"startByte,omitempty"`

	Text string `json:"text,omitempty"`

	// UngroundedConstraint: Experimental, may change.
	UngroundedConstraint bool `json:"ungroundedConstraint,omitempty"`

	// Unspecified: Used to remove all constraints, e.g. [forget all the
	// filters]
	Unspecified bool `json:"unspecified,omitempty"`

	// VaccineType: Used for vaccine refinement:
	// go/covid-vaccine-refinement.
	//
	// Possible values:
	//   "UNKNOWN_VACCINE_TYPE"
	//   "COVAXIN"
	//   "JOHNSON_AND_JOHNSON"
	//   "MODERNA"
	//   "OXFORD_ASTRAZENECA"
	//   "PFIZER"
	//   "SPUTNIK"
	//   "ZYCOV_D"
	//   "COVISHIELD"
	//   "CORBEVAX"
	//   "PFIZER_BOOSTER"
	//   "MODERNA_BOOSTER"
	VaccineType string `json:"vaccineType,omitempty"`

	VisitHistory *NlpSemanticParsingLocalVisitHistoryConstraint `json:"visitHistory,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Amenities") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Amenities") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalLocationConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalLocationConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalLocationElement: Next ID: 26 LINT.IfChange
type NlpSemanticParsingLocalLocationElement struct {
	// AliasIcon: For elements with a NICKNAME alias location, this field
	// will hold all matching alias icons, which are used in search to
	// resolve the location.
	AliasIcon []*PersonalizationMapsAliasIcon `json:"aliasIcon,omitempty"`

	// AliasLocation: The following fields (alias_location, qref_location,
	// and saft_location) should have at most one non-empty value between
	// them.
	//
	// Possible values:
	//   "UNDEFINED"
	//   "HERE"
	//   "HOME"
	//   "WORK"
	//   "NICKNAME"
	//   "NEXT_DESTINATION"
	AliasLocation string `json:"aliasLocation,omitempty"`

	// BusinessType: Set only when type is BUSINESS_NAME or
	// BUSINESS_CATEGORY.
	BusinessType *NlpSemanticParsingLocalBusinessType `json:"businessType,omitempty"`

	ContactLocation *NlpSemanticParsingLocalContactLocation `json:"contactLocation,omitempty"`

	// DialogReferents: This will hold semantics from the dialog_referents
	// subgrammar with offsets and indices relating to a list of results
	// shown to the user. This field is repeated while in the future we
	// could support multiple item list selection. i.e. [the starbucks]
	// where multiple entries in the results will be indicated here
	DialogReferents []*NlpSemanticParsingModelsDialogReferentsDialogReferents `json:"dialogReferents,omitempty"`

	// DirectionalModifier: Set only when type is DIRECTIONAL_MODIFIER.
	//
	// Possible values:
	//   "NORTH"
	//   "SOUTH"
	//   "EAST"
	//   "WEST"
	//   "NORTHEAST"
	//   "SOUTHEAST"
	//   "NORTHWEST"
	//   "SOUTHWEST"
	//   "DOWNTOWN"
	//   "INBOUND"
	//   "UPTOWN"
	//   "OUTBOUND"
	//   "CLOCKWISE"
	//   "COUNTERCLOCKWISE"
	DirectionalModifier string `json:"directionalModifier,omitempty"`

	// GenericLocation: DEPRECATED. See basic_location.element.type ==
	// LOCATION_REFERENT to determine this instead. Populated by a type
	// VISITED local action, this field is used to indicate a location
	// element is a general-case $PT_visited_location string.
	GenericLocation bool `json:"genericLocation,omitempty"`

	// HotelType: Set only when business_type is hotel.
	HotelType *NlpSemanticParsingLocalHotelType `json:"hotelType,omitempty"`

	HyperReliableData *NlpSemanticParsingLocalHyperReliableData `json:"hyperReliableData,omitempty"`

	ImplicitLocalCategory *NlpSemanticParsingLocalImplicitLocalCategory `json:"implicitLocalCategory,omitempty"`

	// LocalResultId: A field used to store the ID of a specific location
	// entity, especially one not extracted via QRef. For example, - a
	// location selected by the users via a dialog follow-up query like [the
	// second one]. Will only be populated in the LocalSemanticsServlet, not
	// in the grammar. - a location resolved based on a full search, e.g.,
	// following the geocoding step for a directions query. This field is
	// also used by NoramlizeLocationForFingerprinting as the canonical
	// place to store FeatureIds.
	LocalResultId *NlpSemanticParsingLocalLocalResultId `json:"localResultId,omitempty"`

	NumBytes int64 `json:"numBytes,omitempty"`

	// Number: Represents zip codes, street numbers, etc. that were detected
	// directly by the grammar (and not, e.g., by QRef). DEPRECATED. We ran
	// into problems with zip codes having leading zeroes. Now we store
	// numbers only in the text field.
	Number int64 `json:"number,omitempty"`

	// PersonalReferenceLocation: A collection of QRefAnnotations
	// repesenting Reference and Resolution data for Personal References.
	// See go/copley-local and go/copley-annotator.
	PersonalReferenceLocation *NlpSemanticParsingPersonalReferenceAnnotation `json:"personalReferenceLocation,omitempty"`

	QrefLocation *NlpSemanticParsingQRefAnnotation `json:"qrefLocation,omitempty"`

	SaftLocation *NlpSemanticParsingSaftMentionAnnotation `json:"saftLocation,omitempty"`

	// Possible values:
	//   "GRAMMAR" - A location element defined in the grammar itself.
	//   "QREF" - A location element from the QRef annotator.
	//   "SAFT" - A location element from the Saft annotator.
	//   "GENIE" - A location element from the Genie annotator.
	//   "DIALOG" - A location element from the DialogField annotator.
	//   "NIMBLE" - A location element from the Nimble annotator.
	//   "ATTENTIONAL_ENTITY" - A location element from attentional
	// entities.
	//   "LES" - Important note: LES is being DEPRECATED as of May 29th
	// 2014. It should not be used, and will not be returned from production
	// after June 15th. A location element from the LES annotator.
	//   "UNGROUNDED" - A location element produced by the
	// ungrounded_location model. This is a machine learned model which
	// produces text spans corresponding to locations; unlike QRef or SAFT,
	// it does not give any further semantics (such as mid, collection,
	// type) beyond the text span. See
	// nlp/semantic_parsing/models/ungrounded_location for details.
	Source string `json:"source,omitempty"`

	// StartByte: The byte span, in the raw query, which corresponds to this
	// location element.
	StartByte int64 `json:"startByte,omitempty"`

	// Text: A string representation of the location element. Typical, this
	// field will be populated by the MakeLocationElementFn semantic
	// function with the substring of the raw_query defined by start_byte
	// and num_bytes. However, the field can also be populated explicitly in
	// the grammar, in which case MakeLocationElementFn leaves it alone.
	Text string `json:"text,omitempty"`

	// TransitLineNumber: Train number associated with
	// /collection/geo/transit_line. Populated when user requests specific
	// instance of a transit line. For example, long distance trains in
	// India have two numbers for each train, one for up direction and other
	// for down. And user use these numbers in queries along with name to
	// specify the specific trip of the train. More details in
	// go/number-transit-line-queries.
	TransitLineNumber string `json:"transitLineNumber,omitempty"`

	// Possible values:
	//   "PLACE_NAME" - E.g., "Manhattan", "Ohio"
	//   "BUSINESS_NAME" - E.g., "Target", "NYU", "Gary Danko"
	//   "BUSINESS_CATEGORY" - E.g., "gas station", "Chinese restaurant"
	//   "ALIAS" - Special locations recognized in the grammar itself:
	// "here", "home", "work".
	//   "GEO_MODIFIER" - Geographical modifier such as "west",
	// "southeastern", "downtown", "metro". E.g., for "west Palo Alto" we
	// create a location element "west" (followed by another location
	// element "Palo Alto").
	//   "DIRECTIONAL_MODIFIER" - Route directions such as "north",
	// "northbound". E.g., for "north I-96" we create a location element
	// "north" (plus another location element "I-96").
	//   "NUMBER_MODIFIER" - Numbers that follow or precede a location.
	// E.g., "90210" from "beverly hills 90210", "10" from "10 downing
	// street".
	//   "DETERMINER" - Determiners like "a", "an", and "the". E.g., "a
	// mcdonald's", "the grand canyon".
	//   "ZIP_CODE" - An explicit zip code, e.g., "zip code 77079"
	//   "PERSONAL_MODIFIER" - Modifier that often goes with a business
	// category or an alias, e.g., "our hotel", "my barber", "my current
	// location".
	//   "TEXT" - Used only for locations generated from $Text.
	//   "PUNCTUATION"
	//   "STREET_NAME" - Note(12/08/2014): STREET_NAME used to be covered by
	// PLACE_NAME. We are planning to start generating this type in January
	// 2015. E.g., "Oak St.", "17th"
	//   "HIGHWAY_NAME" - HIGHWAY_NAME used to be covered partially by
	// STREET_NAME. As of January '17 we want to separate locations like
	// "Highway 70" or "70" for traffic intent.
	//   "OLC"
	//   "CONTACT" - Indicates a contact's location. It could be either a
	// contact name (e.g. "Larry Page") or a specific location for contact
	// (e.g. "Larry's home").
	//   "CONTACT_AND_ALIAS" - A location element that is both a contact and
	// an alias location.
	//   "PERSONAL_PLACE_NAME" - Personal places (e.g., "our hotel", "my
	// parking spot") which are annotated with a personal collection by
	// QRef, indicating they refer to a specific location from a user's
	// personal data. Part of the go/copley effort.
	//   "PERSONAL_REFERENCE" - References to personal places (e.g., "our
	// hotel", "my parking spot") which are annotated with a personal
	// collection by QRef. They may or may not contain resolutions to/
	// locations from a user's personal data. Part of the go/copley effort.
	//   "UNGROUNDED_LOCATION" - Location that comes from the
	// ungrounded_location model. See comment for the UNGROUNDED
	// LocationElementSource above.
	//   "LATITUDE_LONGITUDE" - Location that comes from a latitude,
	// longitude pair, e.g. (40.7415 N, 74.0034 W)
	//   "DIALOG_REFERENT" - Phrase that refers generally to results or
	// items. These element types are intended to be more generic than those
	// below and will be semantically derived from a simple set of rules
	// involving mostly preterminals. Examples include, but are not limited
	// to: "one," "item," "result."
	//   "LOCATION_REFERENT" - Phrase that refers to generic places. These
	// element types are intended to be more generic than those above and
	// will be semantically derived from a simple set of rules involving
	// mostly preterminals. Examples include, but are not limited to:
	// "places," "spots," "locations."
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AliasIcon") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AliasIcon") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalLocationElement) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalLocationElement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalMenuItem: Specifies intent that corresponds to
// a menu item which is used as a location constraint, e.g. [restaurants
// that serve thai curry] or as a standalone categorical element, e.g.
// [thai curry].
type NlpSemanticParsingLocalMenuItem struct {
	// MenuItemId: This ID corresponds to the name of the menu item in the
	// query. For example [restaurants that serve thai curry] has
	// menu_item_id = "thai curry".
	MenuItemId string `json:"menuItemId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MenuItemId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MenuItemId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalMenuItem) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalMenuItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalPriceConstraint struct {
	Cheap bool `json:"cheap,omitempty"`

	// CurrencyCode: The currency codes are expected to be string from the
	// list in i18n/identifiers/currencycode.*
	CurrencyCode string `json:"currencyCode,omitempty"`

	Expensive bool `json:"expensive,omitempty"`

	MaxPrice float64 `json:"maxPrice,omitempty"`

	MinPrice float64 `json:"minPrice,omitempty"`

	ModeratelyPriced bool `json:"moderatelyPriced,omitempty"`

	// Unspecified: The user mentioned something about price, but didn't
	// mention a specific constraint. This is used to indicate an intent to
	// remove all price constraints, in queries like [forget the price].
	Unspecified bool `json:"unspecified,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cheap") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cheap") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalPriceConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalPriceConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingLocalPriceConstraint) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingLocalPriceConstraint
	var s1 struct {
		MaxPrice gensupport.JSONFloat64 `json:"maxPrice"`
		MinPrice gensupport.JSONFloat64 `json:"minPrice"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxPrice = float64(s1.MaxPrice)
	s.MinPrice = float64(s1.MinPrice)
	return nil
}

// NlpSemanticParsingLocalQualityConstraint: Quality constraints about
// the establishment. In the future we can add to this message Zagat
// ratings, user reviews, etc. Next ID: 6.
type NlpSemanticParsingLocalQualityConstraint struct {
	Best bool `json:"best,omitempty"`

	HighlyRated bool `json:"highlyRated,omitempty"`

	// Possible values:
	//   "HOTEL_CLASS"
	//   "USER_RATING"
	StarType string `json:"starType,omitempty"`

	Stars *NlpSemanticParsingLocalStarRatings `json:"stars,omitempty"`

	// Unspecified: The user mentioned something about quality, but didn't
	// mention a specific constraint. This is used to indicate an intent to
	// remove all quality constraints, in queries like [forget the rating].
	Unspecified bool `json:"unspecified,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Best") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Best") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalQualityConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalQualityConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalRoomConstraint: Constraints for the occupancy
// of a hotel or vacation rental.
type NlpSemanticParsingLocalRoomConstraint struct {
	// MinNumBathrooms: It is possible to have fractional bathrooms.
	MinNumBathrooms float64 `json:"minNumBathrooms,omitempty"`

	MinNumBedrooms int64 `json:"minNumBedrooms,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MinNumBathrooms") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MinNumBathrooms") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalRoomConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalRoomConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingLocalRoomConstraint) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingLocalRoomConstraint
	var s1 struct {
		MinNumBathrooms gensupport.JSONFloat64 `json:"minNumBathrooms"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MinNumBathrooms = float64(s1.MinNumBathrooms)
	return nil
}

// NlpSemanticParsingLocalScalableAttribute: Specifies intent that
// corresponds to a scalable attribute. This may be used as a location
// constraint, e.g. [restaurants with outdoor seating] or as a
// standalone categorical element, e.g. [happy hour] or [happy hour ny].
// See go/scalable-attributes for details about scalable attributes.
// NOTE(oksana): LocalCategoryReliable grammar over-rides a few scalable
// attribute queries to include hyper_reliable location element. If you
// change this, please make sure that LocalCategoryReliable grammar
// reflects this too. LINT.IfChange This ID corresponds to the id field
// in //geostore/attributes/proto/config.proto:AttributeConfigProto This
// field holds the human readable ID for the KG topic that represents
// the attribute. Example:
// "/geo/type/establishment_poi/serves_breakfast"
type NlpSemanticParsingLocalScalableAttribute struct {
	AttributeId string `json:"attributeId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AttributeId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributeId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalScalableAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalScalableAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalServiceConstraint struct {
	// Possible values:
	//   "SERVICE_TYPE_UNSPECIFIED"
	//   "ACCESS"
	//   "BRUNCH"
	//   "DELIVERY"
	//   "DRIVE_THROUGH"
	//   "KITCHEN"
	//   "HAPPY_HOUR"
	//   "PICKUP"
	//   "SENIOR_ONLY"
	//   "TAKEOUT"
	ServiceType string `json:"serviceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ServiceType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ServiceType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalServiceConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalServiceConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalStarRatings: Star ratings constraints, mostly
// relevant for hotels. There is an implicit OR relation between these.
// E.g., for "three star or four star hotel" both three and four would
// be set to true. Next Available ID: 13.
type NlpSemanticParsingLocalStarRatings struct {
	Five bool `json:"five,omitempty"`

	Four bool `json:"four,omitempty"`

	FourAndAHalf bool `json:"fourAndAHalf,omitempty"`

	One bool `json:"one,omitempty"`

	OneAndAHalf bool `json:"oneAndAHalf,omitempty"`

	OrFewer bool `json:"orFewer,omitempty"`

	// OrMore: If this field is set, exactly one of the star classes above
	// should be set, and the interpretation should be that at least that
	// many stars should be present.
	OrMore bool `json:"orMore,omitempty"`

	Three bool `json:"three,omitempty"`

	ThreeAndAHalf bool `json:"threeAndAHalf,omitempty"`

	Two bool `json:"two,omitempty"`

	TwoAndAHalf bool `json:"twoAndAHalf,omitempty"`

	Unspecified bool `json:"unspecified,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Five") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Five") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalStarRatings) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalStarRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingLocalVicinityLocation struct {
	// Base: If the base is missing then clients should assume that it
	// implicitly means "here". E.g., "within five miles" really means
	// "within five miles from here"
	Base *NlpSemanticParsingLocalLocation `json:"base,omitempty"`

	// Connector: The text between the extent and the base, e.g., for "50
	// miles from here" the connector is "from".
	Connector string `json:"connector,omitempty"`

	Extent *NlpSemanticParsingLocalExtent `json:"extent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Base") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Base") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalVicinityLocation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalVicinityLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingLocalVisitHistoryConstraint: Constraint for
// visited, as in if a location has been visited before.
type NlpSemanticParsingLocalVisitHistoryConstraint struct {
	// Possible values:
	//   "UNKNOWN_VISITED_TYPE"
	//   "VISITED"
	//   "NOT_VISITED"
	VisitedType string `json:"visitedType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VisitedType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VisitedType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingLocalVisitHistoryConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingLocalVisitHistoryConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsCommunicationPhoneType: The type of contact
// (mobile, home, work, etc). NOTE: Unfortunately the name of this
// message is a misnomer. Contact type would be a better name.
type NlpSemanticParsingModelsCommunicationPhoneType struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Whether the annotation is from $Text.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// NormalizedText: Normalized (canonicalized) text, e.g. "mobile".
	NormalizedText string `json:"normalizedText,omitempty"`

	// OriginalText: Original text in query, e.g. "cell".
	OriginalText string `json:"originalText,omitempty"`

	// RawText: DEPRECATED. Used original_text instead.
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsCommunicationPhoneType) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsCommunicationPhoneType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsCommunicationRecipient: It can be a contact
// (person name), a business name, an email address or a phone number.
// NOTE: Unfortunately the name of this message is not generic enough.
// Contact would be a better name.
type NlpSemanticParsingModelsCommunicationRecipient struct {
	CalendarEvent *AssistantApiCoreTypesCalendarEvent `json:"calendarEvent,omitempty"`

	CalendarEventWrapper *AssistantApiCoreTypesCalendarEventWrapper `json:"calendarEventWrapper,omitempty"`

	// Contact: Contact details (e.g. gaia_id, phone, etc). Replaces
	// 'focus_name' above.
	Contact *NlpSemanticParsingModelsPersonPerson `json:"contact,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// NameAnnotationSource: Deprecated in favor of
	// recipient.contact.name_annotation_source.
	//
	// Possible values:
	//   "UNKNOWN_NAME_ANNOTATOR"
	//   "FOCUS_NAME"
	//   "DEVICE_CONTACT"
	//   "SAFT_PERSON"
	//   "NAME_DETECTION_PERSON"
	//   "NAME_PERSON"
	//   "MANUAL_RULES"
	//   "SAFT_POS" - SAFT part-of-speech, like a noun (call skipper) or an
	// adjective (call beautiful).
	//   "TEXT"
	NameAnnotationSource string `json:"nameAnnotationSource,omitempty"`

	// Possible values:
	//   "UNKNOWN_NUMBER_ANNOTATOR"
	//   "PHONE_NUMBER_ANNOTATOR"
	//   "NUMBER_ANNOTATOR"
	//   "MANUAL"
	NumberAnnotationSource string `json:"numberAnnotationSource,omitempty"`

	// RawText: NOTE: for CONTACT recipient, this is *NOT* the real raw text
	// of the recipient span of historical reasons. Major differences
	// includes: - stripping possessive suffix, e.g. "John's" -> "John" -
	// stripping prefix/suffix/title, e.g. "Mr. John" -> "John" - uninflect
	// name for languages like Russian, e.g. "Андрею" ->
	// "Андрей" Currently this is the same as .contact.name, and is
	// used as the string shown to the user on clientside UI. If you're
	// looking for real raw text, use .contact.raw_text
	RawText string `json:"rawText,omitempty"`

	// Possible values:
	//   "CONTACT"
	//   "BUSINESS"
	//   "EMAIL_ADDRESS"
	//   "PHONE_NUMBER"
	//   "AMBIGUOUS"
	//   "CALENDAR_EVENT"
	//   "CALENDAR_EVENT_WRAPPER"
	RecipientType string `json:"recipientType,omitempty"`

	// Relationship: A reference to a person by relationship name. eg. my
	// father.
	Relationship *NlpSemanticParsingModelsCommunicationRelationshipArgument `json:"relationship,omitempty"`

	SensitiveNumBytes int64 `json:"sensitiveNumBytes,omitempty"`

	// SensitiveStartByte: The beginning and end of the recipient name that
	// should be removed before logging.
	SensitiveStartByte int64 `json:"sensitiveStartByte,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalendarEvent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalendarEvent") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsCommunicationRecipient) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsCommunicationRecipient
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsCommunicationRelationshipArgument: A
// relationship contact.
type NlpSemanticParsingModelsCommunicationRelationshipArgument struct {
	// Alias: The alias of the relationship in the query, e.g. "mom".
	Alias string `json:"alias,omitempty"`

	// Canonical: The canonical format of the relationship, e.g. "Mother".
	Canonical string `json:"canonical,omitempty"`

	// CanonicalLexicalMid: Mid for an entity that has lexical data (a
	// LexiconEntry). See
	// https://g3doc.corp.google.com/nlp/generation/g3doc/lexical_data.md
	// for for more information about lexical data. This is the canonical
	// mid for this entity (eg. it would be /m/0lbxz for "mother" in EN even
	// if user referred to "mom").
	CanonicalLexicalMid string `json:"canonicalLexicalMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Alias") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Alias") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsCommunicationRelationshipArgument) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsCommunicationRelationshipArgument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsDevice: The device to perform an action. Both
// device_type and device_name are optional and they can coexist: [on my
// phone]: device_type = PHONE [on my nexus 4]: device_name = "nexus 4"
// [on my nexus phone]: device_type = PHONE, device_name = "nexus"
type NlpSemanticParsingModelsDevice struct {
	// DeviceName: The name of the device (Nexus 5, Nexus 10, etc).
	DeviceName *NlpSemanticParsingModelsDeviceName `json:"deviceName,omitempty"`

	// DeviceType: The type of the device (phone, tablet, watch, etc).
	//
	// Possible values:
	//   "UNKNOWN"
	//   "PHONE"
	//   "TABLET"
	//   "WATCH"
	DeviceType string `json:"deviceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsDevice) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsDevice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsDeviceName: The name of the device (Nexus 5,
// Nexus 10, etc).
type NlpSemanticParsingModelsDeviceName struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsDeviceName) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsDeviceName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsDialogReferentsDialogReferents: Will be used
// by dialog_referent subgrammar to emit types annotations from
// DialogReferentsAnnotator and $DialogReferentOrdinal rules.
type NlpSemanticParsingModelsDialogReferentsDialogReferents struct {
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Field: The field mentioned in the user's utterance, if any.
	Field *NlpSemanticParsingModelsDialogReferentsListSelection `json:"field,omitempty"`

	// Index: Used for a grammar mention of an index.
	Index int64 `json:"index,omitempty"`

	// Next: Represents a tied referent in a different field of the same
	// label
	Next *NlpSemanticParsingModelsDialogReferentsDialogReferents `json:"next,omitempty"`

	// Selection: The requested value(s) for selection from a list of
	// alternatives.
	Selection []*NlpSemanticParsingModelsDialogReferentsListSelection `json:"selection,omitempty"`

	// TaskMention: Set when the user's utterance refers to the (an) overall
	// task/goal of the dialog (e.g. "the meeting starts at 10 am" mentions
	// the goal, "meeting"). The field is repeated in case the user
	// ambiguously identifies a task (two tasks named 'meeting').
	TaskMention []*NlpSemanticParsingModelsDialogReferentsListSelection `json:"taskMention,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsDialogReferentsDialogReferents) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsDialogReferentsDialogReferents
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsDialogReferentsListSelection: Represents the
// user's selection from a list of alternatives.
type NlpSemanticParsingModelsDialogReferentsListSelection struct {
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Id: A unique identifier that is the canonical value for the chosen
	// list item. If we are selecting among fields, this is the field_id
	// specified in the corresponding DialogField.
	Id string `json:"id,omitempty"`

	// LooseOffsetRestriction: If true, semantic function should look at
	// watch actions in the following display entity if the first one is not
	// playable. This is useful for "Play it" on entity page.
	LooseOffsetRestriction bool `json:"looseOffsetRestriction,omitempty"`

	// Offset: The offset within the list, if know. If the list of values
	// wasn't known (e.g. from the discourse context) then the offset is a
	// zero-based mapping of the ordinal value of the selection ("first one"
	// maps to zero; "last one" to minus one).
	Offset int64 `json:"offset,omitempty"`

	// RawText: When the user selects a list value by name then this is the
	// matched text from the utterance. Note that, if the list of values is
	// known, then the aqua annotator should have mapped it to an offset.
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsDialogReferentsListSelection) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsDialogReferentsListSelection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaAlbumTitle: Example: "The White Album"
type NlpSemanticParsingModelsMediaAlbumTitle struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Favorite: If true, indicates the user wants their favorite album.
	// Like [play my favorite album my Eminem]
	Favorite bool `json:"favorite,omitempty"`

	// First: If true, indicates the user wants the first album. Like [play
	// adele's first album]
	First bool `json:"first,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	// Latest: If true, indicates the user wants the latest album. Like,
	// [play adele's latest album]
	Latest bool `json:"latest,omitempty"`

	// PlayMore: More from this album.
	PlayMore bool `json:"playMore,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "The White
	// Album."
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaAlbumTitle) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaAlbumTitle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaAudio: Represents a music recording
// (usually a song). Each populated field can be thought of as
// additional constraint about the song's identity. For instance, if no
// fields are set, then this represents "some song." If only the
// music_artist is set, then it represents "some song by the specified
// music_artist." Inspired (but not strictly adhered to)
// http://schema.org/MusicRecording Next ID: 22
type NlpSemanticParsingModelsMediaAudio struct {
	Album *NlpSemanticParsingModelsMediaAlbumTitle `json:"album,omitempty"`

	Artist *NlpSemanticParsingModelsMediaMusicArtist `json:"artist,omitempty"`

	// Book: Like an audio book. "Listen to (moby dick) audiobook"
	Book *NlpSemanticParsingModelsMediaBook `json:"book,omitempty"`

	// DateTime: A date time constraint for audio entity, for example, "jazz
	// station 1980".
	DateTime *NlpSemanticParsingDatetimeDateTime `json:"dateTime,omitempty"`

	// EpisodeConstraint: Constraining the query to some detail about the
	// episode. Example: "listen to episode (13) of this american life with
	// (mike birbiglia)" would have the 2 constraints in parens.
	EpisodeConstraint []*NlpSemanticParsingModelsMediaEpisodeConstraint `json:"episodeConstraint,omitempty"`

	// Game: Soundtrack or theme song (see score_type param that indicates
	// whether the user refers to a soundtrack or a theme song) of the game.
	// "Play soundtrack from (Deus Ex Human Revolution)".
	Game *NlpSemanticParsingModelsMediaGame `json:"game,omitempty"`

	GenericMusic *NlpSemanticParsingModelsMediaGenericMusic `json:"genericMusic,omitempty"`

	Genre *NlpSemanticParsingModelsMediaMusicGenre `json:"genre,omitempty"`

	// Movie: Soundtrack or theme song (see score_type param that indicates
	// whether the user refers to a soundtrack or a theme song) of the
	// movie. E.g. "Play (Let It Go) from (Disney's Frozen)"
	Movie *NlpSemanticParsingModelsMediaMovie `json:"movie,omitempty"`

	// NewsTopic: News topic. "Listen to news about (Ukraine)"
	NewsTopic *NlpSemanticParsingModelsMediaNewsTopic `json:"newsTopic,omitempty"`

	// NoExplicitAudio: True when the query does not contains an explict
	// audio name. E.g. When user says "play" or "listen to".
	NoExplicitAudio bool `json:"noExplicitAudio,omitempty"`

	Playlist *NlpSemanticParsingModelsMediaMusicPlaylist `json:"playlist,omitempty"`

	// Podcast: Podcast feeds. "Listen to (This American Life)"
	Podcast *NlpSemanticParsingModelsMediaPodcast `json:"podcast,omitempty"`

	Radio *NlpSemanticParsingModelsMediaRadio `json:"radio,omitempty"`

	// RadioNetwork: E.g. "play NPR radio", "Play BBC radio".
	RadioNetwork *NlpSemanticParsingModelsMediaRadioNetwork `json:"radioNetwork,omitempty"`

	// RawText: The query for backends to use in search. e.g. for an user
	// query of "play kids song video on tv" from assistant, this field
	// would be "kids song". Note: there is no guarantee this field is
	// populated; when it is not, backends should fall back to "raw_text"
	// fields in song, artist, album etc.
	RawText string `json:"rawText,omitempty"`

	// ScoreType: If any of movie, game or tv show fields is populated this
	// field indicates specific score type requested in the query. E.g. for
	// [play soundtrack from frozen] this field is SOUNDTRACK, for [play
	// frozen song] this field is THEME_SONG.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "SOUNDTRACK" - The query indicates that the user is asking for a
	// soundtrack (full album) from movie, game or tv show. E.g. [play
	// soundtrack from frozen].
	//   "THEME_SONG" - The query indicates that the user is asking for a
	// theme song from movie, game or tv show. E.g. [play godfather theme
	// song].
	ScoreType string `json:"scoreType,omitempty"`

	// SeasonConstraint: Constraining the query to some detail about the
	// season. Example: "listen to season 2 of serial"
	SeasonConstraint *NlpSemanticParsingModelsMediaSeasonConstraint `json:"seasonConstraint,omitempty"`

	Song *NlpSemanticParsingModelsMediaSong `json:"song,omitempty"`

	// Tag: Optional tags associated with how the media entity should be
	// played. For example, this can be set to SEED_RADIO to signify that
	// the user wants to play a radio station seeded by the entity.
	//
	// Possible values:
	//   "UNKNOWN_TAG"
	//   "SEED_RADIO" - Deeplink is for seed radio of the media content.
	//   "VIDEO_TAG" - Deeplink is for video version of the media content.
	// NOTE: this tag is meaningful only in the context of media that has
	// video video and other versions, e.g. a song can be played audio-only
	// or with video. This tag is not meaningful for video content, e.g.
	// movies, and thus should NOT be used for video-only media content.
	//   "TOP_TRACKS" - Deeplink is for top tracks for music artist.
	//   "RECORDED" - Deeplink is for recorded (DVR) content.
	//   "LIVE" - Deeplink is for live content.
	//   "FOLLOWED_BY_SEED_RADIO" - Deeplink is for music followed by radio
	// mix.
	Tag []string `json:"tag,omitempty"`

	// TvShow: Soundtrack or theme song (see score_type param that indicates
	// whether the user refers to a soundtrack or a theme song) of the tv
	// show. E.g. "Play soundtrack from (Friends)".
	TvShow *NlpSemanticParsingModelsMediaTVShow `json:"tvShow,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Album") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Album") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaAudio) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaAudio
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaAudiobookInfo: Metadata for an
// audiobook.
type NlpSemanticParsingModelsMediaAudiobookInfo struct {
	// AudiobookMid: The MID of the audiobook entity (/book/book_edition).
	AudiobookMid string `json:"audiobookMid,omitempty"`

	Authors []string `json:"authors,omitempty"`

	// BookMid: The MID of the book entity (/book/book) which this audiobook
	// is associated with.
	BookMid string `json:"bookMid,omitempty"`

	Narrators []string `json:"narrators,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudiobookMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudiobookMid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaAudiobookInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaAudiobookInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaBook: Example: "East of Eden"
type NlpSemanticParsingModelsMediaBook struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// Latest: If true, indicates the user wants the latest book. Like,
	// [play Dan Brown's latest book]
	Latest bool `json:"latest,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "East of Eden"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaBook) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaBook
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaCastDeviceAnnotation: Media device.
// Like, Chromecast, TV or Chirp. When emitted from the cast_device
// domain, you should expect it to be one of 3 different forms: 1)
// Personal Device: The annotation comes from a device we found in the
// user's home. device_id and name should be set, cast_device_type is
// set if device type is mentioned in query. e.g. "Dima's Pineapple
// Chirp" device_id: FOOBAR name: "Dima's Pineapple" cast_device_type:
// CHIRP 2) Common Device Name: The annotation comes from a model of the
// common names of user's device. name and cast_device_type should be
// set but device_id will not be. cast_device_type can be UNKNOWN. e.g.
// "John's Living Room" name: "John's Living Room" cast_device_type:
// UNKNOWN 3) Device Type: The annotation comes from a model of common
// cast device types. Only cast_device_type will be set. e.g. "TV" or
// "chromecast" cast_device_type: CHROMECAST Next ID: 9
type NlpSemanticParsingModelsMediaCastDeviceAnnotation struct {
	// Possible values:
	//   "COMMON_DEVICE_NAME" - Device comes from common's name of user's
	// device.
	//   "PERSONAL_DEVICE" - Device comes from user's data.
	//   "DEVICE_TYPE" - Device comes from device types.
	CastDeviceSource string `json:"castDeviceSource,omitempty"`

	// CastDeviceType: This field is populated when the user says [play X on
	// $cast_device] and we know the type of $cast_device but cannot
	// identify the exact device.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "CHROMECAST" - E.g., chromecast.
	//   "AUDIOCAST" - E.g., audiocast.
	//   "CHIRP" - E.g., chirp, Google Home.
	//   "TV" - E.g., TV.
	//   "SPEAKER" - E.g., speaker.
	//   "CAR" - E.g., car. /////////////////////////////// NOTE: DO NOT USE
	// THIS FIELD // ///////////////////////////////
	//   "ORIGINATING_DEVICE" - E.g., "here", "this device" or "locally"
	//   "SMART_DISPLAY" - E.g., Google Home Hub, Smart Display.
	CastDeviceType string `json:"castDeviceType,omitempty"`

	// CreationTimestampMs: The timestamp that the device is linked with the
	// user in milliseconds. This is inherited from the corresponding
	// assistant DeviceSettings as is.
	CreationTimestampMs int64 `json:"creationTimestampMs,omitempty,string"`

	// DeviceId: DEPRECATED: Please use device_identifier instead.
	DeviceId string `json:"deviceId,omitempty"`

	// DeviceIdentifier: The identification of the device. This field is
	// populated when the user says [play X on $device_name] and
	// $device_name matches one of the devices linked to user's account. }
	// oneof Media Device
	DeviceIdentifier *AssistantApiCoreTypesDeviceId `json:"deviceIdentifier,omitempty"`

	Name string `json:"name,omitempty"`

	// Quantification: This field is populated when the user metioned
	// quantification in the query. E.g., "2" or "all".
	Quantification *NlpSemanticParsingModelsMediaQuantification `json:"quantification,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CastDeviceSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CastDeviceSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaCastDeviceAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaCastDeviceAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaCost: Represents a localized price. Next
// ID: 3
type NlpSemanticParsingModelsMediaCost struct {
	// CurrencyCode: Contains the standard code for the given type of
	// currency. The value must represent a valid
	// i18n_identifiers::CurrencyCode.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// Price: Contains the price in a particular currency.
	Price float64 `json:"price,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CurrencyCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaCost) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaCost
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsMediaCost) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsMediaCost
	var s1 struct {
		Price gensupport.JSONFloat64 `json:"price"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Price = float64(s1.Price)
	return nil
}

// NlpSemanticParsingModelsMediaDeeplinkInfo: Provider deeplink and
// associated metadata, in particular restrictions on platform and
// user's subscription. Next ID: 18
type NlpSemanticParsingModelsMediaDeeplinkInfo struct {
	// ActionType: The type of the deeplink. Sometimes the deeplink is not
	// only used for playing media, but also used for other actions. For
	// example, the deeplink could be for playing a movie trailer from
	// YouTube or recording a movie from YouTube TV.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "PLAY" - The deeplink is used to play a media. This should be the
	// default in most cases.
	//   "PLAY_TRAILER" - The deeplink is used to play a trailer.
	//   "RECORD" - The deeplink is used to record a media.
	ActionType string `json:"actionType,omitempty"`

	// BlacklistedCountry: The upper-case, III country code, e.g., "US", in
	// which the deeplink cannot play. For possible values, see:
	// google3/i18n/identifiers/regioncode.h
	// google3/java/com/google/i18n/identifiers/RegionCode.java For details
	// on converting to and from ISO country codes, see
	// http://iii-howto#GettingCanonRegionCodes.
	BlacklistedCountry []string `json:"blacklistedCountry,omitempty"`

	// Country: The upper-case, III country code, e.g., "US", in which the
	// deeplink can play. If unset or has "earth" (b/72566951), means the
	// deeplink can be used world-wide except in |blacklisted_country| list.
	// For possible values, see: google3/i18n/identifiers/regioncode.h
	// google3/java/com/google/i18n/identifiers/RegionCode.java For details
	// on converting to and from ISO country codes, see
	// http://iii-howto#GettingCanonRegionCodes.
	Country []string `json:"country,omitempty"`

	// Deeplink: Deeplink to the media. This deeplink is meant to be send to
	// the provider app on available platforms without any modifications.
	// Required.
	Deeplink string `json:"deeplink,omitempty"`

	// DeeplinkForExecution: Some providers give us an opaque, unstable
	// deeplink to use at execution-time. E.g. see
	// http://go/collab-ranking-nl-uri#heading=h.ndmdfw388tk3 Such a
	// deeplink is not useful for logging, caching, comparing to other
	// candidate deeplinks, etc. So most fulfillment code will want the
	// traditional, stable deeplink that can be interpreted, parsed, cached,
	// etc (found in the "deeplink" field, above). But this opaque, unstable
	// deeplink (if non-empty) must be included in the music initiation
	// clientop.
	DeeplinkForExecution string `json:"deeplinkForExecution,omitempty"`

	// IncompatibleWithCredentials: Indicate whether the deeplink is
	// compatible with credentials. If true, CCS will not send the
	// credentials to cast app. Currently this field is only used for
	// voice-follow on cases on smart displays.
	IncompatibleWithCredentials bool `json:"incompatibleWithCredentials,omitempty"`

	// Offer: List of offers that allow user to access the deeplink, that is
	// if the list contains PREMIUM_SUBSCRIPTION and BASIC_SUBSCRIPTION
	// users that have either premium or basic subscription can use the
	// deeplink. If the list is empty it means that there are no
	// subscription restrictions.
	//
	// Possible values:
	//   "UNKNOWN_SUBSCRIPTION"
	//   "NO_ACCOUNT_REQUIRED" - When this value is specified, it indicates
	// that the content is available for free. An account on the providers
	// platform is not required to play the content.
	//   "FREE" - When this value is specified, it indicates that the
	// content is available for free. An account on the providers platform
	// is required to play the content.
	//   "BASIC_SUBSCRIPTION" - When this value is specified, it indicates
	// that the contents is available to all users with a subscription to
	// that provider. This is the case, for example, with Video On Demand
	// (VOD) or for music services such as Google Play Music All Access.
	//   "PREMIUM_SUBSCRIPTION" - When this value is specified, it indicates
	// that some subscribers may not be to access the content w/o a more
	// expensive tier. This is the case, for example, with Pay TV services
	// like Flix.
	//   "PAY_PER_USE" - When this value is specified, it indicates that
	// there is at least one content offer that requires payment (either to
	// rent or to buy). In this case, there will be paid_offer_detail that
	// defines the specific offer type and cost.
	Offer []string `json:"offer,omitempty"`

	// PaidOfferDetail: This field is only used when "offer" includes a
	// PAY_PER_USE. When "offer" includes a PAY_PER_USE, paid_offer_detail
	// will contain offers for BUY and RENT offer_types with associated cost
	// info.
	PaidOfferDetail []*NlpSemanticParsingModelsMediaPaidOfferDetail `json:"paidOfferDetail,omitempty"`

	// Platform: List of platforms that support the deeplink. If the list is
	// empty it means that there are no platform restrictions.
	//
	// Possible values:
	//   "UNKNOWN_PLATFORM"
	//   "ANDROID_PLATFORM"
	//   "CAST_AUDIO"
	//   "CAST_VIDEO" - Corresponds to /m/0wf0rgl.
	//   "IOS_PLATFORM"
	//   "DESKTOP_WEB"
	//   "MOBILE_WEB"
	//   "CHROMECAST" - Corresponds to /g/11cn_9bsrr.
	//   "ANDROID_TV"
	//   "KAIOS_PLATFORM"
	//   "MEDIA_3P_DEVICE" - Deprecated. Part of the consolidation process.
	// See go/consolidation-1p-3p for more details. Deeplinks to be used on
	// media 3rd party device, including Smart TV apps, and other media
	// description devices, e.g. Sonos Speaker and Telstra.
	Platform []string `json:"platform,omitempty"`

	// Score: Document scores which are used for ranking action links.
	// Document scores might come from CDOC in Raffia or other indexing
	// systems. For example, for web pages, the score shows how likely the
	// web page (composite doc) which generated this link refers to the
	// given entity or how close a particular entity is with the given
	// composite doc. For the larger design, please see go/ma_dedup. For
	// PACIFIC_COLLAB_RANKING deeplink, the score is the normalized
	// confidence score returned by partner for fulfillment candidate. For
	// pivot candidates, the score is calculated with the index of the
	// alternative results.
	Score float64 `json:"score,omitempty"`

	// SubscriptionPackageName: Name of subscription packages which are
	// granted access to this deeplink. This is to match exactly the end
	// users authentication system. This is to be used if the offer is
	// BASIC_SUBSCRIPTION or PREMIUM_SUBSCRIPTION. There can be multiple
	// packages -- the user needs only to authenticate with a single
	// package. For more information please see: go/subscription-package
	SubscriptionPackageName []string `json:"subscriptionPackageName,omitempty"`

	// Tag: Tags associated with the content played by this deeplink. In the
	// common case, the deeplink is supposed to specify a music entity
	// within the provider's inventory, and the provider app should decide
	// the actual content based on the user's account profile (e.g., for a
	// deeplink to an artist, playing tracks from the artist or similar
	// artists, and for a song, playing the official album recording of the
	// song). But in some cases, the deeplink belong to special content. For
	// example, for an artist a seed radio based on the artist, and a live
	// or karaoke version of a song. We use this field to mark such special
	// content types.
	//
	// Possible values:
	//   "UNKNOWN_TAG"
	//   "SEED_RADIO" - Deeplink is for seed radio of the media content.
	//   "VIDEO_TAG" - Deeplink is for video version of the media content.
	// NOTE: this tag is meaningful only in the context of media that has
	// video video and other versions, e.g. a song can be played audio-only
	// or with video. This tag is not meaningful for video content, e.g.
	// movies, and thus should NOT be used for video-only media content.
	//   "TOP_TRACKS" - Deeplink is for top tracks for music artist.
	//   "RECORDED" - Deeplink is for recorded (DVR) content.
	//   "LIVE" - Deeplink is for live content.
	//   "FOLLOWED_BY_SEED_RADIO" - Deeplink is for music followed by radio
	// mix.
	Tag []string `json:"tag,omitempty"`

	// ValidTimeWindow: A time window in which the deeplink is valid. If not
	// set, the deeplink is considered valid.
	ValidTimeWindow *NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow `json:"validTimeWindow,omitempty"`

	// VuiId: DEPRECATED: This field is ignored by understanding and
	// fulfillment.
	VuiId string `json:"vuiId,omitempty"`

	// YoutubeDeeplinkInfo: Additional info specific to YouTube Deeplink (if
	// applicable).
	YoutubeDeeplinkInfo *NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo `json:"youtubeDeeplinkInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActionType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActionType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaDeeplinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaDeeplinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsMediaDeeplinkInfo) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsMediaDeeplinkInfo
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow: Represents a
// time window expressed as a time range.
type NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow struct {
	// EndTimestamp: Time in seconds since epoch.
	EndTimestamp int64 `json:"endTimestamp,omitempty,string"`

	// StartTimestamp: Time in seconds since epoch.
	StartTimestamp int64 `json:"startTimestamp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndTimestamp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTimestamp") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaDescription: Example: "the episode with
// all of the comedians". A free-form text description of a media.
type NlpSemanticParsingModelsMediaDescription struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaDescription) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaDescription
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaEpisodeConstraint: Example: "latest"
// would constrain the episode to a certain ordinal.
type NlpSemanticParsingModelsMediaEpisodeConstraint struct {
	// AbsoluteIndex: The absolute index of the episode. 1 is the first
	// element and -1 is the last element in the sequence, -2 is the
	// second-to-last element, and so on. Examples: "first episode" => 1
	// "3rd episode" => 3 "last episode" => -1
	AbsoluteIndex int64 `json:"absoluteIndex,omitempty"`

	// DateTime: Date/time of the message. This could be an absolute
	// date/time (e.g. find my message from monday) or a date/time range
	// (e.g. find my message in the past four hours). This constrains *when*
	// the episode came out.
	DateTime *NlpSemanticParsingDatetimeDateTime `json:"dateTime,omitempty"`

	// Description: A description of the episode. Example: For the query:
	// [listen to this american life about cars] the description would be
	// "cars"
	Description *NlpSemanticParsingModelsMediaDescription `json:"description,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// RelativeIndex: The relative index of the episode. Examples: "previous
	// episode" => -1 "current episode" => 0 "next episode" => 1
	RelativeIndex int64 `json:"relativeIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbsoluteIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbsoluteIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaEpisodeConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaEpisodeConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaFrequency: Defines a frequency for a
// terrestrial radio station. For instance, 99.1 FM, 730 AM, etc. Next
// ID: 4
type NlpSemanticParsingModelsMediaFrequency struct {
	// Band: The broadcast band used by the radio station.
	//
	// Possible values:
	//   "AM"
	//   "FM"
	//   "DAB"
	//   "UNSET"
	Band string `json:"band,omitempty"`

	// Value: Frequency in MHz (for FM) and KHz (for AM).
	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Band") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Band") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaFrequency) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaFrequency
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsMediaFrequency) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsMediaFrequency
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// NlpSemanticParsingModelsMediaGame: Example: "Deus Ex Human
// Revolution"
type NlpSemanticParsingModelsMediaGame struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "Deus Ex Human
	// Revolution"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaGame) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaGame
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaGenericMusic: Example: "my library",
// "some music".
type NlpSemanticParsingModelsMediaGenericMusic struct {
	// AnnotationList: Annotations from custom media annotator. Deprecated -
	// generic music deeplinks should be added to the Provider config, not
	// to the grammar.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// NewMusic: New music.
	NewMusic bool `json:"newMusic,omitempty"`

	// RawText: Required, corresponds to the raw text, like "my tracks"
	RawText string `json:"rawText,omitempty"`

	// Possible values:
	//   "UNKNOWN" - LINT.IfChange
	//   "MUSIC" - E.g., "some music", "music"
	//   "LIBRARY" - E.g, "my library", "my tracks".
	//   "PROVIDER_SPECIFIC" - E.g., "Thumbprint radio", "I'm-Feeling-Lucky
	// radio".
	//   "PLAY_PROVIDER" - E.g., "play $provider”.
	//   "RESUME_PROVIDER" - E.g., “resume $provider”.
	//   "NEW_MUSIC" - E.g., “play latest music”.
	//   "STREAM" - E.g., "play stream"
	//   "HISTORY" - E.g., "play my history"
	//   "POSTS" - E.g., "play my posts"
	//   "LIKES" - E.g., "play my likes" Currently it's not used. "play my
	// likes" is mapped to "play my library".
	//   "TRACKS" - E.g., "play my tracks"
	//   "ALBUMS" - E.g., "play my albums"
	//   "ARTISTS" - E.g., "play my artists"
	//   "THUMBPRINT_RADIO" - E.g., "play Thumbprint radio" Pandora
	// specific.
	//   "SOMETHING_ELSE" - E.g., "play something else".
	//   "FLOW" - E.g., "play flow" Deezer specific.
	//   "SHUFFLE_RADIO" - E.g., "play shuffle radio" Pandora specific.
	//   "PLAYLISTS" - E.g., "play my playlists"
	//   "RECENTLY_PLAYED" - E.g., "show recently played music"
	// LINT.ThenChange(//depot/google3/java/com/google/chrome/dongle/pints/pr
	// oto/provider_capability.proto)
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaGenericMusic) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaGenericMusic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaLatLng: An object representing a
// latitude/longitude pair. More info in
// https://cs.corp.google.com/piper///depot/google3/google/type/latlng.proto
type NlpSemanticParsingModelsMediaLatLng struct {
	// Latitude: The latitude in degrees. It must be in the range [-90.0,
	// +90.0].
	Latitude float64 `json:"latitude,omitempty"`

	// Longitude: The longitude in degrees. It must be in the range [-180.0,
	// +180.0].
	Longitude float64 `json:"longitude,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Latitude") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Latitude") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaLatLng) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaLatLng
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsMediaLatLng) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsMediaLatLng
	var s1 struct {
		Latitude  gensupport.JSONFloat64 `json:"latitude"`
		Longitude gensupport.JSONFloat64 `json:"longitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	return nil
}

// NlpSemanticParsingModelsMediaMediaAnnotation: Annotation for media
// entities. Next ID: 17
type NlpSemanticParsingModelsMediaMediaAnnotation struct {
	// ArtistName: Name of the artist (if applicable). Used for songs and
	// albums.
	ArtistName string `json:"artistName,omitempty"`

	// AudiobookInfo: Additional info specific to an audiobook (if
	// applicable).
	AudiobookInfo *NlpSemanticParsingModelsMediaAudiobookInfo `json:"audiobookInfo,omitempty"`

	// ContentType: Type of the media content. This field is not always
	// populated, but only when this annotation is used to represent an
	// individual media item, e.g., when it is the value of an intent
	// argument storing a media object to play.
	//
	// Possible values:
	//   "MEDIA_CONTENT_TYPE_UNSPECIFIED"
	//   "MUSIC_TRACK" - A song track (e.g. "Bad Romance") or radio seeded
	// by the track.
	//   "MUSIC_ARTIST" - A playlist that consists of songs by specific
	// music artist or band (e.g. "Lady Gaga") or radio seeded by artist or
	// band.
	//   "MUSIC_ALBUM" - A playlist that consists of songs from specific
	// music album (e.g. "The Fame Monster") or radio seeded by album.
	//   "PUBLIC_PLAYLIST" - A playlist publicly available (e.g. "Today's
	// Top Hits") or radio seeded by playlist. Playlists always contain
	// finite and defined set of songs. PUBLIC_PLAYLIST is the core concept
	// of providers such as Spotify.
	//   "PERSONAL_PLAYLIST" - A user-created playlist. (e.g. "My working
	// out playlist")
	//   "MUSIC_PERSONALIZED_MIX" - A music mix personalized for user. (e.g.
	// MyMix from YouTube Music or "I'm feeling lucky" radio by Google Play
	// Music)
	//   "MUSIC_GENRE_MIX" - A music mix seeded by genre. (e.g. "Heavy Metal
	// radio")
	//   "MUSIC_SEED_RADIO" - An auto-generated "radio" mix, seeded by some
	// music entity or even a query. For example: "working out radio".
	// Prefer more specific content types (e.g. MUSIC_GENRE_MIX) if
	// possible, to give finer grained TTS. DEPRECATED: This content type is
	// deprecated, use MUSIC_STATION instead.
	//   "MUSIC_STATION" - Music station (e.g. "Today's Hip Hop and Pop
	// Hits"). Stations can have infinite number of songs (at least from
	// user's perspective) and content that dynamically changes.
	// MUSIC_STATION is the core concept of providers such as Google Play
	// Music and Pandora. NOTE: do not confuse with RADIO_STATION, unlike
	// radio stations music stations provide active streaming experience
	// where user can navigate to the next song.
	//   "RADIO_STATION" - A radio station. This could be terrestrial or an
	// internet radio station. (e.g. 88.5 FM, KQED)
	//   "RADIO_NETWORK" - A radio network. (e.g. "NPR")
	//   "PODCAST_SERIES" - A podcast. (e.g. "This American Life")
	//   "PODCAST_GENERIC" - Used for "play a podcast".
	//   "PODCAST_GENRE" - Used for "play a comedy podcast".
	//   "PODCAST_TOPIC" - Used for "play a podcast about meditation".
	//   "PODCAST_RESUME" - Used for "play my podcast" query.
	//   "PODCAST_EPISODE" - Used for playing a specific episode.
	//   "VIDEO" - A single video. (e.g. "Star Wars: The Force Awakens
	// trailer")
	//   "MUSIC_VIDEO" - Music video or videos. (e.g. "Gangam style video")
	//   "VIDEO_RECOMMENDED_PLAYLIST" - Video recommendations playlist.
	// (e.g. fetched from Recommended feed on YouTube)
	//   "MUSIC_VIDEO_PERSONALIZED_PLAYLIST" - Music video playlist. (e.g.
	// MyMix from YouTube)
	//   "TV_SHOW" - A TV show. (e.g. "John Oliver: Last Week Tonight")
	//   "TV_SHOW_SEASON" - Season of a TV show (e.g. "Game of Thrones
	// season 5").
	//   "TV_SHOW_EPISODE" - Episode of a TV show (e.g. "Game of Thrones
	// season 5 episode 5").
	//   "MOVIE" - A movie. (e.g. "The Goodfellas")
	//   "YOUTUBE_CHANNEL" - A YouTube channel. (e.g. AngryJoeShow)
	//   "TV_CHANNEL" - TV channel (e.g. "Showtime Women", "ESPN2HD").
	//   "SPORTS_TEAM_GAME" - Sports game of a given team or teams (e.g.
	// "Warriors game", "Warriors at Magic game")
	//   "AUDIO_BOOK" - An audio book.
	//   "AUDIO_STORY" - An audio story.
	//   "YOUTUBE_VIDEO_PLAYLIST" - A YouTube video playlist. Note: Not a
	// music playlist returned from YT music search.
	//   "TV_ARTIST" - TV artist: comedian, TV host etc. (e.g. "Conan
	// O'Brien").
	//   "NEWS" - News audio or video.
	//   "VIDEO_GAME" - A video game (e.g. "Skyrim"). Note(shohs): As of
	// Q4'18, this content type is not supported as a top-level content type
	// to fulfill a query; rather, it is only used at the entity level to
	// support queries such as "play Skyrim soundtrack".
	//   "DIRECTOR" - TV or film director. (e.g. "James Cameron").
	//   "ACTOR" - Actor: TV, film actor etc. (e.g. "Tom Cruise").
	//   "MOVIE_SERIES" - Movie series. (e.g. "Home Alone").
	//   "APP" - Used for App.
	ContentType string `json:"contentType,omitempty"`

	// Image: Images of the media.
	Image []*AssistantApiCoreTypesImage `json:"image,omitempty"`

	// Name: Name of the media. Required.
	Name string `json:"name,omitempty"`

	// NewsInfo: Additional info specific to a news audio/video stream (if
	// applicable).
	NewsInfo *NlpSemanticParsingModelsMediaNewsInfo `json:"newsInfo,omitempty"`

	// PersonalDataIngestionEngine: The personal ingestion engine.
	//
	// Possible values:
	//   "UNKNOWN_INGESTION_ENGINE"
	//   "PINTS"
	//   "PACIFIC"
	PersonalDataIngestionEngine string `json:"personalDataIngestionEngine,omitempty"`

	// PlaylistVisibility: Visibility setting of the retrieved playlist.
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "VISIBILITY_PUBLIC"
	//   "VISIBILITY_PRIVATE"
	//   "VISIBILITY_UNLISTED"
	PlaylistVisibility string `json:"playlistVisibility,omitempty"`

	// PodcastInfo: Additional info specific to podcast stream (if
	// applicable).
	PodcastInfo *NlpSemanticParsingModelsMediaPodcastInfo `json:"podcastInfo,omitempty"`

	PrimaryEntityMid string `json:"primaryEntityMid,omitempty"`

	// ProviderInfo: List of providers and their deeplinks.
	ProviderInfo []*NlpSemanticParsingModelsMediaMediaProviderInfo `json:"providerInfo,omitempty"`

	// PurchaseInfo: Purchase info for purchased or preordered movies,
	// episodes, seasons, tv shows.
	PurchaseInfo *NlpSemanticParsingModelsMediaPurchaseInfo `json:"purchaseInfo,omitempty"`

	// RadioInfo: Only one of these fields should be set depending on the
	// type of the content. oneof content_specific_info { Additional info
	// specific to a radio station (if applicable).
	RadioInfo *NlpSemanticParsingModelsMediaRadioInfo `json:"radioInfo,omitempty"`

	// RentalInfo: Rental info for rented movies.
	RentalInfo *NlpSemanticParsingModelsMediaRentalInfo `json:"rentalInfo,omitempty"`

	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "USER_CREATED" - Media created by user.
	//   "FAVORITES" - Media in user favorites.
	//   "RECENT" - Media from recent user's playbacks.
	//   "PUBLIC" - Public media.
	//   "USER_OWNED" - Public media owned by user, e.g. via purchase.
	//   "PROVIDER_CURATED" - Content curated by provider
	//   "CLIENT_REPORTED" - Content reported by the Assistant client.
	Source string `json:"source,omitempty"`

	// YoutubePlaylistInfo: Additional info specific to YouTube playlist (if
	// applicable).
	YoutubePlaylistInfo *NlpSemanticParsingModelsMediaYouTubePlaylistInfo `json:"youtubePlaylistInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArtistName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArtistName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMediaAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMediaAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMediaAnnotationList: List of
// MediaAnnotation. Media annotators should use the MediaAnnotationList
// to annotate spans instead of MediaAnnotation. This prevents
// exponential explosion of interpretations (consider [play $song by
// $artist on $device]) and allows us to have simpler tests for grammar.
type NlpSemanticParsingModelsMediaMediaAnnotationList struct {
	Annotation []*NlpSemanticParsingModelsMediaMediaAnnotation `json:"annotation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Annotation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Annotation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMediaAnnotationList) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMediaAnnotationList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMediaProviderInfo: A media provider and
// the deeplinks provided by the provider. MediaProviderInfo is an
// abstraction for topics of multiple media related KG types under
// /base/mediaasset domain and /media_common. It's often eligible for
// topics of media related KG types like /broadcast/radio_station,
// /film/film, /music/artist, /music/album, /music/recording_cluster,
// /music/recording, /tv/tv_program, etc. See go/media-pq for design
// details. Next ID: 6
type NlpSemanticParsingModelsMediaMediaProviderInfo struct {
	// DeeplinkInfo: Deeplinks provided by the provider. If empty it
	// indicates that the media is unavailable with the provider, e.g. due
	// to country restrictions or limited catalog.
	DeeplinkInfo []*NlpSemanticParsingModelsMediaDeeplinkInfo `json:"deeplinkInfo,omitempty"`

	// KgProviderKey: The unique and reverse unique provider enumerator in
	// KG (e.g., "ORANGE_SPAIN" for /g/11h6nkfyrm). It is more stable than
	// the KG mid. See go/kema-api#keys. Some mids cannot have the
	// enumerator property due to historical reason (e.g., multiple media
	// providers were created for iTunes and only ""/g/11fhyxjwt5" has
	// provider enumerator as "ITUNES_NEW" in KG). These entities need to
	// have hard-coded key (e.g., "/m/019g58" has key "ITUNES") kept outside
	// of KG.
	KgProviderKey string `json:"kgProviderKey,omitempty"`

	// MediaId: Media ID of a MediaItem in a MediaBrowseTree (MBT). This
	// field is used to play a specific media item from MBT using
	// playFromMediaId API.
	MediaId string `json:"mediaId,omitempty"`

	// ProviderMid: The machine ID (MID) of the media provider.
	ProviderMid string `json:"providerMid,omitempty"`

	// ProviderName: The name of the media provider.
	ProviderName string `json:"providerName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeeplinkInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeeplinkInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMediaProviderInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMediaProviderInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMovie: Example: "Casablanca"
type NlpSemanticParsingModelsMediaMovie struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	ProviderMetadata []*NlpSemanticParsingModelsMediaProviderMetadata `json:"providerMetadata,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "Casablanca"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMovie) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMovie
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMusicArtist: Example: "The Beatles"
type NlpSemanticParsingModelsMediaMusicArtist struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Favorite: If true, indicates the user wants their favorite album.
	// Like [play my favorite album my Eminem]
	Favorite bool `json:"favorite,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	// PlayMore: More from this artist.
	PlayMore bool `json:"playMore,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "The Beatles"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMusicArtist) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMusicArtist
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMusicGenre: Example: "British Invasion"
type NlpSemanticParsingModelsMediaMusicGenre struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// PlayMore: More from this genre.
	PlayMore bool `json:"playMore,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "British
	// Invasion"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMusicGenre) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMusicGenre
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaMusicPlaylist: Example: "gym playlist"
type NlpSemanticParsingModelsMediaMusicPlaylist struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// LongtailMood: If the model is confident that this is a bizarre
	// long-tail mood-based playlist, it can send a signal to downstream
	// systems (that might do things like generate random music) Example: *
	// [play music for brushing my teeth with the lights off on tuesday]
	// This is pretty much an 'easter egg' -- it is not critical.
	LongtailMood bool `json:"longtailMood,omitempty"`

	// NormalizedText: Optional, some canonical name for the playlist.
	NormalizedText string `json:"normalizedText,omitempty"`

	// Qref: Needed for proto conformance in Semantic Parsing.
	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "80s remix"
	// (tokenized)
	RawText string `json:"rawText,omitempty"`

	// Possible values:
	//   "NONE"
	//   "THUMBS_UP" - Auto playlists defined by the Google Play Music app.
	// [play thumbs up songs]
	//   "LAST_ADDED"
	//   "FREE_AND_PURCHASED"
	Special string `json:"special,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaMusicPlaylist) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaMusicPlaylist
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMediaNewsInfo struct {
	// Docid: The docid of the news result from News360 backend.
	Docid uint64 `json:"docid,omitempty,string"`

	// NewsContentType: Indicates how the type of the news result.
	//
	// Possible values:
	//   "NEWS_CONTENT_TYPE_UNSPECIFIED" - Default value. This value is
	// unused.
	//   "AMP_ARTICLE_ONLY" - News is an Amp textual article. The page has
	// no video or audio.
	NewsContentType string `json:"newsContentType,omitempty"`

	// PublicationTime: Publication time of the news, in seconds (unix
	// epoch).
	PublicationTime *AssistantApiTimestamp `json:"publicationTime,omitempty"`

	// Publisher: The publisher of the news.
	Publisher string `json:"publisher,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaNewsInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaNewsInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaNewsTopic: Example: "ukraine" in a query
// like "read me news about Ukraine"
type NlpSemanticParsingModelsMediaNewsTopic struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaNewsTopic) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaNewsTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaPaidOfferDetail: Represents BUY and RENT
// offers and associated cost info. Next ID: 3
type NlpSemanticParsingModelsMediaPaidOfferDetail struct {
	// Cost: Represents the price of this offer according to the locale and
	// region.
	Cost []*NlpSemanticParsingModelsMediaCost `json:"cost,omitempty"`

	// PaidOfferType: Specifies the type of offer.
	//
	// Possible values:
	//   "UNKNOWN_PAID_OFFER_TYPE"
	//   "RENT" - When this value is specified, it indicates that the
	// content is available to rent for a limited time period. The price for
	// renting this content is indicated in the 'cost' field.
	//   "BUY" - When this value is specified, it indicates that the content
	// can be purchased and permanently owned. The price for purchasing this
	// content is indicated in the 'cost' field.
	PaidOfferType string `json:"paidOfferType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cost") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cost") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaPaidOfferDetail) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaPaidOfferDetail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaPodcast: Example: "This American Life"
type NlpSemanticParsingModelsMediaPodcast struct {
	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// NormalizedText: Optional, some canonical name for the playlist.
	NormalizedText string `json:"normalizedText,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "this american
	// life"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaPodcast) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaPodcast
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMediaPodcastInfo struct {
	// ClusterId: An internal identifier for the wernicke database that
	// identifies a cluster of multiple sources for a particular podcast.
	ClusterId string `json:"clusterId,omitempty"`

	// EpisodeGuid: GUID of the given podcast episode.
	EpisodeGuid string `json:"episodeGuid,omitempty"`

	// FeedUrl: The url for the rss feed providing this podcast.
	FeedUrl string `json:"feedUrl,omitempty"`

	// PodcastRecsFeatures: Podcast recommendations features. These features
	// are used to train models for reranking podcast recommendations. Full
	// list of features: http://shortn/_bg6NvzYs6F This won't be sent to
	// clients. It will only be annotated for crust results
	PodcastRecsFeatures *SuperrootPodcastsRecommendationsPodcastRecsFeatures `json:"podcastRecsFeatures,omitempty"`

	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaPodcastInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaPodcastInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaProviderMetadata: Provider metadata
// associated with video.
type NlpSemanticParsingModelsMediaProviderMetadata struct {
	// DeeplinkUrl: URL like https://www.netflix.com/title/70305883 -- this
	// is used as a deeplink to play the video.
	DeeplinkUrl string `json:"deeplinkUrl,omitempty"`

	// ProviderMid: Provider MID.
	ProviderMid string `json:"providerMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeeplinkUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeeplinkUrl") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaProviderMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaProviderMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMediaPurchaseInfo struct {
	// Possible values:
	//   "ORDER_TYPE_UNSPECIFIED"
	//   "PREORDER" - Entitlements will be granted after content is
	// available.
	//   "REGULAR" - Entitlements will be granted immediately after
	// purchase. For regular order.
	OrderType string `json:"orderType,omitempty"`

	// PurchaseTimestampSec: The time at which the item is purchased.
	PurchaseTimestampSec int64 `json:"purchaseTimestampSec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "OrderType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OrderType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaPurchaseInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaPurchaseInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaQuantification: The quantification of
// device(s) in the query. For example, "three speakers", "all TVs",
// etc. Usually, we should have either lexical field or number field.
// However, there are some special words which we will set both fields.
// For example, "all 3" will have the semantic: {lexical=ALL, number=3}.
// Note that "both" is simply modeled as {lexical=ALL}.
type NlpSemanticParsingModelsMediaQuantification struct {
	// Possible values:
	//   "NONE"
	//   "ALL" - E.g., "all spakers".
	Lexical string `json:"lexical,omitempty"`

	// Number: Numerical quantification. E.g., "three speakers".
	Number int64 `json:"number,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Lexical") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Lexical") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaQuantification) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaQuantification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaRadio: Example: "107.7 the bone"
type NlpSemanticParsingModelsMediaRadio struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Favorite: If true, indicates the user wants their favorite radio
	// station to be played. Ex: [play my favorites on radio]
	Favorite bool `json:"favorite,omitempty"`

	// Frequency: This proto may only be partially filled depending on the
	// query. ## Some examples (all of them have open_intent): ## | Query
	// |radio.raw_text|radio.frequency.band|radio.frequency.value| |[play
	// kqed fm]| [kqed fm] | [fm] | N/A | |[play 88.5 fm]| [88.5 fm] | [fm]
	// | 88.5 | | [play 88.5 | [88.5] | N/A | 88.5 | ## | [play fm] | [fm] |
	// [fm] | N/A |
	Frequency *NlpSemanticParsingModelsMediaFrequency `json:"frequency,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "107.7"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaRadio) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaRadio
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaRadioInfo: Metadata for a radio station
// (both terrestrial and internet). Next ID: 4
type NlpSemanticParsingModelsMediaRadioInfo struct {
	// Frequency: Frequency of the terrestrial radio station.
	Frequency *NlpSemanticParsingModelsMediaFrequency `json:"frequency,omitempty"`

	// Location: Location of the radio station.
	Location *NlpSemanticParsingModelsMediaLatLng `json:"location,omitempty"`

	// Popularity: Popularity of the radio station. This will be used in
	// ranking of the radio stations. This value should be between 0 (least
	// popular) and 5 (most popular).
	Popularity float64 `json:"popularity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Frequency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Frequency") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaRadioInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaRadioInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsMediaRadioInfo) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsMediaRadioInfo
	var s1 struct {
		Popularity gensupport.JSONFloat64 `json:"popularity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Popularity = float64(s1.Popularity)
	return nil
}

// NlpSemanticParsingModelsMediaRadioNetwork: Example: "npr", "bbc",
// etc.
type NlpSemanticParsingModelsMediaRadioNetwork struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "npr"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaRadioNetwork) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaRadioNetwork
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMediaRentalInfo struct {
	// ActivatePeriodSec: Time period for users to continue watching.
	ActivatePeriodSec int64 `json:"activatePeriodSec,omitempty,string"`

	// GrantPeriodSec: Time period for users to begin watching.
	GrantPeriodSec int64 `json:"grantPeriodSec,omitempty,string"`

	// PurchaseTimestampSec: The time at which the item is purchased.
	PurchaseTimestampSec int64 `json:"purchaseTimestampSec,omitempty,string"`

	// ValidUntilTimestampSec: Time until which ownership is granted
	ValidUntilTimestampSec int64 `json:"validUntilTimestampSec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ActivatePeriodSec")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActivatePeriodSec") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaRentalInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaRentalInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaSeasonConstraint: Example: "season 2" of
// serial
type NlpSemanticParsingModelsMediaSeasonConstraint struct {
	// AbsoluteIndex: The absolute index of the season. 1 is the first
	// element and -1 is the last element in the sequence, -2 is the
	// second-to-last element, and so on. Examples: "first season" => 1 "3rd
	// season" => 3 "last season" => -1
	AbsoluteIndex int64 `json:"absoluteIndex,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// RelativeIndex: The relative index of the season. Examples: "previous
	// season" => -1 "current season" => 0 "next season" => 1
	RelativeIndex int64 `json:"relativeIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbsoluteIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbsoluteIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaSeasonConstraint) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaSeasonConstraint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaSong: Example: "Hey Jude"
type NlpSemanticParsingModelsMediaSong struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Favorite: If true, indicates the user wants their favorite album.
	// Like [play my favorite song]
	Favorite bool `json:"favorite,omitempty"`

	// First: If true, indicates the user wants the first song. Like [play
	// adele's first song]
	First bool `json:"first,omitempty"`

	// IsAnnotatedFromText: Annotation comes from a text annotator. Needed
	// to boost recall. Typically need to be verified in superroot, and have
	// separate scoring.
	IsAnnotatedFromText bool `json:"isAnnotatedFromText,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	// Latest: If true, indicates the user wants the latest song. Like,
	// [play adele's latest song]
	Latest bool `json:"latest,omitempty"`

	// Qref: Optional, indicates this reference came from QRef.
	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "Hey Jude."
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaSong) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaSong
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaTVShow: Example: "Breaking Bad"
type NlpSemanticParsingModelsMediaTVShow struct {
	// AnnotationList: Annotations from custom media annotator.
	AnnotationList *NlpSemanticParsingModelsMediaMediaAnnotationList `json:"annotationList,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsFromFastPath: Is annotated by Nimble for the media Fast Path.
	IsFromFastPath bool `json:"isFromFastPath,omitempty"`

	ProviderMetadata []*NlpSemanticParsingModelsMediaProviderMetadata `json:"providerMetadata,omitempty"`

	Qref *NlpSemanticParsingQRefAnnotation `json:"qref,omitempty"`

	// RawText: Required, corresponds to the raw text, like "Breaking Bad"
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationList") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaTVShow) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaTVShow
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo: Provide the
// deeplink information specific to YouTube PMAs. Next ID: 3
type NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo struct {
	// ClickTrackingId: See go/yt-clicktracking. Serialized
	// youtube.api.innertube.InnerTubeClickTrackingProto.
	ClickTrackingId string `json:"clickTrackingId,omitempty"`

	// UploaderChannelId: For YouTube Channels, by default the deeplink is
	// set to be the playlist of all uploads from the channel. This field is
	// used for YouTube in-app browse when we need the YouTube channel's
	// main page url. We will use the uploader_channel_id to construct the
	// needed channel deeplink.
	UploaderChannelId string `json:"uploaderChannelId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClickTrackingId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClickTrackingId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMediaYouTubePlaylistInfo struct {
	// NumVidsPlayableInWoodstock: Count of videos in the YouTube playlist
	// that are playable in WoodStock. For performance reasons the maximum
	// value this field can reach is capped, see:
	// kMaxVideosPerPlaylistForSearchMetadata.
	NumVidsPlayableInWoodstock int64 `json:"numVidsPlayableInWoodstock,omitempty,string"`

	// VideoCount: Total number of videos present in the retrieved playlist.
	VideoCount int64 `json:"videoCount,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NumVidsPlayableInWoodstock") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "NumVidsPlayableInWoodstock") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMediaYouTubePlaylistInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMediaYouTubePlaylistInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsMoneyCurrency struct {
	// FreebaseMid: KG Currency mid
	FreebaseMid string `json:"freebaseMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FreebaseMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FreebaseMid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMoneyCurrency) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMoneyCurrency
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsMoneyMoney: Represent a money quantity
type NlpSemanticParsingModelsMoneyMoney struct {
	Amount *NlpSemanticParsingNumberNumber `json:"amount,omitempty"`

	Currency *NlpSemanticParsingModelsMoneyCurrency `json:"currency,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Amount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Amount") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsMoneyMoney) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsMoneyMoney
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsNarrativeNewsNewsProvider: Corresponds to an
// entry in our hand-curated Nimble table of providers.
type NlpSemanticParsingModelsNarrativeNewsNewsProvider struct {
	// Data: Annotation data for the provider.
	Data *QualityActionsNewsProviderAnnotationData `json:"data,omitempty"`

	// EvalData: Required, but should only be used inside Aqua and must not
	// be used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsNarrativeNewsNewsProvider) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsNarrativeNewsNewsProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsOnDevice: OnDevice describes the device(s) to
// perform an action. This message type can be imported in action
// messages as an argument.
type NlpSemanticParsingModelsOnDevice struct {
	// Device: The device(s) to perform an action.
	Device []*NlpSemanticParsingModelsDevice `json:"device,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Device") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Device") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsOnDevice) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsOnDevice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsPersonPerson struct {
	// AlternativeNameInfo: Alternative names like "John" for "Joan", with
	// info such as RecognitionAlternateSource indicating where is it from.
	AlternativeNameInfo []*QualityQrewriteAlternativeNameInfo `json:"alternativeNameInfo,omitempty"`

	// AlternativeNames: Alternative names, e.g., names with similar
	// pronunciation, Kathy and Cathy.
	AlternativeNames []string `json:"alternativeNames,omitempty"`

	// Possible values:
	//   "PERSONAL_CONTACT"
	//   "RELATIONSHIP"
	//   "NAMES"
	//   "NAME_DETECTION"
	//   "SAFT"
	//   "PERSONAL_KNOWLEDGE_GRAPH" - This will eventually subsume
	// PERSONAL_CONTACT and RELATIONSHIP too. Reach out to pkg-eng@ for
	// questions.
	//   "PRESENCE_PEOPLE_SEARCH" - Person names from Presence / People
	// Search project (go/presence-people-search-intent). Contact
	// search-ugc-ny@ for questions.
	//   "LOOSE_TEXT" - Ungrounded annotation from loose text parsing. See
	// go/call-ambiguous-in-initiate-call.
	AnnotationSource []string `json:"annotationSource,omitempty"`

	// ContactData: Contact metadata. Only available for personal contact.
	ContactData []*QualityQrewritePersonalContactData `json:"contactData,omitempty"`

	// EvalData: Required, but should only be used inside Aqua. Must not be
	// used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// IsPersonGroupReference: Indicates whether $Person is used for
	// person-group reference. If true, then the PersonalContactData in
	// repeated contact_data field probably correspond to a group of
	// different persons, where $Person is used to represent family, kids,
	// parents, etc.
	IsPersonGroupReference bool `json:"isPersonGroupReference,omitempty"`

	// IsPersonalContact: Whether the person is from personal contacts (e.g.
	// Focus contacts or device contacts) or the person is constructed from
	// a Gaia profile visible to the user (e.g. via Family Service).
	IsPersonalContact bool `json:"isPersonalContact,omitempty"`

	// Name: The name of the person without normalizations, preserves casing
	// of the raw text, but removes possible prefix/suffix. For example:
	// raw_text: "Mr. John" normalized_text: "john" name: "John" raw_text:
	// "Tüll" normalized_text: "tuell" name: "Tüll"
	Name string `json:"name,omitempty"`

	// NormalizedText: Normalized text produced by annotator. Some
	// annotators generate a normalized version to help better match with
	// contact list.
	NormalizedText string `json:"normalizedText,omitempty"`

	// PkgSemantics: Contains information about a Copley Person reference
	// (go/copley-people). Note that this contains no information about the
	// resolved people (e.g. names, phone numbers) but only about the user's
	// reference. Resolution metadata is stored in contact_data.pkg_person.
	PkgSemantics *NlpSemanticParsingQRefAnnotation `json:"pkgSemantics,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlternativeNameInfo")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlternativeNameInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsPersonPerson) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsPersonPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrence: Recurrence rule for specifying
// date- and time-based repetition for tasks. Next id: 12.
type NlpSemanticParsingModelsRecurrence struct {
	// DailyPattern: Optional. Specifies when in the day the task should
	// occur. Applies to all frequencies DAILY and greater. If absent, the
	// repeating tasks are considered "all day" type.
	DailyPattern *NlpSemanticParsingModelsRecurrenceDailyPattern `json:"dailyPattern,omitempty"`

	// EvalData: This field of the Recurrence message should not in general
	// be used by outside clients of the grammar. It is intended to be used
	// internally in Aqua for evaluation purposes. The rationale is that
	// token counts depend on the particular tokenization used in Aqua which
	// may be different from the one used by the client and may change from
	// time to time. Outside clients should not create a dependency on the
	// current tokenization used in Aqua.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Every: Multiplier on the frequency of the recurrence. Use this to
	// specify patterns that recur every X days, months, years, etc.
	// Example: [remind me to call mom every 2nd week]. Default is 1 (every
	// day, every month, every year). Floating point numbers are understood
	// and rounded to the nearest integer. E.g. "every 2.8 months" => (every
	// 3)
	Every int64 `json:"every,omitempty"`

	// Frequency: Required. The high-level frequency of the recurrence.
	//
	// Possible values:
	//   "DAILY"
	//   "WEEKLY"
	//   "MONTHLY"
	//   "YEARLY"
	//   "UNKNOWN" - Frequency is set to UNKNOWN when there's no explicit
	// unit of recurrence. Example: [set a repeating alarm].
	Frequency string `json:"frequency,omitempty"`

	// MonthlyPattern: Specify a monthly recurrence. Valid and required for
	// MONTHLY frequencies only.
	MonthlyPattern *NlpSemanticParsingModelsRecurrenceMonthlyPattern `json:"monthlyPattern,omitempty"`

	// NumInstancesInFrequency: How many times the task should be repeated
	// within the frequency interval. Floating point numbers are understood
	// and rounded to the nearest integer. E.g. "3.8 times per week" =>
	// (num_instances_in_frequency 4)
	NumInstancesInFrequency int64 `json:"numInstancesInFrequency,omitempty"`

	// RecurrenceEnd: Required. The end condition for the recurrence.
	RecurrenceEnd *NlpSemanticParsingModelsRecurrenceRecurrenceEnd `json:"recurrenceEnd,omitempty"`

	// RecurrenceStart: Required. The start of the recurrence.
	RecurrenceStart *NlpSemanticParsingModelsRecurrenceRecurrenceStart `json:"recurrenceStart,omitempty"`

	// Time: Optional time included with some types of recurrence phrases,
	// such as "every morning".
	Time *NlpSemanticParsingDatetimeDateTime `json:"time,omitempty"`

	// WeeklyPattern: Specify a weekly recurrence. Valid and required for
	// WEEKLY frequencies only.
	WeeklyPattern *NlpSemanticParsingModelsRecurrenceWeeklyPattern `json:"weeklyPattern,omitempty"`

	// YearlyPattern: Specify a yearly recurrence. Valid only for YEARLY
	// frequencies.
	YearlyPattern *NlpSemanticParsingModelsRecurrenceYearlyPattern `json:"yearlyPattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DailyPattern") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DailyPattern") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceDailyPattern: Pattern for when in
// the day the repeating task should trigger. Applies to all frequencies
// greater than or equal to DAILY. Exactly one of the containing fields
// should be set (i.e. a specific time or period).
type NlpSemanticParsingModelsRecurrenceDailyPattern struct {
	DayPeriod *NlpSemanticParsingDateTimeAnnotation `json:"dayPeriod,omitempty"`

	TimeOfDay *NlpSemanticParsingDateTimeAnnotation `json:"timeOfDay,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DayPeriod") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DayPeriod") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceDailyPattern) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceDailyPattern
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceMonthlyPattern: Pattern for a
// MONTHLY recurrence. A MONTHLY recurrence may be specified in four
// different ways. These fields should be set in a mutually exclusive
// way, i.e.: ((month_day OR last_day) XOR (week_day AND
// (week_day_number OR last_week))) 1. Absolute days of the month (i.e.
// the 1st and 15th) or relative day from the end of the month (i.e. -1
// for last day, -2 for second-to-last day). Set month_day. 2.
// [Deprecated] Relative last day of the month. Represented as a boolean
// since the last absolute day number is dependent on the month. This is
// just a short-cut for month_day=-1 and is deprecated. Set
// last_day=true. 3. The nth (or nth-last) specific weekday of the
// month. For example, the 3rd Wednesday of the month. This represents
// the 3rd instance of a Wednesday of the month, regardless of what
// weekday the month started on. It does not necessarily mean the
// Wednesday on the 3rd week of the month. 4. [Deprecated] The last
// specific weekday of the month. For example, the last Thursday of the
// month. This is a short-cut for week_day_number=-1.
type NlpSemanticParsingModelsRecurrenceMonthlyPattern struct {
	// LastDay: Special flag to indicate the last day of the month,
	// equivalent to setting month_day to -1. Deprecated, use month_day=-1
	// instead.
	LastDay bool `json:"lastDay,omitempty"`

	// LastWeek: Special flag to indicate a week_day in the last week of the
	// month, as this cannot be captured by week_day_number. Deprecated, use
	// week_day_number=-1 instead.
	LastWeek bool `json:"lastWeek,omitempty"`

	// MonthDay: Absolute day of the month (if positive) or relative day
	// from the end of the month (if negative). Example: 2nd and 20th of the
	// month [2, 20]. Example: Last day of the month [-1]. Positive values
	// should correspond to actual calendar day number (indexing starts at
	// 1).
	MonthDay []int64 `json:"monthDay,omitempty"`

	// WeekDay: For capturing the nth weekday of the month. Use together
	// with week_day_number or last_week to specify n.
	//
	// Possible values:
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "SUNDAY"
	WeekDay string `json:"weekDay,omitempty"`

	// WeekDayNumber: The nth occurrence of week_day to match. I.e. For 3rd
	// Wednesday of the month, week_day = WEDNESDAY and week_day_number = 3.
	// Values beyond the end of the month are skipped. If negative, this is
	// interpreted as the nth-to-last occurrence of the week day in the
	// month. I.e. for last Thursday of the month, week_day = THURSDAY and
	// week_day_number = -1.
	WeekDayNumber int64 `json:"weekDayNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LastDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceMonthlyPattern) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceMonthlyPattern
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceRecurrenceEnd: The end of the
// recurrence can be represented in one of three ways. 1. An abstract
// DateTime. (inclusive) 2. An absolute timestamp, in milliseconds from
// UTC epoch. 3. A number of occurrences. Exactly one of the fields
// [end_date_time, end_millis, num_occurrences] in this message must be
// set. Repeating tasks for which the user did not specify an end date
// are automatically given a reasonable end conditions by the system and
// auto_renew will be set to true. Similarly, if the user- provided end
// date is too far in the future to reasonably create all instances, the
// server will set an auto_renew_until end condition.
type NlpSemanticParsingModelsRecurrenceRecurrenceEnd struct {
	// AutoRenew: Should be used in cases where the size of the recurrence
	// is infinite (no end date specified), in which case we rely on an
	// offline process to extend. Set by server only, setting it on a new
	// recurrence will throw an exception.
	AutoRenew bool `json:"autoRenew,omitempty"`

	// AutoRenewUntil: Used in cases where the recurrence is too large to
	// create in a single transaction. In this case we create a manageable
	// number of instances initially and rely on an offline process to
	// continually extend the recurrence until this date. Set by server
	// only, setting it on a new recurrence will throw an exception.
	AutoRenewUntil *NlpSemanticParsingDateTimeAnnotation `json:"autoRenewUntil,omitempty"`

	EndDateTime *NlpSemanticParsingDateTimeAnnotation `json:"endDateTime,omitempty"`

	// EndMillis: Deprecated - prefer end_date_time.absolute_time_ms.
	EndMillis int64 `json:"endMillis,omitempty,string"`

	// NumOccurrences: Note that auto-renewing is not supported in
	// conjunction with num_occurrences. Therefore we impose a hard limit of
	// 1000 when using this field.
	NumOccurrences int64 `json:"numOccurrences,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AutoRenew") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AutoRenew") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceRecurrenceEnd) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceRecurrenceEnd
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceRecurrenceStart: The start of the
// recurrence can be represented either as a DateTime or a timestamp in
// milliseconds from UTC epoch. Exactly one of the fields of this
// message must be set.
type NlpSemanticParsingModelsRecurrenceRecurrenceStart struct {
	// StartDateTime: Only the year/month/day portion are used to find the
	// start date of the recurrence. To specify a time or period of each
	// instance, use DailyPattern.
	StartDateTime *NlpSemanticParsingDateTimeAnnotation `json:"startDateTime,omitempty"`

	// StartMillis: Deprecated - prefer start_date_time.absolute_time_ms.
	StartMillis int64 `json:"startMillis,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "StartDateTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "StartDateTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceRecurrenceStart) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceRecurrenceStart
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceWeeklyPattern: Pattern for a WEEKLY
// recurrence. You must specify at least one week_day.
type NlpSemanticParsingModelsRecurrenceWeeklyPattern struct {
	// WeekDay: Set of weekdays the recurrence applies to.
	//
	// Possible values:
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "SUNDAY"
	WeekDay []string `json:"weekDay,omitempty"`

	// Possible values:
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "SUNDAY"
	WeeklyPatternEnd string `json:"weeklyPatternEnd,omitempty"`

	// Possible values:
	//   "MONDAY"
	//   "TUESDAY"
	//   "WEDNESDAY"
	//   "THURSDAY"
	//   "FRIDAY"
	//   "SATURDAY"
	//   "SUNDAY"
	WeeklyPatternStart string `json:"weeklyPatternStart,omitempty"`

	// ForceSendFields is a list of field names (e.g. "WeekDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WeekDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceWeeklyPattern) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceWeeklyPattern
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsRecurrenceYearlyPattern: Pattern for a YEARLY
// recurrence. A YEARLY recurrence is specified using a monthly pattern
// and a set of months the pattern applies to. Some examples: "Every
// January 16" : monthly_pattern { month_day = 16; } year_month =
// JANUARY; "Last day of every April and August" : monthly_pattern {
// last_day = true; } year_month = APRIL, AUGUST
type NlpSemanticParsingModelsRecurrenceYearlyPattern struct {
	// MonthlyPattern: The monthly pattern to recur.
	MonthlyPattern *NlpSemanticParsingModelsRecurrenceMonthlyPattern `json:"monthlyPattern,omitempty"`

	// YearMonth: The months of the year to apply the pattern.
	//
	// Possible values:
	//   "JANUARY"
	//   "FEBRUARY"
	//   "MARCH"
	//   "APRIL"
	//   "MAY"
	//   "JUNE"
	//   "JULY"
	//   "AUGUST"
	//   "SEPTEMBER"
	//   "OCTOBER"
	//   "NOVEMBER"
	//   "DECEMBER"
	YearMonth []string `json:"yearMonth,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MonthlyPattern") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MonthlyPattern") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsRecurrenceYearlyPattern) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsRecurrenceYearlyPattern
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantBrandPhrase: A brand can be
// any combination of text or mid.
type NlpSemanticParsingModelsShoppingAssistantBrandPhrase struct {
	Mid string `json:"mid,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantBrandPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantBrandPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantMerchant: A merchant that
// sells products.
type NlpSemanticParsingModelsShoppingAssistantMerchant struct {
	// EvalData: This field should not be used by clients of the grammar. It
	// is intended to be used internally in Aqua for metric and regression
	// tests.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// LocalMerchantId: Merchant Center identifier for LIA merchants.
	LocalMerchantId int64 `json:"localMerchantId,omitempty,string"`

	Mcid []*NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId `json:"mcid,omitempty"`

	// MerchantId: Merchant Center identifier for GSX merchants. Deprecated:
	// use MerchantCenterId.
	MerchantId googleapi.Int64s `json:"merchantId,omitempty"`

	// Mid: Optional. Knowledge Graph identifier for the merchant.
	Mid string `json:"mid,omitempty"`

	// Name: A name for the merchant. Example: Walmart
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantMerchant) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantMerchant
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId:
// Note: A merchant may have multiple merchant center ids, and each one
// can have multiple purposes. The existing fields merchant_id,
// local_merchant_id fields are not enough to capture this. Instead we
// will have a repeated field name mcid with this structure.
type NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId struct {
	Id int64 `json:"id,omitempty,string"`

	IsGsx bool `json:"isGsx,omitempty"`

	IsLocal bool `json:"isLocal,omitempty"`

	IsPla bool `json:"isPla,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantOffer: A product for sale
// from a particular merchant, possibly available at a specific store.
type NlpSemanticParsingModelsShoppingAssistantOffer struct {
	// Docid: The offer document id as used in Shopping's metadata.
	Docid uint64 `json:"docid,omitempty,string"`

	// Merchant: The merchant selling the product.
	Merchant *NlpSemanticParsingModelsShoppingAssistantMerchant `json:"merchant,omitempty"`

	// Price: The price of the product sold by the merchant.
	Price *NlpSemanticParsingModelsMoneyMoney `json:"price,omitempty"`

	// Product: The product for sale.
	Product *NlpSemanticParsingModelsShoppingAssistantProduct `json:"product,omitempty"`

	// Store: Optional. The physical store where the product can be
	// purchased.
	Store *NlpSemanticParsingModelsShoppingAssistantStore `json:"store,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantOffer) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantOffer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantPhrase: A phrase parsed from
// a user query.
type NlpSemanticParsingModelsShoppingAssistantPhrase struct {
	Brand *NlpSemanticParsingModelsShoppingAssistantBrandPhrase `json:"brand,omitempty"`

	Offer *NlpSemanticParsingModelsShoppingAssistantOffer `json:"offer,omitempty"`

	Product *NlpSemanticParsingModelsShoppingAssistantProductPhrase `json:"product,omitempty"`

	Unrecognized *NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase `json:"unrecognized,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Brand") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Brand") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantProduct: A product that can
// be purchased.
type NlpSemanticParsingModelsShoppingAssistantProduct struct {
	// CatalogId: The shopping catalog identifier.
	CatalogId uint64 `json:"catalogId,omitempty,string"`

	// MaxPrice: The highes price this product is available for.
	MaxPrice *NlpSemanticParsingModelsMoneyMoney `json:"maxPrice,omitempty"`

	// MediaProduct: TODO(ppoudyal) Add logging for media_product.
	MediaProduct *NlpSemanticParsingModelsShoppingAssistantProductMediaProduct `json:"mediaProduct,omitempty"`

	// Mid: Optional. Knowledge Graph identifier for the product.
	Mid string `json:"mid,omitempty"`

	// MinPrice: The lowest price this product is available for.
	MinPrice *NlpSemanticParsingModelsMoneyMoney `json:"minPrice,omitempty"`

	// Title: Title of the product. Example: Moto X Blue 64GB Note: This
	// refers to only the catalog title not user specified phrase
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CatalogId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CatalogId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProduct) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProduct
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantProductClassification:
// Whether the product being described fits into specific categories
// (e.g., "video games").
type NlpSemanticParsingModelsShoppingAssistantProductClassification struct {
	// BookConfidence: TODO(ppoudyal) Expand confidence to cases where the
	// product phrase might be a book/movie/video_game but isn't just a
	// title The score (between 0 - 1) measuring the confidence that product
	BookConfidence float64 `json:"bookConfidence,omitempty"`

	// IsVideoGame: TODO(ppoudyal) Deprecate is_video_game once the score
	// covers all cases covered by $VideoGameProductPhrase The product
	// phrase contains a video game title.
	IsVideoGame bool `json:"isVideoGame,omitempty"`

	// MovieConfidence: phrase mentions a book title The score (between 0 -
	// 1) measuring the confidence that product
	MovieConfidence float64 `json:"movieConfidence,omitempty"`

	// VideoGameConfidence: phrase mentions a movie title The score (between
	// 0 - 1) measuring the confidence that product
	VideoGameConfidence float64 `json:"videoGameConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BookConfidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BookConfidence") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductClassification) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductClassification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductClassification) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductClassification
	var s1 struct {
		BookConfidence      gensupport.JSONFloat64 `json:"bookConfidence"`
		MovieConfidence     gensupport.JSONFloat64 `json:"movieConfidence"`
		VideoGameConfidence gensupport.JSONFloat64 `json:"videoGameConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BookConfidence = float64(s1.BookConfidence)
	s.MovieConfidence = float64(s1.MovieConfidence)
	s.VideoGameConfidence = float64(s1.VideoGameConfidence)
	return nil
}

// NlpSemanticParsingModelsShoppingAssistantProductExpression: An
// expression parsed from a user query that describes a product or set
// of products.
type NlpSemanticParsingModelsShoppingAssistantProductExpression struct {
	// EvalData: This field should not be used by clients of the grammar. It
	// is intended to be used internally in Aqua for metric and regression
	// tests.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Possible values:
	//   "UNKNOWN_GENDER"
	//   "FEMININE"
	//   "MASCULINE"
	GrammaticalGender string `json:"grammaticalGender,omitempty"`

	// Possible values:
	//   "UNKNOWN_NUMBER"
	//   "PLURAL"
	//   "SINGULAR"
	//   "DUAL"
	GrammaticalNumber string `json:"grammaticalNumber,omitempty"`

	// Phrases: Ordered list of phrases that the user used to describe a
	// product.
	Phrases []*NlpSemanticParsingModelsShoppingAssistantPhrase `json:"phrases,omitempty"`

	ProductClassification *NlpSemanticParsingModelsShoppingAssistantProductClassification `json:"productClassification,omitempty"`

	// ShoppingListItemInfo: Associated shopping list item info. Only set
	// when the product is come from a shopping list item.
	ShoppingListItemInfo *NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo `json:"shoppingListItemInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductExpression) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductExpression
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantProductMediaProduct: A media
// product that can be purchased
type NlpSemanticParsingModelsShoppingAssistantProductMediaProduct struct {
	// Author: The author of the media
	Author *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue `json:"author,omitempty"`

	// Genre: The genre of the media
	Genre *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue `json:"genre,omitempty"`

	// MediaTitle: The title of the media Example: The assasin's creed
	MediaTitle *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue `json:"mediaTitle,omitempty"`

	// OrderInSeries: Order in media series (series title is given by the
	// product title)
	OrderInSeries *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue `json:"orderInSeries,omitempty"`

	// Topic: The topic of the media
	Topic *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue `json:"topic,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Author") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Author") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductMediaProduct) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductMediaProduct
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue struct {
	// Mid: The knowledge graph identifier for the attribute
	Mid string `json:"mid,omitempty"`

	// RawText: Raw text of the media attribute (eg. author)
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantProductPhrase: A product can
// be any combination of raw_text and metadata (including mid, shopping
// product catalog title/id, and media attributes). A product phrase
// refers to a product at the catalog entry level and/or a media
// product. Media product contains information about author and media
// title TODO(ppoudyal) Add genre and order_in_series to MediaProduct
type NlpSemanticParsingModelsShoppingAssistantProductPhrase struct {
	Metadata *NlpSemanticParsingModelsShoppingAssistantProduct `json:"metadata,omitempty"`

	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Metadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Metadata") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantProductPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantProductPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo struct {
	ItemId string `json:"itemId,omitempty"`

	ListId string `json:"listId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ItemId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ItemId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantStore: A merchant's physical
// store.
type NlpSemanticParsingModelsShoppingAssistantStore struct {
	// Id: Local store identifier.
	Id uint64 `json:"id,omitempty,string"`

	// Location: The location of the store.
	Location *NlpSemanticParsingLocalLocation `json:"location,omitempty"`

	// Name: A name for the store. Example: Walmart - Cranberry
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantStore) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantStore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase: A span
// in a user query that could not be identified as any other type of
// `Phrase`.
type NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase struct {
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type NlpSemanticParsingNumberFractionNumber struct {
	Denominator *NlpSemanticParsingNumberSimpleNumber `json:"denominator,omitempty"`

	// Numerator: Fields for fraction numbers
	Numerator *NlpSemanticParsingNumberSimpleNumber `json:"numerator,omitempty"`

	// Precision: This field is used to indicate the number of digits after
	// the decimal point in the normalized_value field in number.proto,
	// which contains the floating point representation of the fraction
	Precision int64 `json:"precision,omitempty"`

	// WholeNumber: This field is set only for mixed fraction
	WholeNumber *NlpSemanticParsingNumberSimpleNumber `json:"wholeNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Denominator") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Denominator") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingNumberFractionNumber) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingNumberFractionNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingNumberNumber: Next ID: 9
type NlpSemanticParsingNumberNumber struct {
	// EvalData: Span info of the annotation - mostly used for evaluation
	// purpose. Note: this data must never be used outside Aqua because it
	// relies on the internal tokenization used in Aqua that could change
	// over time.
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	FractionNumber *NlpSemanticParsingNumberFractionNumber `json:"fractionNumber,omitempty"`

	// IsSpelledOut: An optional field that holds whether the number_type
	// number is a normalized spelled-out number or not. This field will not
	// be set in cases when this information is not available.
	IsSpelledOut bool `json:"isSpelledOut,omitempty"`

	// Modifier: NumberModifier is used to capture when the expression is
	// not an absolute number, but a number expression to represent an
	// increase/decrease/comparison. E.g. [10 more percent], [5 less].
	//
	// Possible values:
	//   "UNKNOWN"
	//   "ADD"
	//   "SUBTRACT"
	Modifier string `json:"modifier,omitempty"`

	// NormalizedValue: Contains a normalized string representation of the
	// numeric value that has: * No digit grouping delimiter (e.g. "," in
	// english). * Decimal mark (if present) as "." (dot). For
	// fraction_number, this contains the floating point representation of
	// the fraction. The number of digits after the decimal point is defined
	// in the precision field of fraction_number.proto.
	NormalizedValue string `json:"normalizedValue,omitempty"`

	// RawText: The raw text of the annotation.
	RawText string `json:"rawText,omitempty"`

	SimpleNumber *NlpSemanticParsingNumberSimpleNumber `json:"simpleNumber,omitempty"`

	// SpelledOutType: We expect this field to be set only when
	// is_spelled_out is true.
	//
	// Possible values:
	//   "UNKNOWN_SPELLED_OUT_TYPE"
	//   "FULL_NUMBER" - A fully spelled out number. e.g: [two], [half],
	// [one hundred forty five], [one point twenty five].
	//   "LIST_OF_SINGLE_DIGITS" - A list of spelled out single digits with
	// more than 1 element. e.g: [two oh], [one four five], [six oh nine],
	// [one point five five].
	//   "SHORTHAND" - A shorthand number form. e.g: [1K], [1m].
	//   "COMBINED" - An interpretation that combines two or more of the
	// other forms with or without written (non spelled-out) forms, or one
	// of the other forms combined with written forms. e.g: [1 hundred],
	// [one forty five], [one point two fifteen], [twenty oh two], [one
	// hundred twenty two point two two], [one twenty two point two two],
	// [one two two point 22].
	SpelledOutType string `json:"spelledOutType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EvalData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EvalData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingNumberNumber) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingNumberNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingNumberSimpleNumber: Next ID: 8
type NlpSemanticParsingNumberSimpleNumber struct {
	// DecimalMark: The type of decimal mark that was present before
	// normalization. Note: different locales may use different decimal
	// marks.
	//
	// Possible values:
	//   "NO_DELIMITER"
	//   "DOT"
	//   "COMMA"
	//   "SPACE"
	DecimalMark string `json:"decimalMark,omitempty"`

	// GroupingDelimiter: The type of digit grouping delimiter that was
	// present before normalization. Note: different locales may use
	// different digit grouping delimiters.
	//
	// Possible values:
	//   "NO_DELIMITER"
	//   "DOT"
	//   "COMMA"
	//   "SPACE"
	GroupingDelimiter string `json:"groupingDelimiter,omitempty"`

	// GroupingSystem: We expect this field to be set only when
	// grouping_delimiter is set.
	//
	// Possible values:
	//   "UNKNOWN_GROUPING_SYSTEM"
	//   "GROUPBY_3_DIGITS" - Western languages group by thousands: 10^3,
	// 10^6 ...
	//   "GROUPBY_4_DIGITS" - East Asian languages prefer grouping by
	// myriads: 10^4, 10^8, ...
	//   "GROUPBY_INDIAN_SYSTEM" - The Indian system is more complex because
	// of the Stravinskian alternation between lakhs and crores.
	GroupingSystem string `json:"groupingSystem,omitempty"`

	// NormalizedValue: Contains a normalized string representation of the
	// numeric value that has: * No digit grouping delimiter (e.g. "," in
	// english). * Decimal mark (if present) as "." (dot). This field is
	// kept for backward compatibility. The field is also available in
	// number.proto
	NormalizedValue string `json:"normalizedValue,omitempty"`

	// Prefix: Stores prefix output by the GRM number grammar
	// (http://b/28623478).
	Prefix string `json:"prefix,omitempty"`

	// Suffix: Stores suffix output
	Suffix string `json:"suffix,omitempty"`

	// Possible values:
	//   "UNKNOWN_NUMBER_TYPE"
	//   "INT" - An integer number: [2], [1,000], [one hundred five].
	//   "FLOAT" - Floating point number: [0.2], [3.14], [1,000.1].
	//   "ORDINAL" - Ordinal number: [2nd], [twenty third].
	//   "PERCENTAGE" - Percentage: [5%], [50 percent], [five percent].
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DecimalMark") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DecimalMark") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingNumberSimpleNumber) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingNumberSimpleNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingPersonalIntelligenceEntity: This message should be
// wire-equivalent to the Entity proto defined in
// nlp/semantic_parsing/models/personal_intelligence.proto. The message
// is cloned here to allow legacy intents to extract entities to slots;
// trying to add Entity to
// knowledge_answers::intent_query::ArgumentValue creates a BUILD
// dependency loop. For the proto used for GwsLogs, see
// logs/proto/knowledge/interpretation/personal_intelligence.proto.
type NlpSemanticParsingPersonalIntelligenceEntity struct {
	// AirlineConfig: Used if the entity is an airline with an airline
	// annotation.
	AirlineConfig *TravelFlightsAirlineConfig `json:"airlineConfig,omitempty"`

	// EvalData: Required, but should only be used inside Aqua. Must not be
	// used by outside clients!!
	EvalData *NlpSemanticParsingAnnotationEvalData `json:"evalData,omitempty"`

	// Name: raw string representation
	Name string `json:"name,omitempty"`

	QrefAnnotation *NlpSemanticParsingQRefAnnotation `json:"qrefAnnotation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AirlineConfig") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AirlineConfig") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingPersonalIntelligenceEntity) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingPersonalIntelligenceEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingPersonalReferenceAnnotation: A collection of any
// number of QRefAnnotations that designate a Copley Personal Reference
// and its Resolutions. This is used to handle personalized intents such
// as "navigate to my hotel" or "when is my mom's anniversary". See
// go/copley. This Annotation may contain only a reference with no
// resolutions for the failure case (go/copley-punts). TODO(bhorst)
// Rename this to remove the Copley codename.
type NlpSemanticParsingPersonalReferenceAnnotation struct {
	// Reference: A Copley Personal Reference represents a user's reference
	// to a something that could be personal entity, e.g. "my hotel", "mom",
	// "brunch".
	Reference *NlpSemanticParsingQRefAnnotation `json:"reference,omitempty"`

	// Resolutions: A Copley Personal Resolution represents the resolution
	// of a Reference, e.g. if the user has a reservation at The Kendall
	// Hotel, the reference "my hotel" could be resolved to The Kendall
	// Hotel, and there would be a QRefAnnotation containing the mid and
	// other data. It is possible for there to be zero resolutions for a
	// given reference.
	Resolutions []*NlpSemanticParsingQRefAnnotation `json:"resolutions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Reference") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Reference") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingPersonalReferenceAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingPersonalReferenceAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleAogSlot: In simple cases, each
// NLU slot will contain one or multiple possible values. But in the
// case of a composite entity - slots can have a complex tree structure.
// Each slot can represent a List parameter. List parameters are only
// allowed at the top level, i.e. lists can't ne nested in maps. Next
// Id: 9 LINT.IfChange
type NlpSemanticParsingProtoActionsOnGoogleAogSlot struct {
	// EntityId: ID of the entity of this slot.
	EntityId string `json:"entityId,omitempty"`

	// NumBytes: Number of bytes of this slot in resolved query.
	NumBytes int64 `json:"numBytes,omitempty"`

	// Original: Part of input text, matched by that slot. In the case of
	// composite slots, each slot should have its own original.
	Original string `json:"original,omitempty"`

	// ParameterName: Name of parameter of this slot.
	ParameterName string `json:"parameterName,omitempty"`

	// SlotList: Represents a "list parameter". Each parameter may be
	// declared as a list and have multiple slot values, referenced by a
	// single alias. Each slot value in a list may contain multiple possible
	// values. For example: aqua return 3 dates if the year is not specified
	// in a query - one for the current year, one for the past year, and one
	// for the following year. If user defines a list parameter with type
	// @sys.date, and the query contains multiple dates - we should return a
	// list of possible values for each date from the query, i.e. it will be
	// a list of list of dates.
	SlotList *NlpSemanticParsingProtoActionsOnGoogleSlotList `json:"slotList,omitempty"`

	// SlotMap: Represents a structured value. Used in composite entities.
	// Composite entities can have arbitrary structure.
	SlotMap *NlpSemanticParsingProtoActionsOnGoogleSlotMap `json:"slotMap,omitempty"`

	// StartByte: Start byte position of this slot in resolved query.
	StartByte int64 `json:"startByte,omitempty"`

	// Value: One or more possible values. This field does not represent a
	// list parameter.
	Value *NlpSemanticParsingProtoActionsOnGoogleSlotValue `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleAogSlot) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleAogSlot
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleDateTime: Represents datetime.
// It can be @sys.date, @sys.time or, in some cases, @sys.date-time. Our
// platform doesn't track seconds, so this field is omitted. Number of
// seconds should be considered 0. Hour and minute can be 0 in case of
// dates. In case of time and dateTime, hours and minutes will represent
// actual time, even if both of them are 0.
type NlpSemanticParsingProtoActionsOnGoogleDateTime struct {
	// Date: Date value. Note, that month and day are 1 based. If this
	// DateTime is a PARTIAL datetime, then fields have value -1, which
	// means these fields are inferred rather than derived directly from
	// query.
	Date *GoogleTypeDate `json:"date,omitempty"`

	// Property: Property of this DateTime value that can be used to match
	// user specification of parameters, e.g. date.recent.
	Property *NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty `json:"property,omitempty"`

	// Time: Time value. Only hours and minutes are used. Hours are in 24h
	// format.
	Time *GoogleTypeTimeOfDay `json:"time,omitempty"`

	// TimeZone: Timezone field specified only if this DateTime has type
	// TIME or DATETIME.
	TimeZone *GoogleTypeTimeZone `json:"timeZone,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Date") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Date") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleDateTime
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty: Represents
// properties about a matched DateTime value. Will only be populated for
// @sys.date-time, @sys.date and @sys.time.
type NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty struct {
	// DatetimeType: Since datetime is a superset of date, time and
	// date&time, this field is used to indicate which type the associated
	// DateTime object belongs to.
	//
	// Possible values:
	//   "UNSPECIFIED_TYPE" - Default type.
	//   "DATE" - Date-only.
	//   "TIME" - Time-only.
	//   "DATETIME" - Date & time.
	DatetimeType string `json:"datetimeType,omitempty"`

	// RelativeDatetimeType: The relative relationship between this DateTime
	// value and DateTime&Timezone info provided in ClassifyRequest.
	//
	// Possible values:
	//   "UNSPECIFIED_RELATIVE_TYPE" - Default type.
	//   "RECENT" - date-time.recent
	//   "FUTURE_OR_NOW" - date-time
	//   "PARTIAL" - date-time.partial
	RelativeDatetimeType string `json:"relativeDatetimeType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DatetimeType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DatetimeType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleSlotList: Oneof doesn't allow
// list, this message is used to inject list as a possible value into
// Slot.
type NlpSemanticParsingProtoActionsOnGoogleSlotList struct {
	Slots []*NlpSemanticParsingProtoActionsOnGoogleAogSlot `json:"slots,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Slots") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Slots") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleSlotList) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleSlotList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleSlotMap: Oneof doesn't allow
// maps, this message is used to inject map as a possible value into
// Slot.
type NlpSemanticParsingProtoActionsOnGoogleSlotMap struct {
	Slots map[string]NlpSemanticParsingProtoActionsOnGoogleAogSlot `json:"slots,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Slots") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Slots") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleSlotMap) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleSlotMap
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleSlotValue: Contains one or more
// possible values.
type NlpSemanticParsingProtoActionsOnGoogleSlotValue struct {
	Values []*NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Values") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Values") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleSlotValue) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleSlotValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue:
// Represents an actual value.
type NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue struct {
	// DateTimeValue: Represents date or time.
	DateTimeValue *NlpSemanticParsingProtoActionsOnGoogleDateTime `json:"dateTimeValue,omitempty"`

	// StringValue: Represents a string value.
	StringValue string `json:"stringValue,omitempty"`

	// TypeValue: This field is only populated by on-device Heron. This
	// field should not be populated by any other service.
	TypeValue *NlpSemanticParsingProtoActionsOnGoogleTypedValue `json:"typeValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DateTimeValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DateTimeValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingProtoActionsOnGoogleTypedValue: Used by on-device
// Heron. Contains information about the type of slot value returned.
type NlpSemanticParsingProtoActionsOnGoogleTypedValue struct {
	// BoolValue: Represents a boolean value.
	BoolValue bool `json:"boolValue,omitempty"`

	// DateTimeValue: Represents date or time.
	DateTimeValue *NlpSemanticParsingProtoActionsOnGoogleDateTime `json:"dateTimeValue,omitempty"`

	// NumberValue: Represents number value. In accordance to ParamValue
	// fields(https://source.corp.google.com/piper///depot/google3/third_part
	// y/java_src/appactions/proto/app_actions_data.proto;rcl=431529042;l=12)
	NumberValue float64 `json:"numberValue,omitempty"`

	// StringValue: Represents a string value.
	StringValue string `json:"stringValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingProtoActionsOnGoogleTypedValue) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleTypedValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingProtoActionsOnGoogleTypedValue) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingProtoActionsOnGoogleTypedValue
	var s1 struct {
		NumberValue gensupport.JSONFloat64 `json:"numberValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NumberValue = float64(s1.NumberValue)
	return nil
}

// NlpSemanticParsingQRefAnnotation: The QRefAnnotator annotates spans
// of input with freebase-ids and collection-information. NEXT ID TO
// USE: 41
type NlpSemanticParsingQRefAnnotation struct {
	// AddedByCloseAnswers: Whether this qref annotation was created by
	// CloseAnswers on Postref. Annotations of this type don't correspond to
	// a particular mention of the entity on the query but rather to an
	// interpretation of the full query.
	AddedByCloseAnswers bool `json:"addedByCloseAnswers,omitempty"`

	// AnnotatedSpan: A copy of the span of canonical (raw) parser input
	// text corresponding to this annotation.
	AnnotatedSpan string `json:"annotatedSpan,omitempty"`

	// AttributeId: Attribute ID of a personal_summary_node_child.
	AttributeId string `json:"attributeId,omitempty"`

	// ClusterId: The ID of the cluster (set entity) this entity belongs to.
	ClusterId string `json:"clusterId,omitempty"`

	// ClusterSetScore: Cluster set qref confidence score.
	ClusterSetScore float64 `json:"clusterSetScore,omitempty"`

	// ClusterSiblingMid: The set of mids that are members of the same
	// cluster.
	ClusterSiblingMid []string `json:"clusterSiblingMid,omitempty"`

	CollectionMembership []*NlpSemanticParsingQRefAnnotationCollectionMembership `json:"collectionMembership,omitempty"`

	// ConfidenceScore: The confidence (in [0, 1]) of the entity being
	// correctly annotated.
	ConfidenceScore float64 `json:"confidenceScore,omitempty"`

	// DeprecatedEquivalentMids: DEPRECATED: Equivalent ids (e.g. de-duped
	// mids) for this entity.
	DeprecatedEquivalentMids []string `json:"deprecatedEquivalentMids,omitempty"`

	// DeprecatedMdvcSupportingMid: DEPRECATED: Higher level id's that
	// support the given id. This field has been deprecated in favor of
	// related_entity. b/27363861
	DeprecatedMdvcSupportingMid []string `json:"deprecatedMdvcSupportingMid,omitempty"`

	// DisplayName: Copy the display info. This can be used by annotators to
	// give grammars a canonical name for an entity. For instance, the media
	// grammar could use it to output the same canonical name for "rock
	// music" and "rock".
	DisplayName string `json:"displayName,omitempty"`

	// EntityNumber: The index of the entity from which this annotation is
	// obtained, within the WebrefEntities message in the interpretation
	// defined by interpretation_number, above.
	EntityNumber int64 `json:"entityNumber,omitempty"`

	// EntityRelationship: The relationship information from QRef. Only
	// included if the QRefAnnotator is initialised with
	// include_annotated_relationships.
	EntityRelationship []*NlpSemanticParsingQRefAnnotationEntityRelationship `json:"entityRelationship,omitempty"`

	// EntitySourceData: Holds information about the backends which
	// contributed to this entity.
	EntitySourceData *NlpSemanticParsingEntitySourceData `json:"entitySourceData,omitempty"`

	// FreebaseMid: The mid of the entity in freebase associated with this
	// span.
	FreebaseMid string `json:"freebaseMid,omitempty"`

	// GaiaId: The Gaia ID for this entity. This is populated generally for
	// people and businesses.
	GaiaId uint64 `json:"gaiaId,omitempty,string"`

	// GlobalProductClusterId: The shopping global product cluster id(s) of
	// the annotated entity (in KG, the key(s) of type
	// /business/variant_cluster).
	GlobalProductClusterId googleapi.Uint64s `json:"globalProductClusterId,omitempty"`

	// InterpretationNumber: The index of the QueryJoin interpretation from
	// which this annotation was obtained. This field is not used for
	// entities coming from low-confidence annotations, since such entities
	// are not included in any interpretation.
	InterpretationNumber int64 `json:"interpretationNumber,omitempty"`

	// IsMdvcDimension: True if this entity is an mdvc dimension of some
	// other annotated entity. Only included if the QRefAnnotator is
	// initialised with include_annotated_relationships.
	IsMdvcDimension bool `json:"isMdvcDimension,omitempty"`

	// IsNimbleAnnotation: Whether this annotation originates from nimble.
	// (go/nimble-annotator)
	IsNimbleAnnotation bool `json:"isNimbleAnnotation,omitempty"`

	// Location: The center point of this location. This is either directly
	// provided by the FeatureProto.center field or the centroid using the
	// points of the polygon in the FeatureProto.
	Location *GeostorePointProto `json:"location,omitempty"`

	// LocationType: The location type of the entity, as an int32
	// representing a TypeCategory enum value. For example, this could be
	// TYPE_LOCALITY (37) or TYPE_COUNTRY (33). We store this type as an int
	// because including FeatureProto would cause
	// java/com/google/ads/adh/pipeline/bigquery:ProtoCatalog to become too
	// large, resulting in OOM errors.
	LocationType int64 `json:"locationType,omitempty"`

	// LowConfidence: Whether this entity is low confidence. Not used.
	// Currently whitelisted entities below min_confidence threshold are
	// marked as low confidence and maybe not trusted by downstreams.
	LowConfidence bool `json:"lowConfidence,omitempty"`

	MatchedLightweightToken []*RepositoryWebrefLightweightTokensMatchedLightweightToken `json:"matchedLightweightToken,omitempty"`

	// MdvcChild: Nested annotations that represent subparts of the given
	// mdvc full annotation. An MDVC full annotation is outputted as the
	// summary node as the root node, and all the children of it as leaves
	// (mdvc_child). QRef outputs a graph of relationships between the mdvc
	// enties, and for mdvc full the aquatator nests the relevant children
	// inside the summary node's proto.
	MdvcChild []*NlpSemanticParsingQRefAnnotation `json:"mdvcChild,omitempty"`

	// MdvcVerticals: The set of verticals this summary node belongs to.
	MdvcVerticals []string `json:"mdvcVerticals,omitempty"`

	// MergedImpliedEntity: A list of any implied entities merged into this
	// annotation during parsing. Order is derivation-dependent.
	MergedImpliedEntity []*NlpSemanticParsingQRefAnnotation `json:"mergedImpliedEntity,omitempty"`

	MerlotCategory []*NlpSemanticParsingQRefAnnotationMerlotCategoryData `json:"merlotCategory,omitempty"`

	// OtherMetadata: Metadata to be passed through from the
	// AnnotationContext API.
	OtherMetadata *Proto2BridgeMessageSet `json:"otherMetadata,omitempty"`

	// OysterId: The geo oyster_id of the entity, relevant only for
	// locations. Only included if the QRefAnnotator is initialised with
	// include_oyster_id.
	OysterId *GeostoreFeatureIdProto `json:"oysterId,omitempty"`

	// PersonalSummaryNodeChild: Personal summary nodes are compound
	// entities made up of entities and their attributes, where the entities
	// can be compound too. E.g., "my father's mother" can have a summary
	// node annotation of "Mother(Father(Myself))".
	PersonalSummaryNodeChild []*NlpSemanticParsingQRefAnnotation `json:"personalSummaryNodeChild,omitempty"`

	// ProductLineId: The shopping product line id(s) of the annotated
	// /business/shopping_product_line entity.
	ProductLineId googleapi.Uint64s `json:"productLineId,omitempty"`

	// ReferenceScore: The confidence (in [0, 1]) that the annotation is
	// reference that implies another entity. (eg "my hotel" in "navigate to
	// my hotel" is reference to explicit hotel from user hotel
	// reservation).
	ReferenceScore float64 `json:"referenceScore,omitempty"`

	// RelatedEntity: Mids related to the given entity
	RelatedEntity []*NlpSemanticParsingRelatedEntity `json:"relatedEntity,omitempty"`

	// ResolutionScore: The confidence (in [0, 1]) that the annotation was
	// created on an implicit mention (eg my hotel) as opposed to an
	// explicit mention (eg: the westin copley square)
	ResolutionScore float64 `json:"resolutionScore,omitempty"`

	// SourceTypeList: If the annotation was created by using personal data,
	// we record the provenance for that data here.
	SourceTypeList *CopleySourceTypeList `json:"sourceTypeList,omitempty"`

	SubCluster []*NlpSemanticParsingQRefAnnotationSubCluster `json:"subCluster,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddedByCloseAnswers")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddedByCloseAnswers") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingQRefAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingQRefAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingQRefAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingQRefAnnotation
	var s1 struct {
		ClusterSetScore gensupport.JSONFloat64 `json:"clusterSetScore"`
		ConfidenceScore gensupport.JSONFloat64 `json:"confidenceScore"`
		ReferenceScore  gensupport.JSONFloat64 `json:"referenceScore"`
		ResolutionScore gensupport.JSONFloat64 `json:"resolutionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClusterSetScore = float64(s1.ClusterSetScore)
	s.ConfidenceScore = float64(s1.ConfidenceScore)
	s.ReferenceScore = float64(s1.ReferenceScore)
	s.ResolutionScore = float64(s1.ResolutionScore)
	return nil
}

type NlpSemanticParsingQRefAnnotationCollectionMembership struct {
	// CollectionId: Identifier of the collection. Usually something like
	// "/collection/us_states".
	CollectionId string `json:"collectionId,omitempty"`

	// CollectionScore: A value in [0, 1] indicating the relevance of the
	// collection given this entity. NOTE: This field is deprecated and will
	// stop being populated soon. In the meantime, it will always be
	// populated with 1.0.
	CollectionScore float64 `json:"collectionScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CollectionId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CollectionId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingQRefAnnotationCollectionMembership) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingQRefAnnotationCollectionMembership
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingQRefAnnotationCollectionMembership) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingQRefAnnotationCollectionMembership
	var s1 struct {
		CollectionScore gensupport.JSONFloat64 `json:"collectionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CollectionScore = float64(s1.CollectionScore)
	return nil
}

type NlpSemanticParsingQRefAnnotationEntityRelationship struct {
	// EntityIndex: The index of the other entity in the relationship.
	EntityIndex int64 `json:"entityIndex,omitempty"`

	// ImpliedBy: True if this entity is implied by the other (includes geo
	// contains).
	ImpliedBy bool `json:"impliedBy,omitempty"`

	// Implies: True if this entity implies the other (includes geo
	// contained by).
	Implies bool `json:"implies,omitempty"`

	// LinkPropertyName: Names of the relationship links.
	LinkPropertyName []string `json:"linkPropertyName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingQRefAnnotationEntityRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingQRefAnnotationEntityRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingQRefAnnotationMerlotCategoryData: Merlot category
// information. As of Sep2015, this is derived from collection
// membership, but as that information is planned for deprecation and
// may need to be replaced as a source for this data, it is extracted
// separately.
type NlpSemanticParsingQRefAnnotationMerlotCategoryData struct {
	CategoryId int64 `json:"categoryId,omitempty"`

	Confidence float64 `json:"confidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingQRefAnnotationMerlotCategoryData) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingQRefAnnotationMerlotCategoryData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingQRefAnnotationMerlotCategoryData) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingQRefAnnotationMerlotCategoryData
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// NlpSemanticParsingQRefAnnotationSubCluster: Keeps track of any
// individual clusters this mid is a member of. Cluster_id and
// cluster_sibling_mid stores the cluster all together, while the
// subcluster keeps track of each individual cluster information
// separately.
type NlpSemanticParsingQRefAnnotationSubCluster struct {
	ClusterId string `json:"clusterId,omitempty"`

	ClusterSetScore float64 `json:"clusterSetScore,omitempty"`

	ClusterSiblingMid []string `json:"clusterSiblingMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingQRefAnnotationSubCluster) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingQRefAnnotationSubCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingQRefAnnotationSubCluster) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingQRefAnnotationSubCluster
	var s1 struct {
		ClusterSetScore gensupport.JSONFloat64 `json:"clusterSetScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClusterSetScore = float64(s1.ClusterSetScore)
	return nil
}

// NlpSemanticParsingRelatedEntity: A message that stores relations
// between this annotation and another entity. Stores the mid and the
// kind of relationship. These links may be consumed downstream for
// various purposes, including support transfer and other business
// logic. An example is for the Honda Civic entity. It may have an
// mdvc_relation that is a generalization_of the 2015 Honda Civic
// entity. So the Honda Civic would have the following: RelatedEntity {
// mid = 2015 Honda Civic Mid mdvc_relation = GENERALIZATION_OF } It has
// no equivalent_relation because it is by default NO_EQUIVALENT. The
// Honda Civic entity might then have a separate relation to the Old
// Honda Civic entity, as they are considered the same entity, or the
// following relation: RelatedEntity { mid = Old Honda Civic Mid
// equivalent_relation = EQUIVALENT }
type NlpSemanticParsingRelatedEntity struct {
	// ClusterSupportTransferRelation: Denotes whether or not the related
	// entity is derived from cluster support transfer.
	//
	// Possible values:
	//   "NO_CLUSTER_SUPPORT" - Indicates the entity has not received
	// support from a MDVC.
	//   "CLUSTER_SUPPORT" - Indicates the entity has received support from
	// a MDVC.
	ClusterSupportTransferRelation string `json:"clusterSupportTransferRelation,omitempty"`

	// ComposedFromRelation: Denotes whether or not the related entity
	// composes a compound entity together with other related entities.
	//
	// Possible values:
	//   "NONE_COMPOSED_FROM" - Indicates the entity does not compose the
	// other entity.
	//   "COMPOSED_FROM" - Indicates the entity composes a compound entity.
	ComposedFromRelation string `json:"composedFromRelation,omitempty"`

	// EquivalentRelation: Whether or not the given mid is related to the
	// other mid. Equivalent mids are usually mutually exclusive with other
	// kinds of relations.
	//
	// Possible values:
	//   "NO_EQUIVALENT" - Not equivalent.
	//   "EQUIVALENT" - Equivalent to the other entity.
	//   "MUNIN_SYNONYM" - The related entity is a synonym added to Munin
	// interpretation.
	//   "SYNONYM" - The related entity is a synonym.
	EquivalentRelation string `json:"equivalentRelation,omitempty"`

	// MdvcRelation: The mdvc relation with the related mid.
	//
	// Possible values:
	//   "NO_MDVC" - Not an MDVC relation.
	//   "GENERALIZATION_OF" - This mid is a generalization of the other mid
	// (and the other mid is a specialization of this mid).
	//   "SPECIALIZATION_OF" - This mid is a specialization of the other mid
	// (and the other mid is a generalization of this mid).
	//   "HAS_DIMENSION_VALUE" - This mid has the other mid as a dimension
	// (or attribute) (and the other mid is a dimension of this mid)
	//   "IS_DIMENSION_OF" - This mid is a dimension (or attribute) of the
	// other mid (and the other mid has this mid as dimension).
	MdvcRelation string `json:"mdvcRelation,omitempty"`

	// Mid: Mid that is related.
	Mid string `json:"mid,omitempty"`

	// SupportTransferRelation: Denotes whether or not there was support
	// transfer between the two entities.
	//
	// Possible values:
	//   "NO_SUPPORT_TRANSFER" - No support transfer occurred.
	//   "SUPPORT_TRANSFER_TARGET" - We transferred support to this entity.
	//   "SUPPORT_TRANSFER_SOURCE" - We received support from this entity.
	//   "MENTION_TRANSFER_TARGET" - We transferred support for a mention to
	// this entity.
	//   "MENTION_TRANSFER_SOURCE" - We received support for a mention from
	// this entity.
	//   "SUPPORT_SHARE_TARGET" - We shared support with this entity.
	//   "SUPPORT_SHARE_SOURCE" - We received shared support from this
	// entity.
	SupportTransferRelation string `json:"supportTransferRelation,omitempty"`

	// TargetIsStbrSource: Set if the related entity is the source of an
	// STBR rule and the target is not this one.
	TargetIsStbrSource bool `json:"targetIsStbrSource,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClusterSupportTransferRelation") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ClusterSupportTransferRelation") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingRelatedEntity) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingRelatedEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingSaftCoreference: Identifies a coreference mention
// (pronoun or nominal) resolved to an entity.
type NlpSemanticParsingSaftCoreference struct {
	// Category: Categories can be either a $PronounMention or
	// $NominalMention.
	Category string `json:"category,omitempty"`

	// RawText: The substring of the raw query spanned by this annotation.
	RawText string `json:"rawText,omitempty"`

	// ReferentText: The name of the entity this mentions refers to.
	ReferentText string `json:"referentText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingSaftCoreference) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingSaftCoreference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingSaftMeasure: Identifies a measure, like '53 pounds'
// in a query.
type NlpSemanticParsingSaftMeasure struct {
	// Category: Defines the category of measure, like $Mass.
	Category string `json:"category,omitempty"`

	// RawText: The substring of the raw query spanned by this annotation.
	RawText string `json:"rawText,omitempty"`

	// Value: The numerical value of the measure.
	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingSaftMeasure) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingSaftMeasure
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *NlpSemanticParsingSaftMeasure) UnmarshalJSON(data []byte) error {
	type NoMethod NlpSemanticParsingSaftMeasure
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// NlpSemanticParsingSaftMentionAnnotation: SaftMentionAnnotation(s) are
// used to identify a sub-span of the input with some semantic
// relevance, for example PER (Person), LOC (Locations) or measure etc.
// Each SaftMentionAnnotation will have exactly one non-empty field.
type NlpSemanticParsingSaftMentionAnnotation struct {
	// Coreference: Annotations for spans that are resolved coreference
	// mentions.
	Coreference *NlpSemanticParsingSaftCoreference `json:"coreference,omitempty"`

	// Entity: Annotations for spans like "san francisco giants".
	Entity *NlpSemanticParsingSaftSpan `json:"entity,omitempty"`

	// Measure: Annotations for spans "53 pounds".
	Measure *NlpSemanticParsingSaftMeasure `json:"measure,omitempty"`

	// Title: Annotations for spans like "the president of the United
	// States".
	Title *NlpSemanticParsingSaftSpan `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Coreference") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Coreference") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingSaftMentionAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingSaftMentionAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlpSemanticParsingSaftSpan: The lowest common denominator of a SAFT
// annotation is simply the definition of some |category| for a sub-span
// of the |raw_text| of the query.
type NlpSemanticParsingSaftSpan struct {
	// Category: Categories can be either syntactic (NNS for
	// fine-grained-POS) or semantics ($Mass for measures).
	Category string `json:"category,omitempty"`

	// RawText: The substring of the raw query spanned by this annotation.
	RawText string `json:"rawText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlpSemanticParsingSaftSpan) MarshalJSON() ([]byte, error) {
	type NoMethod NlpSemanticParsingSaftSpan
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaByte: A single byte, such as that from a utf8-encoded
// character sequence.
type NlxDataSchemaByte struct {
	// Document: The document that contains this character.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Document") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Document") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaByte) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaByte
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaCharacter: A single Unicode character.
type NlxDataSchemaCharacter struct {
	// Document: The document that contains this character.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// Paragraph: The paragraph that contains this character.
	Paragraph *MultiscalePointerIndex `json:"paragraph,omitempty"`

	// Sentence: The sentence that contains this character.
	Sentence *MultiscalePointerIndex `json:"sentence,omitempty"`

	// Text: The character itself. Must contain valid UTF-8. Must be exactly
	// one Unicode character.
	Text string `json:"text,omitempty"`

	// Token: The token that contains this character.
	Token *MultiscalePointerIndex `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Document") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Document") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaCharacter) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaCharacter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaDocument: A single document.
type NlxDataSchemaDocument struct {
	// Author: The author(s) of this document.
	Author []*MultiscalePointerIndex `json:"author,omitempty"`

	// Bytes: The bytes in this document.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Characters: The characters in this document.
	Characters *MultiscalePointerSpan `json:"characters,omitempty"`

	// Id: The identifier of this document.
	Id string `json:"id,omitempty"`

	// LanguageCode: A set of BCP-47 codes indicating the language(s) of
	// this document.
	LanguageCode []string `json:"languageCode,omitempty"`

	// LanguageSpans: The language spans in this document.
	LanguageSpans *MultiscalePointerSpan `json:"languageSpans,omitempty"`

	// Mentions: The mentions in this document.
	Mentions *MultiscalePointerSpan `json:"mentions,omitempty"`

	// Paragraphs: The paragraphs in this document.
	Paragraphs *MultiscalePointerSpan `json:"paragraphs,omitempty"`

	// Sentences: The sentences in this document.
	Sentences *MultiscalePointerSpan `json:"sentences,omitempty"`

	// Text: The text of this document. Must contain valid UTF-8.
	Text string `json:"text,omitempty"`

	// Tokens: The tokens in this document.
	Tokens *MultiscalePointerSpan `json:"tokens,omitempty"`

	// Url: The url of this document.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Author") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Author") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaDocument) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaEntity: An entity, which may occur multiple times in the
// text.
type NlxDataSchemaEntity struct {
	// Gender: Entity gender. Default label set is 'masculine', 'feminine',
	// or 'neuter'. (Perhaps in the future we can split 'neuter' into
	// 'inanimate', 'unknown', and 'non-binary'.)
	Gender string `json:"gender,omitempty"`

	// Mid: Machine identifier, such as those from the Freebase database (or
	// similar entity database).
	Mid string `json:"mid,omitempty"`

	// Name: Free-form entity name.
	Name string `json:"name,omitempty"`

	// Type: Entity type, typically something like
	// person/location/organization. The schema for types is not specified.
	// If this entity has a MID, use the mid field instead or in conjunction
	// with the type.
	Type []string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Gender") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Gender") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaEntity) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaLanguageSpan: A span of text that is written using a
// specified language (or languages). language_spans do not need to
// cover all of the characters in a text -- in particular, some pieces
// of text may not use any language. Depending on the model used to
// generate them, multilingual text can be encoded using overlapping or
// non- overlapping language_spans; and using one or multiple
// language_codes per language_span.
type NlxDataSchemaLanguageSpan struct {
	// Bytes: The bytes in this span.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Characters: The characters in this span.
	Characters *MultiscalePointerSpan `json:"characters,omitempty"`

	// Document: The document that contains this span.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// LanguageCode: A set of BCP-47 codes indicating the language(s) of
	// this span of text.
	LanguageCode []string `json:"languageCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bytes") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaLanguageSpan) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaLanguageSpan
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaMention: A mention of an entity. A single entity might
// be mentioned multiple times.
type NlxDataSchemaMention struct {
	// Bytes: The bytes in this mention.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Document: The document that contains this mention.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// Entity: The entity that this mention refers to.
	Entity *MultiscalePointerIndex `json:"entity,omitempty"`

	// Kind: Mention kind, typically 'referential', 'attributive', or
	// 'modifier'.
	Kind string `json:"kind,omitempty"`

	// Text: The mention text itself. Must contain valid UTF-8.
	Text string `json:"text,omitempty"`

	// Tokens: The token(s) in this mention. This may not be present, or
	// have zero length if representing an implicit mention, as in the
	// prodrop case.
	Tokens *MultiscalePointerSpan `json:"tokens,omitempty"`

	// Type: Mention type, typically 'named' (for name mentions) or
	// 'nominal'. More types include 'pronominal', 'conjoined' for conjoined
	// mention construction, and 'non-referential' for non-referential
	// pronoun mentions.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bytes") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaMention) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaParagraph: A single paragraph.
type NlxDataSchemaParagraph struct {
	// Bytes: The bytes in this paragraph.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Characters: The characters in this paragraph.
	Characters *MultiscalePointerSpan `json:"characters,omitempty"`

	// Document: The document that contains this paragraph.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// Sentences: The sentences in this paragraph.
	Sentences *MultiscalePointerSpan `json:"sentences,omitempty"`

	// Text: The text of this paragraph. Must contain valid UTF-8.
	Text string `json:"text,omitempty"`

	// Tokens: The tokens in this paragraph.
	Tokens *MultiscalePointerSpan `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bytes") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaParagraph) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaParagraph
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaScaleSet: Standard NLX data schema.
type NlxDataSchemaScaleSet struct {
	Byte []*NlxDataSchemaByte `json:"byte,omitempty"`

	// ByteDocumentPresence: Metadata for which layer (scale) fields are
	// present. WARNING: CURRENT USAGE IS AD HOC, DO NOT RELY ON THESE BEING
	// POPULATED CORRECTLY. This should improve in v2.
	ByteDocumentPresence *MultiscaleFieldPresence `json:"byteDocumentPresence,omitempty"`

	// BytePresence: Metadata for which layers (scales) are present.
	// WARNING: CURRENT USAGE IS AD HOC, DO NOT RELY ON THESE BEING
	// POPULATED CORRECTLY. This should improve in v2.
	BytePresence *MultiscaleLayerPresence `json:"bytePresence,omitempty"`

	Character []*NlxDataSchemaCharacter `json:"character,omitempty"`

	CharacterDocumentPresence *MultiscaleFieldPresence `json:"characterDocumentPresence,omitempty"`

	CharacterParagraphPresence *MultiscaleFieldPresence `json:"characterParagraphPresence,omitempty"`

	CharacterPresence *MultiscaleLayerPresence `json:"characterPresence,omitempty"`

	CharacterSentencePresence *MultiscaleFieldPresence `json:"characterSentencePresence,omitempty"`

	CharacterTextPresence *MultiscaleFieldPresence `json:"characterTextPresence,omitempty"`

	CharacterTokenPresence *MultiscaleFieldPresence `json:"characterTokenPresence,omitempty"`

	Document []*NlxDataSchemaDocument `json:"document,omitempty"`

	DocumentAuthorPresence *MultiscaleFieldPresence `json:"documentAuthorPresence,omitempty"`

	DocumentBytesPresence *MultiscaleFieldPresence `json:"documentBytesPresence,omitempty"`

	DocumentCharactersPresence *MultiscaleFieldPresence `json:"documentCharactersPresence,omitempty"`

	DocumentIdPresence *MultiscaleFieldPresence `json:"documentIdPresence,omitempty"`

	DocumentLanguageCodePresence *MultiscaleFieldPresence `json:"documentLanguageCodePresence,omitempty"`

	DocumentLanguageSpansPresence *MultiscaleFieldPresence `json:"documentLanguageSpansPresence,omitempty"`

	DocumentMentionsPresence *MultiscaleFieldPresence `json:"documentMentionsPresence,omitempty"`

	DocumentParagraphsPresence *MultiscaleFieldPresence `json:"documentParagraphsPresence,omitempty"`

	DocumentPresence *MultiscaleLayerPresence `json:"documentPresence,omitempty"`

	DocumentSentencesPresence *MultiscaleFieldPresence `json:"documentSentencesPresence,omitempty"`

	DocumentTextPresence *MultiscaleFieldPresence `json:"documentTextPresence,omitempty"`

	DocumentTokensPresence *MultiscaleFieldPresence `json:"documentTokensPresence,omitempty"`

	DocumentUrlPresence *MultiscaleFieldPresence `json:"documentUrlPresence,omitempty"`

	Entity []*NlxDataSchemaEntity `json:"entity,omitempty"`

	EntityGenderPresence *MultiscaleFieldPresence `json:"entityGenderPresence,omitempty"`

	EntityMidPresence *MultiscaleFieldPresence `json:"entityMidPresence,omitempty"`

	EntityNamePresence *MultiscaleFieldPresence `json:"entityNamePresence,omitempty"`

	EntityPresence *MultiscaleLayerPresence `json:"entityPresence,omitempty"`

	EntityTypePresence *MultiscaleFieldPresence `json:"entityTypePresence,omitempty"`

	LanguageSpan []*NlxDataSchemaLanguageSpan `json:"languageSpan,omitempty"`

	LanguageSpanBytesPresence *MultiscaleFieldPresence `json:"languageSpanBytesPresence,omitempty"`

	LanguageSpanCharactersPresence *MultiscaleFieldPresence `json:"languageSpanCharactersPresence,omitempty"`

	LanguageSpanDocumentPresence *MultiscaleFieldPresence `json:"languageSpanDocumentPresence,omitempty"`

	LanguageSpanLanguageCodePresence *MultiscaleFieldPresence `json:"languageSpanLanguageCodePresence,omitempty"`

	LanguageSpanPresence *MultiscaleLayerPresence `json:"languageSpanPresence,omitempty"`

	Mention []*NlxDataSchemaMention `json:"mention,omitempty"`

	MentionBytesPresence *MultiscaleFieldPresence `json:"mentionBytesPresence,omitempty"`

	MentionDocumentPresence *MultiscaleFieldPresence `json:"mentionDocumentPresence,omitempty"`

	MentionEntityPresence *MultiscaleFieldPresence `json:"mentionEntityPresence,omitempty"`

	MentionKindPresence *MultiscaleFieldPresence `json:"mentionKindPresence,omitempty"`

	MentionPresence *MultiscaleLayerPresence `json:"mentionPresence,omitempty"`

	MentionTextPresence *MultiscaleFieldPresence `json:"mentionTextPresence,omitempty"`

	MentionTokensPresence *MultiscaleFieldPresence `json:"mentionTokensPresence,omitempty"`

	MentionTypePresence *MultiscaleFieldPresence `json:"mentionTypePresence,omitempty"`

	Paragraph []*NlxDataSchemaParagraph `json:"paragraph,omitempty"`

	ParagraphBytesPresence *MultiscaleFieldPresence `json:"paragraphBytesPresence,omitempty"`

	ParagraphCharactersPresence *MultiscaleFieldPresence `json:"paragraphCharactersPresence,omitempty"`

	ParagraphDocumentPresence *MultiscaleFieldPresence `json:"paragraphDocumentPresence,omitempty"`

	ParagraphPresence *MultiscaleLayerPresence `json:"paragraphPresence,omitempty"`

	ParagraphSentencesPresence *MultiscaleFieldPresence `json:"paragraphSentencesPresence,omitempty"`

	ParagraphTextPresence *MultiscaleFieldPresence `json:"paragraphTextPresence,omitempty"`

	ParagraphTokensPresence *MultiscaleFieldPresence `json:"paragraphTokensPresence,omitempty"`

	Sentence []*NlxDataSchemaSentence `json:"sentence,omitempty"`

	SentenceBytesPresence *MultiscaleFieldPresence `json:"sentenceBytesPresence,omitempty"`

	SentenceCharactersPresence *MultiscaleFieldPresence `json:"sentenceCharactersPresence,omitempty"`

	SentenceDocumentPresence *MultiscaleFieldPresence `json:"sentenceDocumentPresence,omitempty"`

	SentenceParagraphPresence *MultiscaleFieldPresence `json:"sentenceParagraphPresence,omitempty"`

	SentencePresence *MultiscaleLayerPresence `json:"sentencePresence,omitempty"`

	SentenceTextPresence *MultiscaleFieldPresence `json:"sentenceTextPresence,omitempty"`

	SentenceTokensPresence *MultiscaleFieldPresence `json:"sentenceTokensPresence,omitempty"`

	Token []*NlxDataSchemaToken `json:"token,omitempty"`

	TokenBytesPresence *MultiscaleFieldPresence `json:"tokenBytesPresence,omitempty"`

	TokenCharactersPresence *MultiscaleFieldPresence `json:"tokenCharactersPresence,omitempty"`

	TokenDependencyHeadPresence *MultiscaleFieldPresence `json:"tokenDependencyHeadPresence,omitempty"`

	TokenDependencyLabelPresence *MultiscaleFieldPresence `json:"tokenDependencyLabelPresence,omitempty"`

	TokenDependencyPresence *MultiscaleFieldPresence `json:"tokenDependencyPresence,omitempty"`

	TokenDocumentPresence *MultiscaleFieldPresence `json:"tokenDocumentPresence,omitempty"`

	TokenParagraphPresence *MultiscaleFieldPresence `json:"tokenParagraphPresence,omitempty"`

	TokenPosPresence *MultiscaleFieldPresence `json:"tokenPosPresence,omitempty"`

	TokenPresence *MultiscaleLayerPresence `json:"tokenPresence,omitempty"`

	TokenSentencePresence *MultiscaleFieldPresence `json:"tokenSentencePresence,omitempty"`

	TokenTextPresence *MultiscaleFieldPresence `json:"tokenTextPresence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Byte") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Byte") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaScaleSet) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaScaleSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaSentence: A single sentence or utterance.
type NlxDataSchemaSentence struct {
	// Bytes: The bytes in this sentence.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Characters: The characters in this sentence.
	Characters *MultiscalePointerSpan `json:"characters,omitempty"`

	// Document: The document that contains this sentence.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// Paragraph: The paragraph that contains this sentence.
	Paragraph *MultiscalePointerIndex `json:"paragraph,omitempty"`

	// Text: The text of this sentence. Must contain valid UTF-8.
	Text string `json:"text,omitempty"`

	// Tokens: The tokens in this sentence.
	Tokens *MultiscalePointerSpan `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bytes") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaSentence) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaSentence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaToken: A word, punctuation mark, or other small piece of
// text.
type NlxDataSchemaToken struct {
	// Bytes: The bytes in this token.
	Bytes *MultiscalePointerSpan `json:"bytes,omitempty"`

	// Characters: The characters in this token.
	Characters *MultiscalePointerSpan `json:"characters,omitempty"`

	// Dependency: DEPRECATED: PLEASE USE dependency_head AND
	// dependency_label FIELDS. One edge of the dependency parse.
	Dependency *NlxDataSchemaTokenDependencyEdge `json:"dependency,omitempty"`

	// DependencyHead: The head of this token. By default, the root of the
	// sentence is its own head; it should also have deprel as 'root'.
	DependencyHead *MultiscalePointerIndex `json:"dependencyHead,omitempty"`

	// DependencyLabel: Relation label for this dependency. Generally this
	// should be using the Universal Dependencies label format, using
	// fine-grained labels like nsubj:pass.
	DependencyLabel string `json:"dependencyLabel,omitempty"`

	// Document: The document that contains this token.
	Document *MultiscalePointerIndex `json:"document,omitempty"`

	// Paragraph: The paragraph that contains this token.
	Paragraph *MultiscalePointerIndex `json:"paragraph,omitempty"`

	// Pos: Coarse part-of-speech tag.
	Pos string `json:"pos,omitempty"`

	// Sentence: The sentence that contains this token.
	Sentence *MultiscalePointerIndex `json:"sentence,omitempty"`

	// Text: The text of this token. Must contain valid UTF-8.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bytes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bytes") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaToken) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// NlxDataSchemaTokenDependencyEdge: DEPRECATED: PLEASE USE
// dependency_head AND dependency_label FIELDS. One edge of the
// dependency parse.
type NlxDataSchemaTokenDependencyEdge struct {
	// Deprel: Relation label for this dependency. Generally this should be
	// using the Universal Dependencies label format, using fine- grained
	// labels like nsubj:pass.
	Deprel string `json:"deprel,omitempty"`

	// Head: The head of this token. By default, the root of the sentence is
	// its own head; it should also have deprel as 'root'.
	Head *MultiscalePointerIndex `json:"head,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Deprel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Deprel") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *NlxDataSchemaTokenDependencyEdge) MarshalJSON() ([]byte, error) {
	type NoMethod NlxDataSchemaTokenDependencyEdge
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDataDocinfoWoodwingItemMetadata: Metadata describing an 'item'
// (article) in a Woodwing file.
type OceanDataDocinfoWoodwingItemMetadata struct {
	Author string `json:"author,omitempty"`

	Category string `json:"category,omitempty"`

	Description string `json:"description,omitempty"`

	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Author") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Author") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDataDocinfoWoodwingItemMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDataDocinfoWoodwingItemMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocInfo: Ocean data in docserver results (whole documents)
type OceanDocInfo struct {
	// DocTag: data returned with search docresults (snippets)
	DocTag *OceanDocTag `json:"docTag,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocTag") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocTag") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocInfo) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTag: ============> Next available number: 102 (ksridhara)
// <================
type OceanDocTag struct {
	// DEPRECATEDApplicationDate: this is in ONIX format.
	DEPRECATEDApplicationDate string `json:"DEPRECATEDApplicationDate,omitempty"`

	// DEPRECATEDIssueDate: this is in ONIX format.
	DEPRECATEDIssueDate string `json:"DEPRECATEDIssueDate,omitempty"`

	DEPRECATEDPatentAssignee string `json:"DEPRECATEDPatentAssignee,omitempty"`

	// DEPRECATEDPatentNumber: patent-specific fields. ALL DEPRECATED, moved
	// into PatentSpecific group, above.
	DEPRECATEDPatentNumber string `json:"DEPRECATEDPatentNumber,omitempty"`

	// DEPRECATEDPublisherPercentVisible: Percent rights granted by
	// publisher. This should only be set, and definitely should only be
	// considered, if source_type == BoundVolumeSource::PUBLISHER. '0' may
	// mean we have no info on publisher rights so we have to just assume
	// 0%. Deprecated as this is taken into account by viewability
	DEPRECATEDPublisherPercentVisible int64 `json:"DEPRECATEDPublisherPercentVisible,omitempty"`

	// Authors: TODO(leonid) Deprecate these Authors string for front end.
	Authors string `json:"authors,omitempty"`

	// AvailableDownloads: A bitmap containing all available download
	// formats (values defined in AvaialableDownloadFormats enum) NOTE: Only
	// populated for Volume level docs
	AvailableDownloads int64 `json:"availableDownloads,omitempty"`

	BlockSnippet bool `json:"blockSnippet,omitempty"`

	Bookspecific *OceanDocTagBookSpecific `json:"bookspecific,omitempty"`

	Catalogspecific *OceanDocTagCatalogSpecific `json:"catalogspecific,omitempty"`

	// ContentType: The content type of the document. See
	// BoundVolumeSource::ContentType in ocean/data/volume_types.protodevel
	// for possible values.
	ContentType int64 `json:"contentType,omitempty"`

	Contributor []*OceanDocTagContributor `json:"contributor,omitempty"`

	// CoverPage: cover page (PrintedAsSeen string), to generate results
	// snippet thumbnail image urls
	CoverPage string `json:"coverPage,omitempty"`

	// CoverPageSize: The size (in pixels) of the full-resolution clean
	// images used for the cover page. The width and height will be zero if
	// no image for that page.
	CoverPageSize *OceanImageSize `json:"coverPageSize,omitempty"`

	// Editors: Editors string for front end.
	Editors string `json:"editors,omitempty"`

	EncryptedExpressionId string `json:"encryptedExpressionId,omitempty"`

	EncryptedVolumeId string `json:"encryptedVolumeId,omitempty"`

	// GeoRestrict: DEPRECATED! Being replaced in favor of viewability,
	// below. geo restrict info (from OceanRights::geo_restrict) In CAv2:
	// geo restrict info (from ocean::VolumeImprintRights::geo_restrict)
	GeoRestrict []string `json:"geoRestrict,omitempty"`

	// GoodTextDetail: Text quality as defined in
	// CA_VolumeScoreResult::OACapabilities::TextQualityAssessment Note -
	// This is only populated if good_text() and is_ge_quality() are true
	GoodTextDetail int64 `json:"goodTextDetail,omitempty"`

	// GrantableLocale: List of locales for which this book can be bought
	// from a publisher, and read as a Google eBook. Each locale is a
	// lowercase, two-letter country-code (eg "ca"), and is copied from
	// PublisherGrantability.Locale.locale, defined in
	// ocean/data/docinfo/volume_viewability.proto.
	GrantableLocale []string `json:"grantableLocale,omitempty"`

	// IsGeQuality: Set to true if volume has ge quality
	IsGeQuality bool `json:"isGeQuality,omitempty"`

	// IsLandingPage: whether this a landing page chosen at indexing time.
	IsLandingPage bool `json:"isLandingPage,omitempty"`

	Magazinespecific *OceanDocTagMagazineSpecific `json:"magazinespecific,omitempty"`

	// MetadataCoverExists: metadata_cover_exists will be set if there's a
	// metadata-provided cover thumbnail. the thumbnail will be used for
	// scanless books or when a scanned book is in metadata-only view.
	MetadataCoverExists bool `json:"metadataCoverExists,omitempty"`

	// MetadataCoverSize: The size (in pixels) of the metadata cover image.
	MetadataCoverSize *OceanImageSize `json:"metadataCoverSize,omitempty"`

	Newspaperspecific *OceanDocTagNewspaperSpecific `json:"newspaperspecific,omitempty"`

	// NumPages: Number of pages in this volume (usually as specified in
	// metadata)
	NumPages int64 `json:"numPages,omitempty"`

	// ObjectionableContentBitmap: A bitmap indicating whether content may
	// be objectionable NOTE: Only populated for volume level docs
	ObjectionableContentBitmap int64 `json:"objectionableContentBitmap,omitempty"`

	// PageNumber: page_number of the page (OceanTypes::PageNumberType) In
	// CAv2: page_number of the page ocean::PageNumber::T
	PageNumber int64 `json:"pageNumber,omitempty"`

	// Pageid: pageid of the page (OceanTypes::PageIdType)
	Pageid int64 `json:"pageid,omitempty"`

	// Pagerank: the page rank value of the book page
	Pagerank float64 `json:"pagerank,omitempty"`

	Patentspecific *OceanDocTagPatentSpecific `json:"patentspecific,omitempty"`

	// Price: Price information for a volume (per locale). Note existence of
	// a price for a locale implies that the book is sellable for that
	// locale.
	Price *OceanGEPrice `json:"price,omitempty"`

	// PrintedPageNumber: printed page number (OceanPrintedPageNumber; from
	// OceanPageInfoMap::Page::printed_page_number)
	PrintedPageNumber string `json:"printedPageNumber,omitempty"`

	// RefPageUrl: the URL of the reference page (About this book)
	RefPageUrl string `json:"refPageUrl,omitempty"`

	// SearchInBookUrl: the URL for the "search in book"
	SearchInBookUrl string `json:"searchInBookUrl,omitempty"`

	SegmentTime int64 `json:"segmentTime,omitempty"`

	// SourceType: The source type of the document. See
	// BoundVolumeSource::SourceType in ocean/data/volume_types.protodevel
	// for possible values.
	SourceType int64 `json:"sourceType,omitempty"`

	// StructuredPageNumber: In CAv2 only: structured page number (printed
	// number as we understand it) (result of
	// ocean::StructuredPageNumberProto::AppendToString)
	StructuredPageNumber string `json:"structuredPageNumber,omitempty"`

	// SubTitle: Sub title string for front end
	SubTitle string `json:"subTitle,omitempty"`

	// SubjectBitmap: Bitmap indicating top-level subjects associated with
	// this document. See ocean/metadata/subjects/util.h for more detail.
	SubjectBitmap string `json:"subjectBitmap,omitempty"`

	// ThumbnailUrl: the URL of the cover page.
	ThumbnailUrl string `json:"thumbnailUrl,omitempty"`

	// Title: Title string for front end.
	Title string `json:"title,omitempty"`

	// UrlKey: Bibkey to be used as part of the URL (to make them persistent
	// in some sense). This is obtained by doing a GetURLKey() on the
	// bibdata which returns the main bibkey associated with the volume
	// based on priority. This is parseable into an OceanVolumeBibKey
	// (ocean/metadata/bibkeys.h) Note: This should ideally be a required
	// field longer term but for now keeping it optional for compatibility.
	// In case of this being absent, we don't include the key in the URL
	// (just use volumeId as before). Note: For content type books, this key
	// is supplemented by other bibkeys for this volumes(the field is
	// aux_bibkeys)
	UrlKey string `json:"urlKey,omitempty"`

	// UsingActualCover: using_actual_cover will be set if we are using the
	// actual cover of the book (instead of the table of content, etc.).
	// This is particularly useful to identify books where we inserted a
	// generated cover via Coverups.
	UsingActualCover bool `json:"usingActualCover,omitempty"`

	// Viewability: Volume viewability, which defines how/if the volume
	// should be displayed in various locales.
	Viewability *OceanVolumeViewability `json:"viewability,omitempty"`

	VolumeType int64 `json:"volumeType,omitempty"`

	// VolumeVersion: The version of the volume (serialized form). ONLY
	// populated for Volume level docs
	VolumeVersion string `json:"volumeVersion,omitempty"`

	Workcluster *OceanDocTagWorkCluster `json:"workcluster,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDApplicationDate") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DEPRECATEDApplicationDate") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTag) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTag
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *OceanDocTag) UnmarshalJSON(data []byte) error {
	type NoMethod OceanDocTag
	var s1 struct {
		Pagerank gensupport.JSONFloat64 `json:"pagerank"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Pagerank = float64(s1.Pagerank)
	return nil
}

// OceanDocTagBookSpecific: Book specific fields.
type OceanDocTagBookSpecific struct {
	// AuxBibkeys: These are other bibkeys for this book beside the url_key,
	// which is the primary key. For example, a book may have ISBN, OCLC num
	// etc. In that case ISBN is the url_key and the OCLC number is the
	// auxillary bibkey. The aux_bibkeys should have the same form as the
	// url_key
	AuxBibkeys []string `json:"auxBibkeys,omitempty"`

	Imprint string `json:"imprint,omitempty"`

	NumRatingHalfStars int64 `json:"numRatingHalfStars,omitempty"`

	Numberingrange []*OceanDocTagBookSpecificNumberingRange `json:"numberingrange,omitempty"`

	// PartnerId: publisher id, if available
	PartnerId int64 `json:"partnerId,omitempty,string"`

	// ProductEditionNumber: Set if the book is one of several editions or
	// versions. Used by OFE to show numbered editions. The value is copied
	// from clustering information. See also
	// ocean/metadata/proto/bibdata_components.proto The value there is from
	// metadata records by ocean/metadata/parsing/parse_utils.cc, and is a
	// 1-based value.
	ProductEditionNumber int64 `json:"productEditionNumber,omitempty"`

	// PublicationDate: In the format yyyy.mm.dd, or possibly just yyyy.
	PublicationDate string `json:"publicationDate,omitempty"`

	PublisherName string `json:"publisherName,omitempty"`

	// Subject: Subject (from Bisac)
	Subject string `json:"subject,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuxBibkeys") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuxBibkeys") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagBookSpecific) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagBookSpecific
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagBookSpecificNumberingRange: These are copies of
// MetadataNumberingRange's from ocean/metadata/metadata_range.proto.
// They should be used for rendering volume numbering information in
// search results (as this protobuf is the only piece of data available
// at that point). The numbering can look like "Volume 1" or "Parts A-D"
// Schema is volume/part/etc, type arabic number/roman number/letter/etc
// (these are both enums from ocean/metadata/metadata_enums.proto). In
// most cases there is only one numbering range (e.g. "Volume 1, Issue
// 2"), but in general the ranges may be disjoint (e.g. "Volumes 2, 3
// and 7")
type OceanDocTagBookSpecificNumberingRange struct {
	EndNumbering googleapi.Int64s `json:"endNumbering,omitempty"`

	NumberType []int64 `json:"numberType,omitempty"`

	NumberingSchema []int64 `json:"numberingSchema,omitempty"`

	StartNumbering googleapi.Int64s `json:"startNumbering,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndNumbering") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndNumbering") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagBookSpecificNumberingRange) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagBookSpecificNumberingRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagCatalogSpecific: catalog-specific fields.
type OceanDocTagCatalogSpecific struct {
	// Latest: Is this the latest issue of this catalog series? This is
	// required to filter results if the latest restrict is on.
	Latest bool `json:"latest,omitempty"`

	// PublicationDate: time_t date corresponding to the catalog publication
	// date. Approximate when the catalog does not have an exact "date" of
	// publication, e.g. For "Spring 2002", year, month and day are 2002, 03
	// and 21, respectivley. This value is used to compare catalog issues to
	// determine the latest. The value is stored in seconds-since-epoch,
	// 1/1/1970. This is not a problem for catalogs because we are not
	// dealing with any catalogs from before the 70's.
	PublicationDate int64 `json:"publicationDate,omitempty"`

	// PublicationTimeToDisplay: String to be displayed as catalog
	// publication time, e.g. "Spring 2002".
	PublicationTimeToDisplay string `json:"publicationTimeToDisplay,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Latest") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Latest") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagCatalogSpecific) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagCatalogSpecific
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagContributor: The composite descriptor of the contributors
// that should be known to search and front end. Both fields are
// required. Replaces authors and editors strings.
type OceanDocTagContributor struct {
	Name string `json:"name,omitempty"`

	// Type: ContributionType enum from ocean/metadata/metadata_enums.proto
	// Note that we pick only the "highest-ranking" contribution (i.e.
	// writer and editor would collapse to "writer".
	Type int64 `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagContributor) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagContributor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagMagazineSpecific: Magazine-specific fields. See
// https://www.corp.google.com/eng/designdocs/scanning/magazines/designdoc.html
// for magazine design doc.
type OceanDocTagMagazineSpecific struct {
	// DisplayDate: A human-readable date for display in the UI. Unlike
	// "publication_date_" above, this should not be parsed into structured
	// data, but should only be displayed as is.
	DisplayDate string `json:"displayDate,omitempty"`

	// IssueDescription: Description specific to a magazine issue, such as
	// featured articles and article summaries.
	IssueDescription string `json:"issueDescription,omitempty"`

	IssueEnd int64 `json:"issueEnd,omitempty"`

	IssueStart int64 `json:"issueStart,omitempty"`

	// Item: Items within a magazine issue.
	Item []*OceanDataDocinfoWoodwingItemMetadata `json:"item,omitempty"`

	OtherNumberingEnd int64 `json:"otherNumberingEnd,omitempty"`

	// OtherNumberingSchema: NOTE: These should to be values from
	// MetadataNumberingSchema; when this becomes a proto2, we can use
	// MetadataEnums values.
	OtherNumberingSchema int64 `json:"otherNumberingSchema,omitempty"`

	// OtherNumberingStart: For season or quarter dates.
	OtherNumberingStart int64 `json:"otherNumberingStart,omitempty"`

	// PageToItem: For each page of a magazine, maps to the item index of
	// "item".
	PageToItem []int64 `json:"pageToItem,omitempty"`

	PublicationDateEnd string `json:"publicationDateEnd,omitempty"`

	PublicationDateStart string `json:"publicationDateStart,omitempty"`

	// SerialTitle: This is used to render the metadata line of the snippet
	// and should be present in all magazine documents.
	SerialTitle string `json:"serialTitle,omitempty"`

	SerialVolumeid int64 `json:"serialVolumeid,omitempty,string"`

	Volume int64 `json:"volume,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayDate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagMagazineSpecific) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagMagazineSpecific
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagNewspaperSpecific: Newspaper-specific fields.
type OceanDocTagNewspaperSpecific struct {
	// ArticleRollCoords: Newspaper Article Roll Coordinates used to figure
	// out the location of the article wrt the page. It is of the form x,y.
	ArticleRollCoords string `json:"articleRollCoords,omitempty"`

	// NewspaperDate: Atlantis specific. Deprecated.
	NewspaperDate float64 `json:"newspaperDate,omitempty"`

	NewspaperName string `json:"newspaperName,omitempty"`

	// NewspaperUrl: Atlantis specific. Deprecated.
	NewspaperUrl string `json:"newspaperUrl,omitempty"`

	// PublicationDate: These fields are only populated for Santorini
	// (newspapers on goovols) formatted newspapers, not for Atlantis:
	// YYYY.MM.DD format.
	PublicationDate string `json:"publicationDate,omitempty"`

	// Publisher: Atlantis specific. Deprecated.
	Publisher string `json:"publisher,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArticleRollCoords")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArticleRollCoords") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagNewspaperSpecific) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagNewspaperSpecific
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *OceanDocTagNewspaperSpecific) UnmarshalJSON(data []byte) error {
	type NoMethod OceanDocTagNewspaperSpecific
	var s1 struct {
		NewspaperDate gensupport.JSONFloat64 `json:"newspaperDate"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NewspaperDate = float64(s1.NewspaperDate)
	return nil
}

// OceanDocTagPatentSpecific: Patent specific fields. Currently empty,
// but need to move the fields below into here at a later date
type OceanDocTagPatentSpecific struct {
	// ApplicationDate: this is in ONIX format.
	ApplicationDate string `json:"applicationDate,omitempty"`

	// ContentLanguage: 2-letter language of the document such as "en" or
	// "fr" This field was created for plumbing in the OFE API intl patent
	// flow, and is probably not otherwise filled in.
	ContentLanguage string `json:"contentLanguage,omitempty"`

	DocType int64 `json:"docType,omitempty"`

	// DocumentNumber: Just the number, no bibkey prefix. Called 'doc
	// number' b/c it could be patent number for patents, application number
	// for applications.
	DocumentNumber string `json:"documentNumber,omitempty"`

	// DomesticClassification: US and Int'l patent classification codes for
	// "related patents".
	DomesticClassification []string `json:"domesticClassification,omitempty"`

	InternationalClassification []string `json:"internationalClassification,omitempty"`

	// IssueDate: this is in ONIX format.
	IssueDate string `json:"issueDate,omitempty"`

	PatentAssignee string `json:"patentAssignee,omitempty"`

	// PublicationNumber: For applications, the 'publication number'
	// Something like US20071234567A1: 'US' prefix, 4 digit year, 7 digit
	// serial number, 2 character code, all stuck together.
	PublicationNumber string `json:"publicationNumber,omitempty"`

	// RelativeThumbnailPath: Path identifying the image used for the
	// thumbnail of this patent. e.g. "EP1234567B1/imgf0001.png" The client
	// is expected to fill in the rest of the url such as:
	// https://patentimages.storage.googleapis.com/thumbnails/EP1234567B1/imgf0001.png
	RelativeThumbnailPath string `json:"relativeThumbnailPath,omitempty"`

	TenCharUsClassification []string `json:"tenCharUsClassification,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationDate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagPatentSpecific) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagPatentSpecific
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanDocTagWorkCluster: Details of the work cluster for this Volume.
type OceanDocTagWorkCluster struct {
	ClusterSize int64 `json:"clusterSize,omitempty"`

	WorkId int64 `json:"workId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ClusterSize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterSize") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanDocTagWorkCluster) MarshalJSON() ([]byte, error) {
	type NoMethod OceanDocTagWorkCluster
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanGEMoney: A container proto to store prices for GE
type OceanGEMoney struct {
	// AmountInMicros: amount in micros. 1 is represented 1000000
	AmountInMicros int64 `json:"amountInMicros,omitempty,string"`

	// CurrencyCode: The currency codes come from
	// google3/i18n/identifiers/currencycode.h.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AmountInMicros") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmountInMicros") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanGEMoney) MarshalJSON() ([]byte, error) {
	type NoMethod OceanGEMoney
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanGEPrice: GE sale related data
type OceanGEPrice struct {
	Locale []*OceanGEPriceLocale `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanGEPrice) MarshalJSON() ([]byte, error) {
	type NoMethod OceanGEPrice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OceanGEPriceLocale struct {
	// Locale: The two character ISO country code
	Locale string `json:"locale,omitempty"`

	// OfferPrice: Price used for sale by the OFE
	OfferPrice *OceanGEMoney `json:"offerPrice,omitempty"`

	// OnSaleTimeSecs: The time (in secs from epoch) the content goes on
	// sale (only set when the book is not already sellable at the time of
	// indexing).
	OnSaleTimeSecs int64 `json:"onSaleTimeSecs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanGEPriceLocale) MarshalJSON() ([]byte, error) {
	type NoMethod OceanGEPriceLocale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanImageSize: Size info of an image.
type OceanImageSize struct {
	// Height: pixels
	Height int64 `json:"height,omitempty"`

	// Width: pixels
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanImageSize) MarshalJSON() ([]byte, error) {
	type NoMethod OceanImageSize
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanLocaleViewability: How a volume may be viewed in a particular
// locale. Next available ID: 25 (ikkwong)
type OceanLocaleViewability struct {
	// AccessRights: These capture "commercial" contract related access
	// rights provided by partners for a volume.
	AccessRights *OceanVolumeAccessRights `json:"accessRights,omitempty"`

	// AllowAddingFrontmatterToPreview: Are we allowed to add all the front
	// matter to the preview in addition to the preview amount that is from
	// percent_book_shown? This means the front matter becomes freely
	// previewable and does not count towards the previewable amount based
	// on the percentage.
	AllowAddingFrontmatterToPreview bool `json:"allowAddingFrontmatterToPreview,omitempty"`

	// AllowContinuousBrowse: By default, we allow continuous browse. PFE
	// provides a means for partners to opt out entirely or just specific
	// books.
	AllowContinuousBrowse bool `json:"allowContinuousBrowse,omitempty"`

	// AllowRetailSyndication: whether OFE should display this volume in
	// syndicated search results
	AllowRetailSyndication bool `json:"allowRetailSyndication,omitempty"`

	// Bibkey: The bibkey upon which this viewability information is based.
	Bibkey string `json:"bibkey,omitempty"`

	// CanDisplayAds: Whether we can show ads with this book in this locale.
	CanDisplayAds bool `json:"canDisplayAds,omitempty"`

	// CanDownloadEpub: In future, we will generate epub iff
	// can_download_epub = true irrespective of viewability or download pdf
	// state.
	CanDownloadEpub bool `json:"canDownloadEpub,omitempty"`

	// CanDownloadPdf: In future, we will generate PDF iff can_download_pdf
	// = true irrespective of viewability.
	CanDownloadPdf bool `json:"canDownloadPdf,omitempty"`

	// CanShowLibraryLinks: Whether to show library links for the books in
	// this imprint.
	CanShowLibraryLinks bool `json:"canShowLibraryLinks,omitempty"`

	// CanShowPhotos: Whether we can show photos for this book in this
	// locale.
	CanShowPhotos bool `json:"canShowPhotos,omitempty"`

	// CanUseMetadataCover: It should be OK to use metadata covers normally,
	// but we allow publishers to explicitly disallow them.
	CanUseMetadataCover bool `json:"canUseMetadataCover,omitempty"`

	// ClientId: The client who provided the rights for this bibkey, and who
	// should receive revenue derived from this book in this locale. This
	// will only be present when we receive explicit rights from a
	// publisher.
	ClientId string `json:"clientId,omitempty"`

	// ComputedAccessRights: Volume related access rights that are computed
	// by Goovols Syncher from partner and book metadata. This complements
	// VolumeAccessRights. This message is used to capture "commerical"
	// contracts that are computed from other sources. Any future computed
	// rights that are not related to volume access should go into a new
	// message.
	ComputedAccessRights *OceanVolumeComputedAccessRights `json:"computedAccessRights,omitempty"`

	Dates *OceanLocaleViewabilityDates `json:"dates,omitempty"`

	// DisplayDetails: Volume display specific attributes are kept in
	// display_details
	DisplayDetails *OceanVolumeDisplayDetails `json:"displayDetails,omitempty"`

	// MetadataViewMayIncludeInfoFromScans: This only applies when view_type
	// == VIEW_METADATA and controls whether we're allowed to include
	// scanned info (keywords, toc, etc). in the metadata-view. For books in
	// metadata view because they have been opted out, this would be false.
	MetadataViewMayIncludeInfoFromScans bool `json:"metadataViewMayIncludeInfoFromScans,omitempty"`

	// MetadataViewSampleAllowed: This only applies when view_type ==
	// VIEW_METADATA and controls whether we're allowed to include a text
	// sample even for a metadata view book.
	MetadataViewSampleAllowed bool `json:"metadataViewSampleAllowed,omitempty"`

	// PercentBookShown: How much of the book can be viewed in this locale.
	// Will be 100 for VIEW_FULL; 0 for VIEW_SNIPPET_, VIEW_NONE and
	// VIEW_METADATA; and some value between 0 and 100 (exclusive) for
	// VIEW_PARTIAL.
	PercentBookShown int64 `json:"percentBookShown,omitempty"`

	// PublicDomain: If present, this is the rights policy's determination
	// of the public domain status. (Of course, this determination is
	// generally conservative (i.e. false negatives are likely), though
	// exactly how conservative may depend on parameters to the rights
	// policy.) If absent, public domain status can be inferred from
	// view_type and view_reason, but that isn't quite perfectly reliable:
	// view_type should always be VIEW_FULL for public domain, but
	// view_reason might be REASON_PUBLIC_DOMAIN (definitely public domain,
	// obviously), some other value, or absent. In the future, new
	// viewabilities should always have this field whenever possible.
	PublicDomain bool `json:"publicDomain,omitempty"`

	Sourcedetails *OceanLocaleViewabilitySourceDetails `json:"sourcedetails,omitempty"`

	// ViewReason: The reason for the view_type.
	//
	// Possible values:
	//   "REASON_UNKNOWN"
	//   "REASON_NO_SOURCE" - Don't know the source of the volume:
	//   "REASON_KILLED" - Volume was killed:
	//   "REASON_CONTENT_TYPE" - This content type always has this
	// view_type:
	//   "REASON_SCANLESS"
	//   "REASON_OPTED_OUT"
	//   "REASON_QUALITY" - Insufficient scan quality:
	//   "REASON_INSUFFICIENT_PAGES" - Insufficient number of image pages:
	//   "REASON_PARTNER" - Partner-specified view:
	//   "REASON_REFERENCE" - Metadata view: copyrighted reference doc:
	//   "REASON_COPYRIGHT" - Snippet view: still under copyright:
	//   "REASON_PUBLIC_DOMAIN" - Full view: public domain (unspecified
	// reason):
	//   "REASON_NEW_COURTESY" - New book; metadata view as publisher
	// courtesy:
	//   "REASON_LIBRARY_RESTRICT" - Library partner doesn't allow snippets:
	//   "REASON_INDEXING_OVERRIDE" - Overridden in indexing:
	//   "REASON_UPLIFTED" - Copyright holder explicitly allowed this:
	//   "REASON_OUTSTANDING_QUESTIONS" - Human QA questions for the book
	// have been queued but not answered:
	//   "REASON_NO_VALID_SCANJOBS"
	//   "REASON_OPEN_ACCESS_DEPRECATED" - Deprecated. We keep these in case
	// there still is production data that contains the value. Source is
	// OPEN_ACCESS.
	ViewReason string `json:"viewReason,omitempty"`

	// ViewType: The viewability specified for this locale.
	//
	// Possible values:
	//   "VIEW_NONE" - The user cannot view any information about the book.
	//   "VIEW_METADATA" - The user cannot view pages at all, but can view
	// metadata about the book.
	//   "VIEW_SNIPPET" - The user cannot view entire pages, but only
	// snippets extracted from pages.
	//   "VIEW_FIXED" - The user can view only fixed pages from the book.
	// The fixed pages generally contain first 10% for book content (chapter
	// 1 in most cases). (ignore TOC, preface etc.) Keeping it in between
	// snippet & partial
	//   "VIEW_PARTIAL" - The user can view only some fraction of the pages
	// from the book. The exact set of allowed pages is determined
	// separately.
	//   "VIEW_FULL" - The user has unrestricted access to all pages of the
	// book.
	ViewType string `json:"viewType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessRights") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessRights") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanLocaleViewability) MarshalJSON() ([]byte, error) {
	type NoMethod OceanLocaleViewability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanLocaleViewabilityDates: Viewability related dates.
type OceanLocaleViewabilityDates struct {
	// EffectiveDate: If specified, the LocaleViewability will become
	// effective on this date. This field is used to allow pre-indexing of
	// future books which will become viewable and searchable according to
	// the LocaleViewability on the specified date. Before the effective
	// date, the volume will have scanless-like VIEW_METADATA viewability.
	// For details, see the design document at
	// http://go/oceanviewabilityeffectivedate. The date is expressed as the
	// number of seconds since the Unix epoch.
	EffectiveDate int64 `json:"effectiveDate,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EffectiveDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EffectiveDate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanLocaleViewabilityDates) MarshalJSON() ([]byte, error) {
	type NoMethod OceanLocaleViewabilityDates
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanLocaleViewabilitySourceDetails: How did we derive this
// viewability for this locale+volume? For "partner" books, this
// includes details about the "Imprint" that provided the rights. These
// details specify things such as preferred buy-the-book-url to show in
// the frontend.
type OceanLocaleViewabilitySourceDetails struct {
	Imprint *OceanVolumeImprint `json:"imprint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Imprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Imprint") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanLocaleViewabilitySourceDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OceanLocaleViewabilitySourceDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanPerDocData: Per-doc data in the Ocean index. Ocean indexing
// details are in
// https://www/eng/designdocs/scanning/ocean-indexing.html
type OceanPerDocData struct {
	// Flags: rights, mask-availability, porn, etc.
	Flags uint64 `json:"flags,omitempty,string"`

	NumPages int64 `json:"numPages,omitempty"`

	// PageNumber: 1-based
	PageNumber int64 `json:"pageNumber,omitempty"`

	Pageid int64 `json:"pageid,omitempty"`

	Volumeid uint64 `json:"volumeid,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Flags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Flags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod OceanPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OceanVolumeAccessRights struct {
	// AllowAutoGeneratedText: If false, then we can only provide text layer
	// generated from publisher provided epub.
	AllowAutoGeneratedText bool `json:"allowAutoGeneratedText,omitempty"`

	// CanShowInfoCards: Whether we can show info cards inside this book.
	CanShowInfoCards bool `json:"canShowInfoCards,omitempty"`

	// CanShowPhotos: Whether we can show photos inside this book.
	CanShowPhotos bool `json:"canShowPhotos,omitempty"`

	// NumAdeDeviceAllowed: Maximum number of Adobe Digital Editions device
	// per sale item allowed. 0 means no download allowed. -1 means
	// unlimited download.
	NumAdeDeviceAllowed int64 `json:"numAdeDeviceAllowed,omitempty"`

	// NumAdobeIdAllowed: Maximum number of Adobe id per sale item allowed.
	// 0 means no download allowed. -1 means unlimited download.
	NumAdobeIdAllowed int64 `json:"numAdobeIdAllowed,omitempty"`

	// NumDownloadsAllowed: Max. number of Google eBooks downloads allowed.
	// This is related to iPhone/iPad/Androrid/WebReader reading, not to
	// epub/pdf downloads. 0 means no download allowed. This is related to
	// bug #3094719.
	NumDownloadsAllowed int64 `json:"numDownloadsAllowed,omitempty"`

	// NumSimultaneousAccess: Number of readers can read the Google eBooks
	// simultaneously
	NumSimultaneousAccess int64 `json:"numSimultaneousAccess,omitempty"`

	// OfflineDownload: Download type for offline reading
	//
	// Possible values:
	//   "NO_DOWNLOAD" - The user cannot download any form of epub/pdf for
	// offline reading. Some publishers like MacMillan does not want to
	// allow ACS4 downloads, so iff the following bit is set then we don't
	// allow any epub/pdf downloads for offline reading.
	//   "DRM_FREE_DOWNLOAD" - The user can download DRM free version of
	// epub/pdf for offline reading.
	//   "ACS4_DOWNLOAD" - The user can dlownload ACS4 encrypted epub/pdf
	// for offline reading.
	OfflineDownload string `json:"offlineDownload,omitempty"`

	// PercentCopyable: How much of a volume we allow user to extract as
	// text (for copy+paste)
	PercentCopyable int64 `json:"percentCopyable,omitempty"`

	// PercentPrintable: How much of a volume we allow user to print
	PercentPrintable int64 `json:"percentPrintable,omitempty"`

	// RestrictOnlyToText: True iff restrict view only to epub text. Don't
	// show page images if this is true. Some pubs don't have copyright for
	// page layout and fonts.
	RestrictOnlyToText bool `json:"restrictOnlyToText,omitempty"`

	// SellFixedLayoutAsImageOnly: Whether we sell fixed layout as image
	// only.
	SellFixedLayoutAsImageOnly bool `json:"sellFixedLayoutAsImageOnly,omitempty"`

	// TextToSpeech: Whether text to speech is allowed
	TextToSpeech bool `json:"textToSpeech,omitempty"`

	// TreatAsPublicDomain: Whether we treat this book as public domain.
	TreatAsPublicDomain bool `json:"treatAsPublicDomain,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowAutoGeneratedText") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowAutoGeneratedText")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeAccessRights) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeAccessRights
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanVolumeComputedAccessRights: Volume related access rights that
// are computed by Goovols Syncher from partner and book metadata. This
// complements VolumeAccessRights. Next available ID: 4 (kblass)
type OceanVolumeComputedAccessRights struct {
	// CanFamilyShare: Whether this book can be shared with family members.
	CanFamilyShare bool `json:"canFamilyShare,omitempty"`

	// PanelizationFeatureInternalOnly: Whether the panelization feature is
	// enabled for internal users only.
	PanelizationFeatureInternalOnly bool `json:"panelizationFeatureInternalOnly,omitempty"`

	// ViewableInternalOnly: Whether the book is viewable for internal users
	// only.
	ViewableInternalOnly bool `json:"viewableInternalOnly,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanFamilyShare") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanFamilyShare") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeComputedAccessRights) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeComputedAccessRights
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanVolumeDisplayDetails: This message describes display attributes.
// The attributes which are applicable to OFE not indexing (mustang),
// should be added in this proto.
type OceanVolumeDisplayDetails struct {
	// CcLicense: The creative commons license specified, Please refer
	// ocean.CreativeCommonsLicenseType.Type for enum values Not exposed in
	// Partner Frontend anymore.
	CcLicense int64 `json:"ccLicense,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CcLicense") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CcLicense") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeDisplayDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeDisplayDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OceanVolumeImprint: Commercial information for a volume (data from
// the Imprint PublishersVolumeInfo table in the db). An imprint is a
// subdivision of a publisher (for example, Bantam Books is an imprint
// of Randon House), or can even be just a grouping of volumes with
// common commercial attributes.
type OceanVolumeImprint struct {
	// AccessRights: These capture "commercial" contract related access
	// rights provided by partners for a volume.
	AccessRights *OceanVolumeAccessRights `json:"accessRights,omitempty"`

	// AdsId: Id used in the google ads system
	AdsId string `json:"adsId,omitempty"`

	// AllowAddingFrontmatterToPreview: Are we allowed to add all the front
	// matter to the preview in addition to the preview amount that is from
	// percent_book_shown?
	AllowAddingFrontmatterToPreview bool `json:"allowAddingFrontmatterToPreview,omitempty"`

	// AllowContinuousBrowse: By default, we allow continuous browse. PFE
	// provides a means for partners to opt out entirely or just specific
	// books. This will be deprecated once UpdateVolumesReqHandler returns
	// VolumeViewability.
	AllowContinuousBrowse bool `json:"allowContinuousBrowse,omitempty"`

	// AllowRetailSyndication: By default, we allow retailer syndication.
	// PFE provides a means for partner to opt out. This will be deprecated
	// once UpdateVolumesReqHandler returns VolumeViewability.
	AllowRetailSyndication bool `json:"allowRetailSyndication,omitempty"`

	// Author: Beware: the author strings are not in fixed format..these can
	// be comma separated or 'and' separated or have extra terms like 'et
	// al' and sometimes have weird ones like 'no author' as these are fed
	// in via a somewhat flexible free text tool.
	Author string `json:"author,omitempty"`

	// Bibkey: Commercial info comes with book identifiers like ISBN(or some
	// bibkey), Title, Author. Passing these along as well with the
	// commercials for better book identification/link up with rights.
	Bibkey string `json:"bibkey,omitempty"`

	// BuyTheBookText: Text to display in the buy-the-book blurb
	BuyTheBookText string `json:"buyTheBookText,omitempty"`

	// BuyTheBookUrl: ISBN/ISSN-parameterized URL to the imprint's site for
	// buying a book. For ISBN-parameterized links, the ISBN value will be
	// substituted in the cannonical 13-digit form.
	BuyTheBookUrl string `json:"buyTheBookUrl,omitempty"`

	// CanDownloadEpub: iff true volume is available as Google Edition. This
	// will be deprecated once UpdateVolumesReqHandler returns
	// VolumeViewability.
	CanDownloadEpub bool `json:"canDownloadEpub,omitempty"`

	// CanDownloadPdf: iff true and VIEW_TYPE=FULL_VIEW, then we will allow
	// PDF download This will be deprecated once UpdateVolumesReqHandler
	// returns VolumeViewability.
	CanDownloadPdf bool `json:"canDownloadPdf,omitempty"`

	// CanShowLibraryLinks: Whether to show library links for the books in
	// this imprint. This will be deprecated once UpdateVolumesReqHandler
	// returns VolumeViewability.
	CanShowLibraryLinks bool `json:"canShowLibraryLinks,omitempty"`

	// CanUseMetadataCover: It should be OK to use metadata covers normally,
	// but we allow publishers to explicitly disallow them. This will be
	// deprecated once UpdateVolumesReqHandler returns VolumeViewability.
	CanUseMetadataCover bool `json:"canUseMetadataCover,omitempty"`

	// DisableOtherBuyTheBookLinks: Whether to disable other btb links for
	// the books in this imprint. Show only btb link from this partner and
	// remove everything else.
	DisableOtherBuyTheBookLinks bool `json:"disableOtherBuyTheBookLinks,omitempty"`

	// DisplayDetails: Volume display specific attributes are kept in
	// display_details This will be deprecated once UpdateVolumesReqHandler
	// returns VolumeViewability.
	DisplayDetails *OceanVolumeDisplayDetails `json:"displayDetails,omitempty"`

	// GeBibkey: The ISBN supplied by publisher (or Google) for the Google
	// Edition e-book. One day it should be an attribute of the tome
	// cluster.
	GeBibkey string `json:"geBibkey,omitempty"`

	// ImprintId: The imprint id from the ocean devel db for this imprint.
	ImprintId int64 `json:"imprintId,omitempty,string"`

	ImprintName string `json:"imprintName,omitempty"`

	// ImprintUrl: URL to the imprint's website, to go to upon a click on
	// the logo
	ImprintUrl string `json:"imprintUrl,omitempty"`

	LogoHeight int64 `json:"logoHeight,omitempty"`

	// LogoLocation: URL/location for the imprint's logo to display
	LogoLocation string `json:"logoLocation,omitempty"`

	// LogoWidth: The logo image's geometry
	LogoWidth int64 `json:"logoWidth,omitempty"`

	// PercentBookShown: Percentage of book we are allowed to display This
	// will be deprecated once UpdateVolumesReqHandler returns
	// VolumeViewability.
	PercentBookShown int64 `json:"percentBookShown,omitempty"`

	PromotionalText string `json:"promotionalText,omitempty"`

	// PromotionalUrl: We may allow imprints to run promotional campaigns.
	// The following fields capture the blurb to display and the URL
	// (ISBN-parameterized) link to provide.
	PromotionalUrl string `json:"promotionalUrl,omitempty"`

	// PublishedImprintName: Sometimes the Publisher/Imprint Name the book
	// is published under is different from the current name and we may have
	// this information.
	PublishedImprintName string `json:"publishedImprintName,omitempty"`

	// PviRowid: Need a unique identifier for PFE records, using PVI ID
	PviRowid int64 `json:"pviRowid,omitempty,string"`

	Title string `json:"title,omitempty"`

	// UseBibdata: Some records are deactivated, suppressed or excluded; we
	// still want to hear about them, but we aren't going to be using their
	// bibdata
	UseBibdata bool `json:"useBibdata,omitempty"`

	// Possible values:
	//   "BOOK"
	//   "JOURNAL"
	//   "MAGAZINE"
	//   "NEWSPAPER"
	VerticalType string `json:"verticalType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessRights") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessRights") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeImprint) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeImprint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OceanVolumeViewability struct {
	DEPRECATEDDefaultViewType int64 `json:"DEPRECATEDDefaultViewType,omitempty"`

	// DefaultViewability: The viewability for any locale that is not
	// explicitly listed.
	DefaultViewability *OceanLocaleViewability `json:"defaultViewability,omitempty"`

	// InViewabilityLimbo: DEPRECATED: Viewability-Limbo was a state that
	// prevented indexing from running if the viewability of a volume had
	// dropped significantly. It was removed during viewability refactoring:
	// http://go/viewability
	InViewabilityLimbo bool `json:"inViewabilityLimbo,omitempty"`

	Locale []*OceanVolumeViewabilityLocale `json:"locale,omitempty"`

	// UpdatedByIndexer: Whether the volume viewability was updated by the
	// indexer as opposed to a direct update in goovols. The absense of this
	// bit will indicate to the indexer that it should not short-circuit
	// indexing side effects that should occur when viewability changes.
	UpdatedByIndexer bool `json:"updatedByIndexer,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDDefaultViewType") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DEPRECATEDDefaultViewType") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeViewability) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeViewability
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OceanVolumeViewabilityLocale struct {
	DEPRECATEDViewType int64 `json:"DEPRECATEDViewType,omitempty"`

	// Locale: The two-character ISO country code for the locale.
	Locale string `json:"locale,omitempty"`

	// Viewability: The viewability specified for this locale.
	Viewability *OceanLocaleViewability `json:"viewability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DEPRECATEDViewType")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDViewType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *OceanVolumeViewabilityLocale) MarshalJSON() ([]byte, error) {
	type NoMethod OceanVolumeViewabilityLocale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OcrPhotoBoundingBox: Bounding box of patch containing line, word or
// symbol.
type OcrPhotoBoundingBox struct {
	// Angle: Angle of rotation of (in degrees, clockwise is positive) of
	// the box about the top-left corner.
	Angle float64 `json:"angle,omitempty"`

	// CurvedBox: Sequence of rotated boxes that tightly enclose the text.
	CurvedBox *OcrPhotoCurvedBoundingBox `json:"curvedBox,omitempty"`

	// Height: Box height (bottom pixels at top + height - 1).
	Height int64 `json:"height,omitempty"`

	// Left: x coordinate of top-left corner
	Left int64 `json:"left,omitempty"`

	// Top: y coordinate of top-left corner
	Top int64 `json:"top,omitempty"`

	// Width: Box width (rightmost pixels at left + width - 1).
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Angle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Angle") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OcrPhotoBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod OcrPhotoBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *OcrPhotoBoundingBox) UnmarshalJSON(data []byte) error {
	type NoMethod OcrPhotoBoundingBox
	var s1 struct {
		Angle gensupport.JSONFloat64 `json:"angle"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Angle = float64(s1.Angle)
	return nil
}

// OcrPhotoCurve: Copy of
// ocr/goodoc/layout-common.proto:CurvedBoundingBox, temporary
// duplicated here to allow for on-device builds.
type OcrPhotoCurve struct {
	// Points: The sequence of points that approximate the curve.
	Points []*OcrPhotoCurvePoint `json:"points,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Points") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Points") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OcrPhotoCurve) MarshalJSON() ([]byte, error) {
	type NoMethod OcrPhotoCurve
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OcrPhotoCurvePoint struct {
	X float64 `json:"x,omitempty"`

	// Y: NOTE: if we wish to support perspective (varying thickness), later
	// on we could extend this message with a thickness field. In that case,
	// CurvedBoundingBox.thickness() would be used as a default if
	// !Point.has_thickness().
	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OcrPhotoCurvePoint) MarshalJSON() ([]byte, error) {
	type NoMethod OcrPhotoCurvePoint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *OcrPhotoCurvePoint) UnmarshalJSON(data []byte) error {
	type NoMethod OcrPhotoCurvePoint
	var s1 struct {
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

type OcrPhotoCurvedBoundingBox struct {
	// MidLineCurve: The curve of points along the middle of the text line.
	MidLineCurve *OcrPhotoCurve `json:"midLineCurve,omitempty"`

	// Thickness: If top_to_bottom is true, this is the width of the curved
	// box. Otherwise, it is the height of the curved box.
	Thickness float64 `json:"thickness,omitempty"`

	// TopToBottom: If true, the curve is interpreted as top to bottom of
	// the line image. Otherwise, it is from left to right.
	TopToBottom bool `json:"topToBottom,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MidLineCurve") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MidLineCurve") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OcrPhotoCurvedBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod OcrPhotoCurvedBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *OcrPhotoCurvedBoundingBox) UnmarshalJSON(data []byte) error {
	type NoMethod OcrPhotoCurvedBoundingBox
	var s1 struct {
		Thickness gensupport.JSONFloat64 `json:"thickness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Thickness = float64(s1.Thickness)
	return nil
}

// OcrPhotoTextBox: Text with bounding box.
type OcrPhotoTextBox struct {
	// BlockId: ID of the text block that this line belongs to.
	BlockId int64 `json:"blockId,omitempty"`

	// Box: Text bounding box.
	Box *OcrPhotoBoundingBox `json:"box,omitempty"`

	// ContentType: Content type for this box.
	//
	// Possible values:
	//   "TEXT" - printed text
	//   "HANDWRITTEN_TEXT"
	//   "IMAGE"
	//   "LINE_DRAWING"
	//   "SEPARATOR" - e.g. a dividing line
	//   "UNREADABLE_TEXT" - An entity that's recognizably text, but that
	// can't be read. For example, this can be used for human-generated
	// evaluation data where the human evaluator wasn't able to read the
	// text, couldn't input it, or there was too much text to read.
	//   "FORMULA" - Formula: a mathematical or chemical formula.
	//   "HANDWRITTEN_FORMULA" - Same as FORMULA, but handwritten.
	//   "NOT_ANNOTATED" - Signifies that we may not rely on annotations of
	// this type in this region. For example, NOT_ANNOTATED paragraph means
	// that we should ignore other entities within this region, allowing any
	// engine results. Commonly known as 'DO NOT CARE'. See cl/244428520 for
	// discussion.
	//   "SIGNATURE" - Signature or intitals.
	//   "UNKNOWN" - Note that due to the fact that the default value is
	// TEXT, parsing a ContentType with an unsupported value will result in
	// TEXT, not UNKNOWN.
	//   "CUSTOM" - This entity has content of a user defined type, for
	// example social security number or address. The recognizer_script_id
	// field below may be used to communicate information to mutators about
	// how to handle this entity. If some custom entities require more
	// information for proper handling we can add an Any field.
	ContentType string `json:"contentType,omitempty"`

	// SymbolWidths: Optional width of characters in the text.
	SymbolWidths []int64 `json:"symbolWidths,omitempty"`

	// Text: Text string.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlockId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlockId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OcrPhotoTextBox) MarshalJSON() ([]byte, error) {
	type NoMethod OcrPhotoTextBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// OfficialPagesOfficialKey: This proto is used as the key for official
// pages data. WARNING WARNING WARNING WARNING WARNING PAY ATTENTION
// HERE! The query field contains a specially NORMALIZED query, NOT a
// raw one. You can get a normalized query in several ways: 1. from an
// squery with NormalizedQueryFromSquery 2. from a CJK-segmented and
// punctuation-stripped query with NormalizeText (NOTE: navboost queries
// are already CJK-segmented and punctuation-stripped, you can just pass
// them to NormalizeText) 3. from user text/query with CanonicalizeText
// (this will do the CJK segmenting, punctuation stripping and character
// normalization for you) All of these functions are in
// ./utils/external-utils.h
type OfficialPagesOfficialKey struct {
	Country string `json:"country,omitempty"`

	Language int64 `json:"language,omitempty"`

	Query string `json:"query,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Country") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Country") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OfficialPagesOfficialKey) MarshalJSON() ([]byte, error) {
	type NoMethod OfficialPagesOfficialKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OfficialPagesQuerySet struct {
	Queries []*OfficialPagesOfficialKey `json:"queries,omitempty"`

	// QueryCountryLanguageFingerprints: This is the fingerprint of the
	// OfficialKey queries in the queries field. The index of a fingerprint
	// in this field corresponds to the index of the fingerprinted query in
	// the queries field. The fingerprint is produced with the
	// QueryCountryLanguageFingerprint function in external-utils.h
	QueryCountryLanguageFingerprints googleapi.Uint64s `json:"queryCountryLanguageFingerprints,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Queries") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Queries") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OfficialPagesQuerySet) MarshalJSON() ([]byte, error) {
	type NoMethod OfficialPagesQuerySet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type OrionDocEntitiesProto struct {
	Docid uint64 `json:"docid,omitempty,string"`

	// EncodedEntity: This is encoded using EntityCandidate::Encode
	EncodedEntity []int64 `json:"encodedEntity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *OrionDocEntitiesProto) MarshalJSON() ([]byte, error) {
	type NoMethod OrionDocEntitiesProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type PairwiseQScoringData struct {
	ConfidenceValue float64 `json:"confidenceValue,omitempty"`

	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfidenceValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfidenceValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PairwiseQScoringData) MarshalJSON() ([]byte, error) {
	type NoMethod PairwiseQScoringData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PairwiseQScoringData) UnmarshalJSON(data []byte) error {
	type NoMethod PairwiseQScoringData
	var s1 struct {
		ConfidenceValue gensupport.JSONFloat64 `json:"confidenceValue"`
		Value           gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceValue = float64(s1.ConfidenceValue)
	s.Value = float64(s1.Value)
	return nil
}

// PairwiseQVersionedItem: Message representing a versioned PairwiseQ
// scores used for experimentation. This protobuf is copied from
// quality_nsr_pairwiseq::PairwiseQVersionedItem.
type PairwiseQVersionedItem struct {
	// ConfidenceValue: The PairwiseQ confidence value corresponding to this
	// version.
	ConfidenceValue float64 `json:"confidenceValue,omitempty"`

	// Value: The PairwiseQ value corresponding to this version.
	Value float64 `json:"value,omitempty"`

	// VersionId: The version id.
	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfidenceValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfidenceValue") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PairwiseQVersionedItem) MarshalJSON() ([]byte, error) {
	type NoMethod PairwiseQVersionedItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PairwiseQVersionedItem) UnmarshalJSON(data []byte) error {
	type NoMethod PairwiseQVersionedItem
	var s1 struct {
		ConfidenceValue gensupport.JSONFloat64 `json:"confidenceValue"`
		Value           gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceValue = float64(s1.ConfidenceValue)
	s.Value = float64(s1.Value)
	return nil
}

type PeoplestackFlexorgsProtoInternalExternal struct {
	// Application: All evaluations are done within the context of a given
	// application, e.g., "Gmail" and should not be reused in other apps.
	//
	// Possible values:
	//   "UNKNOWN_APPLICATION" - Cannot just use UNKNOWN because enum values
	// use C++ scoping rules. Therefore, "UNKNOWN" must be unique within
	// "apps.people.logs.proto".
	//   "GPLUS" - G+ application Generic app that represents all G+
	// applications that don't have specific app below. Because of this,
	// this value does NOT represent all G+ applications in analytics data:
	// Clients interested in analytics data for all G+ applications (for
	// example, both GPLUS and GPLUS_WEB), should generally use the
	// synthetic values defined later in this enum, like TOTAL_GPLUS.
	// Replacement for "s:oz".
	//   "GPLUS_WEB" - G+ web application (codename Tau: go/tauplus) App
	// that represents all G+ traffic coming from boq web. This is meant to
	// replace the application id GPLUS for web traffic when Oz is
	// completely deprectaed.
	//   "GPLUS_ARES_FEATURE_PROVIDER" - Feature provider for go/ares
	//   "GPLUS_PHOTOS" - Photos app within G+ such as lighthouse.
	// Replacement for "s:lh2".
	//   "GPLUS_HANGOUT" - Hangout app within G+ Replacement for "s:talk"
	// that is used for hangout requests.
	//   "GPLUS_EVENTS" - Events app within G+. Replacement for "s:events".
	//   "GPLUS_SQUARES" - Squares(community) app within G+. Replacement for
	// "s:squares".
	//   "GPLUS_NOTIFICATIONS" - Notifications app within G+. Replacement
	// for "s:notifications".
	//   "GPLUS_GAMES" - Games activities. Replacement for "s:gadgets:*"
	// (source_id).
	//   "GPLUS_WHATS_HOT" - Explore app within G+.
	//   "GPLUS_LOCAL" - Local app within G+.
	//   "GPLUS_PLUS_PAGES" - +Pages app within G+.
	//   "GPLUS_PLUS_PAGES_RSS" - RSS to +Page syndicator.
	//   "GPLUS_PROFILE" - Profile app within G+.
	//   "GPLUS_FIND_PEOPLE" - Find People app within G+.
	//   "GPLUS_PHOTO_EDITOR" - Edit photos within Photos within G+, see
	// also http://go/snapseed
	//   "GPLUS_SOCIALCAST" - G+ consumption stream integration with
	// Chromecast. see also http://go/+socialcast
	//   "GPLUS_INTERACTION_EVENTS" - G+ For Work Interaction Event Sync.
	// go/kerr-prd and go/gplus_interaction_event_sync.
	//   "GPLUS_ENTITY_TRANSFER" - G+ Entity Transfer. See
	// go/gplus-entity-transfer-design.
	//   "GPLUS_LIS" - G+ LIS. See b/77638423.
	//   "GPLUS_DRAWBRIDGE" - G+ Drawbridge. See go/drawbridge-dd.
	//   "GPLUS_DASHER" - Currents (G+ for Enterprise) App An alternative to
	// GPLUS that indicates this is in a build for Currents.
	//   "GPLUS_DASHER_TAKEOUT" - Domain Wide Takeout (go/dwt-d3doc) for
	// Currents/G+. See go/g+-takeout-filters. Note that
	// GPLUS_DASHER_TAKEOUT is G+ and Currents agnostic, even though
	// GPLUS_DASHER refers to Currents only.
	//   "PAISA_MERCHANT_CONSOLE" - Paisa Merchant Console http://go/paisa
	// Team contact: paisa-merchant-eng-blr@google.com
	//   "GEO_DATA_UPLOAD_STAGING" - GEO_DATA_UPLOADS is an
	// internal-use-only staging corpus for geo_data_upload (above). See
	// go/gdu-design-1.2
	//   "GEO_DATA_UPLOAD" - GEO_DATA_UPLOADS consists of discussions
	// between 3rd parties and Google about uploaded data. See
	// go/gdu-design-1.2
	//   "GOOGLE_PLAY_SERVICES" - Google Play services, used when doing
	// background tasks like log posting and background sync that aren't
	// initiated by any external app.
	//   "GOOGLE_SETTINGS" - Google Settings app.
	//   "THIRD_PARTY" - Third party clients who use apiary to work with G+.
	// Replacement for "s:chili".
	//   "PICASA_PHOTOS" - External First party. Picasa photos app.
	//   "GMAIL_HANGOUT" - The G+ widget served off Oz and rendered in gmail
	// for hangout integration. Replacement for "s:oz:gadget-gmail".
	//   "FOUNTAIN" - The G+ widget served off Oz and rendered in any page
	// EXCEPT Youtube. Replacement for "s:fountain".
	//   "FOUNTAIN_YOUTUBE" - The comment widget served off youtube video
	// page. Replacement for "s:fountain:youtube".
	//   "YOUTUBE_LEGACY_COMMENT_MIGRATION" - Legacy youtube video watch
	// page comments. See go/stollen for details.
	//   "FOUNTAIN_YOUTUBE_DISCUSS" - The G+ widget served off Oz and
	// rendered in youtube channel discuss page. It's the "DISTILLER"
	// project. Replacement for "s:fountain:youtube:channel".
	//   "FOUNTAIN_YOUTUBE_MESSAGES" - YouTube private messages built on top
	// of distiller comments. Replacement for "s:fountain:youtube:private".
	//   "YOUTUBE_AUTOSHARES" - Public posts generated automatically if a YT
	// user who has been merged with their G+ account uploads a public
	// video. Replacement for request_header.application_id="s:oz" and
	// mutate_data.activity.stream_id.source_id=
	// "a:ext:client.sharebox.261207059221.
	//   "FOUNTAIN_YOUTUBE_LEGACY_GDATA" - Used for comment writes sent to
	// the legacy YouTube GData API by clients that have not switched to the
	// G+ commenting API.
	//   "YOUTUBE_CHOWN_PIPELINE" - Used for the Youtube channel ownership
	// pipeline. Replacement for "s:youtube:distiller".
	// go/youtube-chown-pipeline
	//   "FOUNTAIN_YOUTUBE_ACTIVITY_LOG" - Used for youtube's comment
	// history page.
	//   "FOUNTAIN_YOUTUBE_ADMIN" - Used for youtube comments admin pages.
	//   "YOUTUBE_HELD_COMMENT_EXPIRY" - Used for comment expiry.
	// go/ytc-studio-held-comment-expiry
	//   "ONEMARKET_CALENDAR" - Onemarket Calendar Team contact:
	// omc-team@google.com
	//   "FOCUS_FRONTEND" - Focus Frontend which is serving G+ profile.
	// Replacement for "s:focus".
	//   "URL_SHAREBOX" - URL sharebox served off Oz on /share and rendered
	// in 1P/3P, on both desktop & mobile. For mobile sharebox, this app id
	// is set in
	// //java/com/google/apps/people/oz/sharebox/client/mobile/shell.js
	//   "READER" - Google Reader. Replacement for "s:reader".
	//   "GOOGLE_MAIL" - Google Email. Replacement for "s:google_mail".
	//   "PLUS_SHARE" - Plusone Application. Replace for "s:plusshare".
	//   "YOUTUBE" - Connection with G+ through YouTube. e.g. YT mobile
	// native apps.
	//   "CHECKIN" - Checkin within G+. Replacement for
	// "s:friendview:checkin" (source_id).
	//   "FRAMES" - Oz Frames. Replacement for "s:frames".
	//   "PHOTOS_CHROMEAPP" - Pulsar native app.
	//   "MOBILE_BASIC" - Mobile basic traffic for clients hitting
	// "plus.google.com/app/basic".
	//   "GLASSWARE" - The Google Glass Mirror API:
	// https://developers.google.com/glass/. Replacement for "s:glass".
	//   "GAMES" - Play Games related clients. (e.g. Games destination app.)
	//   "THIRD_PARTY_STREAM_EVERYWHERE_SINGLE_POST_WIDGET" - Embeddable
	// widgets, part of Stream Everywhere project.
	// http://go/streameverywheredesign
	//   "PLAY_STORE" - Google Play Store.
	//   "GMAIL_INBOX_POSTS" - Interactive email notifications in Gmail.
	//   "GMAIL_RECENT_POSTS" - Right hand side widget in Gmail.
	//   "SIDECAR" - Third party "sidecar" widgets.
	// http://go/embeddedstreamsdesign DEPRECATED, DO NOT USE.
	//   "GOOGLE_QUICK_SEARCH_BOX" - Google Quick Search Box.
	// https://sites.google.com/a/google.com/android-qsb.
	//   "WALLET" - Google Wallet (Android and iOS clients).
	//   "FRAMELESS_SHAREBOX" - Sharebox that is populated via URL params,
	// suitable for use in a popup. This sharebox is accessible to 3p,
	// although in practice it is mostly used by 1p.
	// https://sites.google.com/a/google.com/es-sharing/
	//   "YOUTUBE_CAPTURE" - YouTube Capture (iOS client). http://go/kubrik
	//   "YOUTUBE_WATCH_PAGE_SHARE" - Posts generated from the share window
	// launched by share menu on the YouTube watch page. yt-social-dev@
	//   "YOUTUBE_REACTR" - Youtube Real-time group chat, also known as
	// 'Reactr'. http://go/reactr Team contact: reactr-dev@google.com.
	//   "YOUTUBE_MANGO" - YouTube Go - android app for the next billion
	// users. http://go/ytgo Team contact: mango-eng@google.com
	//   "YOUTUBE_REACTR_TAKEOUT" - YouTube Reactr Takeout. See b/69636706
	// http://go/reactr Team contact: reactr-dev@google.com.
	//   "YOUTUBE_COMMENTS_NOTIFICATION" - Youtube Comments go/ytcci Team
	// contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_TIMED" - Youtube Comments: Timed Comments
	// go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_ENGAGEMENT_P13N" - Youtube Comments: Engagements
	// go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_LEGAL_TAKEOUT" - Youtube Comments: Comments legal
	// takeout go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_INDEXING" - Youtube Comments: Top comments
	// indexing go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_NEWEST_FIRST" - Youtube Comments: Newest First.
	// go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_COMMENTS_BACKEND" - Youtube Comments: Comments Backend.
	// go/ytcci Team contact: yt-comments-team@google.com
	//   "YOUTUBE_SUBSCRIPTIONS_FEEDS" - Youtube Comments: Subscription
	// notifications go/ytn-inbox-comment-decoration Team contact:
	// yt-notifications@google.com
	//   "YOUTUBE_COMMENT_API" - YouTube Comment API go/yt-comment-api Team
	// contact: yt-comment-api-eng@google.com
	//   "GHUB_COMMENTS" - Comments for gHub Finance. Team contact:
	// introspect-eng@google.com
	//   "GOOGLE_KEEP" - Google Keep.
	// https://sites.google.com/a/google.com/keep/
	//   "VEGA" - Vega / Google+ for Business (Android and iOS clients).
	// http://go/vega
	//   "SOCIAL_REVIEWS" - Reviews (Local and others) sr-eng@
	//   "PLAY_MOVIES" - Google Play Movies & TV, Android app. Team contact:
	// videosapp-android@google.com.
	//   "GMAIL" - Gmail
	//   "GMAIL_GO" - Hub as Gmail Go
	//   "HELPOUTS" - Google Helpouts http://go/tee-team
	//   "MAPS" - Google Maps Mobile: http://go/gmm Desktop:
	// http://go/tactile
	//   "MAPS_ENGINE_MOBILE" - Google Maps Engine Mobile
	// http://go/gmemobile
	//   "CALENDAR" - Calendar Android:
	// https://sites.google.com/a/google.com/android-calendar/ Desktop:
	// https://sites.google.com/a/google.com/timely/
	//   "PLAY_NEWSSTAND" - Google Play Newsstand http://go/dots Team
	// contact: gnews-infra@google.com.
	//   "FITNESS" - Google Fitness http://go/heart Team contact:
	// android-fitness-eng@google.com.
	//   "WEAR_HEALTH" - Google Health http://go/wear-health Team contact:
	// wear-health@google.com.
	//   "WEAR_HEALTH_PROVISIONING" - Google Wear Health Provisioning
	// http://go/wear-health Team contact: wear-health@google.com.
	//   "PLAY_BOOKS" - Google Play Books (Android and iOS clients)
	// http://go/android-books http://go/ios-books
	//   "INSTORE" - Google Instore http://go/instore-wallet
	//   "PLAY_MUSIC" - Google Play Music (Android and iOS clients)
	// http://go/android-music Team contact: music-app-eng@google.com
	//   "GOOGLE_CHROME" - Google Chrome iOS: http://go/blingy
	// (bling-team@google.com)
	//   "LOCATION_FLARE" - Location Flare http://go/location-flare
	//   "NEWS_WEATHER" - Google News Weather Android App
	// http://go/android-core-utilities Team contact:
	// android-news-eng@google.com.
	//   "PROMOTED_POSTS" - Promoted Posts http://go/promotedposts
	//   "CLOUD_PRINT" - Cloud Print http://go/cloudprinting Team contact:
	// cloudprint-team@google.com
	//   "CLOUD_DEVICES" - Cloud Devices http://go/cloud-devices Team
	// contact: cloud-devices-team@google.com
	//   "CPANEL" - CPanel (Google Admin) for Enterprise
	// http://go/cpanel-mobile Team contact: cpanel-mobile-eng@google.com
	//   "DRIVE" - Google Drive http://go/docs-site Android part:
	// http://go/cakemix Team contact: cakemix-eng@google.com
	//   "CLASSROOM" - Classroom http://go/homeroom Team contact:
	// homeroom-eng@google.com
	//   "STORIES" - Google+ Stories aka Boswell go/bozdd Team contact:
	// boswell-eng@google.com
	//   "GOOGLE_ANALYTICS" - Google Analytics Android Client
	// http://go/giant-site Team contact: ga-mobile-app-eng@
	//   "LOCATION_SAMPLE" - Sample app for Location team Team contact:
	// location-lon@google.com
	//   "BIGTOP" - BigTop Android
	// https://wiki.corp.google.com/twiki/bin/view/Main/BigtopAndroid
	//   "GOOGLE_CAST" - Google Cast Android Client http://go/dongle Team
	// contact: eureka-setup-team@
	//   "AUTHZEN" - Authzen http://go/authzen Team contact:
	// authzen-team@google.com
	//   "PARENTS" - Google Parental Supervision Android Client
	// http://go/parentapp DEPRECATED, DO NOT USE.
	//   "SEARCH" - Google Search
	//   "NEWS" - Google News
	//   "DOCS" - Google Docs NOTE: Docs is a separate app from DRIVE.
	//   "PHOTOS" - Google Photos standalone experience (not included with
	// the G+ app). http://go/photos Team contact: photos-backend@google.com
	//   "PHOTOS_TAKEOUT" - Google Photos Takeout export http://go/photos
	// Team contact: photos-backend@google.com
	//   "SIMBA_MOBILE" - Simba android client http://sites/simba
	//   "GOOGLE_JOBS" - Google Jobs android client http://go/garage-wiki
	// Team contact: garage-android@google.com
	//   "CLOUD_PLATFORM" - Google Cloud Platform Android and iOS apps
	// http://go/vespa Team contact: vespa-eng@google.com
	//   "CLOUD_PLATFORM_WEB" - Google Cloud Platform Android web app
	// http://go/pantheon Team contact: pantheon-client@google.com
	//   "FIREFOX_BROWSER" - Shares integrated into Firefox browser.
	// Contact: carnold@mozilla.com, sharekit-eng@google.com
	//   "MOVIEMAKER" - MovieMaker component of G+. http://go/aamovie
	// Contact: photos-movies@google.com
	//   "MOVIEMAKER_PHOTOS" - MovieMaker component of Photos.
	// http://go/aamoive Contact: photos-movies@google.com
	//   "GOOGLE_STARS" - Google Stars Android Client (go/stars) Team
	// contact: collecting-eng@google.com
	//   "SNAPSEED" - Edit photos, consumer app. see http://go/snapseed Team
	// contact: snapseed-eng@google.com
	//   "BLOGGER" - Blogger for Android http://go/bloggerandroid Team
	// contact: blogger-tech@google.com
	//   "DEVICE_POLICY" - Google Apps Device Policy for Enterprise
	// http://go/mdm Team contact: mdm-eng@google.com
	//   "DOUBLECLICK_CREATIVE_PREVIEW" - Doubleclick Creative Preview app
	// http://go/audition Team contact: mob-h5-eng@google.com
	//   "UNICORN" - Unicorn kids app http://go/unicorn-infra Team contact:
	// unicorn-infra-eng@google.com DEPRECATED, DO NOT USE.
	//   "ADWORDS_MOBILE" - AdWords mobile app for Android http://go/awm
	// Team contact: awm-eng@google.com
	//   "FAMILY_COMPASS" - Unicorn Family Compass http://go/family-compass
	// Team contact: family-compass-eng@google.com DEPRECATED, DO NOT USE.
	//   "AUTH_GRANT_CREDENTIAL" - Android grant credential Team contact:
	// android-auth-eng@google.com
	//   "HALLWAY" - Hallway mobile app for Android and iOS
	// http://go/hallway-prd Team contact: adventurelabs-eng@google.com
	//   "FAMILY_CAMERA" - Unicorn Family Camera http://go/family-camera
	// Team contact: unicorn-famcam-eng@google.com DEPRECATED, DO NOT USE.
	//   "ENDER" - Ender http://go/ender Team contact: ender-eng@google.com
	//   "MAPS_VIEWS" - Google Maps Views (Mostly deprecated, but lives as
	// SVApp server) http://go/streetview-apps Team contact:
	// streetview-apps@google.com
	//   "TABLESCAPE" - Tablescape app (internally codenamed FoodEyes)
	// http://go/tablescape Team contact: foodeyes-team@google.com
	//   "TOPAZ" - Enterprise Topaz http://go/topaz Team contact:
	// topaz-team@google.com
	//   "FIBER" - gFiber app http://go/fiberapp Team contact:
	// gfiber-mobile-android@google.com
	//   "ATARI" - Atari app (The next Google Sites) http://go/atari
	// http://go/atari-mobile Team contact: atari-mobile@google.com
	//   "RIDEMATCH" - Ridematch app http://go/ridematch Team contact:
	// ridematch-team@google.com
	//   "GMONEY" - Google GMoney (Android and iOS clients).
	//   "GOOGLE_EXPRESS" - Google Express app (Android) http://go/sameday
	// Team contact: gsx-mobilemall@google.com
	//   "CONSUMER_PHOTO_EDITOR" - Consumer photo editor
	// http://go/photo-editing Team contact: photos-editing@google.com
	//   "JETSTREAM" - Jetstream consumer app http://go/jetstream-team and
	// http://go/jetstream Team contact: jetstream-team@google.com
	//   "SOCIAL_SERENDIPITY" - Social Serendipity (Social content in Google
	// Now) http://go/serendipity Team contact: serendipity-team@google.com
	//   "ONE_TODAY" - One Today by Google http://go/onetoday Team contact:
	// onetoday-eng@google.com
	//   "PROFILES" - Google Profiles - SmartProfiles for viewing, Me View
	// for editing. http://sites/profiles Team contact:
	// people-frontend-team@google.com
	//   "SOCIAL_POLLS" - Social Polls - surfaced in G+ site/app
	// http://go/es-polls Team contact: es-polls@google.com
	//   "SPACES" - Spaces App http://go/spaces Team contact:
	// spaces-eng@google.com
	//   "ADWORDS_EXPRESS" - AdWords Express App http://go/awxv2 Team
	// contact: boost-eng@google.com
	//   "IDENTITY" - iOS Identity Library http://go/ios-id Team contact:
	// ios-id-library-team@google.com
	//   "IDENTITY_FRONTEND_VISUAL_ELEMENTS" - Identity Frontend.
	// http://go/idfe Team contact: id-fe-infra@google.com.
	//   "YOUTUBE_BACKSTAGE" - Youtube Backstage. http://go/backstage Team
	// contact: yt-posts-team@google.com.
	//   "YOUTUBE_BACKSTAGE_ADMIN" - Youtube Backstage Admin Service.
	// http://go/backstage-admin-service Team contact:
	// yt-posts-team@google.com.
	//   "YOUTUBE_UNPLUGGED" - YouTube Unplugged http://go/unplugged-eng
	// Team contact: yt-unplugged-eng@google.com
	//   "YOUTUBE_MUSIC" - Youtube Music http://go/music Team contact:
	// woodstock-ios-eng@google.com
	//   "HUB" - Android Enterprise Hub App http://go/afwhub Team contact:
	// afwhub@google.com
	//   "ANDROID_EDU_PROVISIONING" - Android Education Device Initializer
	// App. http://go/android-edu-platform Team contact:
	// android-edu-platform-eng@google.com
	//   "ANDROID_WEAR" - Android Wear app. http://go/clockwork Contact:
	// ewol@, flerda@, clockwork-eng@
	//   "CHROMECAST" - Chromecast app. http://go/cast-apps Team contact:
	// cast-apps-eng@google.com
	//   "ONTHEGO" - OnTheGo app. http://go/onthego Team contact:
	// otg-eng@google.com
	//   "ADSENSE" - Google AdSense app. Team contact:
	// publisher-android-app@google.com
	//   "PROJECT_FI" - Project Fi app. http://go/nova-eng Team contact:
	// tycho-atlas@google.com
	//   "JAM" - Jamboard app. http://go/jamnpard-eng Team contact:
	// jamboard-eng@google.com
	//   "HUDDLE" - Huddle app. http://go/huddle Team contact:
	// huddle-eng@google.com
	//   "CAR_APP" - Chauffeur Car app. http://go/chauffeur Team contact:
	// chauffeur-ux-eng@google.com
	//   "TAILORMADE" - Tailormade app. http://go/tailormade Team contact:
	// tailormade-eng@google.com
	//   "ACTIVITY_LOG" - Activity Log - surfaced in G+ site/app. Currently
	// for G+ only but may expand to support other apps.
	// http://go/activitylog-design Team contact: sps-activitylog@google.com
	//   "SPACES_ACTIVITY_LOG" - Activity Log in the Spaces product.
	// http://go/activity-log-spaces-dd Team contact: spaces-team@google.com
	//   "PHOTOS_ACTIVITY_LOG" - Activity Log in the Google Photos product.
	// http://go/envelope-comments-design-doc Team contact:
	// photos-backend@google.com
	//   "MEMEGEN" - Memegen! https://memegen.googleplex.com Team contact:
	// memgegen-team@google.com
	//   "SOCIETY" - Society App http://go/society Team contact:
	// society-team@google.com
	//   "SOCIETY_CHAT" - Society chat application. http://go/society Team
	// contact: society-team@google.com
	//   "HIGHLIGHT" - Search Highlight http://go/seng-highlight Team
	// contact: search-engagement-team@google.com
	//   "YOUTUBE_LIVE" - YouTube Live Chat. http://go/livechat-redesign
	// Team contact: yt-live-chat@google.com
	//   "YOUTUBE_LIVE_ACTIVITY_LOG" - YouTube Live Activity log.
	// http://go/live-chat-history-design Team contact:
	// yt-live-chat@google.com
	//   "YOUTUBE_LIVE_TAKEOUT" - YouTube Live Takeout.
	// http://go/livechat-takeout Team contact: yt-live-chat@google.com
	//   "CARDBOARD_CAMERA" - Cardboard camera app http://go/cyclops Team
	// contact: tp-cyclops@google.com
	//   "PLAY_DEVELOPER_CONSOLE" - Google Play Developer Console
	// http://go/foxcub Team contact: play-apps-devex@google.com
	//   "MIXX" - Google+ Mixx UI. http://go/mixx Team contact:
	// jeffschiller@google.com
	//   "CHROME_REMOTE_DESKTOP" - Chrome Remote Desktop app
	// http://go/chromoting Team contact: chromoting-team@google.com
	//   "HOT_LANE" - Hot Lane, Enterprise Meetings App http://go/hotlane
	// Team contact: hangout-enterprise-eng@google.com
	//   "CONTACTS" - Web Contacts UI. http://go/web-contacts Team contact:
	// contactsplus-eng@google.com
	//   "CONTACTSHEET" - Contactsheet (Web, Android, iOS).
	// http://go/peopleweb-docs Team contact: smartprofile-eng@google.com,
	// contactsheet@google.com
	//   "HOVERCARD" - Hovercard (Web). http://go/peopleweb-docs Team
	// contact: contactsplus-eng@google.com
	//   "DORY" - Dory is a tool for crowdsourcing and ranking
	// user-submitted questions, suggestions, and ideas.
	//   "SPECTRUM" - Spectrum app. http://go/spectrum-site Team contact:
	// speedtest-eng@google.com
	//   "DYNAMITE" - Dynamite App http://go/dynamite Team contact:
	// dynamite-eng@google.com
	//   "DASHER_USER_HUB" - Enterprise end user UI http://go/novitas Team
	// contact: novitas-eng@google.com
	//   "CULTURAL" - Google Arts & Culture app. http://go/ci-mobile Team
	// contact: ci-mobile-eng@google.com
	//   "BOOND" - Boond app http://go/village-mobile Team contact:
	// village@google.com
	//   "EXPEDITIONS" - Expeditions app http://go/vr-expeditions Team
	// contact: vr-expeditions@google.com
	//   "PHOTO_ALBUM_ARCHIVE" - Photo Album Archive app
	// http://go/albumarchive Team contact: social-parc-eng@google.com
	//   "GAMMAGO" - GammaGo app http://go/gammago Team contact:
	// gammax-mobile-eng@google.com
	//   "FIREBALL" - Fireball message app. contact:
	// fireball-android@google.com
	//   "SUPPLY_CHAIN_CENTRAL" - Supply Chain Central http://go/scc-site
	// Team contact: scc-infra@google.com
	//   "PAISA" - Paisa app http://go/paisa Team contact:
	// paisa-eng@google.com
	//   "SANDCLOCK" - SandClock app http://go/sandclock Team contact:
	// sandclock-eng@google.com
	//   "ACCOUNT_SETTINGS_MOBILE" - My Google Account http://go/my-google
	// Team contact: my-google-eng@google.com
	//   "GOOGLE_VOICE" - The telephony application! Contact voice-team@ or
	// voice-fe@
	//   "WING_MARKETPLACE" - Wing Marketplace http://go/xwma Team contact:
	// wing-commerce-mobile-team@google.com
	//   "CHIME" - Chime http://go/chime Team contact: chime-team@google.com
	//   "LIFESCIENCE_FRONTENDS" - Verily Lifescience Frontends
	// http://go/csp-eng Team contact: csp-eng@google.com
	//   "WYLO_TODAY" - Where You Left Off (WYLO) Today extension for iOS
	// http://go/wylo-dd Team contact: tempeh@google.com
	//   "NAKSHA_CONSUMER" - Naksha Consumer Android App (Areo)
	// http://go/naksha-android Team contact: naksha-dev@google.com
	//   "ENTERPRISE_ENROLLMENT" - Enterprise enrollment app for Chromebooks
	// http://go/eeapp Team contact: bootstrap-dev@google.com
	//   "IMPROV" - Improv (Material Gallery) mobile app.
	// http://go/material-gallery Team contact: gallery-eng@google.com
	//   "TRANSLATE" - Google Translate http://go/translate-eng Team
	// contact: translate-team@google.com
	//   "SOCIAL_ENGAGE" - Social G+ Engage http://go/social-engage Team
	// contact:social-engage-eng@google.com
	//   "CORPCAM" - CorpCam http://go/corpcam Team contact:
	// plus-ios-team@google.com
	//   "ANDROID_CONTACTS" - Android Contacts http://go/android-contacts
	// Team contact: android-contacts-eng@google.com
	//   "CURATOR" - Curator app. http://go/curator Team contact:
	// curator-eng@google.com
	//   "TRAVEL_BOOKING" - Travel Booking. http://go/travel-booking Team
	// contact: travel-booking-eng@google.com
	//   "SOCIAL_DISCOVERY" - People ranking and discovery. http://go/das
	// Team contact: es-disco-eng@google.com
	//   "GPOST" - GPost (Pony Express) http://go/gpost Team contact:
	// gpost-eng@google.com docs: http://go/gpost-android-analytics
	//   "PAIDTASKS" - Paidtasks (Google Opinion Rewards, Google Surveys)
	// http://go/402 Team contact: 402-eng@google.com docs:
	// http://g3doc/paidtasks/app/README.md
	//   "PRIMER" - Primer http://go/primerapp Team contact: vkes@google.com
	//   "LOCAL_DISCOVERY" - Local Discovery social features
	// http://go/local-stream Team contact: dgajda@google.com,
	// local-discovery-team@google.com
	//   "BASELINE" - Baseline http://go/baseline-android Team contact:
	// verily-mobile-team@google.com
	//   "QUARTZ" - Opa on Quartz http://go/opa Team contact:
	// lmirelmann@google.com, opa-quartz-team@google.com
	//   "DPANEL" - Device Management Panel http://go/dpanel-eng Team
	// contact: dpanel-eng@google.com
	//   "TRIPS" - Google Trips http://go/otg Team contact: oace@
	//   "HOME_SERVICES" - Google home services http://go/homeservices Team
	// contact: sab-eng@google.com
	//   "SOCIALGOOD" - Social Good / donations http://go/socialgood Team
	// contact: socialgood-eng-team@google.com
	//   "LOUPE" - Camera by Google photos Team contact:
	// loupe-eng@google.com
	//   "UGC_LIVE_COMMENTS" - Live comments in sport onebox
	//   "FAMILY_LINK" - Family Link http://go/familylink Team contact:
	// familylink-eng@google.com
	//   "G3DOC" - g3doc comments http://go/g3doc-comments
	//   "MOMA" - Moma http://go/moma-site
	//   "DASHER_ADMIN_CONSOLE" - Dasher Admin Console. There is a separate
	// id for DASHER_USER_HUB = 535 http://go/novitas Team contact:
	// novitas-eng@google.com
	//   "DASHER_COMMERCE_CONSOLE" - Dasher Commerce Console.
	// http://go/job314 Team contact: job314-eng@google.com
	//   "TRAVEL_VACATIONS" - Travel Vacations. http://go/travel-vacations
	// Team contact: travel-packages-eng@google.com
	//   "TRENDS" - Trends http://go/trends Team contact:
	// trends-narrator@google.com
	//   "TASKS" - Tasks http://go/accomplice Team contact:
	// tasks-eng@google.com
	//   "VIMES" - Vimes http://go/vimes-doc Team contact:
	// vimes-eng@google.com
	//   "SECURITY_EVENT_MANAGER" - Security Event Manager http://go/sem-doc
	// Team contact: sem-eng@google.com
	//   "VR_EVA" - Eva, the wally camera companion app
	// http://go/wally-camera Team contact: tp-wally@google.com
	//   "MINDSEARCH" - Mindsearch-QA: http://go/mindsearch and
	// g/sbe-mindsearch.
	//   "MINDSEARCH_ADMIN" - Power user for Mindsearch:
	// http://go/mindsearch and http://go/ms-sbe-power-options Team contact:
	// mindsearch-team@google.com
	//   "ANDROID_AUTO" - Android Auto http://go/android-auto Team contact:
	// gearhead-team@google.com
	//   "CLOUDCAST_TEXTCHAT" - Application for live chat when playing
	// games. go/yeti-gg.
	//   "APPS_ASSISTANT_OVERLAY" - Application for the Apps Assistant
	// Overlay. http://go/awr Team contact: awr@google.com
	//   "SEARCH_CONSOLE" - Search Console. http://go/wmx Team contact:
	// wmx-fe@google.com
	//   "CHROME_WEB_STORE" - Chrome Web Store http://go/cws Team contact:
	// webstore-eng@google.com
	//   "SAVE" - Saves (http://go/saves) Team contact:
	// saves-web-eng@google.com
	//   "FOOD_ORDERING" - Food Ordering http://go/fopa Team contact:
	// fopa-eng@google.com
	//   "SOCIAL_RECOVERY" - Social Recovery
	// http://go/social-recovery-update Team contact: aczeskis@google.com
	//   "ANDROID_ONBOARD_WEB" - Android Onboard Website (Growth MWeb)
	// http://go/android-mweb-dd Team contact: campaign-il@google.com
	//   "WEAR_HOME" - Android Wear (Clockwork) http://go/clockwork Team
	// contact: clockwork-eng@google.com
	//   "FACT_CHECK_EXPLORER" - Fact Check Explorer web app
	// http://go/fc-explorer Team contact: fact-checking-dev@google.com
	//   "ALLO" - Allo app http://go/allo Team contact:
	// allo-discuss@google.com
	//   "FAMILY_LINK_HELPER" - Family Link Helper companion app for
	// kids/teens http://go/familylink Team contact:
	// familylink-eng@google.com
	//   "PROXY_GAL_PROVIDER" - Proxy Gal Provider.
	// http://go/gal-provider-migration Team contact:
	// contacts-sync-eng@google.com
	//   "ONEGOOGLE" - OneGoogle bar (web). http://go/og Team contact:
	// og-team@google.com
	//   "ONEGOOGLE_ASYNC" - OneGoogle async widgets (web).
	// http://go/og-stack-redesign Team contact: og-team@google.com
	//   "WICKED" - Wicked video uploads http://go/wicked-prd Team contact:
	// wicked-team@google.com
	//   "SHEETS" - Google Sheets NOTE: Sheets is a separate app from DRIVE.
	//   "SLIDES" - Google Slides NOTE: Slides is a separate app from DRIVE.
	//   "ASSISTANT_EXPLORE_WEB" - Assistant Explore Web
	// http://go/assistant-agents-web Team contact:
	// assistant-explore-eng@google.com
	//   "ASSISTANT_SETTINGS_WEB_UI" - Assistant Settings Web
	// http://go/assistant-settings-web-ui-design Team contact:
	// assistant-settings-web-eng-team@google.com
	//   "ANDROID_DIALER" - Android Dialer app http://go/dialer Team
	// contact: android-dialer@google.com
	//   "KLOPFKLOPF" - Klopfklopf Roomtablet app. see http://go/klopfklopf
	// Team contact: klopfklopf-eng@google.com
	//   "LAGEPLAN" - Klopfklopf Hallwaytablet app. see http://go/lageplan
	// Team contact: lageplan-eng@google.com
	//   "SCIENCE_JOURNAL" - Science Journal app. see
	// http://go/sciencejournal Team contact: science-journal@google.com
	//   "HIRE" - Hire app. http://go/hire-mobile Team contact:
	// bebop-mobile-dev@google.com
	//   "ZANDRIA" - Poly (Zandria) app. http://poly.google.com/ Team
	// contact: poly-team@google.com
	//   "DASHER_RESELLER_FRONTEND" - Dasher Reseller Frontend.
	// http://g3doc/ccc/hosted/g3doc/teams/reseller/ Team contact:
	// dasher-reseller-eng@google.com
	//   "ZOOMSIGHTS" - Zoomsights. http://go/zs-prd-tt-v2 Team contact:
	// zoomsights-eng@google.com
	//   "UGC_LIVE_COMMENTS_TAKEOUT" - Live comments for take out Team
	// contact: search-ugc@google.com
	//   "GUARDIAN" - Patient Guardian http://go/patient-guardian-site Team
	// contact: g4c-eng@google.com
	//   "GUARDIAN_CORP" - Patient Guardian http://go/patient-guardian-site
	// Team contact: g4c-eng@google.com
	//   "GOOGLE_MY_BUSINESS" - Google My Business (go/gmb) Team contact:
	// geomerchant-data-measurement@google.com
	//   "PRESTO_ALP" - Presto Ads Landing Page (go/alp-v0) Team contact:
	// sb-ads@google.com
	//   "PRESTO_FE" - Presto consumer FE http://go/presto-eng Team contact:
	// geomerchant-presto@google.com
	//   "KIDS_HOME" - Kids Home app for young kids android home experience
	// Team contact: hogsmeade-eng@google.com
	//   "OPA" - Google assistant (OPA) app http://go/opa Team contact:
	// opa-android-eng@google.com
	//   "SUBSCRIBEWITHGOOGLE_CLIENT" - Subscribe with Google Client (SwG)
	// http://go/swg Team contact: swg-eng@google.com
	//   "REVEAL" - Lookout app http://go/reveal Team contact:
	// reveal-eng@google.com
	//   "ANDROID_NATIVE_ONBOARDING" - Android Native Onboarding
	// http://go/android-onboarding-dd Team contact:
	// growth-il-eng@google.com
	//   "AMP_ACTIONS" - AMP Actions go/aog-amp-actions Team contact:
	// aog-amp-actions@google.com
	//   "SPOT" - Spot app go/spot Team contact: spot-eng@google.com
	//   "MEDICAL_SCRIBE" - Medical Scribe go/medical-scribe Team contact:
	// medical-scribe-frontend-eng@google.com
	//   "MEDICAL_SCRIBE_TASKING" - Medical Scribe Tasking
	// go/medical-scribe-tasking-overview Team contact:
	// medical-scribe-tasking@google.com
	//   "DASHER_RULES_FRONTEND" - Dasher Rules Platform go/project-raven
	// Team contact: rules-platform-eng@google.com
	//   "ANDROID_TV_LAUNCHERX" - Android TV LauncherX app go/launcherx Team
	// contact: atv-launcher-engineering@google.com
	//   "ANDROID_TV_SETUP_WIZARD" - Android TV Setup Wizard app
	// go/atv-eng-setup Team contact: android-tv-setup-team-eng@google.com
	//   "SOS_LIVE_COMMENTS" - Live comments in Google search results page
	// when an SOS Alert is triggered go/ugc-live-comments-for-crisis Team
	// contact: google-sos-eng@google.com
	//   "GMAIL_LOCKER_UI" - Gmail Locker UI go/gmail-locker Team contact:
	// locker-eng@google.com
	//   "POLYGLOT" - Google-built translation editor. go/polyglot Team
	// contact: polyglot-team@google.com
	//   "PLX" - Plx go/plx Team contact: plx-explorer-team@google.com
	//   "GROUPS_UI" - Google Groups Frontend http://go/groups-doc Team
	// contact: groups-eng-team@google.com
	//   "MSV" - Managed Street View Collection app go/msvApp Team contact:
	// streetview-apps@google.com
	//   "WOLVERINE" - Google voice for enterprise go/wolverine Team
	// contact: wonlverine-eng@
	//   "MIC" - G Suite Alert Center (MIC) go/project-mic Team contact:
	// mic-eng@google.com
	//   "FORMS" - Google Forms go/freebird Team contact:
	// freebird-eng@google.com
	//   "ARCORE" - ARCore go/arcore Team contact: arcore-team@google.com
	//   "ANDROID_EMERGENCY" - Deprecated. Use ANDROID_SAFETY.
	//   "LENSLET" - Google Lens 1p Lenslets go/lenslets-g3doc Team contact:
	// lenslets-eng@google.com
	//   "MEDICAL_LABELING" - Medical Labeling go/maple Team contact:
	// maple-eng@google.com
	//   "G_SUITE_ADD_ONS" - G Suite Add-on go/gsuite-addons Team contact:
	// gsuite-addons-eng@google.com
	//   "LOCATION_HISTORY_CONSENT_ANDROID_LIBRARY" - Android library for
	// Location History consent, part of Mobile Consent Flows. go/lohiboshe,
	// go/consent-flows Team contact: consent-flows-team@google.com
	//   "PAYMENTS_WEB_5" - Payments Platform Web UI
	// http://go/payments-web-5 Team contact:
	// payments-web-infra-eng@google.com
	//   "APPS_PLATFORM_CONSOLE" - Cattery (Apps Developer Platform Console
	// UI server) go/cattery-g3 Team contact: cattery-eng@google.com
	//   "INTROSPECT" - Source of truth for Alphabet legal entities
	// go/legal-entities Team contact: introspect-eng@google.com
	//   "NGA" - Nga Suggestion Resolution Team contact: nga-app-integration
	//   "SUPPLY_CHAIN_HW_CHP2" - Hot Orders Ui Team contact:
	// hw17eng@google.com
	//   "DUC_COMPANION" - Duc Companion Team contact: duc-eng
	//   "AUTOMON" - Automon http://go/automon Team contact:
	// monitoring-platform-team@google.com
	//   "TV_LIVE_COMMENTS" - TV Live comments in Google search results page
	// for TV program/episode. go/tv-live-comments-dd Team contact:
	// tvm-features@google.com
	//   "GUP_PEEPS" - Guppeeps Team contact: gup-tech-apps-eng@google.com
	//   "FOCUS_SYNC_ADAPTER_V1" - Proxy for focus sync adapter. Team
	// contact: contacts-sync-eng@google.com
	//   "NOVA" - Nova / Google Fi Team contact: fi-growth-eng@google.com
	//   "NOVA_STAGING"
	//   "DASHER_DATA_CLASSIFICATION_FRONTEND" - Dasher Data Classification
	// Platform go/dasher-data-classification Team contact:
	// smarttags-eng@google.com
	//   "GOOGLE_ADMIN" - App for debugging G+ user data go/googleadmin.
	// Replacement for "s:googleadmin".
	//   "MESSAGE_PROCESSOR" - Different apps that are run by the
	// notifications team. Replacement for "s:messageprocessor".
	//   "EMAIL_PROCESSOR" - Replacement for "s:emailprocessor".
	//   "ENGAGE_PIPELINE" - Replacement for "s:reengagement:pipeline".
	//   "AUTO_DOC_PROBER" - Stream backend monitoring tool go/lorelei101.
	//   "DOC_PROBER"
	//   "FRAMES_DELETE_SYNC" - FrameService delete synchronization flume
	// job. The ASBE requests use "s:frames" (as do online frames requests).
	//   "EMBEDS_MIGRATION" - Embeds migration flume job. Covers the
	// multiple MR's for that project (V0 -> V1, V1 -> V2, diffing,
	// verifying ...). At any point in time only one of the jobs should be
	// running. Doesn't issue any rpc requests.
	//   "SOCIAL_REVIEWS_SYNC" - SocialReviews sync flume job. Synchronizes
	// reviews from zipit to ASBE.
	//   "GUNS" - Guns notifications delivery.
	//   "POSTBOX_ONEOFF" - One-off flumes run by the PostBox team. Team
	// contact: es-postbox@google.com.
	//   "PLUS_API_ONEOFF" - One-off flumes run by the G+ API team. Team
	// contact: plus-api-core@google.com.
	//   "STANZA_ACTIVITY_POST_DELETE_SYNC" - Stanza delete synchronization
	// flume job.
	//   "GRAPH_PROBER" - Social graph index monitoring tool.
	// go/graphprober.
	//   "STANZA_PERIODIC" - Stanza periodic flume jobs. Team contact:
	// stanza-team.
	//   "MADISON_PERIODIC" - Madison accounts periodic flume jobs.
	// http://go/madison-accounts Team contact: madison-eng
	//   "PAPYRUS_PERIODIC" - Papyrus periodic flume jobs. Team contact:
	// papyrus-team
	//   "PHOTOS_BACKEND" - Photos-backend flume jobs. Team contact:
	// photos-backend
	//   "REDBOX_BACKEND" - Redbox storage backend go/redbox
	//   "PHOTOS_FIFE" - Photos FIFE flume jobs. Team contact: fife-eng
	//   "ABUSEIAM" - Classifies abuse. Replaced by Ares (see below).
	// go/abuseiam
	//   "ARES" - Classifies abuse go/ares
	//   "STREAM_INDEXING" - Sends cliends Goops notifications.
	// go/streamindexing
	//   "STANZA_INDEXING" - Computes Additional KV Pairs for Stanza's
	// go/stanza-indexing
	//   "STANZA" - Stanza service: go/stanza. Team contact: stanza-team.
	//   "STANZA_MOONSHINE_INDEXING" - Stanza moonshine indexing. Team
	// contact: es-stream-delivery
	//   "STREAM_ACTIONS" - StreamActions service: go/streamactionsservice
	// Team contact: stream-team
	//   "STREAM_CONFIG" - StreamConfig service:
	// go/socialstreamconfigservice Team contact: stream-team
	//   "STREAM_SERVICE" - Stream service: go/stream-service Team contact:
	// stream-team
	//   "STREAM_DELETE" - Stream delete service: go/delete-stream Team
	// contact: stream-team
	//   "KWYJIBO" - Legal Investigations Support matter management
	// http://go/kwyjibo
	//   "STANZA_TEST" - Test stanzas for internal integration tests.
	// Clients who want to prototype on Stanza should use SBE_PLAYGROUND
	// instead. Team contact: stanza-team
	//   "TEST_APPLICATION" - Use for test applications and unit tests
	//   "SOCIAL_ANNOTATION_SERVICE" - AnnotationServiceV2, see
	// go/as2-design. Team contact: social-stream-delivery
	//   "ANNOTATION_SERVICE_STANZA_LISTENER" - Stanza Listener for
	// AnnotationServiceV2: go/as2-design Team contact:
	// social-stream-delivery
	//   "SBE_PLAYGROUND" - Stanza App for clients to prototype on. Team
	// contact: stanza-team
	//   "EXPO" - Expo uses the Yenta autocomplete lib (go/EXPO, go/yenta).
	// Team contact: weaver-expo@google.com, yenta-team@google.com
	//   "ANDROID_VR_HOME" - Android VR Home app. http://go/vr-home
	//   "YOUTUBE_BLARNEY_STONE" - YouTube BlarneyStone; automated abuse and
	// moderation classification http://go/blarneystone
	//   "SOCIAL_EVENTS" - Social Events http://go/social-events Team
	// contact: eventsapp@google.com
	//   "EMERGENCY_ASSIST" - Deprecated name for http://go/pomeroy.
	//   "ADS_INTEGRITY_ENFORCER" - Deprecated name for ENFORCEMENT_MANAGER
	// DEPRECATED, DO NOT USE.
	//   "ADS_INTEGRITY_ENFORCEMENT_MANAGER" - Ads Integrity's Enforcement
	// Manager client (go/hidoc)
	//   "ADS_INTEGRITY_EXPLORER" - Ads Integrity's Explorer client
	// (go/hidoc)
	//   "ADS_INTEGRITY_REVIEWER" - Ads Integrity's Reviewer client
	// (go/hidoc)
	//   "GPLUS_COLLEXION_PIPELINE" - G+ Collections pipeline. This
	// application id is used for internal cleanup. Please DO NOT use it for
	// frontend or backend logging. Team contact:
	// es-collections-eng@google.com.
	//   "GPLUS_OFFLINE" - Application used by G+-owned pipelines. Contact:
	// plus-server-eng@.
	//   "PAPYRUS" - Papyrus service (go/papyrus). Team contact:
	// papyrus-team
	//   "YOUTUBE_ADMIN" - App for administration of Youtube entities at
	// admin.youtube.com Team contact: yt-force@google.com
	//   "YOUTUBE_ADMIN_REVIEW_QUEUE_PACING" - App for Youtube Review Infra
	// Pacing. Team contact: yt-review-queue-eng@google.com
	//   "YOUTUBE_TNS_VERTICAL_MANAGER" - App for Youtube Vertical Manager.
	// Team contact: youtube-tns-vm-team@google.com
	//   "YOUTUBE_DECIDER" - YouTube Decider (go/yt-tns-dna) Team contact:
	// yt-force-decision-platform@google.com
	//   "YOUTUBE_TNS_ACTION" - Application for actions enforcing TnS
	// policies due to TnS violations. It's used in both the read and write
	// path (go/yt-tns-dna). Team contact:
	// yt-force-decision-platform@google.com
	//   "YOUTUBE_EXTERNAL_LINKS" - YouTube External Links
	// (go/abusivelinks). Team contact: youtube-url-defenses@google.com
	//   "FOCUS_BACKEND_BATCH" - Batch jobs run by the Focus Backend team
	// (go/fbs) Team contact: focus-backend-eng@google.com
	//   "TEAMSPACES" - Teamspaces Team contact: teamspaces-eng@google.com
	//   "ASSISTANT_OPA" - Assistant Opa Team contact:
	// assistant-a4w-client@google.com
	//   "TRASNLATION_MEMORY_MANAGER" - Translation Memory Manager Team
	// contact: tm-team-core@google.com
	//   "THREADIT" - Threadit Team contact: paulmalolepsy@google.com
	//   "RESOURCE_SYMPHONY" - Resource Symphony Team contact:
	// fdo-fe-eng@google.com
	//   "L10N_INFRA_SHARED" - L10n Infra Shared Team contact:
	// tm-team-core@google.com
	//   "WORK_TRACKER" - Work Tracker Team contact: planr-eng@google.com
	//   "ARIANE" - Ariane Team contact: launch-team@google.com
	//   "COLAB_INTERNAL" - Colab Internal Team contact:
	// colab-team@google.com
	//   "COLAB_EXTERNAL" - Colab External Team contact:
	// colab-team@google.com
	//   "TALENT_GROW" - Talent Grow Team contact: grow-eng@google.com
	//   "ROCKET_LABS" - Rocket Labs Team contact:
	// traditionalgti-coach-dev-team@google.com
	//   "MY_GOOGLE_FAMILIES" - My Google Families Team contact:
	// id-iff-eng@google.com
	//   "DATA_STUDIO" - Data Studio Team contact: ga-lego-fe-eng@google.com
	//   "LEGAL_CONTRACTS" - Legal Contracts Team contact:
	// nala-eng@google.com
	//   "BRIEF" - Brief Api Team contact: brief-team@google.com
	//   "HARDWARE_MFG_DATA_VENUS" - Hardware Mfg Data Venus Team contact:
	// cte-data-eng@google.com
	//   "BETTERBUG" - Betterbug Team contact: betterbug-team@google.com
	//   "DCMS" - Dcms Team contact: dcms@google.com
	//   "PLAY_BOOKS_PUBENG" - Play Books Pubeng Team contact:
	// playbooks-pubeng-core@google.com
	//   "YAQS" - Yaqs Team contact: yaqs-eng@google.com
	//   "PROSPER" - Prosper Team contact: corp-comp-eng@google.com
	//   "CAMPAIGN_AUTOMATION_TOOL" - Campaign Management Tool Team contact:
	// subhamidipati@google.com
	//   "HIRING" - Hiring Team contact: bellalewis@google.com
	//   "DATACENTER_SOFTWARE" - Datacenter Software Team contact:
	// talos-eng@google.com
	//   "MARKETING_WORKFLOWS" - Marketing Workflows Team contact:
	// mw-workflow-eng@google.com
	//   "YOUTUBE_PARENT_TOOLS" - Youtube Parent Tools Team contact:
	// yt-pegasus-web@google.com
	//   "RELIABILITY_INSIGHTS_PST" - Reliability Insights Pst Team contact:
	// rel360-platform-team@google.com
	//   "CUSTOMER_CARE_PORTAL" - Customer Care Portal Team contact:
	// xpp-eng@google.com
	//   "FUSION" - Test Fusion Team contact: fusion-team@google.com
	//   "PRODUCTION2020_UIE" - Production2020 Uie Team contact:
	// p2020-ui-excellence-team@google.com
	//   "SPEAKEASY" - Speakeasy Team contact: speakeasy-eng@google.com
	//   "GPAY_RELEASE_OPS" - Gpay Release Ops Team contact:
	// gpay-release-ops@google.com
	//   "SKILLSSTACK" - Skillsstack Team contact:
	//   "WHOSTORY" - Whostory Team contact: whostory@google.com
	//   "BETTANY" - Bettany Team contact: bettany-eng@google.com
	//   "BASECAMP" - Basecamp Team contact: hardware-ml-infra@google.com
	//   "CULTURE_EVENTS_CALENDAR" - CULTURE_EVENTS_CALENDAR Team contact:
	// culture-events-calendar@google.com
	//   "DATABRIDGE_CONSOLE" - Databridge Console Team contact:
	// databrige-eng@google.com
	//   "COMMSTAR" - Commstar Team contact: mdb.commstar-dev@google.com
	//   "CDDB" - Cddb Team contact: cddb-dev-team@google.com
	//   "MONOSPACE" - Monospace Team contact: monospace-eng@google.com
	//   "MY_ACCOUNT" - My Account Team contact: my-google-eng@google.com
	//   "NUDGEIT_CAMPAIGN_MANAGER" - Nudgeit Campaign Manager Team contact:
	// nudges-campaign-manager-team@google.com
	//   "DEPRECATED_QUICKSTART_FLUME"
	//   "DUO_CLIENT" - Duo Client Team contact: duo-eng@google.com
	//   "ALBERT" - Project albert (go/albert-frontend) Team contact:
	// albert-eng@google.com
	//   "PEOPLE_PLAYGROUND" - People Playground
	// (go/people-playground-design) Team contact: project-buffet@google.com
	//   "GPLUS_POST_RECOMMENDER" - Recommended posts pipeline
	// (go/topics-web-gplus) Team contact: stream-ranking-team@google.com
	//   "IMAGES" - Image Search http://go/images Team contact:
	// images-ui-eng@google.com
	//   "GOOGLE_STORE" - Google Store http://go/smashberry Team contact:
	// smashberry-eng@google.com
	//   "GCONNECT_MUSTARD" - NBU GConnect Mustard http://go/mustard Team
	// contact: gconnect-mustard-eng@google.com
	//   "MADDEN" - Madden (http://go/madden) Team contact:
	// madden-eng@google.com
	//   "MOBDOG" - MobDog (http://go/mobdog) Team contact:
	// ph-eng@google.com
	//   "GBOARD" - GBOARD (http://go/gboard) Team contact:
	// gboard-eng@google.com
	//   "RECORDER" - Recorder (http://go/recorder) Team contact:
	// recorder-eng-team@google.com
	//   "UNMAPPED_LEGACY_GPLUS_SOURCE" - All legacy g+ posts which
	// currently does not have an application to map to.
	//   "PODIUM" - Podium (http://go/podium)
	//   "GSA_FUSE" - FUSE targets at younger user base who is extensively
	// using Visual/Photo and location as input for searching.
	// go/fuse-sbe-v0-integration. Team Contact: igsa-visual@google.com
	//   "HONEYPHISH" - Honeyphish (http://go/honeyphish)
	//   "SOCIAL_ANNOTATION_SERVICE_BACKFILL" - Offline backfill job for
	// annotations generated by go/asv2.
	//   "CONTACT_HR" - Pops Support (Contact HR) go/contacthr-design Team
	// contact: boq-contacthr-eng@google.com
	//   "PAISA_WANDER" - Paisa Wander (http://go/paisa-tools) Team Contact:
	// paisa-tools@google.com
	//   "NEXTGENRETAIL_SELF_ORDER" - NextGen Retail Self Order
	// (go/nextgenretail) Team Contact: nextgenretail-eng@google.com
	//   "UNSET_APPLICATION" - Application not set by client. Only used
	// internally.
	//   "UNKNOWN_FIRST_PARTY_APPLICATION" - First Party Application which
	// is not mapped to the already defined enums.
	//   "WABEL" - DEPRECATED DO NOT USE.
	//   "VIDEO_HANGOUT" - VIDEO_HANGOUT represents the gcomm application
	// (javascript/apps/gcomm). Hangout Video Calls (rtc-eng@).
	//   "VIDEO_HANGOUT_LITE" - Legacy (lite) hangouts (rtc-eng@).
	//   "VIDEO_HANGOUT_GVC" - GVC hangouts calls (gvc-team@).
	//   "VIDEO_HANGOUT_PRESENT" - go/present hangouts (gvc-team@).
	//   "VIDEO_HANGOUT_HOA" - Hangouts on Air (rtc-audience@).
	//   "VIDEO_HANGOUT_TEE" - Helpouts Hangouts (tee-team@).
	//   "VIDEO_HANGOUT_SDK" - Shoe SDK (etnu@).
	//   "VIDEO_HANGOUT_ENVOY" - Envoy (go/envoy). Contact: noahric@,
	// envoy-eng@.
	//   "BABEL" - Babel's chat client (aka Hangouts Chat).
	//   "BABEL_NOVA" - Babel's Nova client. Used for NOVA related logging
	// through BABEL. Contact: mlei@
	//   "WABEL_MEDIACALL" - Media calling embedded in Wabel. Contact:
	// efernandez@, dalesat@
	//   "HANGOUT_START_PAGE" - Hangouts landing page (hangouts.google.com).
	// Contact: jdudder@, jchord@
	//   "EXPRESS_LANE" - Express Lane (go/express-lane) Contact:
	// efernandez@, pauldean@, qaz@
	//   "MEETINGS_ANDROID" - Enterprise Meetings App for Android
	// http://go/thor-android Team contact: c4w-mobile-eng@google.com
	//   "EXPRESS_LANE_BOQ" - Express Lane on Boq. Contact: efernandez@,
	// pauldean@, qaz@, segu@
	//   "RTC_FLEET_MGMT" - Hangout Meet Hardware management Team contact:
	// rtc-fleet-mgmt-eng@google.com --------------------------- END HANGOUT
	// APPLICATIONS ----------------------
	//   "STAX" - Stax database (go/stax). Contact: stax-eng@
	//   "RIGEL" - Hangouts Immersive Client. Contact: pawong@, plancarte@
	//   "PHOTOS_SCANNER" - Scanner app. http://go/photos-scanner Team
	// contact: photos-draper-eng@google.com
	//   "PHOTOS_LIBRARY_API" - Photos Library API
	// http://go/photos-3p-g3docs Team contact: photos-3p-eng@google.com
	//   "PHOTOS_PARTNER_API" - Photos Library API
	// http://go/photos-3p-g3docs Team contact: photos-3p-eng@google.com
	//   "VAULT" - Vault (go/vault) Team contact: vault-eng@
	//   "PROF" - Course Kit (go/prof) Team contact: prof-eng@
	//   "TOTAL" - TOTAL is for all application traffic.
	//   "TOTAL_ZERO_PARTY" - TOTAL_ZERO_PARTY is for all traffic from
	// plus.google.com or its counterparts such as the native mobile G+ app
	// or mobile web.
	//   "TOTAL_FIRST_PARTY" - TOTAL_FIRST_PARTY is all non-G+ Google
	// properties, such as Gmail and YouTube.
	//   "TOTAL_THIRD_PARTY" - TOTAL_THIRD_PARTY is all third-party site
	// traffic.
	//   "TOTAL_INTERNAL" - TOTAL_INTERNAL is all Google-internal traffic.
	// e.g. prober, monitoring, mapreduces.
	//   "TOTAL_UNKNOWN" - TOTAL_UNKNOWN is all unknown traffic.
	//   "TOTAL_MINUS_YOUTUBE" - TOTAL_MINUS_YOUTUBE is all traffic
	// excluding any traffic from YOUTUBE.
	//   "TOTAL_FIRST_PARTY_WITH_PRIMARY_INTENT_TO_SHARE_TO_GPLUS" -
	// TOTAL_FIRST_PARTY_WITH_PRIMARY_INTENT_TO_SHARE_TO_GPLUS is all first
	// party traffic with primary intent to share to Google+. All
	// applications that belong to TOTAL_FIRST_PARTY and do not belong to
	// TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS belong to
	// this category.
	//   "TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS" -
	// TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS is all
	// first party traffic with no primary intent to share to Google+. The
	// applications that belong to the category are defined in
	// google3/logs/lib/social/content_creation/blacklist_apps.pb.
	//   "TOTAL_GPLUS" - TOTAL_GPLUS is all variations of gplus app under
	// TOTAL_SOCIAL_APPS
	//   "TOTAL_SOCIAL_APPS" - TOTAL_SOCIAL_APPS is all core social Google
	// apps.
	//   "CROWD_COMPUTE" - CROWD_COMPUTE is a Google-internal crowd-sourcing
	// platform.
	//   "KHAZANA" - KHAZANA is an NBU app for document organization.
	// http://go/khazana Team contact: khazana-eng@google.com
	//   "LIGHTER_GMM" - Lighter is a cross-platform messaging platform to
	// enable applications to build rich in-app messaging experiences. GMM
	// (Google Maps for Mobile) chatting is built on top of Lighter. Team
	// contact: sbe-lighter@google.com
	//   "LIGHTER_GMB" - Lighter is a cross-platform messaging platform to
	// enable applications to build rich in-app messaging experiences. GMB
	// (Google My Business) chatting is built on top of Lighter. Team
	// contact: sbe-lighter@google.com
	//   "MYACTIVITY" - MYACTIVITY is myactivity.google.com
	// http://go/myactivity Team contact: footprints-team@google.com
	//   "BLOG_COMPASS" - BLOG_COMPASS is an app that helps bloggers manage
	// their site and find topics to write about. http://go/blog-compass
	// Team: blog-compass@google.com
	//   "CONCORD" - CONCORD measures business and product usage metrics
	// across Google Cloud Platform. http://go/concord Team:
	// concord-dev@google.com
	//   "NAVSTAR" - Navstar is an app that helps googlers to understand how
	// users are interacting with Search & Assistant features.
	// http://go/navstar2 Team: navstar-eng@google.com
	//   "SETTINGS_INTELLIGENCE" - Settings Intelligence is an app that
	// contains updatable module for Pixel Settings.
	// http://go/hacking-on-settings Team: android-settings-core@google.com
	//   "TOPAZ_TEAMS" - Topaz teams is a team under Topaz (aka Google Cloud
	// Search) with a mission to externalize the Teams product we have here
	// at Google under Moma. http://go/topaz-teams Team:
	// topaz-teams-eng@google.com
	//   "GEMAGENT" - Google Endpoint Management Android Agent
	// go/emm-extension Team: mdm-core-eng@google.com
	//   "DUMBLEDORE" - DUMBLEDORE is an app that helps kids learn through
	// relevant interest based informal interactions across Google's
	// products http://go/dumbledore Team: dumbledore-team
	//   "GOOGLE_ONE" - Google One is a subscriptions plan that unlocks
	// premium experiences across Google products. go/googleone Team:
	// subscriptions
	//   "NBU_GCONNECT_KIMCHI" - NBU GConnect Kimchi Google Station Partner
	// Console http://go/gstation-partner-console Team:
	// mdb.nbu-gconnect-kimchi-team@google.com
	//   "FASTDASH" - FASTDASH is a near real-time reporting system that
	// processes front-end logs go/fastdash Team:fastdash-infra
	//   "AQUARIUS_LAPIS" - Clockwork (Aquarius Lapis) go/aquarius-eng Team:
	// aquarius-eng@google.com
	//   "DASHER_REPORTING" - Dasher Reporting go/dasher-reporting-g3doc
	// Team: dasher-bip-eng@google.com
	//   "GCONNECT_PICARD" - NBU GConnect Picard http://go/gconnect-picard
	// Team contact: gstation-web@google.com
	//   "GOOGLE_JACQUARD" - go/jacquard
	//   "GOOGLE_GO" - Google go http://go/googlego Team:
	// googleit-eng-team@google.com
	//   "BUGANIZER" - Used in Buganizer.
	//   "DOCOS_MENTIONS" - Used in Docos Mentions.
	//   "TRIX_WAFFLE" - Used in Trix Waffle. go/trixwaffle.
	//   "SHARE_SERVICE" - Used in Share Service. go/apps-share
	//   "ANDROID_SAFETY" - Android Safety go/android-safety-g3doc
	//   "CLOUDCAST_TEXTCHAT_TAKEOUT" - Yeti text chat for Takeout.
	// go/yeti-takeout-integration Team contact: yeti-textchat@google.com
	//   "ASSISTANT_GO" - Assistant Go http://go/goopa Team:
	// assistant-lite-android-eng@google.com
	//   "FLOURISH" - Flourish App. go/flourish
	//   "ALECS" - ALECS go/project-mic Team contact: mic-eng@google.com
	//   "NANDHI" - Nandhi Test Scheduler Team contact:
	// people-sharing-engprod@google.com
	//   "GOOGLE_RECORDER" - Audio Recorder Team contact:
	// pixel-apps-recorder@google.com
	//   "CONTACT_STORE" - ContactStore traffic with unknown client.
	//   "PROFILE_CARD" - Profile Card go/yt-profile-card-prd Team contact:
	// yt-identity-core
	//   "ESPRESSO" - Espresso Team contact: readiness-devs
	//   "PEOPLE_COMPANION" - People Companion http://go/people-companion-dd
	// Team contact: contactsplus-eng@google.com
	//   "PHOTOS_GO" - Photos Go (go/photos-go) Team contact: photos-go-eng
	//   "YETI" - yeti go/yeti Team contact: yeti-analytics-eng
	//   "BLOOM" - Bloom go/bloom Team contact: bloom-edu-eng@google.com
	//   "FIELD_OFFICER" - Vantage Field go/vantage-field Team contact:
	// vantage-dispatch-eng@google.com
	//   "URBAN_MOBILITY" - Google Roads & Transit go/urbanmobility Team
	// contact: urban-mobility-eng@google.com
	//   "FAMILYCARE" - Google Health Familycare go/hydrangea Team contact:
	// health-familycare-apps-eng@google.com
	//   "INTUITIVE_PLATFORM" - Intuitive Platform go/intuitive Team
	// contact: ml4nt-dev@google.com
	//   "NBU_CRICKET_WORLD_CUP" - Paisa microapps cricket. go/wc-2019 Team
	// contact: payments-microapps-pek-team@google.com
	//   "INTEGRATION_PLATFORM" - Integration Platform Team contact:
	// cloud-crm-platform-eng@prod.google.com
	//   "CROS_SCALING_STAGING" - CrOS Scaling & Services staging apps
	// generic commenting service. go/cros3 Team contact:
	// chromeos-peng-eng@google.com.
	//   "CROS_SCALING_PROD" - CrOS Scaling & Services prod apps generic
	// commenting service go/cros3 Team contact:
	// chromeos-peng-eng@google.com.
	//   "ASSISTANT_PROACTIVE_SUGGESTIONS" - Assistant Proactive
	// Suggestions. go/opacros-proactive-design Team contact:
	// assistant-proactive-suggestions-team@google.com
	//   "PRIVACY_ONE" - Privacy One Suite of Applications go/privacy-one
	// Team contact: privacy-one-dev-team@google.com
	//   "PAISA_MERCHANT" - Paisa app http://go/paisa Team contact:
	// paisa-eng@google.com
	//   "ASSISTJS" - Assist JS go/aog-assistjs-logging Team contact:
	// aog-amp-actions@google.com
	//   "TRAVEL_HOTELIER" - Hotelier go/hotelier-frontend Team contact:
	// hotels-hotelier-eng@google.com
	//   "PHOTOS_KINDYGRAM" - Photos Kindygram (Photos for Edu) app go/kindy
	// Team contact: kindygram-eng@google.com
	//   "ANDROID_MESSAGES" - Messages SMS/MMS/RCS messaging app for Android
	// go/messages Team contact: am-shell-team@google.com
	//   "TRAVEL_HOTEL_EDITOR" - HKB hotel editor go/hkb Team contact:
	// hkb-eng@google.com
	//   "VISTAAR" - Vistaar web app go/vistaar Team contact:
	// vistaar-eng@google.com
	//   "VISTAAR_DEV" - Vistaar web app, non-prod instances go/vistaar Team
	// contact: vistaar-eng@google.com
	//   "GSUITE_GROWTH" - G Suite Growth go/dasher-growth Team contact:
	// dasher-growth-eng@google.com
	//   "ELDAR" - Eldar go/eldar Team contact: eldar-dev@google.com
	//   "GMB_ANDROID" - GMB Android client http://go/gmb-android Team
	// contact: gmb-android@google.com
	//   "SHOPPING_LIST" - Shopping List go/shoppinglist Team contact:
	// shoppinglist-eng@google.com
	//   "EARTH" - Earth Team contact: earth-ios
	//   "PAISA_CREDIT_INSTANT_LOAN" - Instant Loans Microapp
	// go/instant-loans-ui-v2-dd Team contact: paisa-credit-eng@google.com
	//   "ASSISTANT_GO_WEB" - Assistant Go Web (Citadel) go/goopa-citadel
	// Team contact: assistant-nbu-android-eng@googoe.com
	//   "SHOWTIME_EVENTS" - Showtime Team contact: ecp-platform-team
	//   "KONARK" - Admin Console - Compliance Center (go/konark) go/konark
	// Team contact: konark-eng@google.com
	//   "EXO_REFSERVER" - Exo Refserver go/exo Team contact:
	// exo-core@google.com
	//   "MONITORING_PLATFORM" - Monitoring Platform go/monitoring-platform
	// Team contact: monitoring-platform-team@google.com
	//   "AUTOCAP" - Autocap go/autocap Team contact:
	// capmgmt-team@google.com
	//   "PAYMENTS_ORCHESTRATION" - Payments Orchestration go/orchestration
	// Team contact: payments-platform-discuss@google.com
	//   "GMB_IOS" - Google My Business iOS http://go/gmb Team contact:
	// geomerchant-data-measurement@google.com
	//   "ASSISTANT_KAIOS" - Assistant on KaiOS go/nbu-dcf-dd Team contact:
	// assistant-nbu-features-eng@google.com
	//   "ADMOB_MOBILE" - AdMob companion app go/admob-mobile-dd Team
	// contact: admob-mobile-app-eng
	//   "SCREENERS" - Health Screeners app go/screeners-prd Team contact:
	// health-screeners-dev@google.com
	//   "MILTON" - Meetings intelligence http://go/meetings-intelligence
	// Team contact: meetings-intelligence-eng@google.com
	//   "GHIRE" - gHire go/ghire, go/ghire-g3doc Team contact:
	// rp2-crm-eng@google.com
	//   "TRANSLATE_COMMUNITY_UI" - Translate Community
	// go/translate-community Team contact: translate-community@google.com
	//   "ROAD_MAPPER" - Road Mapper http://go/road-mapper Team contact:
	// maps-ugc-mtwr@google.com
	//   "NEST" - Nest Team contact: vkandamath@google.com
	//   "ROLLOUTS_UI" - Rollouts UI go/releases-rollouts Team contact:
	// releases-rollouts-ui@google.com
	//   "SHOPPING_PROPERTY" - Shopping Property go/compass-infra Team
	// contact: compass-infra@google.com
	//   "SHOPPING_PROPERTY_NONPROD" - Shopping Property non prod
	// environment. go/compass-infra Team contact: compass-infra@google.com
	//   "PAYMENTS_MERCHANT_VERTICALS_GAS" - Payments Gas Microapp
	// http://go/gas-microapp-engdoc Team contact:
	// microapps-transportation-eng@google.com
	//   "PAISA_MOVIES" - Paisa Movies Microapp go/microapp-movies-prd Team
	// contact: mdb.paisa-movies-dev@google.com
	//   "HUB_CALL" - Hub Call Team contact: voice-fe-ios@google.com
	//   "WAYMO_SIMULATION_RESULTS" - Waymo simulation results dashboard
	// go/waymo-sim-results Team contact:
	// chauffeur-sw-quality-eng@google.com
	//   "GSUITE_WORKFLOWS" - Gsuite Workflow Team contact:
	// apps-workflow-editor-eng-team@google.com
	//   "FINANCE_WORKFLOWS" - Corp Eng Finance Workflows Team contact:
	// introspect-eng@google.com
	//   "PAYMENTS_MERCHANT_VERTICALS_PARKING_UI" - Payments Parking
	// Microapp go/gpay-microapp-parking Team contact:
	// spots-parking-team@google.com
	//   "TRAVEL" - Travel Team contact: mayflower-eng@google.com
	//   "GABBLE" - Gabble: *G*oogle *A*ssistant *B*ig *BL*uetooth
	// *E*valuator An internal-only Android application to expedite
	// Bluetooth feature development for the Assistant Auto team. See
	// go/morris-bt for more information. Team contact:
	// gabble-app-eng@google.com
	//   "APPS_EDU" - Prof (go/prof) and Originality (go/originality). Team
	// contact: prof-eng@google.com, plagiarism-eng@google.com
	//   "MYFI" - MyFi go/myfi Team contact: sumer-myfi-eng@google.com
	//   "CHOMCHOM" - Chomchom content first experience app.
	// go/chomchom-deck Team contact: chomchom-eng@google.com
	//   "ASSISTANT_TOOLCHAIN" - Assistant Toolchain - Dialog Central Team
	// contact: dialog-central-eng@google.com
	//   "YOUTUBE_ANSIBLE" - YouTube Ansible - Abuse platform, go/ansible
	// Team contact: yt-kapla-ansible@google.com
	//   "YOUTUBE_CI_KAPLA" - YouTube Community Inteligence Kapla
	// integration. b/186151755. Team contact: yt-kapla-team@google.com,
	// yt-kapla-ansible@google.com
	//   "GANTRY" - Gantry Team contact: gmscore-gantry-team@google.com
	//   "PAYMENTS_MERCHANT_CONSOLE" - Payments merchant console
	// (go/merchant-console-design) Team contact:
	// merchant-console-infra-eng@google.com
	//   "SPLINTER" - Ta'veren - Splinter Team contact:
	// taveren-team@google.com
	//   "KINTARO" - Kintaro Team contact: kintaro-eng@google.com
	//   "MDM_ADMIN_CONSOLE" - MDM Admin Console Team contact:
	// mdm-eng@google.com
	//   "PAYMENTS_CONSUMER_CORE" - Payments consumer core products. Team
	// contact: gpay-android-eng@google.com
	//   "INCIDENT_MANAGEMENT" - Incidentflow Team contact:
	// im-tools-eng@google.com
	//   "ONEGOOGLE_MOBILE" - OneGoogle Mobile. http://go/og Team contact:
	// og-mobile@google.com
	//   "ANURA" - Anura App Team contact: anura-eng@google.com
	//   "FINANCE_FGC" - FGC Google Finance (go/sumer-fgc) Team contact:
	// fgc-eng@google.com
	//   "PODCASTS_MANAGER" - Podcasts Manager Team contact:
	// speakachu-team@google.com
	//   "FILES" - Files by Google Team contact: files-eng@google.com
	//   "YOUTUBE_POST_API" - YouTube Post API Team contact:
	// yt-post-api-eng@google.com
	//   "GSUITE_HUB" - GSuite Hub Team contact: g/hub-eng
	//   "TV_LAUNCHER" - ATV Analytics Watson
	// go/atv-analytics-design-launcher Team contact:
	// atv-analytics-team@google.com
	//   "PAIDTASKS_FRONTEND" - New paidtasks (Surveys) frontend
	// go/402surveys2 Team contact: 402-surf@google.com
	//   "ONE_REVIEWER_TOOL" - One Reviewer Tool Team contact:
	// onereviewertool-eng@google.com
	//   "MEET_QUALITY_TOOL" - Meet Quality Tool go/thor-mqt Team contact:
	// rtc-upsight-team@google.com
	//   "TRAVEL_PLANNING"
	//   "MEET" - Google Meet http://go/thor-eng Team contact:
	// hangout-enterprise-eng@google.com
	//   "PAISA_FOOD" - Paisa Nearby Merchant go/gpay_nearby_prd Team
	// contact: nbu-paisa-merchants-verticals-team@google.com
	//   "TINYTASK_TASKER"
	//   "FIELDOFFICER" - Vantage Field go/vantage-field Team contact:
	// vantage-dispatch-eng@google.com
	//   "LENS_WEB" - Lens Web (go/lens-web). Team contact:
	// lens-web@google.com.
	//   "HERALD" - Herald app (go/herald-g3doc) Team contact:
	// herald-eng@google.com
	//   "PAISA_MICROAPPS_WEB" - Paisa Microapps Web Projects. Includes
	// landing page, microtab and other web related projects. go/microapps,
	// go/microapp-landing-page, go/microapps-store Team contact:
	// microapps-platform-team@google.com
	//   "BUG_OBSERVER" - BugObserver go/bugobserver-help,
	// bugobserver-eng@google.com
	//   "ATLAS" - Atlas Team contact: atlas-eng@google.com
	//   "DHARMA" - Dharma Initiative go/dharma Team contact:
	// dharma-team@google.com
	//   "SNIPIT" - Snipit Team contact: snipit-dev@google.com
	//   "PREMIUM_ASSISTANT" - Premium Assistant (go/premium-assistant) Team
	// contact: premium-assistant-eng@google.com
	//   "ONEREVIEWERTOOL" - OneReviewerTool (go/ORT-doc) Team contact:
	// onereviewertool-eng@google.com
	//   "CORONADO" - Coronado Team contact: rpui-eng-team@google.com
	//   "SYSTEM1" - Intake go/systemone Team contact:
	// system1-team@google.com
	//   "PUMICE" - Pumice Team contact: pumice-team@google.com
	//   "BACKLIGHT" - Backlight Team contact: jsuite-eng@google.com
	//   "GLOSSARY_MANAGER" - Glossary Manager Team contact:
	// tm-team-core@google.com
	//   "UPGRADEPARTY" - Google Growth - UpgradeParty go/upgradeparty Team
	// contact: google-growth-eng@google.com
	//   "ONEDEV_WORKFLOW" - Onedev Workflow Team contact:
	// one-developer-workflow+people-stack@google.com
	//   "AVALANCHE" - Avalanche Team contact: cpe-surveys-eng@google.com
	//   "KORMO_SEEKER" - Kormo Team contact: kormo-eng@google.com
	//   "ASSISTANT_PROFILE_YOURPEOPLE" - Assistant Profile Yourpeople Team
	// contact: assistant-family-eng@google.com
	//   "SMART_DISPLAY_WEB" - Smart Display Web go/sdweb Team contact:
	// sdweb-eng@google.com
	//   "DESKBOOKING" - Deskbooking Team contact: desktopia-open@google.com
	//   "PAYMENTS_MERCHANT_VERTICALS_FOOD" - Food Vertical
	// go/payments-merchant-verticals Team contact:
	// nextgenretail-eng@google.com
	//   "VALUABLES_MERCHANT_CENTER" - Valuables Merchant Center
	// go/valuables-merchant-ui Team contact: tp2-valuables@google.com
	//   "OFFSEC" - Offsec Team contact: redgate@google.com
	//   "SCHEDULE" - Staffing Works Schedule Tool go/schedule-docs Team
	// contact: rp2-schedule-eng@google.com
	//   "PAISA_SOCIAL_CAMPAIGNS" - Paisa social campaigns platform.
	// go/gpay-campaign-generalization Team contact: pc-social@google.com
	//   "WORDFLOW" - Wordflow Team contact: wordflow-eng@google.com
	//   "HEALTH_PLANFORCARE" - Plan-for-Care web immersive
	// (go/p4c-immersive-design) Team contact: care-planning-eng@google.com
	//   "DEEPMIND_ALPHASCHEDULE" - DeepMind AlphaSchedule
	// (go/alphaschedule-docs) Team contact:
	// deepmind-alphaschedule-eng@google.com
	//   "HOOLICHAT_UI" - Hoolichat go/hoolichat Team contact:
	// hoolichat-eng@google.com
	//   "YOUTUBE_CREATOR_STUDIO" - Youtube Creator Studio Team contact:
	// creator-studio-eng@google.com
	//   "BRICKS" - Bricks Team contact: mdb.cloudx-bricks-team@google.com
	//   "PAYMENTS_MERCHANT_DATA_BUSINESS_INSIGHT" - Payments Merchant
	// Business Insight (go/mechant-business-insight-home).
	//   "RECALL" - Recall https://recall.googleplex.com Team contact:
	// recall@google.com
	//   "NEST_GREENENERGY" - Nest Green Energy Web go/apollo-web-ui
	//   "FRAP" - Frap go/frap-docs Team contact: frap-eng@google.com
	//   "PAYMENTS_MERCHANT_VERTICALS_GROCERY" - Payments Grocery Microapp
	// go/grocery-deals Team contact: spots-grocery-team@google.com
	//   "REVIEWS_WIDGET_API" - Reviews Widget API go/reviews-widget Team
	// contact: wugc@google.com
	//   "INCIDENTFLOW" - go/incidentflow Team contact:
	// im-tools-eng@google.com
	//   "AREA120_PROMODAY" - Area 120 - PromoDay go/promoday Team Contact:
	// area120-promoday-eng@google.com
	//   "PINPOINT" - Pinpoint go/jsuite-pinpoint Team contact:
	// backlight-eng@google.com
	//   "TRANSCONSOLE" - Translation Console go/transconsole Team contact:
	// transconsole-eng@google.com
	//   "MARKETPLACE" - Google Workspace Marketplace go/gsm-eng Team
	// contact: gsm-team@google.com
	//   "SPORK" - Drive desktop Photos uploader go/spork-prd Team contact:
	// spork-eng@google.com
	Application string `json:"application,omitempty"`

	// StateStatus: * There can be multiple states based on the context: 1.
	// AUTOCOMPLETE + Gmail - context 1 2. AUTOCOMPLETE + Chat/Dynamite -
	// context 2 3. "SOME OTHER ACTION" + Gmail - context 3 A client should
	// identify whether a patrticular context is present in the list and
	// only if one is found - use the state that goes alogn with the
	// context, otherwise the client should default to whatever is the safe
	// assumption about "internality/externality" the application should be
	// making (likely, consider everything not explicitly "internal" as
	// "external").
	StateStatus []*PeoplestackFlexorgsProtoInternalExternalStateStatus `json:"stateStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Application") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Application") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PeoplestackFlexorgsProtoInternalExternal) MarshalJSON() ([]byte, error) {
	type NoMethod PeoplestackFlexorgsProtoInternalExternal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type PeoplestackFlexorgsProtoInternalExternalStateStatus struct {
	// Possible values:
	//   "INTERNAL_EXTERNAL_CONTEXT_UNSPECIFIED"
	//   "AUTOCOMPLETE"
	ContextType string `json:"contextType,omitempty"`

	// Possible values:
	//   "INTERNAL_EXTERNAL_STATE_UNSPECIFIED"
	//   "INTERNAL"
	//   "EXTERNAL"
	//   "NOT_APPLICABLE" - Meant for scenarios where client-sides need to
	// know if External information was truly missing, meaning the contact
	// came from a source other than Server (i.e device contacts, user
	// entered, etc), or if the server intentionally did not populate the
	// attribute (i.e. non-Dasher). This value will never be set by the
	// server, and instead, the client will use it to create an artificial
	// payload the first time it receives a server contact that doesn't have
	// external data. That way the client will know downstream that external
	// state doesn't apply
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContextType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContextType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PeoplestackFlexorgsProtoInternalExternalStateStatus) MarshalJSON() ([]byte, error) {
	type NoMethod PeoplestackFlexorgsProtoInternalExternalStateStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PerDocData:
// ======================================================================
// ===== # Make sure you read the comments in the bottom before you add
// any new field. NB: As noted in the comments, this protocol buffer is
// used in both indexing and serving. In mustang serving implementations
// we only decode perdocdata during the search phase, and so this
// protocol should only contain data used during search. See
// mustang/repos_www/attachments.proto:{MustangBasicInfo,MustangContentIn
// fo} for protocols used during search and/or docinfo. Next available
// tag deprecated, use this (and look for commented out fields):
// blaze-bin/net/proto_compiler/protocol-compiler --freetags \
// indexer/perdocdata/perdocdata.proto Next tag: 220
type PerDocData struct {
	BlogData *BlogPerDocData `json:"BlogData,omitempty"`

	// BookCitationData: the book citation data for each web page, the
	// average size is about 10 bytes
	BookCitationData *BookCitationPerDocData `json:"BookCitationData,omitempty"`

	// DEPRECATEDAuthorObfuscatedGaia: The obfuscated google profile gaia
	// id(s) of the author(s) of the document. This field is deprecated, use
	// the string version.
	DEPRECATEDAuthorObfuscatedGaia googleapi.Uint64s `json:"DEPRECATEDAuthorObfuscatedGaia,omitempty"`

	DEPRECATEDQuarantineWhitelist bool `json:"DEPRECATEDQuarantineWhitelist,omitempty"`

	// DocLevelSpamScore: The document spam score is represented as a
	// 7-bits, going from 0 to 127.
	DocLevelSpamScore int64 `json:"DocLevelSpamScore,omitempty"`

	// Event: Free form debug info. NB2: consider carefully what to save
	// here. It's easy to eat lots of gfs space with debug info that nobody
	// needs...
	Event []*PerDocDebugEvent `json:"Event,omitempty"`

	// GibberishScore: The gibberish score is represented in 7 bits, going
	// from 0 to 127.
	GibberishScore int64 `json:"GibberishScore,omitempty"`

	// GroupsData: 16 bytes of groups2 data: used only in groups2 index
	GroupsData *GroupsPerDocData `json:"GroupsData,omitempty"`

	// IsAnchorBayesSpam: Is this document considered spam by the anchor
	// bayes classifier?
	IsAnchorBayesSpam bool `json:"IsAnchorBayesSpam,omitempty"`

	// KeywordStuffingScore: The keyword stuffing score is represented in 7
	// bits, going from 0 to 127.
	KeywordStuffingScore int64 `json:"KeywordStuffingScore,omitempty"`

	// MobileData: Additional metadata for lowend mobile documents in the
	// Google index.
	MobileData *MobilePerDocData `json:"MobileData,omitempty"`

	// OriginalContentScore: The original content score is represented as a
	// 7-bits, going from 0 to 127. Only pages with little content have this
	// field. The actual original content score ranges from 0 to 512. It is
	// encoded with
	// quality_q2::OriginalContentUtil::EncodeOriginalContentScore(). To
	// decode the value, use
	// quality_q2::OriginalContentUtil::DecodeOriginalContentScore().
	OriginalContentScore int64 `json:"OriginalContentScore,omitempty"`

	// PremiumData: Additional metadata for Premium document in the Google
	// index.
	PremiumData *PremiumPerDocData `json:"PremiumData,omitempty"`

	// QuarantineInfo: bitmask of QuarantineBits (or'd together) used to
	// store quarantine related information. For example:
	// QUARANTINE_WHITELIST | QUARANTINE_URLINURL.
	QuarantineInfo int64 `json:"QuarantineInfo,omitempty"`

	// ScaledExptIndyRank: DEPRECATED
	// ----------------------------------------------------------------
	// Please do not use these fields in any new code. experimental
	ScaledExptIndyRank int64 `json:"ScaledExptIndyRank,omitempty"`

	// ScaledExptIndyRank2: experimental
	ScaledExptIndyRank2 int64 `json:"ScaledExptIndyRank2,omitempty"`

	// ScaledExptIndyRank3: experimental
	ScaledExptIndyRank3 int64 `json:"ScaledExptIndyRank3,omitempty"`

	ScaledExptSpamScoreEric int64 `json:"ScaledExptSpamScoreEric,omitempty"`

	ScaledExptSpamScoreYoram int64 `json:"ScaledExptSpamScoreYoram,omitempty"`

	// ScaledIndyRank: The independence rank is represented as a 16-bit
	// integer, which is multiplied by (max_indy_rank / 65536) to produce
	// actual independence rank values. max_indy_rank is typically 0.84.
	ScaledIndyRank int64 `json:"ScaledIndyRank,omitempty"`

	// ScaledLinkAgeSpamScore: End DEPRECATED
	// ------------------------------------------------------------ Link age
	// score is represented as a 7-bit integer, going from 0 to 127.
	ScaledLinkAgeSpamScore int64 `json:"ScaledLinkAgeSpamScore,omitempty"`

	ScaledSpamScoreEric int64 `json:"ScaledSpamScoreEric,omitempty"`

	// ScaledSpamScoreYoram: Spamscores are represented as a 7-bit integer,
	// going from 0 to 127.
	ScaledSpamScoreYoram int64 `json:"ScaledSpamScoreYoram,omitempty"`

	// SpamWordScore: The spamword score is represented in 7-bits, going
	// from 0 to 127.
	SpamWordScore int64 `json:"SpamWordScore,omitempty"`

	// TagPageScore: Tag-site-ness of a page, repesented in 7-bits range
	// from 0 to 100. Smaller value means worse tag page.
	TagPageScore int64 `json:"TagPageScore,omitempty"`

	ToolBarData *ToolBarPerDocData `json:"ToolBarData,omitempty"`

	WhirlpoolDiscount float64 `json:"WhirlpoolDiscount,omitempty"`

	// AppsLink: AppsLink contains Android application IDs in outlinks. It
	// is used to improve results ranking within applications universal. See
	// http://go/apps-universal for the project details.
	AppsLink *QualityCalypsoAppsLink `json:"appsLink,omitempty"`

	// AsteroidBeltIntents: For indexing Asteroid Belt intent scores. See
	// go/asteroid-belt for details.
	AsteroidBeltIntents *QualityOrbitAsteroidBeltDocumentIntentScores `json:"asteroidBeltIntents,omitempty"`

	AuthorObfuscatedGaiaStr []string `json:"authorObfuscatedGaiaStr,omitempty"`

	Biasingdata *BiasingPerDocData `json:"biasingdata,omitempty"`

	// Biasingdata2: A replacement for BiasingPerDocData that is more space
	// efficient. Once this is live everywhere, biasingdata will be
	// deprecated.
	Biasingdata2 *BiasingPerDocData2 `json:"biasingdata2,omitempty"`

	// BodyWordsToTokensRatioBegin: The body words over tokens ratios for
	// the beginning part and whole doc. NB: To save space, field
	// body_words_to_tokens_ratio_total is not set if it has the same value
	// as body_words_to_tokens_ratio_begin (e.g., short docs).
	BodyWordsToTokensRatioBegin float64 `json:"bodyWordsToTokensRatioBegin,omitempty"`

	BodyWordsToTokensRatioTotal float64 `json:"bodyWordsToTokensRatioTotal,omitempty"`

	// Brainloc: Brainloc contains location information for the document.
	// See ariane/273189 for details.
	Brainloc *QualityGeoBrainlocBrainlocAttachment `json:"brainloc,omitempty"`

	// CommercialScore: A measure of commerciality of the document Score > 0
	// indicates document is commercial (i.e. sells something) Computed by
	// repository/pageclassifiers/parsehandler-commercial.cc
	CommercialScore float64 `json:"commercialScore,omitempty"`

	CompressedQualitySignals *CompressedQualitySignals `json:"compressedQualitySignals,omitempty"`

	// CompressedUrl: Compressed URL string used for SETI.
	CompressedUrl string `json:"compressedUrl,omitempty"`

	ContentAttributions *ContentAttributions `json:"contentAttributions,omitempty"`

	// CountryInfo: This field stores the country information for the
	// document in the form of CountryAttachment.
	CountryInfo *CountryCountryAttachment `json:"countryInfo,omitempty"`

	// CrawlPagerank: This field is used internally by the docjoiner to
	// forward the crawl pageranks from original canonicals to canonicals we
	// actually chose; outside sources should not set it, and it should not
	// be present in actual docjoins or the index.
	CrawlPagerank int64 `json:"crawlPagerank,omitempty"`

	// CrawlerIdProto: For crawler-ID variations, the crawling context
	// applied to the document. See go/url, and the description in
	// google3/indexing/crawler_id
	CrawlerIdProto *LogsProtoIndexingCrawlerIdCrawlerIdProto `json:"crawlerIdProto,omitempty"`

	Crowdingdata *CrowdingPerDocData `json:"crowdingdata,omitempty"`

	// DatesInfo: Stores dates-related info (e.g. page is old based on its
	// date annotations). Used in FreshnessTwiddler. Use encode/decode
	// functions from quality/timebased/utils/dates-info-helper-inl.h
	DatesInfo int64 `json:"datesInfo,omitempty,string"`

	// DesktopInterstitials: Contains desktop interstitials signal for VOLT
	// ranking change.
	DesktopInterstitials *IndexingMobileInterstitialsProtoDesktopInterstitials `json:"desktopInterstitials,omitempty"`

	// DomainAge: 16-bit
	DomainAge int64 `json:"domainAge,omitempty"`

	// EventsDate: Date for Events. A web page might list multiple events
	// with different dates. We only take one date (start date) per event.
	EventsDate googleapi.Int64s `json:"eventsDate,omitempty"`

	// ExtraData: This field is available only in the docjoins: it is
	// cleared before building per-doc data in both Mustang and Teragoogle.
	// (MessageSet is inefficient in space for serving data) Use this for
	// all new fields that aren't needed during serving. Currently this
	// field contains: * UrlSignals for the document level spam classifier
	// (when the doclevelspamscore is set). * PerDocLangidData and
	// realtimespam::ClassifierResult for the document level fresh spam
	// classifier (when the doc-level fresh spam score is generated). *
	// MicroblogDocQualitySignals for document-level microblog spam
	// classifier. This only exists in Firebird for now. *
	// spam_buckets::BucketsData for a document-structure hash
	ExtraData *Proto2BridgeMessageSet `json:"extraData,omitempty"`

	// FireflySiteSignal: Contains Site signal information for Firefly
	// ranking change. See http://ariane/313938 for more details.
	FireflySiteSignal *QualityCopiaFireflySiteSignal `json:"fireflySiteSignal,omitempty"`

	// FreshboxArticleScores: Stores scores of freshness-related
	// classifiers: freshbox article score, live blog score and host-level
	// article score. The encoding/decoding API is in
	// quality/freshness/freshbox/goldmine/freshbox_annotation_encoder.h. To
	// use this field, you MUST join g/pq-classifiers-announce and add your
	// use case at http://shortn/_RYXS2lX2IV.
	FreshboxArticleScores int64 `json:"freshboxArticleScores,omitempty"`

	// FreshnessEncodedSignals: Stores freshness and aging related data,
	// such as time-related quality metrics predicted from url-pattern level
	// signals. Use the encoding decoding API in
	// quality/freshness/docclassifier/aging/encoded-pattern-signals.h This
	// field is deprecated.
	FreshnessEncodedSignals int64 `json:"freshnessEncodedSignals,omitempty,string"`

	// FringeQueryPrior: Contains encoded FringeQueryPrior information.
	// Unlikely to be meaningful for anyone other than fringe-ranking team.
	// Contact fringe-ranking team if any questions, but do NOT use directly
	// without consulting them.
	FringeQueryPrior *QualityFringeFringeQueryPriorPerDocData `json:"fringeQueryPrior,omitempty"`

	// Geodata: geo data; approx 24 bytes for 23M U.S. pages
	Geodata string `json:"geodata,omitempty"`

	HomePageInfo int64 `json:"homePageInfo,omitempty"`

	// HomepagePagerankNs: The page-rank of the homepage of the site. Copied
	// from the cdoc.doc().pagerank_ns() of the homepage.
	HomepagePagerankNs int64 `json:"homepagePagerankNs,omitempty"`

	// HostAge: The earliest firstseen date of all pages in this
	// host/domain. These data are used in twiddler to sandbox fresh spam in
	// serving time. It is 16 bit and the time is day number after
	// 2005-12-31, and all the previous time are set to 0. If this url's
	// host_age == domain_age, then omit domain_age Please use
	// //spam/content/siteage-util.h to convert the day between epoch
	// second. Regarding usage of Sentinel values: We would like to check if
	// a value exists in scoring bundle while using in Ranklab AST. For this
	// having a sentinel value will help us know if the field exists or has
	// a sentinel value (in the case it does not exist). 16-bit
	HostAge int64 `json:"hostAge,omitempty"`

	// HostNsr: Site rank computed for host-level sitechunks. This value
	// encodes nsr, site_pr and new_nsr. See
	// quality_nsr::util::ConvertNsrDataToHostNsr and go/nsr.
	HostNsr int64 `json:"hostNsr,omitempty"`

	Imagedata *ImagePerDocData `json:"imagedata,omitempty"`

	// InNewsstand: This field indicates whether the document is in the
	// newsstand corpus.
	InNewsstand bool `json:"inNewsstand,omitempty"`

	// IsHotdoc: Set by the FreshDocs instant doc joiner. See
	// //indexing/instant/hotdocs/README and http://go/freshdocs-hotdocs.
	IsHotdoc bool `json:"isHotdoc,omitempty"`

	Kaltixdata *KaltixPerDocData `json:"kaltixdata,omitempty"`

	// KnexAnnotation: For indexing k'nex annotations for FreshDocs.
	KnexAnnotation *SocialPersonalizationKnexAnnotation `json:"knexAnnotation,omitempty"`

	// Languages: Plausible languages in order of decreasing plausibility.
	// Language values are small, IE < 127 so this should compress to one
	// byte each.
	Languages []int64 `json:"languages,omitempty"`

	// LastSignificantUpdate: Last significant update of the document. This
	// is sourced from the quality_timebased.LastSignificantUpdate proto as
	// computed by the LSUSelector from various signals. The value is a UNIX
	// timestamp in seconds.
	LastSignificantUpdate int64 `json:"lastSignificantUpdate,omitempty,string"`

	// LastSignificantUpdateInfo: Metadata about last significant update.
	// Currently this only encodes the
	// quality_timebased.LastSignificantUpdate.source field which contains
	// the info on the source of the signal. NOTE: Please do not read the
	// value directly. Use helpers from
	// quality/timebased/lastsignificantupdate/lsu-helper.h instead.
	LastSignificantUpdateInfo int64 `json:"lastSignificantUpdateInfo,omitempty,string"`

	// LaunchAppInfo: Info on how to launch a mobile app to consume this
	// document's content, if applicable (see go/calypso).
	LaunchAppInfo *QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData `json:"launchAppInfo,omitempty"`

	LiveResultsData *WeboftrustLiveResultsDocAttachments `json:"liveResultsData,omitempty"`

	// LocalizedCluster: Information on localized clusters, which is the
	// relationship of translated and/or localized pages.
	LocalizedCluster *IndexingDupsLocalizedLocalizedCluster `json:"localizedCluster,omitempty"`

	// Noimageframeoverlayreason: If not 0, we should not show the image in
	// overlay mode in image snippets
	Noimageframeoverlayreason int64 `json:"noimageframeoverlayreason,omitempty"`

	// NsrDataProto: Stripped site-level signals, not present in the
	// explicit nsr_* fields, nor compressed_quality_signals.
	NsrDataProto *QualityNsrNsrData `json:"nsrDataProto,omitempty"`

	// NsrIsCovidLocalAuthority: This field is propagated to shards. In
	// addition, it is populated at serving time by go/web-signal-joins.
	NsrIsCovidLocalAuthority bool `json:"nsrIsCovidLocalAuthority,omitempty"`

	// NsrIsElectionAuthority: This field is propagated to shards. It will
	// also be populated at serving time by go/web-signal-joins (see
	// b/168114815).
	NsrIsElectionAuthority bool `json:"nsrIsElectionAuthority,omitempty"`

	// NsrIsVideoFocusedSite: This field is propagated to shards. It will
	// also be populated at serving time by go/web-signal-joins (see
	// b/170607253). Bit indicating whether this site is video-focused, but
	// not hosted on any major known video hosting domains.
	NsrIsVideoFocusedSite bool `json:"nsrIsVideoFocusedSite,omitempty"`

	// NsrSitechunk: SiteChunk computed for nsr. It some cases it can use
	// more information than just url (e.g. youtube channels). See
	// NsrAnnotator for details. If sitechunk is longer than
	// --populate_nsr_sitechunk_max_length (default=100), it will not get
	// populated. This field might be compressed and needs to be decoded
	// with quality_nsr::util::DecodeNsrSitechunk. See go/nsr-chunks for
	// more details. This field contains only nontrivial primary chunks.
	NsrSitechunk string `json:"nsrSitechunk,omitempty"`

	// NumUrls: Total number of urls encoded in the url section = # of
	// alternate urls + 1
	NumUrls int64 `json:"numUrls,omitempty"`

	// Oceandata: 28 bytes per page, only in the Ocean index
	Oceandata *OceanPerDocData `json:"oceandata,omitempty"`

	// OnsiteProminence: Onsite prominence measures the importance of the
	// document within its site. It is computed by propagating simulated
	// traffic from the homepage and high craps click pages. It is a 13-bit
	// int.
	OnsiteProminence int64 `json:"onsiteProminence,omitempty"`

	Origin int64 `json:"origin,omitempty"`

	// OriginalTitleHardTokenCount: The number of hard tokens in the title.
	OriginalTitleHardTokenCount int64 `json:"originalTitleHardTokenCount,omitempty"`

	PageTags []int64 `json:"pageTags,omitempty"`

	// Pagerank: Experimental pageranks (DEPRECATED; only pagerank in
	// MustangBasicInfo is used).
	Pagerank float64 `json:"pagerank,omitempty"`

	Pagerank0 float64 `json:"pagerank0,omitempty"`

	Pagerank1 float64 `json:"pagerank1,omitempty"`

	Pagerank2 float64 `json:"pagerank2,omitempty"`

	// Pageregions: String that encodes the position ranges for different
	// regions of the document. See "indexer/pageregion.h" for an
	// explanation, and how to decode the string
	Pageregions string `json:"pageregions,omitempty"`

	Phildata *PhilPerDocData `json:"phildata,omitempty"`

	// ProductSitesInfo: This field stores information about product sites.
	ProductSitesInfo *QualityProductProductSiteData `json:"productSitesInfo,omitempty"`

	// QueriesForWhichOfficial: The set of (query, country, language)
	// triples for which this document is considered to be the official
	// page. For example, www.britneyspears.com would be official for
	// ("britney spears", "us", 0) and others (0 is English).
	QueriesForWhichOfficial *OfficialPagesQuerySet `json:"queriesForWhichOfficial,omitempty"`

	// RosettaLanguages: Top two document language BCP-47 codes as generated
	// by the RosettaLanguageAnnotator in the decreasing order of
	// probability.
	RosettaLanguages []string `json:"rosettaLanguages,omitempty"`

	// RsApplication: Application information associated to the document.
	RsApplication *RepositoryAnnotationsRdfaRdfaRichSnippetsApplication `json:"rsApplication,omitempty"`

	// SaftLanguageInt: Top document language as generated by SAFT LangID.
	// For now we store bare minimum: just the top 1 language value,
	// converted to the language enum, and only when different from the
	// first value in 'languages'.
	SaftLanguageInt []int64 `json:"saftLanguageInt,omitempty"`

	// ScaledSelectionTierRank: Selection tier rank is a language normalized
	// score ranging from 0-32767 over the serving tier (Base, Zeppelins,
	// Landfills) for this document. This is converted back to fractional
	// position within the index tier by scaled_selection_tier_rank/32767.
	ScaledSelectionTierRank int64 `json:"scaledSelectionTierRank,omitempty"`

	// ScienceDoctype: Scholar/Science Document type: <0 == not a Science
	// Document -- default 0 == Science doc fully visible >0 == Science doc
	// but limited visibility, the number is the visible terms
	ScienceDoctype int64 `json:"scienceDoctype,omitempty"`

	// ScienceHoldingsIds: Deprecated 2016/01/14.
	ScienceHoldingsIds googleapi.Uint64s `json:"scienceHoldingsIds,omitempty"`

	// SemanticDate: SemanticDate, estimated date of the content of a
	// document based on the contents of the document (via parsing), anchors
	// and related documents. Date is encoded as a 32-bits UNIX date (1970
	// Jan 1 epoch). Confidence is encoded using a SemanticDate specific
	// format. For details of encoding, please refer to
	// quality/freshness/docclassifier/semanticdate/public/semantic_date.prot
	// o
	SemanticDate int64 `json:"semanticDate,omitempty"`

	// SemanticDateConfidence: DEPRECATED: semantic_date_confidence replaced
	// by semantic_date_info.
	SemanticDateConfidence int64 `json:"semanticDateConfidence,omitempty"`

	// SemanticDateInfo: Info is encoded using a SemanticDate specific
	// format. Contains confidence scores for day/month/year components as
	// well as various meta data required by the freshness twiddlers.
	SemanticDateInfo int64 `json:"semanticDateInfo,omitempty"`

	// ServingTimeClusterIds: A set of cluster ids which are generated in
	// Alexandria and used to de-dup results at serving time.
	ServingTimeClusterIds *IndexingDocjoinerServingTimeClusterIds `json:"servingTimeClusterIds,omitempty"`

	ShingleInfo *ShingleInfoPerDocData `json:"shingleInfo,omitempty"`

	// SmartphoneData: Additional metadata for smartphone documents in the
	// Google index.
	SmartphoneData *SmartphonePerDocData `json:"smartphoneData,omitempty"`

	SmearingMaxTotalOffdomainAnchors int64 `json:"smearingMaxTotalOffdomainAnchors,omitempty"`

	// SocialgraphNodeNameFp: For Social Search we store the fingerprint of
	// the SG node name. This is used in one of the superroot's PRE_DOC
	// twiddlers as a lookup key for the full Social Search data. PRE_DOC =
	// twiddlers firing before the DocInfo request is sent to the mustang
	// backend.
	SocialgraphNodeNameFp uint64 `json:"socialgraphNodeNameFp,omitempty,string"`

	// SpamCookbookAction: Actions based on Cookbook recipes that match the
	// page.
	SpamCookbookAction *SpamCookbookAction `json:"spamCookbookAction,omitempty"`

	// SpamMuppetSignals: Contains hacked site signals which will be used in
	// query time joins. As of Oct'19, the field is stored in a separate
	// corpus. It'll only be populated for in-flight requests between
	// retrieve and full-score in perdocdata. So no extra storage is needed
	// on muppet side.
	SpamMuppetSignals *SpamMuppetjoinsMuppetSignals `json:"spamMuppetSignals,omitempty"`

	// SpambrainData: Site level scores coming from spambrain.
	SpambrainData *SpamBrainData `json:"spambrainData,omitempty"`

	// SpambrainTotalDocSpamScore: The document total spam score identified
	// by spambrain, going from 0 to 1.
	SpambrainTotalDocSpamScore float64 `json:"spambrainTotalDocSpamScore,omitempty"`

	// Spamrank: The spamrank measures the likelihood that this document
	// links to known spammers. Its value is between 0 and 65535.
	Spamrank int64 `json:"spamrank,omitempty"`

	// SpamtokensContentScore: For SpamTokens content scores. Used in
	// SiteBoostTwiddler to determine whether a page is UGC Spam. See
	// go/spamtokens-dd for details.
	SpamtokensContentScore float64 `json:"spamtokensContentScore,omitempty"`

	// TimeSensitivity: Encoded Document Time Sensitivity signal.
	TimeSensitivity int64 `json:"timeSensitivity,omitempty"`

	// TitleHardTokenCountWithoutStopwords: Number of hard tokens originally
	// in title without counting the stopwords.
	TitleHardTokenCountWithoutStopwords int64 `json:"titleHardTokenCountWithoutStopwords,omitempty"`

	// ToolbarPagerank: A copy of the value stored in
	// /namespace/indexing/wwwglobal//fakepr/* for this document. A value of
	// quality_bakery::FakeprUtils::kUnknownToolbarPagerank indicates that
	// we don't have toolbar pagerank for this document. A value between 0
	// and 10 (inclusive) means that this is the toolbar pagerank of the
	// page. Finally, if this value is not set it means that the toolbar
	// pagerank is equivalent to:
	// quality_bakery::FakeprUtils::EstimatePreDemotionFromPagerankNearestSee
	// ds( basic_info.pagerank_ns()) called on the MustangBasicInfo
	// attachment for the same document.
	ToolbarPagerank int64 `json:"toolbarPagerank,omitempty"`

	// TopPetacatTaxId: Top petacat of the site. Used in SiteboostTwiddler
	// to determine result/query matching.
	TopPetacatTaxId int64 `json:"topPetacatTaxId,omitempty"`

	TopPetacatWeight float64 `json:"topPetacatWeight,omitempty"`

	// TravelGoodSitesInfo: This field stores information about good travel
	// sites.
	TravelGoodSitesInfo *QualityTravelGoodSitesData `json:"travelGoodSitesInfo,omitempty"`

	// TrendspamScore: For now, the count of matching trendspam queries.
	TrendspamScore int64 `json:"trendspamScore,omitempty"`

	// TundraClusterId: This field is propagated to shards. Stores
	// clustering information on a site level for the Tundra project.
	TundraClusterId int64 `json:"tundraClusterId,omitempty"`

	// UacSpamScore: The uac spam score is represented in 7 bits, going from
	// 0 to 127. Threshold is 64. Score >= 64 is considered as uac spam.
	UacSpamScore int64 `json:"uacSpamScore,omitempty"`

	// UrlAfterRedirectsFp: These two fingerprints are used for de-duping
	// results in a twiddler. They should only be populated by freshdocs,
	// and will only be present for documents that are chosen to be
	// canonicals in a cluster whose previous canonical is also in the
	// index. Additionally, url_after_redirects_fp is only present if it is
	// different from a fingerprint of the URL.
	UrlAfterRedirectsFp uint64 `json:"urlAfterRedirectsFp,omitempty,string"`

	// UrlPoisoningData: Contains url poisoning data for suppressing spam
	// documents.
	UrlPoisoningData *UrlPoisoningData `json:"urlPoisoningData,omitempty"`

	// V2KnexAnnotation: For indexing v2 k'nex,
	// see/go/knex-v2-doc-annotation for details.
	V2KnexAnnotation *QualitySherlockKnexAnnotation `json:"v2KnexAnnotation,omitempty"`

	VideoCorpusDocid uint64 `json:"videoCorpusDocid,omitempty,string"`

	// VideoLanguage: Audio-based language classified by Automatic Language
	// Identification (only for watch pages).
	VideoLanguage *QualityVidyaVideoLanguageVideoLanguage `json:"videoLanguage,omitempty"`

	Videodata *VideoPerDocData `json:"videodata,omitempty"`

	// VoltData: Contains page UX signals for VOLT ranking change. See
	// http://ariane/4025970 for more details.
	VoltData *IndexingMobileVoltVoltPerDocData `json:"voltData,omitempty"`

	// WatchpageLanguageResult: Language classified by the WatchPageLanguage
	// Model (go/watchpage-language). Only present for watch pages.
	WatchpageLanguageResult *WatchpageLanguageWatchPageLanguageResult `json:"watchpageLanguageResult,omitempty"`

	WebmirrorEcnFp uint64 `json:"webmirrorEcnFp,omitempty,string"`

	// WebrefEntities: WebRef entities associated to the document. See
	// go/webref for details.
	WebrefEntities *RepositoryWebrefWebrefMustangAttachment `json:"webrefEntities,omitempty"`

	// YmylHealthScore: Stores scores of ymyl health classifier as defined
	// at go/ymyl-classifier-dd. To use this field, you MUST join
	// g/pq-classifiers-announce and add your use case at
	// http://shortn/_nfg9oAldou.
	YmylHealthScore int64 `json:"ymylHealthScore,omitempty"`

	// YmylNewsScore: Stores scores of ymyl news classifier as defined at
	// go/ymyl-classifier-dd. To use this field, you MUST join
	// g/pq-classifiers-announce and add your use case at
	// http://shortn/_nfg9oAldou.
	YmylNewsScore int64 `json:"ymylNewsScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlogData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlogData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod PerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PerDocData) UnmarshalJSON(data []byte) error {
	type NoMethod PerDocData
	var s1 struct {
		WhirlpoolDiscount           gensupport.JSONFloat64 `json:"WhirlpoolDiscount"`
		BodyWordsToTokensRatioBegin gensupport.JSONFloat64 `json:"bodyWordsToTokensRatioBegin"`
		BodyWordsToTokensRatioTotal gensupport.JSONFloat64 `json:"bodyWordsToTokensRatioTotal"`
		CommercialScore             gensupport.JSONFloat64 `json:"commercialScore"`
		Pagerank                    gensupport.JSONFloat64 `json:"pagerank"`
		Pagerank0                   gensupport.JSONFloat64 `json:"pagerank0"`
		Pagerank1                   gensupport.JSONFloat64 `json:"pagerank1"`
		Pagerank2                   gensupport.JSONFloat64 `json:"pagerank2"`
		SpambrainTotalDocSpamScore  gensupport.JSONFloat64 `json:"spambrainTotalDocSpamScore"`
		SpamtokensContentScore      gensupport.JSONFloat64 `json:"spamtokensContentScore"`
		TopPetacatWeight            gensupport.JSONFloat64 `json:"topPetacatWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.WhirlpoolDiscount = float64(s1.WhirlpoolDiscount)
	s.BodyWordsToTokensRatioBegin = float64(s1.BodyWordsToTokensRatioBegin)
	s.BodyWordsToTokensRatioTotal = float64(s1.BodyWordsToTokensRatioTotal)
	s.CommercialScore = float64(s1.CommercialScore)
	s.Pagerank = float64(s1.Pagerank)
	s.Pagerank0 = float64(s1.Pagerank0)
	s.Pagerank1 = float64(s1.Pagerank1)
	s.Pagerank2 = float64(s1.Pagerank2)
	s.SpambrainTotalDocSpamScore = float64(s1.SpambrainTotalDocSpamScore)
	s.SpamtokensContentScore = float64(s1.SpamtokensContentScore)
	s.TopPetacatWeight = float64(s1.TopPetacatWeight)
	return nil
}

// PerDocDebugEvent: Free form debug information from various
// components.
type PerDocDebugEvent struct {
	// Message: depends on the source
	Message string `json:"Message,omitempty"`

	// Source: source tag, helps interpret value/message
	Source string `json:"Source,omitempty"`

	// Timestamp: seconds since the epoch
	Timestamp int64 `json:"Timestamp,omitempty"`

	// Value: depends on the source
	Value int64 `json:"Value,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Message") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Message") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PerDocDebugEvent) MarshalJSON() ([]byte, error) {
	type NoMethod PerDocDebugEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PersonalizationMapsAliasAliasId: A unique association of an AliasType
// and a number to identify this alias.
type PersonalizationMapsAliasAliasId struct {
	// SubId: A unique identifier for this alias, this identifier is unique
	// to the type of this Alias. This means that aliases of different types
	// can have the same sub_id, hence always use the full AliasId message
	// to refer to an alias, not this field only. Because HOME and WORK
	// aliases are unique, aliases of type HOME or WORK always have sub_id
	// 0.
	SubId uint64 `json:"subId,omitempty,string"`

	// Possible values:
	//   "UNKNOWN_ALIAS_TYPE"
	//   "HOME"
	//   "WORK"
	//   "CONTACT" - CONTACT is only for internal use by Maps
	// Personalization Server. SetAlias and DeleteAlias RPCs will not accept
	// this type.
	//   "NICKNAME" - Alias is a user-entered string stored in nickname
	// field.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SubId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SubId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PersonalizationMapsAliasAliasId) MarshalJSON() ([]byte, error) {
	type NoMethod PersonalizationMapsAliasAliasId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PersonalizationMapsAliasIcon: A subset of an Alias that is stored on
// kansas max. It is used in Search for alias resolution and in Maps to
// show icons quickly on basetiles.
type PersonalizationMapsAliasIcon struct {
	// AliasId: The id of the alias associated with this point. This is used
	// to query for details for the info window and to display different
	// icons depending on the AliasType contained in this message.
	AliasId *PersonalizationMapsAliasAliasId `json:"aliasId,omitempty"`

	// DroppedPinS2cellId: If this is a dropped pin alias, the leaf (level
	// 30) S2 cell ID corresponding to the aliased lat/lng. Calculated once
	// and stored here so that it can safely be used as an identifier across
	// clients without risk of rounding differences leading to different
	// values.
	DroppedPinS2cellId uint64 `json:"droppedPinS2cellId,omitempty,string"`

	// FeatureId: The featureid that was associated with the alias when it
	// was saved. If this is not set the lat/lng in 'point' is the aliased
	// entity, i.e. this is a dropped pin alias.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// FeatureName: For non-address feature aliases (e.g. businesses), the
	// name of the feature (formatted from the FeatureProto) when it was
	// saved.
	FeatureName string `json:"featureName,omitempty"`

	// FeatureType: The type of the feature associated with the alias.
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_TRANSPORTATION" - ABSTRACT
	//   "TYPE_ROUTE" - A route is any section of road (or rails, etc.) that
	// has a name. This includes city streets as well as highways. Road
	// segments can belong to multiple routes (e.g. El Camino, CA-82).
	//   "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE" - DEPRECATED
	//   "TYPE_HIGHWAY" - ABSTRACT
	//   "TYPE_HIGHWAY_1"
	//   "TYPE_HIGHWAY_2"
	//   "TYPE_HIGHWAY_3"
	//   "TYPE_HIGHWAY_4"
	//   "TYPE_HIGHWAY_5"
	//   "TYPE_HIGHWAY_6"
	//   "TYPE_HIGHWAY_7"
	//   "TYPE_HIGHWAY_8"
	//   "TYPE_HIGHWAY_9"
	//   "TYPE_BICYCLE_ROUTE" - A designated bicycle route, whose segments
	// may consist of any combination of bicycle paths, bicycle lanes, or
	// city streets.
	//   "TYPE_TRAIL" - A designated trail, which may consist of paved
	// walkways, dirt paths, fire road, streets or highways, etc.
	//   "TYPE_SEGMENT" - ABSTRACT
	//   "TYPE_ROAD"
	//   "TYPE_RAILWAY" - Railroads use several different incompatible track
	// types.
	//   "TYPE_STANDARD_TRACK"
	//   "TYPE_JR_TRACK"
	//   "TYPE_NARROW_TRACK"
	//   "TYPE_MONORAIL_TRACK"
	//   "TYPE_SUBWAY_TRACK"
	//   "TYPE_LIGHT_RAIL_TRACK"
	//   "TYPE_BROAD_TRACK"
	//   "TYPE_HIGH_SPEED_RAIL"
	//   "TYPE_TROLLEY_TRACK" - Tracks for streetcars, cable-cars, etc.
	// Ferries are services that are part of the road network but are not
	// roads. They typically involve fares and scheduled departure times.
	//   "TYPE_FERRY" - ABSTRACT
	//   "TYPE_FERRY_BOAT" - The vast majority of ferries are ferry boats.
	//   "TYPE_FERRY_TRAIN" - Also called a "car transport", a ferry train
	// is a rail service that carries passengers and their vehicles across
	// undrivable terrain. The Channel Tunnel ("Chunnel") is the most famous
	// example, but they are also common in the Alps where they connect
	// neighboring valleys otherwise separated by impassable mountains.
	//   "TYPE_VIRTUAL_SEGMENT" - Any plausible 1-dimensional path through a
	// 2+ dimensional space, for the purposes of making graph-search-based
	// routing possible. Such segments can be used to model paths through
	// parking lots, squares, floors of buildings and other areas.
	//   "TYPE_INTERSECTION" - An intersection consists of a collection of
	// segments that terminate at the same location. This is topological
	// definition: it may not match what a typical user would think of as an
	// "intersection". See TYPE_INTERSECTION_GROUP, below, for more
	// information. Each segment terminating at an intersection has an
	// "endpoint type" that specifies how that segment is terminated: stop
	// sign, yield sign, three-way light, etc.
	//   "TYPE_TRANSIT" - ABSTRACT
	//   "TYPE_TRANSIT_STATION" - DEPRECATED
	//   "TYPE_BUS_STATION" - DEPRECATED
	//   "TYPE_TRAMWAY_STATION" - DEPRECATED
	//   "TYPE_TRAIN_STATION" - DEPRECATED
	//   "TYPE_SUBWAY_STATION" - DEPRECATED
	//   "TYPE_FERRY_TERMINAL" - DEPRECATED
	//   "TYPE_AIRPORT" - DEPRECATED
	//   "TYPE_AIRPORT_CIVIL" - DEPRECATED
	//   "TYPE_AIRPORT_MILITARY" - DEPRECATED
	//   "TYPE_AIRPORT_MIXED" - DEPRECATED
	//   "TYPE_HELIPORT" - DEPRECATED
	//   "TYPE_SEAPLANE_BASE" - DEPRECATED
	//   "TYPE_AIRSTRIP" - DEPRECATED
	//   "TYPE_CABLE_CAR_STATION" - DEPRECATED
	//   "TYPE_GONDOLA_LIFT_STATION" - DEPRECATED
	//   "TYPE_FUNICULAR_STATION" - DEPRECATED
	//   "TYPE_SPECIAL_STATION" - DEPRECATED
	//   "TYPE_HORSE_CARRIAGE_STATION" - DEPRECATED
	//   "TYPE_MONORAIL_STATION" - DEPRECATED
	//   "TYPE_SEAPORT" - DEPRECATED
	//   "TYPE_TRANSIT_STOP" - DEPRECATED
	//   "TYPE_TRANSIT_TRIP" - DEPRECATED
	//   "TYPE_TRANSIT_DEPARTURE" - DEPRECATED
	//   "TYPE_TRANSIT_LEG" - DEPRECATED
	//   "TYPE_TRANSIT_LINE" - A transit line is a collection of transit
	// legs, associated with some invariant properties of the trips that run
	// over the legs. See also transitline.proto
	//   "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE" - TYPE_TRANSIT_AGENCY was
	// moved to 0xC91. This deprecated enum value still exists for debugging
	// purposes only.
	//   "TYPE_TRANSIT_TRANSFER" - DEPRECATED
	//   "TYPE_SEGMENT_PATH" - ABSTRACT
	//   "TYPE_ROAD_SIGN" - Road sign features have names, point geometry,
	// etc. They also have segment_path data (see below) which lists the
	// segments that refer to the sign. See segment.proto for the reference
	// from the segment to the road sign.
	//   "TYPE_INTERSECTION_GROUP" - Our TYPE_INTERSECTION feature, above,
	// models the point where one or more segments terminate. This is
	// topological definition: it may not match what a typical user would
	// think of as an "intersection". Consider the intersections where
	// Hayes, Market, Larkin, and 9th Street meet near (37.77765,
	// -122.41638) in San Francisco. Most people would probably consider
	// this a single feature, even though we model it as four separate
	// TYPE_INTERSECTION features. This TYPE_INTERSECTION_GROUP is used to
	// model the user's concept of a complex intersection.
	//   "TYPE_PATHWAY" - RESERVED
	//   "TYPE_RESTRICTION_GROUP" - A restriction group describes a set of
	// segment restrictions that belong together and have a name or an
	// associated event. See also restriction_group.proto
	//   "TYPE_TOLL_CLUSTER" - A toll cluster is either a single point on a
	// segment (represented as a point at the end of the segment that has
	// ENDPOINT_TOLL_BOOTH set) or a group of points on various road
	// segments in MapFacts that represents one or more lanes passing
	// through a toll fixture that all go to the same routing destination.
	// Each toll cluster should have at most a single price per payment
	// method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has
	// different prices for multiple routing destinations, drivers need to
	// be in the correct lane before passing through the toll fixture and
	// hence such a fixture is represented by multiple toll clusters. A toll
	// cluster does not necessarily represent a real-world entity, e.g. a
	// particular plaza/structure as perceived by humans. This is because a
	// plaza can be represented by more than one toll cluster. We require
	// toll clusters to have names, but they might be non-unique. For
	// example, a plaza might be represented by multiple toll clusters that
	// may have the same plaza name. For further details, please see
	// go/toll-cluster-schema.
	//   "TYPE_POLITICAL" - ABSTRACT
	//   "TYPE_COUNTRY"
	//   "TYPE_ADMINISTRATIVE_AREA" - ABSTRACT
	//   "TYPE_ADMINISTRATIVE_AREA1"
	//   "TYPE_US_STATE" - DEPRECATED
	//   "TYPE_GB_COUNTRY" - DEPRECATED
	//   "TYPE_JP_TODOUFUKEN" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA2"
	//   "TYPE_GB_FORMER_POSTAL_COUNTY" - DEPRECATED
	//   "TYPE_GB_TRADITIONAL_COUNTY" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA3"
	//   "TYPE_ADMINISTRATIVE_AREA4"
	//   "TYPE_ADMINISTRATIVE_AREA5"
	//   "TYPE_ADMINISTRATIVE_AREA6"
	//   "TYPE_ADMINISTRATIVE_AREA7"
	//   "TYPE_ADMINISTRATIVE_AREA8"
	//   "TYPE_ADMINISTRATIVE_AREA9"
	//   "TYPE_COLLOQUIAL_AREA" - e.g. Silicon Valley
	//   "TYPE_RESERVATION" - A reservation is a region collectively held or
	// governed by indigenous people and officially recognized by the
	// country’s government at the federal or state level. A reservation
	// may be fully contained within an administrative feature or partially
	// contained within two or more. These regions are referred to by
	// different categorical names depending on country and even by state,
	// including but not limited to: “Indian Reservations”, “Indian
	// Reserves”, “Land Claim Settlement Lands”, “Indian Lands”,
	// “Treaty Lands”, “Indigenous Territories”, etc. A reservation
	// is not a historic indigenous territory boundary or a region which has
	// applied for land rights but has not yet received official
	// recognition.
	//   "TYPE_LOCALITY"
	//   "TYPE_GB_POST_TOWN" - DEPRECATED
	//   "TYPE_JP_GUN" - DEPRECATED
	//   "TYPE_JP_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_JP_SUB_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_COLLOQUIAL_CITY" - An entity widely considered to be a city,
	// that may itself be made up of smaller political entities, some of
	// which are cities/towns/villages themselves. For example, the
	// colloquial view of Sydney, Australia actually comprises many smaller
	// cities, but is regarded as a city itself. This type is not suitable
	// for modeling official metro-/micropolitan or other statistical areas.
	//   "TYPE_SUBLOCALITY" - ABSTRACT
	//   "TYPE_US_BOROUGH" - DEPRECATED
	//   "TYPE_GB_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_OOAZA" - DEPRECATED
	//   "TYPE_JP_KOAZA" - DEPRECATED
	//   "TYPE_JP_GAIKU" - DEPRECATED
	//   "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_CHIBAN" - DEPRECATED
	//   "TYPE_JP_EDABAN" - DEPRECATED
	//   "TYPE_SUBLOCALITY1"
	//   "TYPE_SUBLOCALITY2"
	//   "TYPE_SUBLOCALITY3"
	//   "TYPE_SUBLOCALITY4"
	//   "TYPE_SUBLOCALITY5"
	//   "TYPE_NEIGHBORHOOD"
	//   "TYPE_CONSTITUENCY"
	//   "TYPE_DESIGNATED_MARKET_AREA" - Designated Market Areas (or DMAs)
	// are used by marketing and ratings companies (such as the Nielsen
	// Media Research company) to describe geographical regions (such as the
	// greater New York metropolitan area) that are covered by a set of
	// television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In
	// the United States, DMAs should have a DMA numeric ID name, tagged
	// with the FLAG_DESIGNATED_MARKET_AREA_ID flag.
	//   "TYPE_SCHOOL_DISTRICT"
	//   "TYPE_LAND_PARCEL"
	//   "TYPE_DISPUTED_AREA" - Eventually we'll have more data for disputed
	// areas (e.g., who makes claims on the area, who has de facto control,
	// etc.). For the moment, we just define a type so we can simply mark
	// areas as disputed.
	//   "TYPE_POLICE_JURISDICTION" - Boundaries representing the
	// jurisdiction of a particular police station.
	//   "TYPE_STATISTICAL_AREA" - An area used for aggregating statistical
	// data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a
	// third nibble so we can add an abstract parent above it later if need
	// be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as
	// TYPE_STATISTICAL_AREA1).
	//   "TYPE_CONSTITUENCY_FUTURE" - DEPRECATED
	//   "TYPE_PARK" - DEPRECATED
	//   "TYPE_GOLF_COURSE" - DEPRECATED
	//   "TYPE_LOCAL_PARK" - DEPRECATED
	//   "TYPE_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_MONUMENT" - DEPRECATED
	//   "TYPE_NATIONAL_FOREST" - DEPRECATED
	//   "TYPE_PROVINCIAL_PARK" - DEPRECATED
	//   "TYPE_PROVINCIAL_FOREST" - DEPRECATED
	//   "TYPE_CAMPGROUNDS" - DEPRECATED
	//   "TYPE_HIKING_AREA" - DEPRECATED
	//   "TYPE_BUSINESS" - DEPRECATED
	//   "TYPE_GOVERNMENT" - DEPRECATED
	//   "TYPE_BORDER_CROSSING" - DEPRECATED
	//   "TYPE_CITY_HALL" - DEPRECATED
	//   "TYPE_COURTHOUSE" - DEPRECATED
	//   "TYPE_EMBASSY" - DEPRECATED
	//   "TYPE_LIBRARY" - DEPRECATED
	//   "TYPE_SCHOOL" - DEPRECATED
	//   "TYPE_UNIVERSITY" - DEPRECATED
	//   "TYPE_EMERGENCY" - DEPRECATED
	//   "TYPE_HOSPITAL" - DEPRECATED
	//   "TYPE_PHARMACY" - DEPRECATED
	//   "TYPE_POLICE" - DEPRECATED
	//   "TYPE_FIRE" - DEPRECATED
	//   "TYPE_DOCTOR" - DEPRECATED
	//   "TYPE_DENTIST" - DEPRECATED
	//   "TYPE_VETERINARIAN" - DEPRECATED
	//   "TYPE_TRAVEL_SERVICE" - DEPRECATED
	//   "TYPE_LODGING" - DEPRECATED
	//   "TYPE_RESTAURANT" - DEPRECATED
	//   "TYPE_GAS_STATION" - DEPRECATED
	//   "TYPE_PARKING" - DEPRECATED
	//   "TYPE_POST_OFFICE" - DEPRECATED
	//   "TYPE_REST_AREA" - DEPRECATED
	//   "TYPE_CASH_MACHINE" - DEPRECATED
	//   "TYPE_CAR_RENTAL" - DEPRECATED
	//   "TYPE_CAR_REPAIR" - DEPRECATED
	//   "TYPE_SHOPPING" - DEPRECATED
	//   "TYPE_GROCERY" - DEPRECATED
	//   "TYPE_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_ECO_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_BIRD_WATCHING" - DEPRECATED
	//   "TYPE_FISHING" - DEPRECATED
	//   "TYPE_HUNTING" - DEPRECATED
	//   "TYPE_NATURE_RESERVE" - DEPRECATED
	//   "TYPE_TEMPLE" - DEPRECATED
	//   "TYPE_CHURCH" - DEPRECATED
	//   "TYPE_GURUDWARA" - DEPRECATED
	//   "TYPE_HINDU_TEMPLE" - DEPRECATED
	//   "TYPE_MOSQUE" - DEPRECATED
	//   "TYPE_SYNAGOGUE" - DEPRECATED
	//   "TYPE_STADIUM" - DEPRECATED
	//   "TYPE_BAR" - DEPRECATED
	//   "TYPE_MOVIE_RENTAL" - DEPRECATED
	//   "TYPE_COFFEE" - DEPRECATED
	//   "TYPE_GOLF" - DEPRECATED
	//   "TYPE_BANK" - DEPRECATED
	//   "TYPE_DOODLE" - DEPRECATED
	//   "TYPE_GROUNDS" - DEPRECATED
	//   "TYPE_AIRPORT_GROUNDS" - DEPRECATED
	//   "TYPE_BUILDING_GROUNDS" - DEPRECATED
	//   "TYPE_CEMETERY" - DEPRECATED
	//   "TYPE_HOSPITAL_GROUNDS" - DEPRECATED
	//   "TYPE_INDUSTRIAL" - DEPRECATED
	//   "TYPE_MILITARY" - DEPRECATED
	//   "TYPE_SHOPPING_CENTER" - DEPRECATED
	//   "TYPE_SPORTS_COMPLEX" - DEPRECATED
	//   "TYPE_UNIVERSITY_GROUNDS" - DEPRECATED
	//   "TYPE_DEPRECATED_TARMAC" - DEPRECATED
	//   "TYPE_ENCLOSED_TRAFFIC_AREA" - DEPRECATED
	//   "TYPE_PARKING_LOT" - DEPRECATED
	//   "TYPE_PARKING_GARAGE" - DEPRECATED
	//   "TYPE_OFF_ROAD_AREA" - DEPRECATED
	//   "TYPE_BORDER" - A line representing the boundary between two
	// features. See border.proto for details.
	//   "TYPE_BUILDING" - DEPRECATED
	//   "TYPE_GEOCODED_ADDRESS" - An association of a point with an
	// address, with no other information.
	//   "TYPE_NATURAL_FEATURE" - ABSTRACT
	//   "TYPE_TERRAIN" - Expanses of land that share common surface
	// attributes. These areas would look more or less uniform from a high
	// altitude.
	//   "TYPE_SAND"
	//   "TYPE_BEACH"
	//   "TYPE_DUNE"
	//   "TYPE_ROCKY"
	//   "TYPE_ICE"
	//   "TYPE_GLACIER"
	//   "TYPE_BUILT_UP_AREA" - Terrain that looks populated.
	//   "TYPE_VEGETATION" - Terrain that is covered in vegetation.
	//   "TYPE_SHRUBBERY"
	//   "TYPE_WOODS"
	//   "TYPE_AGRICULTURAL"
	//   "TYPE_GRASSLAND"
	//   "TYPE_TUNDRA"
	//   "TYPE_DESERT"
	//   "TYPE_SALT_FLAT" - A flat expanse of salt left by the evaporation
	// of a body of salt water.
	//   "TYPE_WATER" - Features can be TYPE_WATER if we don't have enough
	// information to properly type the body of water. TYPE_WATER is also
	// used as the type for child features that compose a TYPE_RIVER
	// feature.
	//   "TYPE_OCEAN" - One of the large salt-water bodies that covers most
	// of the globe.
	//   "TYPE_BAY" - An ocean subdivision formed by a coastal indentation.
	// Includes coves and gulfs.
	//   "TYPE_BIGHT" - An open body of water formed by a slight coastal
	// indentation.
	//   "TYPE_LAGOON"
	//   "TYPE_SEA" - An ocean subdivision more or less confined by land and
	// islands.
	//   "TYPE_STRAIT" - A long narrow ocean subdivision. Includes sounds.
	//   "TYPE_INLET"
	//   "TYPE_FJORD"
	//   "TYPE_LAKE" - An inland body of standing water.
	//   "TYPE_SEASONAL_LAKE" - A lake that dries up part of the year.
	//   "TYPE_RESERVOIR" - An artificial body of water, possibly created by
	// a dam, often used for irrigation or house use.
	//   "TYPE_POND"
	//   "TYPE_RIVER" - An inland body of moving water, or parts associated
	// with it in which there is little or no current (backwater).
	//   "TYPE_RAPIDS"
	//   "TYPE_DISTRIBUTARY" - A branch which flows away from the main
	// river. Includes deltas.
	//   "TYPE_CONFLUENCE" - A place where two or more rivers join.
	//   "TYPE_WATERFALL"
	//   "TYPE_SPRING" - A place where ground water flows naturally out of
	// the ground.
	//   "TYPE_GEYSER"
	//   "TYPE_HOT_SPRING"
	//   "TYPE_SEASONAL_RIVER" - A river that dries up part of the year.
	//   "TYPE_WADI" - A dry riverbed that occasionally receives
	// flashfloods.
	//   "TYPE_ESTUARY" - A place at the end of a river where fresh and salt
	// water mix. Includes tidal creeks and limans.
	//   "TYPE_WETLAND" - Land that is usually flooded. Includes bogs,
	// marshes, flats, moors, and swamps.
	//   "TYPE_WATER_NAVIGATION"
	//   "TYPE_FORD" - A shallow place where water may be waded through.
	//   "TYPE_CANAL" - A narrow passage used by boats. Normally artificial.
	//   "TYPE_HARBOR" - A deep place near a shore where ships commonly drop
	// anchor.
	//   "TYPE_CHANNEL" - A deep part in a body of water that is suitable
	// for navigation. Includes narrows.
	//   "TYPE_REEF" - Rocks, coral, sandbars, or other features beneath the
	// surface of the water that pose a hazard to passing ships. Includes
	// shoals.
	//   "TYPE_REEF_FLAT" - A relatively shallow zone of the back reef
	// located closest to the shore, that may be exposed at low tide.
	//   "TYPE_REEF_GROWTH" - A small section of rocks, coral, sandbars, or
	// other features beneath the surface of the water that forms part of a
	// reef.
	//   "TYPE_REEF_EXTENT" - The full extent of the reef complex.
	//   "TYPE_REEF_ROCK_SUBMERGED" - A submerged rock in the water.
	//   "TYPE_IRRIGATION" - Man-made (and sometimes natural) channels used
	// to move water. This type was used for both dam structures and water
	// that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for
	// dam structures and TYPE_RESERVOIR for water.
	//   "TYPE_DAM" - DEPRECATED
	//   "TYPE_DRINKING_WATER"
	//   "TYPE_CURRENT" - Includes overfalls.
	//   "TYPE_WATERING_HOLE" - A natural depression filled with water where
	// animals come to drink.
	//   "TYPE_TECTONIC" - ABSTRACT This type is incorrectly under
	// TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now
	// fixed. See TYPE_WATERING_HOLE for the replacement.
	//   "TYPE_WATERING_HOLE_DEPRECATED" - DEPRECATED
	//   "TYPE_VOLCANO"
	//   "TYPE_LAVA_FIELD"
	//   "TYPE_FISSURE"
	//   "TYPE_FAULT"
	//   "TYPE_LAND_MASS"
	//   "TYPE_CONTINENT"
	//   "TYPE_ISLAND"
	//   "TYPE_ATOLL"
	//   "TYPE_OCEAN_ROCK_EXPOSED" - An exposed rock in the water.
	//   "TYPE_CAY" - A small, low-elevation, sandy island formed on the
	// surface of coral reefs
	//   "TYPE_PENINSULA" - A stretch of land projecting into water.
	// Includes capes and spits.
	//   "TYPE_ISTHMUS" - A strip of land connecting two larger land masses,
	// such as continents.
	//   "TYPE_ELEVATED" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_PEAK" - Elevations that have a distinctive peak.
	//   "TYPE_NUNATAK" - A peak or ridge of a mountain that extends through
	// a glacier.
	//   "TYPE_SPUR" - A subsidiary peak of a mountain.
	//   "TYPE_PASS" - A route over an otherwise difficult to traverse
	// feature. Includes saddle.
	//   "TYPE_PLATEAU" - Elevations that are flat on top. Includes mesas
	// and buttes.
	//   "TYPE_RIDGE" - A ridge is a geographical feature consisting of a
	// chain of mountains or hills that form a continuous elevated crest
	// with a single ridgeline for some distance.
	//   "TYPE_RAVINE" - Steep declines usually carved by erosion. Includes
	// valleys, canyons, ditches, and gorges.
	//   "TYPE_CRATER" - Depressions causes by impact, explosion, and
	// sometimes sink-holes.
	//   "TYPE_KARST" - Topography formed on limestone and gypsum by
	// dissolution with sinkholes, caves, etc.
	//   "TYPE_CLIFF" - A vertical or nearly vertical slope. Includes
	// escarpments.
	//   "TYPE_VISTA" - An elevated place that is notable for having a good
	// view. Raster digital elevation data. This is not a type to be used by
	// providers or consumed by clients.
	//   "TYPE_DIGITAL_ELEVATION_MODEL" - RESERVED
	//   "TYPE_UPLAND" - Land along streams higher than the alluvial plain
	// or stream terrace.
	//   "TYPE_TERRACE"
	//   "TYPE_SLOPE" - Land not so steep as a cliff, but changing
	// elevation. Includes slides.
	//   "TYPE_CONTOUR_LINE" - All the points on the polygon are at the same
	// elevation.
	//   "TYPE_PAN" - A near-level shallow, natural depression or basin,
	// usually containing an intermittent lake, pond, or pool.
	//   "TYPE_UNSTABLE_HILLSIDE"
	//   "TYPE_MOUNTAIN_RANGE" - A series of mountains or hills ranged in a
	// line and connected by high ground. Mountain ranges usually consist of
	// many smaller ridges. For example, the Himalayas, the Andes. the Alps,
	// etc.
	//   "TYPE_UNDERSEA" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_SUBMARINE_SEAMOUNT" - includes peaks, ranges, and spurs
	//   "TYPE_SUBMARINE_RIDGE"
	//   "TYPE_SUBMARINE_GAP" - includes saddles
	//   "TYPE_SUBMARINE_PLATEAU"
	//   "TYPE_SUBMARINE_DEEP"
	//   "TYPE_SUBMARINE_VALLEY" - includes trenches and troughs
	//   "TYPE_SUBMARINE_BASIN"
	//   "TYPE_SUBMARINE_SLOPE"
	//   "TYPE_SUBMARINE_CLIFF"
	//   "TYPE_SUBMARINE_PLAIN"
	//   "TYPE_SUBMARINE_FRACTURE_ZONE"
	//   "TYPE_CAVE" - Don't use 0xA7. Use 8 bits for additional types under
	// TYPE_NATURAL_FEATURE, so we don't run out of space. The following are
	// miscellaneous natural features that don't fit any of the categories
	// above.
	//   "TYPE_ROCK"
	//   "TYPE_ARCHIPELAGO" - A feature representing a group or chain of
	// islands.
	//   "TYPE_POSTAL" - ABSTRACT
	//   "TYPE_POSTAL_CODE" - This is the type for postal codes which are
	// complete and independent enough that there should be a feature for
	// them (e.g. US 5-digit ZIP codes). For even more detailed suffixes
	// that further subdivide a postal code (such as the +4 component in US
	// ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX
	// address component. When a range or set of postal codes share the same
	// geographical area, e.g. because a precise subdivision does not exist
	// or this subdivision is unknown, this type is used for each individual
	// postal code.
	//   "TYPE_POSTAL_CODE_PREFIX" - A prefix portion of a postal code which
	// does not meet the requirements for TYPE_POSTAL_CODE, but which is
	// useful to search for, for example UK outcodes.
	//   "TYPE_PREMISE" - DEPRECATED
	//   "TYPE_SUB_PREMISE" - DEPRECATED This is deprecated and we want to
	// use TYPE_COMPOUND_SECTION instead.
	//   "TYPE_SUITE" - DEPRECATED
	//   "TYPE_POST_TOWN" - The term "post town" is used for a
	// locality-like-entity that is only used for postal addresses.
	//   "TYPE_POSTAL_ROUND" - DEPRECATED
	//   "TYPE_META_FEATURE" - ABSTRACT
	//   "TYPE_DATA_SOURCE" - Every data source used in constructing a data
	// repository has a corresponding feature that provides more information
	// about that data source. The extra information is stored in the
	// optional data_source field below.
	//   "TYPE_LOCALE" - A locale feature provides region specific
	// conventions such as preferred language and formatting details for
	// time, date, and currency values. Locales aren't necessary defined by
	// physical geographic features, so they are classified as
	// meta-features.
	//   "TYPE_TIMEZONE" - A timezone feature is used to specify the region
	// covering an international timezone. When a point is covered by
	// multiple timezone features, the most specific one can be used to
	// compute the local time at this point. Most specific implies a much
	// smaller region or the one that is closer to the center. A feature's
	// timezone can be specified in the repeated related_timezone field.
	//   "TYPE_BUSINESS_CHAIN" - A business chain feature is used to
	// represent a chain, e.g. Starbucks, McDonald's, etc. Other features
	// representing specific stores/franchises of this chain may refer to
	// one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly
	// reserved to commercial chains but can also be used to model
	// organizations such as the Red Cross or the United Nations.
	//   "TYPE_PHONE_NUMBER_PREFIX" - A phone number prefix feature is used
	// to specify the region where phone numbers (typically fixed-line
	// numbers) must begin with a certain prefix. Any phone number prefix
	// down to any level of granularity could be represented by this type.
	//   "TYPE_PHONE_NUMBER_AREA_CODE" - A phone number area code is a
	// prefix which also coincides with the area code, or national
	// destination code, of a particular region.
	//   "TYPE_BUSINESS_CORRIDOR" - A Business Corridor is a dense cluster
	// of semantically similar establishments. TYPE_BUSINESS_CORRIDOR
	// features are distinguished from TYPE_COLLOQUIAL_AREA features because
	// the corridors are not under the political hierarchy, are allowed to
	// be nameless, and may not correspond to well-known real world
	// locations. For more details, see go/geo-corridors-schema.
	//   "TYPE_ADDRESS_TEMPLATE" - An address template feature provides
	// region-specific conventions for structuring addresses. These features
	// aren't necessarily defined by physical geographic features, so they
	// are classified as meta-features.
	//   "TYPE_TRANSIT_AGENCY" - A transit agency operates a number of
	// lines, typically all in the same city, region or country. See also
	// transitagency.proto
	//   "TYPE_FUTURE_GEOMETRY" - A feature whose geometry is planned to
	// replace the geometry on another feature.
	//   "TYPE_EVENT" - DEPRECATED
	//   "TYPE_EARTHQUAKE" - DEPRECATED
	//   "TYPE_HURRICANE" - DEPRECATED
	//   "TYPE_WEATHER_CONDITION" - DEPRECATED
	//   "TYPE_TRANSIENT" - RESERVED
	//   "TYPE_ENTRANCE" - A portal of entry or exit to another feature.
	// Examples: - Subway station entrance. - Parking lot entrance.
	//   "TYPE_CARTOGRAPHIC" - Cartographic features are used to capture
	// real-world objects for which there is no current desire to model any
	// specific attributes. These are only useful to make the map tiles look
	// pretty.
	//   "TYPE_HIGH_TENSION" - DEPRECATED
	//   "TYPE_SKI_TRAIL" - Also see skitrail.proto
	//   "TYPE_SKI_LIFT" - Also see skilift.proto
	//   "TYPE_SKI_BOUNDARY" - Also see skiboundary.proto
	//   "TYPE_WATERSHED_BOUNDARY"
	//   "TYPE_TARMAC" - Starting with TYPE_TARMAC, we use longer IDs, so
	// that we can expand the number of feature types under
	// TYPE_CARTOGRAPHIC.
	//   "TYPE_WALL" - Use TYPE_COMPOUND_GROUND and appropriate gcids for
	// the next two.
	//   "TYPE_PICNIC_AREA" - DEPRECATED
	//   "TYPE_PLAY_GROUND" - DEPRECATED
	//   "TYPE_TRAIL_HEAD"
	//   "TYPE_GOLF_TEEING_GROUND" - Sub-types within a golf course.
	//   "TYPE_GOLF_PUTTING_GREEN"
	//   "TYPE_GOLF_ROUGH"
	//   "TYPE_GOLF_SAND_BUNKER"
	//   "TYPE_GOLF_FAIRWAY"
	//   "TYPE_GOLF_HOLE" - Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop
	// for golf shops instead.
	//   "TYPE_DEPRECATED_GOLF_SHOP" - DEPRECATED
	//   "TYPE_CAMPING_SITE" - DEPRECATED
	//   "TYPE_DESIGNATED_BARBECUE_PIT"
	//   "TYPE_DESIGNATED_COOKING_AREA"
	//   "TYPE_CAMPFIRE_PIT"
	//   "TYPE_WATER_FOUNTAIN"
	//   "TYPE_LITTER_RECEPTACLE"
	//   "TYPE_LOCKER_AREA"
	//   "TYPE_ANIMAL_ENCLOSURE" - Subtype within a zoo - a cage or
	// fenced-off or otherwise delineated area containing animals.
	//   "TYPE_CARTOGRAPHIC_LINE" - A line for a cartographic detail. For
	// example the international date line. Such features should have
	// polyline geometry.
	//   "TYPE_ESTABLISHMENT" - ABSTRACT This type is being replaced by
	// TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2
	//   "TYPE_ESTABLISHMENT_GROUNDS" - DEPRECATED This type has been
	// replaced by TYPE_COMPOUND_BUILDING. For further details, see
	// go/oyster-compounds
	//   "TYPE_ESTABLISHMENT_BUILDING" - DEPRECATED
	//   "TYPE_ESTABLISHMENT_POI" - An establishment which has a address
	// (a.k.a. location or storefront). Note that it *may* also have a
	// service area (e.g. a restaurant that offers both dine-in and
	// delivery). This type of business is also known as a "hybrid" Service
	// Area Business. Establishment POIs can be referenced by TYPE_COMPOUND
	// features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the
	// reciprocal relation of the RELATION_OCCUPIES.
	//   "TYPE_ESTABLISHMENT_SERVICE" - A business without a storefront,
	// e.g. a plumber. It would normally not have a place that a customer
	// could visit to receive service, but it would have an area served by
	// the business. Also known as a "pure" Service Area Business.
	// NOTE(tcain): Using value 0xD441, since we could find ourselves with a
	// need to differentiate service areas from online-only at this level in
	// the future, but still benefit from being able to group those under a
	// common parent, disjoint from TYPE_ESTABLISHMENT_POI.
	//   "TYPE_CELESTIAL" - The root of types of features that are in the
	// sky, rather than on the earth. There will eventually be a hierarchy
	// of types here.
	//   "TYPE_ROAD_MONITOR" - Features responsible for monitoring traffic
	// on roads (usually for speed). Includes cameras at particular points
	// as well as monitors that cover larger spans. Features of this type
	// should have a corresponding gcid that specifies the correct subtype
	// (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was
	// originally named as TYPE_ROAD_CAMERA.
	//   "TYPE_PUBLIC_SPACES_AND_MONUMENTS" - ABSTRACT
	//   "TYPE_STATUE" - Note that this type does not distinguish the nature
	// of the statue (religious, historical, memorial, tourist, ...).
	//   "TYPE_TOWN_SQUARE" - Open space used for events, gathering, or as
	// market-place.
	//   "TYPE_LEVEL" - A feature used to represent a logical level, e.g.
	// floor.
	//   "TYPE_COMPOUND" - ABSTRACT
	//   "TYPE_COMPOUND_GROUNDS" - e.g. campus, compound, parcel.
	//   "TYPE_COMPOUND_BUILDING" - e.g. single family dwelling, office
	// building.
	//   "TYPE_COMPOUND_SECTION" - e.g. suite, room, hallway, cubicle.
	//   "TYPE_TERMINAL_POINT" - A terminal point represents a good location
	// for a user to meet a taxi, ridesharing vehicle, or general driver.
	//   "TYPE_REGULATED_AREA" - An area controlled in some way by an
	// authoritative source, such as a government-designated COVID
	// containment zone or an area under government sanctions. Features of
	// this type should have one or more gcids corresponding to their
	// specific regulation, and client handling of these features may vary
	// based on the type of regulation.
	//   "TYPE_LOGICAL_BORDER" - A grouping of TYPE_BORDER features ("border
	// segments"), which together represent a border between two features of
	// the same type.
	//   "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES" - DEPRECATED
	//   "TYPE_UNKNOWN" - A feature of completely unknown type. This should
	// only be used when absolutely necessary. One example in which this
	// type is useful is in the Chinese importer, which must heuristically
	// segment addresses into components - it often does not know what types
	// to make those components. Please note that the Oyster address
	// formatter does not currently support address components of
	// TYPE_UNKNOWN well.
	FeatureType string `json:"featureType,omitempty"`

	// FormattedAddress: One-line geocoded address that this lat/lng
	// represents at the time this alias was created by the user.
	FormattedAddress string `json:"formattedAddress,omitempty"`

	// Nickname: Free-text alias if alias type is NICKNAME. Otherwise unset.
	// Limited to 40 characters.
	Nickname string `json:"nickname,omitempty"`

	// Point: lat/lng the icon is to be shown at.
	Point *GeostorePointProto `json:"point,omitempty"`

	// StickerId: The id of the sticker asset chosen by the user to replace
	// the default asset for the alias.
	StickerId int64 `json:"stickerId,omitempty"`

	// SyntheticFeature: If the feature associated with the alias has
	// synthetic_geometry.
	SyntheticFeature bool `json:"syntheticFeature,omitempty"`

	// Timestamp: [INTERNAL ONLY] Last update of bigtable by kansas, in
	// microseconds. Volatile only and not saved in kansas column. inmemory
	// only because >= 16.
	Timestamp int64 `json:"timestamp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AliasId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AliasId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PersonalizationMapsAliasIcon) MarshalJSON() ([]byte, error) {
	type NoMethod PersonalizationMapsAliasIcon
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMet
// adata: Metadata related to LocalDiscoverySettings,e.g.,
// dietary_restriction, cuisine and ingredient.
type PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata struct {
	// OpaRecipesContext: Contexts regarding the preferences from
	// OPA_RECIPES.
	OpaRecipesContext *PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext `json:"opaRecipesContext,omitempty"`

	// UiEntryPoint: The UI entry point from which the entity preference was
	// set.
	//
	// Possible values:
	//   "UNKNOWN_ENTRY_POINT"
	//   "GEO_DISCOVERY" - go/geo-preference-feedback-mvp. cschill@
	//   "OPA_SETTINGS" - https://screenshot.googleplex.com/gnKDdHrG9p3.
	// glwang@, jdlevine@, encyclomedia@
	//   "OPA_RECIPES" - https://screenshot.googleplex.com/X4dRwGipeGt.
	// assistant-recipe-recs@
	//   "OPA_RESTAURANTS" - assistant-recipe-recs@
	UiEntryPoint string `json:"uiEntryPoint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OpaRecipesContext")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OpaRecipesContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext:
// LINT.IfChange Contexts regarding the preferences from OPA_RECIPES.
// For example, users can click a recipes and say they don't like one
// cuisine. OpaRecipesContext will contain the doc_id/url of that
// recipes.
type PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext struct {
	// DocId: The recipe doc id where the setting comes from.
	DocId string `json:"docId,omitempty"`

	// Url: The recipe url where the setting comes from.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext) MarshalJSON() ([]byte, error) {
	type NoMethod PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type PhilPerDocData struct {
	// PhilString: phil data , approx 70 bytes for top 500M
	PhilString string `json:"PhilString,omitempty"`

	PhilVersion int64 `json:"PhilVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PhilString") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PhilString") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhilPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod PhilPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type PhotosAnimationMetadata struct {
	// DurationMs: The duration of the animation or movie (not including any
	// looping), in milliseconds. If there is only a single frame (and thus
	// not animated), the duration will be 0.
	DurationMs int64 `json:"durationMs,omitempty,string"`

	// LoopCount: The number of times the animation plays. If 0, the
	// animation will loop indefinitely. If positive, this number includes
	// the initial playthrough. For example, a value of 3 means that each
	// frame is shown 3 times.
	LoopCount int64 `json:"loopCount,omitempty"`

	NumFrames int64 `json:"numFrames,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DurationMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DurationMs") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosAnimationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosAnimationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosDynamicDepthMetadata: Metadata pertaining to nested Dynamic
// Depth metadata. Currently this message is used to indicate the
// presence of dynamic depth.
type PhotosDynamicDepthMetadata struct {
}

type PhotosFourCMetadata struct {
	Caption string `json:"caption,omitempty"`

	Copyright string `json:"copyright,omitempty"`

	Creator []string `json:"creator,omitempty"`

	Credit string `json:"credit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Caption") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Caption") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosFourCMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosFourCMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosGDepthMetadata: Metadata in the GDepth XMP block. Note that
// GDepth::Data is not copied into this message.
type PhotosGDepthMetadata struct {
	// Far: Depth map far plane distance.
	Far float64 `json:"far,omitempty"`

	// Format: Depth map format.
	Format string `json:"format,omitempty"`

	// ImageHeight: Depth map source image height.
	ImageHeight int64 `json:"imageHeight,omitempty"`

	// ImageWidth: Depth map source image width.
	ImageWidth int64 `json:"imageWidth,omitempty"`

	// Mime: Depth map mime type.
	Mime string `json:"mime,omitempty"`

	// Near: Depth map near plane distance.
	Near float64 `json:"near,omitempty"`

	// Units: Depth map units of distance.
	Units string `json:"units,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Far") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Far") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosGDepthMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosGDepthMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosGDepthMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosGDepthMetadata
	var s1 struct {
		Far  gensupport.JSONFloat64 `json:"far"`
		Near gensupport.JSONFloat64 `json:"near"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Far = float64(s1.Far)
	s.Near = float64(s1.Near)
	return nil
}

// PhotosImageMetadata: Next tag value: 381.
type PhotosImageMetadata struct {
	DEPRECATEDBlendingtype string `json:"DEPRECATEDBlendingtype,omitempty"`

	// DEPRECATEDGpstimestamp: This field was originally marked incorrectly
	// as optional (rather than repeated). In order to fix it, the first
	// field has been marked as deprecated and replaced with a field with a
	// new name and tag number.
	DEPRECATEDGpstimestamp float64 `json:"DEPRECATEDGpstimestamp,omitempty"`

	DEPRECATEDIscolor int64 `json:"DEPRECATEDIscolor,omitempty"`

	DEPRECATEDLargestvalidinteriorrectheight int64 `json:"DEPRECATEDLargestvalidinteriorrectheight,omitempty"`

	DEPRECATEDLargestvalidinteriorrectleft int64 `json:"DEPRECATEDLargestvalidinteriorrectleft,omitempty"`

	DEPRECATEDLargestvalidinteriorrecttop int64 `json:"DEPRECATEDLargestvalidinteriorrecttop,omitempty"`

	DEPRECATEDLargestvalidinteriorrectwidth int64 `json:"DEPRECATEDLargestvalidinteriorrectwidth,omitempty"`

	DEPRECATEDProcess int64 `json:"DEPRECATEDProcess,omitempty"`

	Actionadvised string `json:"actionadvised,omitempty"`

	Addlmodelinfo string `json:"addlmodelinfo,omitempty"`

	Advisory []string `json:"advisory,omitempty"`

	Altitude float64 `json:"altitude,omitempty"`

	AnimationMetadata *PhotosAnimationMetadata `json:"animationMetadata,omitempty"`

	Aperturefnumber float64 `json:"aperturefnumber,omitempty"`

	Aperturevalue float64 `json:"aperturevalue,omitempty"`

	Artworkorobject []string `json:"artworkorobject,omitempty"`

	Audioduration string `json:"audioduration,omitempty"`

	Audiooutcue string `json:"audiooutcue,omitempty"`

	Audiosamplingrate string `json:"audiosamplingrate,omitempty"`

	Audiosamplingresolution string `json:"audiosamplingresolution,omitempty"`

	Audiotype string `json:"audiotype,omitempty"`

	Author string `json:"author,omitempty"`

	Authorposition string `json:"authorposition,omitempty"`

	// Autoenhance: Indicates whether auto-enhance has been applied to the
	// image.
	Autoenhance bool `json:"autoenhance,omitempty"`

	Baseurl string `json:"baseurl,omitempty"`

	// BitDepth: The number of bits per pixel used to express a color. Most
	// images have 8-bit depth and Photos/thumbnailer currently do not
	// support more than 8 bits (except RAW).
	BitDepth int64 `json:"bitDepth,omitempty"`

	// Bitspersample: Start of reflected fields. These do not duplicate the
	// above fields.
	Bitspersample int64 `json:"bitspersample,omitempty"`

	Brightnessvalue float64 `json:"brightnessvalue,omitempty"`

	Burstuuid string `json:"burstuuid,omitempty"`

	Cameraid string `json:"cameraid,omitempty"`

	// Cameramake: Exif camera make
	Cameramake string `json:"cameramake,omitempty"`

	// Cameramodel: Exif camera model
	Cameramodel string `json:"cameramodel,omitempty"`

	// Caption: Caption embedded in IPTC
	Caption string `json:"caption,omitempty"`

	Captionwriter string `json:"captionwriter,omitempty"`

	Capturesoftware string `json:"capturesoftware,omitempty"`

	Category string `json:"category,omitempty"`

	Ccdwidth float64 `json:"ccdwidth,omitempty"`

	Celllength int64 `json:"celllength,omitempty"`

	Cellwidth int64 `json:"cellwidth,omitempty"`

	Certificate string `json:"certificate,omitempty"`

	// Chromasubsampling: A typed representation that translates the values
	// from ycbcrsubsampling.
	//
	// Possible values:
	//   "UNKNOWN_CHROMA_SUBSAMPLING"
	//   "YCBCR410"
	//   "YCBCR411"
	//   "YCBCR420"
	//   "YCBCR422"
	//   "YCBCR444"
	Chromasubsampling string `json:"chromasubsampling,omitempty"`

	Ciadrcity string `json:"ciadrcity,omitempty"`

	Ciadrctry string `json:"ciadrctry,omitempty"`

	Ciadrextadr []string `json:"ciadrextadr,omitempty"`

	Ciadrpcode string `json:"ciadrpcode,omitempty"`

	Ciadrregion string `json:"ciadrregion,omitempty"`

	Ciemailwork string `json:"ciemailwork,omitempty"`

	Citelwork string `json:"citelwork,omitempty"`

	City string `json:"city,omitempty"`

	Ciurlwork string `json:"ciurlwork,omitempty"`

	Colormap int64 `json:"colormap,omitempty"`

	// Colorprofile: Indicates whether or not the source image had an
	// embedded color profile.
	Colorprofile bool `json:"colorprofile,omitempty"`

	Colorspace int64 `json:"colorspace,omitempty"`

	Compressedbitsperpixel float64 `json:"compressedbitsperpixel,omitempty"`

	Compressionlevel int64 `json:"compressionlevel,omitempty"`

	Contact string `json:"contact,omitempty"`

	Contentlocationcode []string `json:"contentlocationcode,omitempty"`

	Contentlocationname []string `json:"contentlocationname,omitempty"`

	Contrast int64 `json:"contrast,omitempty"`

	Contributor []string `json:"contributor,omitempty"`

	Copyrightnotice string `json:"copyrightnotice,omitempty"`

	Country string `json:"country,omitempty"`

	Countrycode string `json:"countrycode,omitempty"`

	Coverage string `json:"coverage,omitempty"`

	Createdate string `json:"createdate,omitempty"`

	Credits string `json:"credits,omitempty"`

	Croppedareaimageheightpixels int64 `json:"croppedareaimageheightpixels,omitempty"`

	Croppedareaimagewidthpixels int64 `json:"croppedareaimagewidthpixels,omitempty"`

	Croppedarealeftpixels int64 `json:"croppedarealeftpixels,omitempty"`

	Croppedareatoppixels int64 `json:"croppedareatoppixels,omitempty"`

	Customrendered int64 `json:"customrendered,omitempty"`

	Cvterm []string `json:"cvterm,omitempty"`

	Date string `json:"date,omitempty"`

	Datecreated string `json:"datecreated,omitempty"`

	Datesent string `json:"datesent,omitempty"`

	Datetime string `json:"datetime,omitempty"`

	Datetimedigitized string `json:"datetimedigitized,omitempty"`

	// Daylightsavings: 0 = no daylight savings, 1 = daylight savings
	// enabled. Note that this field only represents whether the setting in
	// the camera was turned on or off. It must not be used to modify the
	// timestamp of the photo. That is, the capture time is already
	// completely determined by exif_time, timezoneoffset and
	// timezoneminutes.
	Daylightsavings []int64 `json:"daylightsavings,omitempty"`

	Destination []string `json:"destination,omitempty"`

	// DestinationLatitude: +/- 90 inclusive
	DestinationLatitude float64 `json:"destinationLatitude,omitempty"`

	// DestinationLongitude: +/- 180 inclusive
	DestinationLongitude float64 `json:"destinationLongitude,omitempty"`

	Digimageguid string `json:"digimageguid,omitempty"`

	Digitalsourcefiletype string `json:"digitalsourcefiletype,omitempty"`

	Digitalsourcetype string `json:"digitalsourcetype,omitempty"`

	Digitalzoomratio float64 `json:"digitalzoomratio,omitempty"`

	Distance float64 `json:"distance,omitempty"`

	// DynamicDepthMetadata: DynamicDepth (go/dynamic-depth) metadata is
	// described in the metadata of sub-images in the container. The
	// presence of this field can be used to determine that an image is in
	// the dynamic depth format.
	DynamicDepthMetadata *PhotosDynamicDepthMetadata `json:"dynamicDepthMetadata,omitempty"`

	Editorialupdate string `json:"editorialupdate,omitempty"`

	Editstatus string `json:"editstatus,omitempty"`

	Envelopenumber string `json:"envelopenumber,omitempty"`

	Envelopepriority string `json:"envelopepriority,omitempty"`

	Event string `json:"event,omitempty"`

	// Exif4c: 4C metadata (caption, copyright, creator, credit) specific to
	// each of the three metadata segments (EXIF, XMP, IPTC). These are used
	// to keep separate the 4C data from each segment so that we can
	// properly preserve the per-segment 4C data on write (when
	// PreserveLevel is set appropriately).
	Exif4c *PhotosFourCMetadata `json:"exif4c,omitempty"`

	// ExifTime: Timestamp embedded in the image. The value comes from the
	// first valid date-time field extracted from the metadata in the order:
	// 1) datecreated (ie. DateTimeOriginal) 2) datetimedigitized (ie.
	// DateTimeDigitized) 3) datetime (ie. DateTime or last modified date)
	// The type of this field is equivalent to a time_t (ie. number of
	// seconds since the epoch - 00:00 hours, Jan 1, 1970) except that it is
	// an int64 rather than an int.
	ExifTime int64 `json:"exifTime,omitempty,string"`

	// ExifTimeUtc: The exif_time_utc field is a UTC-based alternative to
	// the exif_time field, which is in local time, rather than UTC. If they
	// were not separate, clients would be unable to distinguish if the
	// source were UTC- or local-based.
	ExifTimeUtc int64 `json:"exifTimeUtc,omitempty,string"`

	// ExifTimeUtcSource: The exif_time_utc_source indicates the source from
	// which the exif_time_utc field is calculated.
	//
	// Possible values:
	//   "EXIF_TIME_SOURCE_UNKNOWN"
	//   "GPS_DATE_TIME_STAMP" - The value is calculated from the
	// GPSTimeStamp and GPSDateStamp fields.
	ExifTimeUtcSource string `json:"exifTimeUtcSource,omitempty"`

	Expirationdate string `json:"expirationdate,omitempty"`

	Expirationtime string `json:"expirationtime,omitempty"`

	Exposurebias float64 `json:"exposurebias,omitempty"`

	Exposureindex float64 `json:"exposureindex,omitempty"`

	Exposurelockused bool `json:"exposurelockused,omitempty"`

	Exposuremode int64 `json:"exposuremode,omitempty"`

	Exposureprogram int64 `json:"exposureprogram,omitempty"`

	Exposuretime float64 `json:"exposuretime,omitempty"`

	Extrasamples int64 `json:"extrasamples,omitempty"`

	Fillorder int64 `json:"fillorder,omitempty"`

	Firmware string `json:"firmware,omitempty"`

	Firstphotodate string `json:"firstphotodate,omitempty"`

	Fixtureidentifier string `json:"fixtureidentifier,omitempty"`

	Flashcompensation float64 `json:"flashcompensation,omitempty"`

	Flashenergy float64 `json:"flashenergy,omitempty"`

	Flashreturn int64 `json:"flashreturn,omitempty"`

	Flashused int64 `json:"flashused,omitempty"`

	Focallength float64 `json:"focallength,omitempty"`

	Focallengthin35mmfilm int64 `json:"focallengthin35mmfilm,omitempty"`

	Focalplaneunits float64 `json:"focalplaneunits,omitempty"`

	Focalplanexres float64 `json:"focalplanexres,omitempty"`

	Format string `json:"format,omitempty"`

	Freebytecounts int64 `json:"freebytecounts,omitempty,string"`

	Freeoffsets int64 `json:"freeoffsets,omitempty"`

	Fullpanoheightpixels int64 `json:"fullpanoheightpixels,omitempty"`

	Fullpanowidthpixels int64 `json:"fullpanowidthpixels,omitempty"`

	Function bool `json:"function,omitempty"`

	Gaincontrol int64 `json:"gaincontrol,omitempty"`

	Gaudiomime string `json:"gaudiomime,omitempty"`

	// Gcameraburstid: A unique String. The property should be present and
	// identical for all images that make up a burst. It should be unique
	// across devices (UUID recommended). Unlike GCreations:CameraBurstId,
	// we should use images with this property to create auto collages and
	// animations.
	Gcameraburstid string `json:"gcameraburstid,omitempty"`

	// Gcameraburstprimary: A value of 1 indicates that this was the primary
	// (“best shot”) at capture time. Within Photos we should only treat
	// this image as the best shot if the user hasn’t made an explicit
	// choice. Defining the initial primary allows consistency between OEMs,
	// Photos clients, and the Photos backend. This value is optional,
	// cameras are not required to set it on any photo in a burst. Clients
	// will default to the 0th frame, but may run an algorithm to pick a
	// better default.
	Gcameraburstprimary int64 `json:"gcameraburstprimary,omitempty"`

	// Gcameradisableautocreation: The possible values are: “Animation”,
	// “Collage”, “Pano”, “Movies”. Photos will avoid creating
	// the listed types using the containing image or video. The property is
	// optional. The property can be included multiple times to disable
	// creation of multiple different types.
	Gcameradisableautocreation []string `json:"gcameradisableautocreation,omitempty"`

	// Gcameramicrovideo: The following XMP metadata are used specifically
	// for MicroVideo. More information about MicroVideo format can be found
	// at go/photos-microvideo-format A value of 1 indicates that this file
	// was a MicroVideo at capture time. Otherwise, this is not a MicroVideo
	// (not set or 0).
	Gcameramicrovideo int64 `json:"gcameramicrovideo,omitempty"`

	// Gcameramicrovideooffset: The offset in bytes from the end of the file
	// to the point where the appended mp4 begins (equivalent to the length
	// of the compressed mp4). This field might be provided in the original
	// MicroVideo from client, but it might become invalid when the image
	// component is edited, so it is expected that the thumbnailer will
	// validate it and find the correct value (by scanning through the JPEG)
	// if it is invalid. In other words, only a valid offset should be
	// returned by thumbnailer.
	Gcameramicrovideooffset int64 `json:"gcameramicrovideooffset,omitempty"`

	// Gcameramicrovideopresentationtimestampus: The presentation timestamp
	// in microseconds of the video frame corresponding to the image still.
	// Value may be -1 to denote unset/unspecified.
	Gcameramicrovideopresentationtimestampus int64 `json:"gcameramicrovideopresentationtimestampus,omitempty"`

	// Gcameramicrovideoversion: Indicates the file format version of the
	// MicroVideo (initially 1).
	Gcameramicrovideoversion int64 `json:"gcameramicrovideoversion,omitempty"`

	// Gcameramotionphoto: An indication that this item should be treated as
	// a Motion Photo. 0 -> Not Motion Photo, 1 -> Motion Photo, everything
	// else is undefined per the spec. If it's a motion photo, the previous
	// gcamera fields should be ignored.
	Gcameramotionphoto int64 `json:"gcameramotionphoto,omitempty"`

	// Gcameramotionphotopresentationtimestampus: The presentation timestamp
	// in microseconds of the video frame corresponding to the image still.
	// Value may be -1 to denote unset/unspecified.
	Gcameramotionphotopresentationtimestampus int64 `json:"gcameramotionphotopresentationtimestampus,omitempty"`

	// Gcameramotionphotoversion: Indicates the Motion Photo version of the
	// spec (initially 1).
	Gcameramotionphotoversion int64 `json:"gcameramotionphotoversion,omitempty"`

	// Gcameraspecialtypeid: Camera creations metadata. The opaque id string
	// created by the OEM. For bursts, this field should not be present.
	// Instead, the two properties below will allow Photos to identify and
	// provide special treatment for bursts.
	Gcameraspecialtypeid string `json:"gcameraspecialtypeid,omitempty"`

	Gcreationscameraburstid string `json:"gcreationscameraburstid,omitempty"`

	// Gcreationstype: String representation of creation type. Should be one
	// of {"GCameraCollage", "GCameraAnimation", "GCameraGroupSmiles",
	// "GPhotosCollage", "GPhotosAnimation"}.
	Gcreationstype string `json:"gcreationstype,omitempty"`

	GdepthMetadata *PhotosGDepthMetadata `json:"gdepthMetadata,omitempty"`

	Gimagemime string `json:"gimagemime,omitempty"`

	// Gpsdatestamp: This is in UTC time. Format is YYYY:mm:dd.
	Gpsdatestamp string `json:"gpsdatestamp,omitempty"`

	Gpsdestbearing float64 `json:"gpsdestbearing,omitempty"`

	Gpsdestbearingref string `json:"gpsdestbearingref,omitempty"`

	Gpsdestdistance float64 `json:"gpsdestdistance,omitempty"`

	Gpsdestdistanceref string `json:"gpsdestdistanceref,omitempty"`

	Gpsdestlatitude float64 `json:"gpsdestlatitude,omitempty"`

	Gpsdestlatituderef string `json:"gpsdestlatituderef,omitempty"`

	Gpsdestlongitude float64 `json:"gpsdestlongitude,omitempty"`

	Gpsdestlongituderef string `json:"gpsdestlongituderef,omitempty"`

	Gpsdifferential int64 `json:"gpsdifferential,omitempty"`

	Gpsdop float64 `json:"gpsdop,omitempty"`

	Gpsimgdirection float64 `json:"gpsimgdirection,omitempty"`

	Gpsimgdirectionref string `json:"gpsimgdirectionref,omitempty"`

	Gpsmapdatum string `json:"gpsmapdatum,omitempty"`

	Gpsmeasuremode string `json:"gpsmeasuremode,omitempty"`

	Gpssatellites string `json:"gpssatellites,omitempty"`

	Gpsspeed float64 `json:"gpsspeed,omitempty"`

	Gpsspeedref string `json:"gpsspeedref,omitempty"`

	Gpsstatus string `json:"gpsstatus,omitempty"`

	// Gpstime: This is in UTC Time. Contains three floats: hour, minute and
	// second. Supports subsecond resolution.
	Gpstime []float64 `json:"gpstime,omitempty"`

	Gpstrack float64 `json:"gpstrack,omitempty"`

	Gpstrackref string `json:"gpstrackref,omitempty"`

	Grayresponsecurve int64 `json:"grayresponsecurve,omitempty"`

	Grayresponseunit int64 `json:"grayresponseunit,omitempty"`

	// HasAlpha: The image has an alpha channel (potential transparency). If
	// the image is decoded, this will be updated to indicate whether there
	// is any active transparency. Formats supporting alpha: png, webp, gif,
	// heif.
	HasAlpha bool `json:"hasAlpha,omitempty"`

	Headline string `json:"headline,omitempty"`

	Height int64 `json:"height,omitempty"`

	Hostcomputer string `json:"hostcomputer,omitempty"`

	Identifier []string `json:"identifier,omitempty"`

	Imagenumber string `json:"imagenumber,omitempty"`

	Imageorientation string `json:"imageorientation,omitempty"`

	Imagetype string `json:"imagetype,omitempty"`

	Initialhorizontalfovdegrees float64 `json:"initialhorizontalfovdegrees,omitempty"`

	Initialverticalfovdegrees float64 `json:"initialverticalfovdegrees,omitempty"`

	Initialviewheadingdegrees int64 `json:"initialviewheadingdegrees,omitempty"`

	Initialviewpitchdegrees int64 `json:"initialviewpitchdegrees,omitempty"`

	Initialviewrolldegrees int64 `json:"initialviewrolldegrees,omitempty"`

	Instructions string `json:"instructions,omitempty"`

	Intellectualgenre string `json:"intellectualgenre,omitempty"`

	Interoperabilityindex string `json:"interoperabilityindex,omitempty"`

	Iptc4c *PhotosFourCMetadata `json:"iptc4c,omitempty"`

	Iptclastedited string `json:"iptclastedited,omitempty"`

	// Ismpformat: The image is a Multi-Picture Object.
	Ismpformat bool `json:"ismpformat,omitempty"`

	Isoequivalent int64 `json:"isoequivalent,omitempty"`

	Keyword []string `json:"keyword,omitempty"`

	Label string `json:"label,omitempty"`

	Language []string `json:"language,omitempty"`

	Languageidentifier string `json:"languageidentifier,omitempty"`

	Lastphotodate string `json:"lastphotodate,omitempty"`

	// Latitude: GPS Info: +/- 90 inclusive
	Latitude float64 `json:"latitude,omitempty"`

	Lens string `json:"lens,omitempty"`

	Lensid string `json:"lensid,omitempty"`

	Lensinfo string `json:"lensinfo,omitempty"`

	Lightsource int64 `json:"lightsource,omitempty"`

	Location string `json:"location,omitempty"`

	Locationshown []string `json:"locationshown,omitempty"`

	// Longitude: +/- 180 inclusive
	Longitude float64 `json:"longitude,omitempty"`

	Marked bool `json:"marked,omitempty"`

	Maxaperturevalue float64 `json:"maxaperturevalue,omitempty"`

	Maxavailheight int64 `json:"maxavailheight,omitempty"`

	Maxavailwidth int64 `json:"maxavailwidth,omitempty"`

	Maxsamplevalue int64 `json:"maxsamplevalue,omitempty"`

	Metadatadate string `json:"metadatadate,omitempty"`

	Meteringmode int64 `json:"meteringmode,omitempty"`

	// Microvideooriginaloffset: This is similar to gcameramicrovideooffset,
	// except it stores the unverified value that was provided in the motion
	// photo file. This field is not part of the XMP or spec. It is used to
	// ensure we preserve data from the original file when offset is
	// modified.
	Microvideooriginaloffset int64 `json:"microvideooriginaloffset,omitempty"`

	// MimeType: Mime type of image
	MimeType int64 `json:"mimeType,omitempty"`

	Minormodelagedisclosure string `json:"minormodelagedisclosure,omitempty"`

	Minsamplevalue int64 `json:"minsamplevalue,omitempty"`

	Mode int64 `json:"mode,omitempty"`

	Modelage []int64 `json:"modelage,omitempty"`

	Modelreleaseid []string `json:"modelreleaseid,omitempty"`

	Modelreleasestatus string `json:"modelreleasestatus,omitempty"`

	Modifydate string `json:"modifydate,omitempty"`

	// Motionphotovideodataboxheader: The Motion Photo Video Data (MPVD) box
	// header of a HEIF motion photo. It is used for reconstructing the
	// original moton photo bytes. See go/photos-be-heic-motion-photos for
	// more details.
	Motionphotovideodataboxheader string `json:"motionphotovideodataboxheader,omitempty"`

	Nickname string `json:"nickname,omitempty"`

	Objectattributereference []string `json:"objectattributereference,omitempty"`

	Objectcycle string `json:"objectcycle,omitempty"`

	Objecttypereference string `json:"objecttypereference,omitempty"`

	Offsettime string `json:"offsettime,omitempty"`

	Offsettimedigitized string `json:"offsettimedigitized,omitempty"`

	Offsettimeoriginal string `json:"offsettimeoriginal,omitempty"`

	Organisationinimagecode []string `json:"organisationinimagecode,omitempty"`

	Organisationinimagename []string `json:"organisationinimagename,omitempty"`

	// Orientation: Exif camera orientation. "1" means "no rotation".
	Orientation int64 `json:"orientation,omitempty"`

	Originatingprogram string `json:"originatingprogram,omitempty"`

	Owner []string `json:"owner,omitempty"`

	Ownername string `json:"ownername,omitempty"`

	PanoramaMetadata *PhotosPanoramaMetadata `json:"panoramaMetadata,omitempty"`

	Personinimage []string `json:"personinimage,omitempty"`

	Photometricinterpretation int64 `json:"photometricinterpretation,omitempty"`

	Planarconfiguration int64 `json:"planarconfiguration,omitempty"`

	Poseheadingdegrees float64 `json:"poseheadingdegrees,omitempty"`

	Posepitchdegrees float64 `json:"posepitchdegrees,omitempty"`

	Poserolldegrees float64 `json:"poserolldegrees,omitempty"`

	Primarychromaticities float64 `json:"primarychromaticities,omitempty"`

	Productid []string `json:"productid,omitempty"`

	Programversion string `json:"programversion,omitempty"`

	Projectiontype string `json:"projectiontype,omitempty"`

	Propertyreleaseid []string `json:"propertyreleaseid,omitempty"`

	Propertyreleasestatus string `json:"propertyreleasestatus,omitempty"`

	Publisher []string `json:"publisher,omitempty"`

	Rating float64 `json:"rating,omitempty"`

	Redeyemode bool `json:"redeyemode,omitempty"`

	Referenceblackwhite float64 `json:"referenceblackwhite,omitempty"`

	Referencedate []string `json:"referencedate,omitempty"`

	Referencenumber []string `json:"referencenumber,omitempty"`

	Referenceservice []string `json:"referenceservice,omitempty"`

	Relatedimagefileformat string `json:"relatedimagefileformat,omitempty"`

	Relatedimageheight int64 `json:"relatedimageheight,omitempty,string"`

	Relatedimagewidth int64 `json:"relatedimagewidth,omitempty,string"`

	Relatedsoundfile string `json:"relatedsoundfile,omitempty"`

	Relation []string `json:"relation,omitempty"`

	Releasedate string `json:"releasedate,omitempty"`

	Releasetime string `json:"releasetime,omitempty"`

	Resolutionunit int64 `json:"resolutionunit,omitempty"`

	// Rotate: being returned to caller Use values defined in "MIME_TYPE"
	// This field is deprecated. Rotation is now accomplished via
	// ImageInfo.exif_orientation and ImageInfo.edit_list. Number of degrees
	// (0, 90, 180,
	Rotate int64 `json:"rotate,omitempty"`

	Rowsperstrip int64 `json:"rowsperstrip,omitempty,string"`

	Samplesperpixel int64 `json:"samplesperpixel,omitempty"`

	Saturation int64 `json:"saturation,omitempty"`

	Scene []string `json:"scene,omitempty"`

	Scenecapturetype int64 `json:"scenecapturetype,omitempty"`

	Sensingmethod int64 `json:"sensingmethod,omitempty"`

	Sensorheight float64 `json:"sensorheight,omitempty"`

	Sensorwidth float64 `json:"sensorwidth,omitempty"`

	Serialnumber string `json:"serialnumber,omitempty"`

	Serviceidentifier string `json:"serviceidentifier,omitempty"`

	Sharpness int64 `json:"sharpness,omitempty"`

	Shutterspeedvalue float64 `json:"shutterspeedvalue,omitempty"`

	Software string `json:"software,omitempty"`

	Source string `json:"source,omitempty"`

	Sourcephotoscount int64 `json:"sourcephotoscount,omitempty"`

	Spectralsensitivity string `json:"spectralsensitivity,omitempty"`

	State string `json:"state,omitempty"`

	Stitchingsoftware string `json:"stitchingsoftware,omitempty"`

	Stripbytecounts int64 `json:"stripbytecounts,omitempty,string"`

	Stripoffsets int64 `json:"stripoffsets,omitempty,string"`

	Subjectarea int64 `json:"subjectarea,omitempty"`

	Subjectcode []string `json:"subjectcode,omitempty"`

	Subjectdistancerange int64 `json:"subjectdistancerange,omitempty"`

	Subjectlocation int64 `json:"subjectlocation,omitempty"`

	Subjectreference []string `json:"subjectreference,omitempty"`

	Sublocation string `json:"sublocation,omitempty"`

	Subsectime string `json:"subsectime,omitempty"`

	Subsectimedigitized string `json:"subsectimedigitized,omitempty"`

	Subsectimeoriginal string `json:"subsectimeoriginal,omitempty"`

	Supplementalcategory []string `json:"supplementalcategory,omitempty"`

	Thresholding int64 `json:"thresholding,omitempty"`

	// ThumbnailerBuildCl: The build CL for the version of thumbnailer that
	// built this image.
	ThumbnailerBuildCl int64 `json:"thumbnailerBuildCl,omitempty"`

	Timesent string `json:"timesent,omitempty"`

	// Timezoneminutes: Remaining minutes of offset.
	Timezoneminutes []int64 `json:"timezoneminutes,omitempty"`

	// Timezoneoffset: The elements in the timezone and daylight savings
	// field arrays correspond to the following date/time fields: 0)
	// datecreated (ie. DateTimeOriginal) 1) datetime (ie. DateTime or last
	// modified date) 2) datetimedigitized (ie. DateTimeDigitized) If the
	// field does not exist, then there is no valid time zone information
	// for that date/time field. Offset in hours.
	Timezoneoffset []int64 `json:"timezoneoffset,omitempty"`

	Title string `json:"title,omitempty"`

	Transmissionreference string `json:"transmissionreference,omitempty"`

	Type []string `json:"type,omitempty"`

	// Uniqueid: For unique hash:
	Uniqueid string `json:"uniqueid,omitempty"`

	Uno string `json:"uno,omitempty"`

	Urgency string `json:"urgency,omitempty"`

	Url string `json:"url,omitempty"`

	Usageterms string `json:"usageterms,omitempty"`

	// Usepanoramaviewer: GPano-related fields. A handful of these have been
	// deprecated due to a change in the spec since its initial design.
	Usepanoramaviewer bool `json:"usepanoramaviewer,omitempty"`

	Version string `json:"version,omitempty"`

	Webstatement string `json:"webstatement,omitempty"`

	Whitebalance int64 `json:"whitebalance,omitempty"`

	Whitepoint float64 `json:"whitepoint,omitempty"`

	// Width: width and height are before any rotation (including EXIF
	// orientation).
	Width int64 `json:"width,omitempty"`

	Xmp4c *PhotosFourCMetadata `json:"xmp4c,omitempty"`

	Xresolution float64 `json:"xresolution,omitempty"`

	Ycbcrcoefficients float64 `json:"ycbcrcoefficients,omitempty"`

	Ycbcrpositioning int64 `json:"ycbcrpositioning,omitempty"`

	Ycbcrsubsampling int64 `json:"ycbcrsubsampling,omitempty"`

	Yresolution float64 `json:"yresolution,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDBlendingtype") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDBlendingtype")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PhotosImageMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosImageMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosImageMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosImageMetadata
	var s1 struct {
		DEPRECATEDGpstimestamp      gensupport.JSONFloat64 `json:"DEPRECATEDGpstimestamp"`
		Altitude                    gensupport.JSONFloat64 `json:"altitude"`
		Aperturefnumber             gensupport.JSONFloat64 `json:"aperturefnumber"`
		Aperturevalue               gensupport.JSONFloat64 `json:"aperturevalue"`
		Brightnessvalue             gensupport.JSONFloat64 `json:"brightnessvalue"`
		Ccdwidth                    gensupport.JSONFloat64 `json:"ccdwidth"`
		Compressedbitsperpixel      gensupport.JSONFloat64 `json:"compressedbitsperpixel"`
		DestinationLatitude         gensupport.JSONFloat64 `json:"destinationLatitude"`
		DestinationLongitude        gensupport.JSONFloat64 `json:"destinationLongitude"`
		Digitalzoomratio            gensupport.JSONFloat64 `json:"digitalzoomratio"`
		Distance                    gensupport.JSONFloat64 `json:"distance"`
		Exposurebias                gensupport.JSONFloat64 `json:"exposurebias"`
		Exposureindex               gensupport.JSONFloat64 `json:"exposureindex"`
		Exposuretime                gensupport.JSONFloat64 `json:"exposuretime"`
		Flashcompensation           gensupport.JSONFloat64 `json:"flashcompensation"`
		Flashenergy                 gensupport.JSONFloat64 `json:"flashenergy"`
		Focallength                 gensupport.JSONFloat64 `json:"focallength"`
		Focalplaneunits             gensupport.JSONFloat64 `json:"focalplaneunits"`
		Focalplanexres              gensupport.JSONFloat64 `json:"focalplanexres"`
		Gpsdestbearing              gensupport.JSONFloat64 `json:"gpsdestbearing"`
		Gpsdestdistance             gensupport.JSONFloat64 `json:"gpsdestdistance"`
		Gpsdestlatitude             gensupport.JSONFloat64 `json:"gpsdestlatitude"`
		Gpsdestlongitude            gensupport.JSONFloat64 `json:"gpsdestlongitude"`
		Gpsdop                      gensupport.JSONFloat64 `json:"gpsdop"`
		Gpsimgdirection             gensupport.JSONFloat64 `json:"gpsimgdirection"`
		Gpsspeed                    gensupport.JSONFloat64 `json:"gpsspeed"`
		Gpstrack                    gensupport.JSONFloat64 `json:"gpstrack"`
		Initialhorizontalfovdegrees gensupport.JSONFloat64 `json:"initialhorizontalfovdegrees"`
		Initialverticalfovdegrees   gensupport.JSONFloat64 `json:"initialverticalfovdegrees"`
		Latitude                    gensupport.JSONFloat64 `json:"latitude"`
		Longitude                   gensupport.JSONFloat64 `json:"longitude"`
		Maxaperturevalue            gensupport.JSONFloat64 `json:"maxaperturevalue"`
		Poseheadingdegrees          gensupport.JSONFloat64 `json:"poseheadingdegrees"`
		Posepitchdegrees            gensupport.JSONFloat64 `json:"posepitchdegrees"`
		Poserolldegrees             gensupport.JSONFloat64 `json:"poserolldegrees"`
		Primarychromaticities       gensupport.JSONFloat64 `json:"primarychromaticities"`
		Rating                      gensupport.JSONFloat64 `json:"rating"`
		Referenceblackwhite         gensupport.JSONFloat64 `json:"referenceblackwhite"`
		Sensorheight                gensupport.JSONFloat64 `json:"sensorheight"`
		Sensorwidth                 gensupport.JSONFloat64 `json:"sensorwidth"`
		Shutterspeedvalue           gensupport.JSONFloat64 `json:"shutterspeedvalue"`
		Whitepoint                  gensupport.JSONFloat64 `json:"whitepoint"`
		Xresolution                 gensupport.JSONFloat64 `json:"xresolution"`
		Ycbcrcoefficients           gensupport.JSONFloat64 `json:"ycbcrcoefficients"`
		Yresolution                 gensupport.JSONFloat64 `json:"yresolution"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DEPRECATEDGpstimestamp = float64(s1.DEPRECATEDGpstimestamp)
	s.Altitude = float64(s1.Altitude)
	s.Aperturefnumber = float64(s1.Aperturefnumber)
	s.Aperturevalue = float64(s1.Aperturevalue)
	s.Brightnessvalue = float64(s1.Brightnessvalue)
	s.Ccdwidth = float64(s1.Ccdwidth)
	s.Compressedbitsperpixel = float64(s1.Compressedbitsperpixel)
	s.DestinationLatitude = float64(s1.DestinationLatitude)
	s.DestinationLongitude = float64(s1.DestinationLongitude)
	s.Digitalzoomratio = float64(s1.Digitalzoomratio)
	s.Distance = float64(s1.Distance)
	s.Exposurebias = float64(s1.Exposurebias)
	s.Exposureindex = float64(s1.Exposureindex)
	s.Exposuretime = float64(s1.Exposuretime)
	s.Flashcompensation = float64(s1.Flashcompensation)
	s.Flashenergy = float64(s1.Flashenergy)
	s.Focallength = float64(s1.Focallength)
	s.Focalplaneunits = float64(s1.Focalplaneunits)
	s.Focalplanexres = float64(s1.Focalplanexres)
	s.Gpsdestbearing = float64(s1.Gpsdestbearing)
	s.Gpsdestdistance = float64(s1.Gpsdestdistance)
	s.Gpsdestlatitude = float64(s1.Gpsdestlatitude)
	s.Gpsdestlongitude = float64(s1.Gpsdestlongitude)
	s.Gpsdop = float64(s1.Gpsdop)
	s.Gpsimgdirection = float64(s1.Gpsimgdirection)
	s.Gpsspeed = float64(s1.Gpsspeed)
	s.Gpstrack = float64(s1.Gpstrack)
	s.Initialhorizontalfovdegrees = float64(s1.Initialhorizontalfovdegrees)
	s.Initialverticalfovdegrees = float64(s1.Initialverticalfovdegrees)
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	s.Maxaperturevalue = float64(s1.Maxaperturevalue)
	s.Poseheadingdegrees = float64(s1.Poseheadingdegrees)
	s.Posepitchdegrees = float64(s1.Posepitchdegrees)
	s.Poserolldegrees = float64(s1.Poserolldegrees)
	s.Primarychromaticities = float64(s1.Primarychromaticities)
	s.Rating = float64(s1.Rating)
	s.Referenceblackwhite = float64(s1.Referenceblackwhite)
	s.Sensorheight = float64(s1.Sensorheight)
	s.Sensorwidth = float64(s1.Sensorwidth)
	s.Shutterspeedvalue = float64(s1.Shutterspeedvalue)
	s.Whitepoint = float64(s1.Whitepoint)
	s.Xresolution = float64(s1.Xresolution)
	s.Ycbcrcoefficients = float64(s1.Ycbcrcoefficients)
	s.Yresolution = float64(s1.Yresolution)
	return nil
}

type PhotosPanoramaMetadata struct {
	SphericalPanorama bool `json:"sphericalPanorama,omitempty"`

	// Vr180Panorama: True if the image is a VR180 image. See go/3d180 for
	// details.
	Vr180Panorama bool `json:"vr180Panorama,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SphericalPanorama")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SphericalPanorama") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PhotosPanoramaMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosPanoramaMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosVisionGroundtruthdbNormalizedBoundingBox: Bounding box
// coordinates are relative to the width and height of the image. For
// example, if image is 100x200 and NormalizedBoundingBox is , the
// bounding box coordinates will be (10, 40) to (50, 180). Note parts of
// the bounding box may fall outside the image.
type PhotosVisionGroundtruthdbNormalizedBoundingBox struct {
	Xmax float64 `json:"xmax,omitempty"`

	Xmin float64 `json:"xmin,omitempty"`

	Ymax float64 `json:"ymax,omitempty"`

	Ymin float64 `json:"ymin,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Xmax") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Xmax") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionGroundtruthdbNormalizedBoundingBox) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionGroundtruthdbNormalizedBoundingBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosVisionGroundtruthdbNormalizedBoundingBox) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosVisionGroundtruthdbNormalizedBoundingBox
	var s1 struct {
		Xmax gensupport.JSONFloat64 `json:"xmax"`
		Xmin gensupport.JSONFloat64 `json:"xmin"`
		Ymax gensupport.JSONFloat64 `json:"ymax"`
		Ymin gensupport.JSONFloat64 `json:"ymin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Xmax = float64(s1.Xmax)
	s.Xmin = float64(s1.Xmin)
	s.Ymax = float64(s1.Ymax)
	s.Ymin = float64(s1.Ymin)
	return nil
}

type PhotosVisionObjectrecFeatureVector struct {
	// FloatData: For single precision floating point data
	FloatData []float64 `json:"floatData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FloatData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FloatData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecFeatureVector) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecFeatureVector
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosVisionObjectrecGeoLocation: The geo-location of a single point,
// or of the "center" of a group of points.
type PhotosVisionObjectrecGeoLocation struct {
	// AltitudeMeters: Altitude of the point above the earth's surface, in
	// meters.
	AltitudeMeters float64 `json:"altitudeMeters,omitempty"`

	// CountryCode: Country code string.
	CountryCode string `json:"countryCode,omitempty"`

	// FromGps: Indicates if the lat/lon above is assumed to come from a GPS
	// device.
	FromGps bool `json:"fromGps,omitempty"`

	// Lat: Latitude in degrees north. Values south of the equator are
	// negative.
	Lat float64 `json:"lat,omitempty"`

	// LatErrorBound: When applied to a single point, represents the
	// estimated error bounds of manual geotagging. The estimate is based on
	// size of the bounding box of the map used for manual geotagging. When
	// applied to a group of points, the error bounds represent the
	// dispersion around the group center (lat/lon above). The dispersion in
	// this case is computed as half the interquartile range. Reference:
	// http://en.wikipedia.org/wiki/Interquartile_range (lat +/-
	// lat_error_bound, lng +/- lng_error_bound).
	LatErrorBound float64 `json:"latErrorBound,omitempty"`

	// Lon: Longitude in degrees east. Values west of 0 deg are negative.
	Lon float64 `json:"lon,omitempty"`

	LonErrorBound float64 `json:"lonErrorBound,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AltitudeMeters") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AltitudeMeters") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecGeoLocation) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecGeoLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosVisionObjectrecGeoLocation) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosVisionObjectrecGeoLocation
	var s1 struct {
		AltitudeMeters gensupport.JSONFloat64 `json:"altitudeMeters"`
		Lat            gensupport.JSONFloat64 `json:"lat"`
		LatErrorBound  gensupport.JSONFloat64 `json:"latErrorBound"`
		Lon            gensupport.JSONFloat64 `json:"lon"`
		LonErrorBound  gensupport.JSONFloat64 `json:"lonErrorBound"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AltitudeMeters = float64(s1.AltitudeMeters)
	s.Lat = float64(s1.Lat)
	s.LatErrorBound = float64(s1.LatErrorBound)
	s.Lon = float64(s1.Lon)
	s.LonErrorBound = float64(s1.LonErrorBound)
	return nil
}

// PhotosVisionObjectrecGlobalFeature: Global feature for the image.
type PhotosVisionObjectrecGlobalFeature struct {
	// AdditionalInfo: Optional info provided by the feature extractor.
	AdditionalInfo string `json:"additionalInfo,omitempty"`

	FeatureVector *PhotosVisionObjectrecFeatureVector `json:"featureVector,omitempty"`

	QuantizedFeatureVector *PhotosVisionObjectrecQuantizedFeatureVector `json:"quantizedFeatureVector,omitempty"`

	// Tag: Tag for this global feature. E.g., "DELG", "SBv4" or
	// "DELG_region1".
	Tag string `json:"tag,omitempty"`

	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdditionalInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecGlobalFeature) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecGlobalFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosVisionObjectrecImageTemplate: ImageTemplate contains local
// and/or global features generated from one image. User-defined members
// can be set to any value within the constraints outlined below.
// Algorithms usually pass these through without evaluation, unless
// documented otherwise. Next id: 29
type PhotosVisionObjectrecImageTemplate struct {
	// AuthorName: Name of the author or image source. User-defined. Must be
	// NULL-terminated.
	AuthorName string `json:"authorName,omitempty"`

	// Corpus: Identifier for which corpus the image belongs to. Currently
	// Cyclone uses this field in: -
	// photos_vision_objectrec.SpatialMatcherRequest.residual_template to
	// select which spatial matcher should be applied to the candidate
	// matches - photos_vision_objectrec.CustomCorpusQuantizer to map a
	// custom corpus to one or more posting lists
	Corpus string `json:"corpus,omitempty"`

	// GeoLocation: The geolocation of the image. Assumed to represent the
	// location where the photo was taken from.
	GeoLocation *PhotosVisionObjectrecGeoLocation `json:"geoLocation,omitempty"`

	GlobalFeature []*PhotosVisionObjectrecGlobalFeature `json:"globalFeature,omitempty"`

	ImageHeight int64 `json:"imageHeight,omitempty"`

	// ImageId: Unique identifier for the image used to compute this
	// template.
	ImageId int64 `json:"imageId,omitempty,string"`

	// ImageUrl: URL or filename of the image used to compute this template.
	// User-defined. Must contain only ASCII characters and be
	// NULL-terminated.
	ImageUrl string `json:"imageUrl,omitempty"`

	// ImageWidth: Dimension of the image used to compute this template.
	ImageWidth int64 `json:"imageWidth,omitempty"`

	Info string `json:"info,omitempty"`

	// ObjectInfo: Tags pertaining to this image. User-defined. Must be
	// NULL-terminated.
	ObjectInfo []string `json:"objectInfo,omitempty"`

	// ObjectName: Name of the object/scene depicted. User-defined. Must
	// contain only ASCII characters and be NULL-terminated.
	ObjectName string `json:"objectName,omitempty"`

	// OpaqueData: Opaque template data. May be used to pass through
	// additional data from template sources to processing modules, that is
	// not already covered by other members of this PB. It is the
	// responsibility of processing modules to verify that the data is in a
	// compatible format.
	OpaqueData string `json:"opaqueData,omitempty"`

	// Roi: Region-of-interest: The bounding box of the object or scene
	// depicted in the image.
	Roi *PhotosVisionObjectrecROI `json:"roi,omitempty"`

	Subset []*PhotosVisionObjectrecImageTemplateSubSet `json:"subset,omitempty"`

	// Version: Feature version.
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuthorName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthorName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecImageTemplate) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecImageTemplate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosVisionObjectrecImageTemplateSubSet: Each SubSet contains
// LocalDescriptors of a specific type. The type indicates which
// algorithm has been used to generate the descriptors. No enum is
// defined for the descriptor_type. For most applications it is
// sufficient to know if two descriptors are of the same or a different
// type, while ignoring the details of their generation. The descriptor
// type '0' is reserved and must not be used.
type PhotosVisionObjectrecImageTemplateSubSet struct {
	Descriptor []*PhotosVisionObjectrecLocalDescriptor `json:"descriptor,omitempty"`

	DescriptorType int64 `json:"descriptorType,omitempty"`

	// IsBinaryDescriptor: Used to indicate if the descriptor is binary or
	// not. When decompressing feature this is useful to decide calling
	// different decompression functions.
	IsBinaryDescriptor bool `json:"isBinaryDescriptor,omitempty"`

	// NumDescriptors: Used to store the number of descriptors for
	// statistical purposes, if the descriptors themselves are not stored.
	NumDescriptors int64 `json:"numDescriptors,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Descriptor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Descriptor") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecImageTemplateSubSet) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecImageTemplateSubSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PhotosVisionObjectrecLocalDescriptor: LocalDescriptor holds interest
// point data and an optional local descriptor vector.
type PhotosVisionObjectrecLocalDescriptor struct {
	// AffineMatrix: Optional affine matrix. Supersedes scale and
	// orientation if present. r' = affine_matrix.r + (x,y) defines an
	// affine transform from the normalized image patch (in which the
	// interest point is centered at the origin with scale 1) to the image.
	// If the affine matrix is set, the following approximations are
	// recommended: scale = sqrt(0.5 * (xx*xx + xy*xy + yx*yx + yy*yy));
	// orientation = atan2(yx - xy, xx + yy); If not present, the affine
	// matrix can be computed from scale and orientation as: xx = scale *
	// cos(orientation); xy = scale * -sin(orientation); yx = scale *
	// sin(orientation); yy = scale * cos(orientation);
	AffineMatrix *PhotosVisionObjectrecMatrix2D `json:"affineMatrix,omitempty"`

	Data string `json:"data,omitempty"`

	// DataFactor: data_factor and data represent the local descriptor
	// vector in a compressed format, using only 8 bit per value. Each byte
	// of the data string yields one component of the local descriptor by
	// bit-casting it to an int8 and multiplying it by data_factor. Protocol
	// buffers do not support int8 directly.
	DataFactor float64 `json:"dataFactor,omitempty"`

	// FeatureVector: Unquantized feature vector (float).
	FeatureVector *PhotosVisionObjectrecFeatureVector `json:"featureVector,omitempty"`

	// OpaqueData: Opaque descriptor data. May be used to pass through
	// descriptor data from descriptor sources to processing modules, that
	// is not already covered by data/data_factor and/or cannot be expressed
	// as a vector of numbers. It is the responsibility of processing
	// modules to verify that the data is in a compatible format.
	OpaqueData string `json:"opaqueData,omitempty"`

	// Orientation: Orientation is optional, as some interest point
	// detectors don't compute it. The range of orientation is [-pi,pi).
	Orientation float64 `json:"orientation,omitempty"`

	// Scale: Each interest point must have a characteristic scale > 0.
	Scale float64 `json:"scale,omitempty"`

	// Strength: The strength or weight, indicating the relative
	// significance of this point.
	Strength float64 `json:"strength,omitempty"`

	// X: The position in the image with sub-pixel accuracy. The center of
	// the upper left pixel has coordinates (0.0, 0.0). Thus the range for x
	// and y is (-0.5, width - 0.5) x (-0.5, height - 0.5).
	X float64 `json:"x,omitempty"`

	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AffineMatrix") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AffineMatrix") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecLocalDescriptor) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecLocalDescriptor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosVisionObjectrecLocalDescriptor) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosVisionObjectrecLocalDescriptor
	var s1 struct {
		DataFactor  gensupport.JSONFloat64 `json:"dataFactor"`
		Orientation gensupport.JSONFloat64 `json:"orientation"`
		Scale       gensupport.JSONFloat64 `json:"scale"`
		Strength    gensupport.JSONFloat64 `json:"strength"`
		X           gensupport.JSONFloat64 `json:"x"`
		Y           gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DataFactor = float64(s1.DataFactor)
	s.Orientation = float64(s1.Orientation)
	s.Scale = float64(s1.Scale)
	s.Strength = float64(s1.Strength)
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// PhotosVisionObjectrecMatrix2D: A 2x2 float matrix.
type PhotosVisionObjectrecMatrix2D struct {
	Xx float64 `json:"xx,omitempty"`

	Xy float64 `json:"xy,omitempty"`

	Yx float64 `json:"yx,omitempty"`

	Yy float64 `json:"yy,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Xx") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Xx") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecMatrix2D) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecMatrix2D
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosVisionObjectrecMatrix2D) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosVisionObjectrecMatrix2D
	var s1 struct {
		Xx gensupport.JSONFloat64 `json:"xx"`
		Xy gensupport.JSONFloat64 `json:"xy"`
		Yx gensupport.JSONFloat64 `json:"yx"`
		Yy gensupport.JSONFloat64 `json:"yy"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Xx = float64(s1.Xx)
	s.Xy = float64(s1.Xy)
	s.Yx = float64(s1.Yx)
	s.Yy = float64(s1.Yy)
	return nil
}

// PhotosVisionObjectrecQuantizedFeatureVector: Quantized/compressed
// feature vector (8 bit per value). Can be decoded by multiplying
// data_factor to each data byte.
type PhotosVisionObjectrecQuantizedFeatureVector struct {
	Data string `json:"data,omitempty"`

	DataFactor float64 `json:"dataFactor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecQuantizedFeatureVector) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecQuantizedFeatureVector
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PhotosVisionObjectrecQuantizedFeatureVector) UnmarshalJSON(data []byte) error {
	type NoMethod PhotosVisionObjectrecQuantizedFeatureVector
	var s1 struct {
		DataFactor gensupport.JSONFloat64 `json:"dataFactor"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DataFactor = float64(s1.DataFactor)
	return nil
}

// PhotosVisionObjectrecROI: A region of interest in the image.
type PhotosVisionObjectrecROI struct {
	XMax int64 `json:"xMax,omitempty"`

	XMin int64 `json:"xMin,omitempty"`

	YMax int64 `json:"yMax,omitempty"`

	YMin int64 `json:"yMin,omitempty"`

	// ForceSendFields is a list of field names (e.g. "XMax") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "XMax") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PhotosVisionObjectrecROI) MarshalJSON() ([]byte, error) {
	type NoMethod PhotosVisionObjectrecROI
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PornFlagData: A protocol buffer to store the url, referer and porn
// flag for a url. and an optional image score. Next available tag id:
// 51.
type PornFlagData struct {
	// CoclickBrainScores: Aggregated brain_porn_scores for navboost
	// co-clicked images. Historical: this signal is deprecated and no
	// longer populated as of 2020-12-01. Refer to b/172897542 for more
	// information.
	CoclickBrainScores *ImageSafesearchContentBrainPornAnnotation `json:"coclickBrainScores,omitempty"`

	// CsaiScore: Score predicting how likely an image is offensive or
	// suggestive about CSAI (child sexual abuse imagery).
	CsaiScore float64 `json:"csaiScore,omitempty"`

	// DebugInfo: DebugInfo stores debug information from the overall
	// classifier. This allows for instance to update counters related to
	// blacklisting without running the full classifier again.
	DebugInfo []*ImagePornDebugInfo `json:"debugInfo,omitempty"`

	// FinalOffensiveScore: Final offensive score based on image salient
	// terms and image OCR vulgar and offensive scores.
	FinalOffensiveScore float64 `json:"finalOffensiveScore,omitempty"`

	// FinalViolenceScore: Final violence score based on some image signals
	// (brain pixel score, co-clicked images violence score, navboost
	// queries score, etc.).
	FinalViolenceScore float64 `json:"finalViolenceScore,omitempty"`

	// FinalViolenceScoreVersion: A string that indicates the version of
	// SafeSearch classifier used to compute final_violence_score.
	FinalViolenceScoreVersion string `json:"finalViolenceScoreVersion,omitempty"`

	// InternalSignals: A proto that stores SafeSearch internal signals that
	// are not exported to clients. SafeSearch team does not provide any
	// guarantees about the presence or the semantics of these signals in
	// the future.
	InternalSignals *SafesearchInternalImageSignals `json:"internalSignals,omitempty"`

	// NumberFaces: number of faces
	NumberFaces int64 `json:"numberFaces,omitempty"`

	// OcrAnnotation: Information about image OCR text. For details see
	// image/safesearch/content/public/ocr_annotation.proto.
	OcrAnnotation *ImageSafesearchContentOCRAnnotation `json:"ocrAnnotation,omitempty"`

	// OcrVulgarScore: Vulgar score of the text found by OCR in the image.
	OcrVulgarScore float64 `json:"ocrVulgarScore,omitempty"`

	// OffensiveSymbolDetection: QuimbyCongas-based detection of offensive
	// symbols in the image (currently swastika and Nazi yellow badge).
	OffensiveSymbolDetection *ImageSafesearchContentOffensiveSymbolDetection `json:"offensiveSymbolDetection,omitempty"`

	// PhotodnaHash: Binary version of the PhotoDNA hash (144 bytes long).
	// If not set (has_photodna_hash() == false) it means that it was not
	// computed, if empty (has_photodna_hash() == true && photodna_hash() ==
	// "") it means that the computation failed (cannot be computed for
	// images smaller than 50 x 50).
	PhotodnaHash string `json:"photodnaHash,omitempty"`

	// PornWithHighConfidence: This field is set to true when we are pretty
	// confident that the image is porn (with higher precision than the
	// img_porn_moderate restrict). In particular, it means that the image
	// might be demoted for non-porn queries when SafeSearch is Off.
	PornWithHighConfidence bool `json:"pornWithHighConfidence,omitempty"`

	// QbstOffensiveScore: QBST-based image offensive score, Navboost based
	QbstOffensiveScore float64 `json:"qbstOffensiveScore,omitempty"`

	// QbstSpoofScore: QBST-based image spoof score, Navboost based,
	// unrelated to the pixel-based score in PornAnnotation.
	QbstSpoofScore float64 `json:"qbstSpoofScore,omitempty"`

	// QueryStats: Query statistics from Navboost logs. For more details see
	// classifier/porn/proto/image_porn_classifier_signals.proto.
	QueryStats *ClassifierPornQueryStats `json:"queryStats,omitempty"`

	// QueryTextViolenceScore: Aggregated navboost query violence score.
	QueryTextViolenceScore float64 `json:"queryTextViolenceScore,omitempty"`

	// Referer: url of the referer page
	Referer string `json:"referer,omitempty"`

	// ReferrerCounts: Information about referrers and their porn
	// classification. For details see
	// classifier/porn/proto/image_porn_classifier_signals.proto.
	ReferrerCounts *ClassifierPornReferrerCounts `json:"referrerCounts,omitempty"`

	// SemanticSexualizationScore: Starburst-based score predicting
	// sexualization level of the image.
	SemanticSexualizationScore float64 `json:"semanticSexualizationScore,omitempty"`

	// Url: url of the image
	Url string `json:"url,omitempty"`

	// UrlPornScores: Information about the URL porn scores for image URLs
	// associated with this image.
	UrlPornScores *ClassifierPornAggregatedUrlPornScores `json:"urlPornScores,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CoclickBrainScores")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CoclickBrainScores") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *PornFlagData) MarshalJSON() ([]byte, error) {
	type NoMethod PornFlagData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *PornFlagData) UnmarshalJSON(data []byte) error {
	type NoMethod PornFlagData
	var s1 struct {
		CsaiScore                  gensupport.JSONFloat64 `json:"csaiScore"`
		FinalOffensiveScore        gensupport.JSONFloat64 `json:"finalOffensiveScore"`
		FinalViolenceScore         gensupport.JSONFloat64 `json:"finalViolenceScore"`
		OcrVulgarScore             gensupport.JSONFloat64 `json:"ocrVulgarScore"`
		QbstOffensiveScore         gensupport.JSONFloat64 `json:"qbstOffensiveScore"`
		QbstSpoofScore             gensupport.JSONFloat64 `json:"qbstSpoofScore"`
		QueryTextViolenceScore     gensupport.JSONFloat64 `json:"queryTextViolenceScore"`
		SemanticSexualizationScore gensupport.JSONFloat64 `json:"semanticSexualizationScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CsaiScore = float64(s1.CsaiScore)
	s.FinalOffensiveScore = float64(s1.FinalOffensiveScore)
	s.FinalViolenceScore = float64(s1.FinalViolenceScore)
	s.OcrVulgarScore = float64(s1.OcrVulgarScore)
	s.QbstOffensiveScore = float64(s1.QbstOffensiveScore)
	s.QbstSpoofScore = float64(s1.QbstSpoofScore)
	s.QueryTextViolenceScore = float64(s1.QueryTextViolenceScore)
	s.SemanticSexualizationScore = float64(s1.SemanticSexualizationScore)
	return nil
}

// PostalAddress: Next free ID: 32
type PostalAddress struct {
	// AddressLine: These correspond to the "AddressLine" elements in xAL,
	// which are used to hold unstructured text. This is an addendum to the
	// structured values; when the address is formatted, the provided lines
	// are prepended to the formatted version of the street component fields
	// for Western countries, and appended for CJK countries. These lines
	// are in display order. Formerly users of PostalAddress were
	// discouraged from mixing address_line with structured address
	// elements. Mixing is now encouraged if address_line has to be used at
	// all.
	AddressLine []string `json:"addressLine,omitempty"`

	// AdministrativeAreaName: Top-level administrative subdivision of this
	// country. Examples: US state, IT region, UK constituent nation, JP
	// prefecture.
	AdministrativeAreaName string `json:"administrativeAreaName,omitempty"`

	// CountryName: Name corresponding to country code. Optional. This can
	// usually be inferred from country_name_code.
	CountryName string `json:"countryName,omitempty"`

	// CountryNameCode: xAL does not specify a scheme for country codes. We
	// strongly recommend ISO 3166-1-alpha-2 (two letter codes, as used in
	// DNS) if you use this field. (Use "GB", not "UK".)
	CountryNameCode string `json:"countryNameCode,omitempty"`

	// DependentLocalityName: Dependent locality or sublocality. Used for UK
	// dependent localities, or neighborhoods or boroughs in other
	// locations. If trying to represent a UK double-dependent locality,
	// include both the double-dependent locality and the dependent locality
	// in this field, e.g. "Whaley, Langwith".
	DependentLocalityName string `json:"dependentLocalityName,omitempty"`

	// DependentThoroughfareName: Dependent thoroughfares are used to define
	// UK-style dependent thoroughfares, and secondary streets in addresses
	// in other locales, including intersections. Formatting is
	// locale-dependent.
	DependentThoroughfareName string `json:"dependentThoroughfareName,omitempty"`

	// FirmName: NEW: The firm or organization. This goes at a finer
	// granularity than address_lines in the address. Omit if not needed.
	FirmName string `json:"firmName,omitempty"`

	// IsDisputed: Required to support the suppression of country names from
	// formatted results for addresses within geo-politically disputed
	// areas. Note that we cannot achieve this by not setting the country,
	// as this would prevent us from selecting a suitable formatting
	// template. Addresses converted from Oyster, by the standard conversion
	// libraries, will have this field set if the address lies within a
	// geo-politically disputed area (ie, contained within features of type
	// TYPE_DISPUTED_AREA) even if the disputed area itself is not a visible
	// part of the formatted address. An example of a disputed area is "No
	// Man's Land" near Jerusalem which has the flag FLAG_NEVER_DISPLAY set
	// for all its names. See: go/disputed-areas-2014 for more information.
	IsDisputed bool `json:"isDisputed,omitempty"`

	// LanguageCode: Language of the address. May affect address formatting
	// for multi- lingual countries. Also allows storing multilingual
	// location names as repeated PostalAddress. Not in xAL. Use language
	// codes which are accepted by
	// i18n_identifiers::LanguageCodeCoverter::FromOther(). Examples include
	// "en" and "de-CH".
	LanguageCode string `json:"languageCode,omitempty"`

	// LocalityName: Locality. This is something of a fuzzy term, but it
	// generally refers to the city/town portion of an address. In regions
	// of the world where localities are not well defined or do not fit into
	// this structure well (for example, Japan), leave locality_name empty
	// and use address_line. Examples: US city, IT comune, UK post town.
	LocalityName string `json:"localityName,omitempty"`

	// PostBoxNumber: This corresponds to PostBoxNumber in xAL format. In
	// xAL format, it's nested inside PostBox, which also contains a "Type"
	// field to distinguish between PO Box, Private Bag etc. Current support
	// in this proto is for PO Box only. Note that although this is modelled
	// as a string, it should have the number only, with any necessary
	// punctuation (such as "-"). For example, for "P.O. Box 123", this
	// field would hold "123" - the template displaying this would prepend
	// P.O. Box when formatting if necessary.
	PostBoxNumber string `json:"postBoxNumber,omitempty"`

	// PostalCodeNumber: Despite the name, postal_code_number values are
	// frequently alphanumeric. Examples: "94043", "SW1W", "SW1W 9TQ".
	PostalCodeNumber string `json:"postalCodeNumber,omitempty"`

	// PostalCodeNumberExtension: Used for postal-code suffixes, such as the
	// 4-digit extension of a US ZIP+4 code.
	PostalCodeNumberExtension string `json:"postalCodeNumberExtension,omitempty"`

	// PremiseName: The "premise" is something like a house or building.
	PremiseName string `json:"premiseName,omitempty"`

	// RecipientName: NEW: The recipient. This goes at a finer granularity
	// than address_lines in the address. Not present in xAL. Omit if not
	// needed.
	RecipientName string `json:"recipientName,omitempty"`

	// SortingCode: This corresponds to the SortingCode sub-element of the
	// xAL PostalServiceElements element. Use is very country-specific.
	// Where it is used, the value is either a string like "CEDEX",
	// optionally followed by a number (e.g. "CEDEX 7"), or just a number
	// alone, representing the "sector code" (Jamaica), "delivery area
	// indicator" (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
	SortingCode string `json:"sortingCode,omitempty"`

	// SubAdministrativeAreaName: Second-level administrative subdivision of
	// this country. Examples: US county, IT province, UK county.
	SubAdministrativeAreaName string `json:"subAdministrativeAreaName,omitempty"`

	// SubPremiseName: The "subpremise" is something like an apartment or
	// suite. xAL offers more structured premise and subpremise values, but
	// we don't.
	SubPremiseName string `json:"subPremiseName,omitempty"`

	// ThoroughfareName: Name of thoroughfare. Intersections should be
	// represented with this field or address_line. Examples: "Amphitheatre
	// Parkway", "N Shoreline Blvd & Charleston Rd"
	ThoroughfareName string `json:"thoroughfareName,omitempty"`

	// ThoroughfareNumber: Thoroughfare numbers (street numbers) can be very
	// complex indeed. xAL defines fancy structures like
	// "ThoroughfareNumberRange" to represent the details, but we haven't
	// included that yet. It is worth noting that this needs to be a string,
	// not a number. Example: "1600"
	ThoroughfareNumber string `json:"thoroughfareNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddressLine") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddressLine") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PostalAddress) MarshalJSON() ([]byte, error) {
	type NoMethod PostalAddress
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PrecomputedRestricts: The restricts that are computed before building
// a Mustang index.
type PrecomputedRestricts struct {
	// Possible values:
	//   "INVALID"
	//   "COLOR_BLACK" - The image has dominant colors.
	//   "COLOR_BLUE"
	//   "COLOR_BROWN"
	//   "COLOR_GRAY"
	//   "COLOR_GREEN"
	//   "COLOR_ORANGE"
	//   "COLOR_PINK"
	//   "COLOR_PURPLE"
	//   "COLOR_RED"
	//   "COLOR_TEAL"
	//   "COLOR_WHITE"
	//   "COLOR_YELLOW"
	//   "HAS_SIMILAR" - This restrict will be set if the image has similar
	// images in the similar-image index.
	//   "ALL" - Misnamed - semantically means "not tiny".
	//   "CLIPART" - Genre restricts.
	//   "CLIPART_HR"
	//   "LINEART"
	//   "PHOTO"
	//   "ANIMATED"
	//   "TRANSPARENT"
	//   "PANORAMIC"
	//   "STOCK" - Restriction on images coming from stock photograph sites.
	//   "MONO" - Earlier chrominance measures.
	//   "TOLERANT_GRAY"
	//   "COLOR" - Refers to the FULL_COLOR type defined in image_perdoc.h.
	//   "NOT_UNIVERSAL" - Not allowed to appear in Images Universal.
	//   "PORTRAIT" - Has at least one large face in the image.
	//   "FACES_ONE" - Face-quantity restricts. The detected faces that
	// contribute toward this count (1) are larger than some minimal size
	// (different from the PORTRAIT criterion) and (2) have been verified by
	// color (for color images: face has skin-color; for non-color images:
	// always true).
	//   "FACES_TWO"
	//   "FACES_SEVERAL"
	//   "FACES_MANY"
	//   "FACE_MALE" - Face-classifier restricts. Computed over the union of
	// all detected faces, so an image can have both FACE_MALE and
	// FACE_FEMALE. These restricts only get applied if the face is frontal
	// with high confidence, age is detected and is at least 13 years old.
	// The precision should be around 98-99%.
	//   "FACE_FEMALE"
	//   "_img_porn_moderate" - Porn restricts.
	//   "_img_porn_strict"
	//   "_img_porn_very_strict"
	//   "_image_aspect_16x10" - Aspect ratio restricts.
	//   "_image_aspect_16x9"
	//   "_image_aspect_4x3"
	//   "_image_aspect_square"
	//   "_image_aspect_nearsquare"
	//   "_image_aspect_tall"
	//   "_image_aspect_xtall"
	//   "_image_aspect_wide"
	//   "_image_aspect_xwide"
	//   "_image_size_atleast_400x300" - New size restricts.
	//   "_image_size_atleast_640x480"
	//   "_image_size_atleast_800x600"
	//   "_image_size_atleast_1024x768"
	//   "_image_size_atleast_1280x800"
	//   "_image_size_atleast_1440x900"
	//   "_image_size_atleast_2MP"
	//   "_image_size_atleast_4MP"
	//   "_image_size_atleast_6MP"
	//   "_image_size_atleast_8MP"
	//   "_image_size_atleast_10MP"
	//   "_image_size_atleast_12MP"
	//   "_image_size_atleast_15MP"
	//   "_image_size_atleast_20MP"
	//   "_image_size_atleast_40MP"
	//   "_image_size_atleast_70MP"
	//   "_image_size_atleast_140MP"
	//   "_image_size_icon"
	//   "_image_size_small"
	//   "_image_size_medium"
	//   "FILETYPE_JPG" - Filetype restricts (should correspond to
	// FileFormat, below).
	//   "FILETYPE_GIF"
	//   "FILETYPE_PNG"
	//   "FILETYPE_BMP"
	//   "FILETYPE_SVG"
	//   "FILETYPE_WEBP"
	//   "FILETYPE_ICO"
	//   "FILETYPE_CRAW"
	//   "FILETYPE_HEIF"
	//   "CC_LICENSE" - Restricts about image license types.
	//   "NON_CC_LICENSE"
	//   "BEST" - --- The restricts below are on the "to deprecate" list.
	// --- Misnamed - semantically means "somewhat large".
	//   "ICON" - Earlier size restricts.
	//   "SMALL"
	//   "MEDIUM"
	//   "LARGE"
	//   "XLARGE"
	//   "XXLARGE"
	//   "_imagehuge" - "HUGE" does not work for this enum because the
	// symbol in the generated C++ file causes compilation problems; so, it
	// is written in verbatim mode.
	//   "DEPRECATED_65" - Deprecated fields; place here to prevent reuse.
	// For testing, they must have the "DEPRECATED_" prefix.
	//   "DEPRECATED_72"
	Restricts []string `json:"restricts,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Restricts") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Restricts") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PrecomputedRestricts) MarshalJSON() ([]byte, error) {
	type NoMethod PrecomputedRestricts
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PremiumPerDocData: Per-doc data for premium documents in the Google
// index.
type PremiumPerDocData struct {
	// Currency: type froogle/currency/currency.h
	Currency int64 `json:"Currency,omitempty"`

	// Date: publishing date (seconds since 1970,
	Date int64 `json:"Date,omitempty,string"`

	// Entitlement: entitlement data
	Entitlement []int64 `json:"Entitlement,omitempty"`

	// IsArchival: True if a free document is archival in nature.
	IsArchival bool `json:"IsArchival,omitempty"`

	// IsEntitled: User is entitled to see the premium content for free.
	IsEntitled bool `json:"IsEntitled,omitempty"`

	// Price: price * 100 if available
	Price int64 `json:"Price,omitempty"`

	// Publication: negative values for prior dates) FP of the Premium
	// publication name
	Publication uint64 `json:"Publication,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Currency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Currency") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PremiumPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod PremiumPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// Proto2BridgeMessageSet: This is proto2's version of MessageSet.
type Proto2BridgeMessageSet struct {
}

// PseudoVideoData: Available tags: 14+
type PseudoVideoData struct {
	// AsrModel: ASR model MPM version.
	AsrModel string `json:"AsrModel,omitempty"`

	// DocKey: This should be the MustangDocId, we need to figure out how to
	// generate a uint64 given the int64 we have in data_set
	DocKey uint64 `json:"DocKey,omitempty,string"`

	// Lang: Language of the recognizer used to generate transcript.
	Lang string `json:"Lang,omitempty"`

	// MustangDocId: This is the videodocid associate to the
	// http://video.google.com/videoplay?docid= NUMBER
	MustangDocId string `json:"MustangDocId,omitempty"`

	// Url: URL for document.
	Url string `json:"Url,omitempty"`

	S3Mode string `json:"s3Mode,omitempty"`

	// S3ModelInfoLabel: S3 ASR model info.
	S3ModelInfoLabel string `json:"s3ModelInfoLabel,omitempty"`

	Transcript *PseudoVideoDataTranscript `json:"transcript,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AsrModel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrModel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PseudoVideoData) MarshalJSON() ([]byte, error) {
	type NoMethod PseudoVideoData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PseudoVideoDataTranscript: A time-coded transcription of the
// document's audio track.
type PseudoVideoDataTranscript struct {
	// Text: The complete transcription text.
	Text string `json:"Text,omitempty"`

	Timestamp []*PseudoVideoDataTranscriptTimestamp `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PseudoVideoDataTranscript) MarshalJSON() ([]byte, error) {
	type NoMethod PseudoVideoDataTranscript
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PseudoVideoDataTranscriptTimestamp: Mapping of time/character
// correspondences. Used to map found snippets to the time and thumbnail
// nearest that snippet.
type PseudoVideoDataTranscriptTimestamp struct {
	CharOffset int64 `json:"CharOffset,omitempty"`

	// Confidence: quantized to values in range 0-127
	Confidence int64 `json:"Confidence,omitempty"`

	TimeOffset int64 `json:"TimeOffset,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CharOffset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CharOffset") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *PseudoVideoDataTranscriptTimestamp) MarshalJSON() ([]byte, error) {
	type NoMethod PseudoVideoDataTranscriptTimestamp
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// PtokenPToken: PToken expresses policy-relevant properties of the data
// objects being processed and stored in Google's production systems.
// See go/ptoken to learn more. PTokens are intentionally opaque:
// go/ptokens-are-opaque. The following should be considered
// implementation details. Next ID: 8 INTERNAL: If both the Scalar and
// the Compound extensions are populated, we use the Compound and
// discard the Scalar. In principle, this should never happen.
type PtokenPToken struct {
}

// QualityActionsAppInfo: Information of the app to be annotated for the
// query. It contains the name of the app, the package name associated
// with it. It also contains the confidence associated with {app,
// package} pair. This confidence is calculated from different signals
// like navboost, ranking etc. which later is used for ranking the apps
// for a particular query. The source of this app information is also
// indicated. This app info can either be from installed app (collected
// from device content) or from the fastmap. LINT.IfChange
type QualityActionsAppInfo struct {
	// AndroidIntent: The list of android intents that the app is capable of
	// executing.
	AndroidIntent []string `json:"androidIntent,omitempty"`

	// AppName: This is the string matched from the query.
	AppName string `json:"appName,omitempty"`

	// Category: Category of this package.
	Category *QualityActionsAppUnderstandingCategory `json:"category,omitempty"`

	Confidence float64 `json:"confidence,omitempty"`

	// DisplayName: This is the display name of the app as shown below the
	// app icon.
	DisplayName string `json:"displayName,omitempty"`

	// FallbackUrl: URL for the website associated with this app.
	FallbackUrl string `json:"fallbackUrl,omitempty"`

	// PackageName: Note that the package_name could be empty for two
	// reasons: - The AppInfo is annotated by device content. - The ngram
	// exists in app name fastmap, but there are a lot of packages
	// associated with it. e.g., there could be a lot of apps for app name
	// "recipes app".
	PackageName string `json:"packageName,omitempty"`

	// Source: For the future source, use the field in source_data.source().
	//
	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "DEVICE_CONTENT"
	//   "FASTMAP"
	//   "NAVBOOST"
	//   "MARMOT"
	//   "WHITELIST" - Whitelisted apps directly injected into the grammar
	// or annotator.
	//   "PLAY_APPS_SEARCH"
	//   "ASSISTANT_DEVICE_MODEL_CONTEXT" - Apps are annotated from
	// Assistant AppCapabilities, which will come from Device Model.
	//   "DEVICE_ATTRIBUTE" - Apps are annotated from device attribute.
	//   "TELEPORT_SEARCH" - Used by TeleportIntentGenerator for queries
	// such as Search $Entity on $APP.
	//   "FOREGROUND_SEARCH" - Used by TeleportIntentGenerator for queries
	// such searchy queries that fit the current foreground app. Example:
	// [running shoes] with Amazon in the foreground.
	//   "IMPLICIT_SEARCH" - Used by TeleportIntentGenerator for queries
	// with special keywords such as [funny cat videos] (with the keyword
	// being videos).
	//   "MEDIA_PROVIDER" - Used by go/ump-provider-annotation to annotate
	// media providers.
	//   "TELEPORT" - Apps annotated by Teleport, coming from the
	// AgentAnnotator.
	//   "AGGRESSIVE_IMPLICIT_SEARCH" - Used by TeleportIntentgenerator for
	// queries such as "install amazon" to be directed for PlayStore. Search
	// frames should directly trigger on this intent.
	//   "EMPTY_SEARCH" - Used by the TeleportIntentGenerator such as
	// "search on amazon". We will ask the user what they are searching for.
	Source string `json:"source,omitempty"`

	SourceData []*QualityActionsAppInfoSourceData `json:"sourceData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidIntent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidIntent") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityActionsAppInfo) UnmarshalJSON(data []byte) error {
	type NoMethod QualityActionsAppInfo
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// QualityActionsAppInfoSourceData: This deprecates the above: *
// confidence=3 * source=4 This allows us to merge AppInfo data per
// package_name.
type QualityActionsAppInfoSourceData struct {
	AllowListSourceData *QualityActionsAppInfoSourceDataAllowListSourceData `json:"allowListSourceData,omitempty"`

	// Confidence: Confidence from navboost.
	Confidence float64 `json:"confidence,omitempty"`

	// Install: Number of installs from marmot.
	Install int64 `json:"install,omitempty,string"`

	IsCategorical bool `json:"isCategorical,omitempty"`

	MediaProviderSourceData *QualityActionsAppInfoSourceDataMediaProviderSourceData `json:"mediaProviderSourceData,omitempty"`

	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "DEVICE_CONTENT"
	//   "FASTMAP"
	//   "NAVBOOST"
	//   "MARMOT"
	//   "WHITELIST" - Whitelisted apps directly injected into the grammar
	// or annotator.
	//   "PLAY_APPS_SEARCH"
	//   "ASSISTANT_DEVICE_MODEL_CONTEXT" - Apps are annotated from
	// Assistant AppCapabilities, which will come from Device Model.
	//   "DEVICE_ATTRIBUTE" - Apps are annotated from device attribute.
	//   "TELEPORT_SEARCH" - Used by TeleportIntentGenerator for queries
	// such as Search $Entity on $APP.
	//   "FOREGROUND_SEARCH" - Used by TeleportIntentGenerator for queries
	// such searchy queries that fit the current foreground app. Example:
	// [running shoes] with Amazon in the foreground.
	//   "IMPLICIT_SEARCH" - Used by TeleportIntentGenerator for queries
	// with special keywords such as [funny cat videos] (with the keyword
	// being videos).
	//   "MEDIA_PROVIDER" - Used by go/ump-provider-annotation to annotate
	// media providers.
	//   "TELEPORT" - Apps annotated by Teleport, coming from the
	// AgentAnnotator.
	//   "AGGRESSIVE_IMPLICIT_SEARCH" - Used by TeleportIntentgenerator for
	// queries such as "install amazon" to be directed for PlayStore. Search
	// frames should directly trigger on this intent.
	//   "EMPTY_SEARCH" - Used by the TeleportIntentGenerator such as
	// "search on amazon". We will ask the user what they are searching for.
	Source string `json:"source,omitempty"`

	// TeleportSourceData: Signals present when the source is TELEPORT.
	TeleportSourceData *AssistantTeleportTeleportNicknameSignals `json:"teleportSourceData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllowListSourceData")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowListSourceData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsAppInfoSourceData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsAppInfoSourceData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityActionsAppInfoSourceData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityActionsAppInfoSourceData
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// QualityActionsAppInfoSourceDataAllowListSourceData: Additional
// signals when the source is ATV's allow list.
type QualityActionsAppInfoSourceDataAllowListSourceData struct {
	// PreReleaseMode: Whether the app is in the pre-release stage and only
	// available for testing.
	PreReleaseMode bool `json:"preReleaseMode,omitempty"`

	// UnknownAppDeviceCompatibility: Whether app compatibility is unknown.
	// This field is needed for apps like apple tv that have different
	// package names on different devices. Play Gateway Service (PGS) lookup
	// is needed to validate that the app is available on the user's device.
	// go/app-fulfillment-quality
	UnknownAppDeviceCompatibility bool `json:"unknownAppDeviceCompatibility,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PreReleaseMode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PreReleaseMode") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsAppInfoSourceDataAllowListSourceData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsAppInfoSourceDataAllowListSourceData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsAppInfoSourceDataMediaProviderSourceData: The
// MEDIA_PROVIDER source can further specify information about the
// content served by the app.
type QualityActionsAppInfoSourceDataMediaProviderSourceData struct {
	// ProviderKey: The unique provider key/enumeration string as used in
	// KG. See also /base/mediaasset/provider/provider_enumerator.
	ProviderKey string `json:"providerKey,omitempty"`

	// ProviderType: The type of content served by the App. See also
	// chrome.dongle.pints.ProviderType.
	ProviderType string `json:"providerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProviderKey") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProviderKey") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsAppInfoSourceDataMediaProviderSourceData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsAppInfoSourceDataMediaProviderSourceData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsAppUnderstandingCategory: Category that this app falls
// into.
type QualityActionsAppUnderstandingCategory struct {
	// Possible values:
	//   "MUSIC"
	//   "GAME"
	//   "NEWS"
	//   "VIDEO"
	//   "CHAT"
	Category string `json:"category,omitempty"`

	Confidence float64 `json:"confidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsAppUnderstandingCategory) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsAppUnderstandingCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityActionsAppUnderstandingCategory) UnmarshalJSON(data []byte) error {
	type NoMethod QualityActionsAppUnderstandingCategory
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

type QualityActionsCustomizedNotification struct {
	// Buttons: Buttons on the notification
	Buttons []*QualityActionsCustomizedNotificationButton `json:"buttons,omitempty"`

	// SurfaceType: Surface type for the notification
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "PHONE"
	//   "SMART_DISPLAY"
	SurfaceType string `json:"surfaceType,omitempty"`

	// TapAction: Tap action on the notification body. This overwrites the
	// default tap action on reminder trigger notification (which on mobile,
	// is the reminders hub page).
	TapAction *QualityActionsCustomizedNotificationPayload `json:"tapAction,omitempty"`

	// Text: Notification text
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Buttons") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Buttons") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsCustomizedNotification) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsCustomizedNotification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityActionsCustomizedNotificationButton struct {
	// Label: REQUIRED. text for the button label
	Label string `json:"label,omitempty"`

	// TapAction: REQUIRED. tap action for the button
	TapAction *QualityActionsCustomizedNotificationPayload `json:"tapAction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsCustomizedNotificationButton) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsCustomizedNotificationButton
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityActionsCustomizedNotificationPayload struct {
	// Url: Currently for payload we only support raw string url. More
	// structured options may be added in the future
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Url") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Url") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsCustomizedNotificationPayload) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsCustomizedNotificationPayload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsNewsProviderAnnotationData: Aqua annotation data for
// news provider. This proto is added as an extension to
// NimbleAnnotationData.semantics_proto for nimble annotation.
type QualityActionsNewsProviderAnnotationData struct {
	Providers []*QualityActionsNewsProviderAnnotationDataProvider `json:"providers,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Providers") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Providers") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsNewsProviderAnnotationData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsNewsProviderAnnotationData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsNewsProviderAnnotationDataProvider: NextId: 6
type QualityActionsNewsProviderAnnotationDataProvider struct {
	// Locales: List of supported locales for this provider. Must follow the
	// format from go/iii, e.g.: 'en', 'en-US', 'en-GB', etc. Short forms
	// without regions codes, such as, 'en' match all possible regions:
	// en-US, en-GB, en-IN, etc.
	Locales []string `json:"locales,omitempty"`

	// OfficialName: The official name of the provider. Used in TTS and
	// should be localized.
	OfficialName string `json:"officialName,omitempty"`

	// OfficialNamePronunciation: TTS hint for the pronunciation of the
	// name. Should be left blank unless TTS performs poorly on
	// official_name. Example: Without hinting, TTS mispronounces "The Daily
	// 202" as "the daily two hundred and two". Feeding tts the string "the
	// daily two oh two" produces correct TTS.
	OfficialNamePronunciation string `json:"officialNamePronunciation,omitempty"`

	// ProviderId: The provider id used for news source URL lookup in
	// Kansas. See b/27250779 for details.
	ProviderId int64 `json:"providerId,omitempty"`

	// Score: A score of how confident the annotated span is a news
	// provider. For example, a high score is assigned for span "bbc news",
	// but a low score for span "bbc", which only triggers narrative news
	// aqua parse for a query with explicit news intent, e.g [play news from
	// bbc].
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locales") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locales") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsNewsProviderAnnotationDataProvider) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsNewsProviderAnnotationDataProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityActionsNewsProviderAnnotationDataProvider) UnmarshalJSON(data []byte) error {
	type NoMethod QualityActionsNewsProviderAnnotationDataProvider
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// QualityActionsReminder: Next id: 32
type QualityActionsReminder struct {
	// Archived: OPTIONAL. True if the reminder is archived. Not present
	// implies false.
	Archived bool `json:"archived,omitempty"`

	// ArchivedTime: OPTIONAL. The time when this reminder is archived.
	// Deprecated. Use `archived_timestamp` instead.
	ArchivedTime *AssistantApiDateTime `json:"archivedTime,omitempty"`

	// ArchivedTimestamp: OPTIONAL. When the reminder was completed (only
	// present when archived == true). Maps to
	// apps_intelligence.dialog.Task's complete_time field.
	ArchivedTimestamp string `json:"archivedTimestamp,omitempty"`

	// AsyncInteractionType: REQUIRED. async_interaction_type of the
	// reminder trigger notification
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED"
	//   "ASSISTANT_EXPLORE_LINKS" - Support "Send to device" in assistant
	// explore. See: go/assistant_explore_links_prd.
	//   "REMINDER" - Reminders.
	//   "REMINDER_ASSIGNABLE_NOTIFY"
	//   "REMINDER_CHIRP"
	//   "REMINDER_DRAGONGLASS"
	//   "REMINDER_LOCATION_BASED"
	//   "SHARED_REMINDER"
	//   "SHARED_REMINDER_LOCATION_BASED"
	//   "REMINDER_FORESIGHT"
	//   "REMINDER_FORESIGHT_TAP_TO_PAYLOAD"
	//   "REMINDER_FORESIGHT_LONG_ANSWER"
	//   "REMINDER_FORESIGHT_WHEN_IS"
	//   "REMINDER_FORESIGHT_UPCOMING_DATES"
	//   "REMINDER_FORESIGHT_PORKY_PIG"
	//   "REMINDER_SNAPSHOT_CALENDAR_EVENT"
	//   "REMINDER_SNAPSHOT_PKG_ANNIVERSARY"
	//   "REMINDER_SNAPSHOT_PKG_BIRTHDAY"
	//   "REMINDER_SNAPSHOT_PKG_MY_BIRTHDAY"
	//   "REMINDER_ARIS"
	//   "REMINDER_LOCATION_BASED_ARIS"
	//   "REMINDER_SHARED_ARIS"
	//   "REMINDER_FORESIGHT_WHEN_IS_ARIS"
	//   "REMINDER_FORESIGHT_PORKY_PIG_ARIS"
	//   "REMINDER_FORESIGHT_TAP_TO_PAYLOAD_ARIS"
	//   "REMINDER_FORESIGHT_LONG_ANSWER_ARIS"
	//   "REMINDER_FORESIGHT_ARIS"
	//   "REMINDER_CHIRP_ARIS"
	//   "REMINDER_DRAGONGLASS_ARIS"
	//   "REMINDER_PROACTIVE_API"
	//   "REMINDER_POST_TASK_MIGRATION"
	//   "REMINDER_NOTIFICATION_ENABLE_NOTICE"
	//   "CROSS_SURFACE"
	//   "CROSS_SURFACE_MOVIE_SHOWTIMES"
	//   "CROSS_SURFACE_EVENTS"
	//   "CROSS_SURFACE_SPORTS_LEAGUE_STANDINGS"
	//   "CROSS_SURFACE_THIRD_PARTY_HANDOFF"
	//   "CROSS_SURFACE_SPORTS_TEAM_STANDINGS"
	//   "CROSS_SURFACE_EXPLICIT_SEND_TO_PHONE"
	//   "CROSS_SURFACE_LOCAL_CATEGORICAL"
	//   "CROSS_SURFACE_LOCAL_DIRECTIONS"
	//   "CROSS_SURFACE_LOCAL_DISTANCE"
	//   "CROSS_SURFACE_MEDIA_SONG_DETAILS"
	//   "CROSS_SURFACE_MEDIA_ARTIST_DETAILS"
	//   "CROSS_SURFACE_TRANSLATION"
	//   "CROSS_SURFACE_SHOPPING_LIST"
	//   "CROSS_SURFACE_LOCAL_PHONE_NUMBER"
	//   "CROSS_SURFACE_LOCAL_SHOPPING"
	//   "CROSS_SURFACE_LOCAL_STATION_KP"
	//   "CROSS_SURFACE_LOCAL_TAXI_DIRECTIONS"
	//   "CROSS_SURFACE_TRANSACTIONS_THIRD_PARTY" - This is deprecated. Use
	// CROSS_SURFACE_TRANSACTIONS instead.
	//   "CROSS_SURFACE_TRANSACTIONS"
	//   "CROSS_SURFACE_TRANSACTIONS_ASYNC_RESUME"
	//   "CROSS_SURFACE_REMOTE_DEVICE_ACTIONS_AUTH"
	//   "CROSS_SURFACE_DONATIONS"
	//   "CROSS_SURFACE_FOOD_ORDERING"
	//   "CROSS_SURFACE_NOTES_AND_LISTS"
	//   "CROSS_SURFACE_DIETARY_RESTRICTIONS"
	//   "CROSS_SURFACE_AE_ACCOUNT_LINKING"
	//   "BTW_VM_UPGRADE"
	//   "BTW_NOTIFY"
	//   "BTW_TOPICAL_TOUR"
	//   "BTW_FAMILY_BELL"
	//   "BTW_WARM_WORDS"
	//   "EDIT_DIETARY_PREFERENCES"
	//   "GOOGLE_NOW"
	//   "GOOGLE_NOW_CHROMEOS"
	//   "PRICE_DROP"
	//   "PROACTIVE_FLIGHT"
	//   "PROACTIVE_FLIGHT_DELAYED_CANCELLED"
	//   "PROACTIVE_FLIGHT_WEATHER"
	//   "PROACTIVE_FLIGHT_LANDING"
	//   "PROACTIVE_HOTEL"
	//   "PROACTIVE_PACKAGE"
	//   "PROACTIVE_BILL"
	//   "PROACTIVE_COUPON_EXPIRES_SOON"
	//   "PROACTIVE_PPT"
	//   "ZEROSTATE_BILL"
	//   "PROACTIVE_EVENT"
	//   "PROACTIVE_TRANSPORT"
	//   "PROACTIVE_INFERRED_REMINDER"
	//   "GROCERY_DELIVERY"
	//   "GROCERY_PICKUP"
	//   "PROACTIVE_SMARTSPACE" - Smartspace notifications from the
	// Assistant ZeroState.
	//   "NARRATIVE_NEWS" - Notifications from the Narrative News feature.
	//   "BROADCAST_CUSTOM" - Notifications from broadcast feature.
	// go/broadcast-design
	//   "BROADCAST_CANNED"
	//   "REPLY_BROADCAST_PHONE"
	//   "REPLY_BROADCAST_CHIRP"
	//   "TELL_MY_FAMILY" - Notifications from Tell My Family feature.
	// go/tell-my-family
	//   "TELL_MY_FAMILY_ALLOW_GUEST_USE" - Notification to allow Family
	// managers to allow guest use by deeplinking to assistant settings.
	// go/tell-my-family-allow-guest-notification
	//   "FAMILY_CHECK_IN" - Notifications from Villager feature.
	//   "SUBSCRIPTIONS_WEATHER" - Subscriptions-specific types.
	//   "SUBSCRIPTIONS_WEATHER_CURRENT_CONTEXT"
	//   "SUBSCRIPTIONS_NEWS"
	//   "SUBSCRIPTIONS_FUN_CONTENT"
	//   "SUBSCRIPTIONS_JOKE"
	//   "SUBSCRIPTIONS_OTHER"
	//   "SUBSCRIPTIONS_DAILY_PHRASES"
	//   "SUBSCRIPTIONS_ANIMAL_OF_THE_DAY"
	//   "KEEP_SUBSCRIPTIONS_WEATHER" - Notifications that are sent just
	// before we cancel an unused subscription of the user. See
	// http://go/automatically-cancel-assistant-subscriptions for more
	// information.
	//   "KEEP_SUBSCRIPTIONS_NEWS"
	//   "KEEP_SUBSCRIPTIONS_FUN_CONTENT"
	//   "KEEP_SUBSCRIPTIONS_JOKE"
	//   "KEEP_SUBSCRIPTIONS_OTHER"
	//   "KEEP_SUBSCRIPTIONS_DAILY_PHRASES"
	//   "PROACTIVE_SPORTS_UPDATE" - Interest-based notifications.
	//   "GROWTH" - If
	//   "GROWTH_AUTOMOBILE_PAYFORGAS_PROMO"
	//   "MOBILE_ACTIVATION"
	//   "SIMON_ACTIONS"
	//   "SIMON_WEB_ANSWERS"
	//   "SIMON_CURRENCY"
	//   "SIMON_WEATHER"
	//   "SIMON_ACTIONS_TRAINING_DATA"
	//   "HOMEBOY"
	//   "WHERE_IS_MY_FAMILY_LIFE360"
	//   "WHERE_IS_PERSON_GEO"
	//   "FEATURE_AWARENESS_COMMUNICATION_HABITS"
	//   "FEATURE_AWARENESS_MUSIC_HABITS"
	//   "PHOTO_FRAME_SETUP_PROMOTIONAL"
	//   "ASSISTANT_PIE_SWIPE_EDUCATION" - Pie notifications coming from
	// various usecases.
	//   "ASSISTANT_PIE_OPEN_APP"
	//   "ASSISTANT_PIE_AGGRESSIVE"
	//   "ASSISTANT_PIE_HOMESCREEN_ENTRY_POINT"
	//   "ROUTINES" - Notifications from the Routines feature.
	//   "ROUTINES_ALARM_DISMISSAL_TRIGGER_TIP"
	//   "ROUTINES_CLOUD_EXECUTION_REPORT"
	//   "ROUTINES_SCHEDULED_MANIFOLD" - Notifications from the Scheduled
	// Routines feature with Manifold.
	//   "ROUTINES_LOCATION_TRIGGER" - Notifications from the Location Based
	// Routines Triggers feature.
	//   "ROUTINES_LOCATION_NOTIFICATION"
	//   "ROUTINES_SCHEDULED_ON_PHONE_NOTIFICATION" - Notifications from
	// Scheduled Routines on phone
	//   "ROUTINES_TRIGGER_ON_MOBILE"
	//   "ROUTINE_HOME_APP_CARDS"
	//   "ROUTINES_DISABLE_COMMUTE_ACTION_TIP"
	//   "ROUTINE_SPECIAL_NEWS_OPT_IN_TIP"
	//   "ROUTINES_WFH_ROUTINE_TIP"
	//   "ROUTINES_ELECTION_NEWS_OPT_IN_TIP"
	//   "ROUTINE_ALARM_DISMISSAL_TRIGGER_NOT_TRIGGERED"
	//   "ROUTINES_SCHEDULE_DISCOVERY"
	//   "ROUTINES_PROMOTE_GM"
	//   "ROUTINES_PROMOTE_GN"
	//   "ROUTINES_PROMOTE_DISMISS_ALARM"
	//   "FAMILY_BELL"
	//   "IFTTT" - Notifications from IFTTT.
	//   "LIVE_CARD_SETTINGS" - Live cards-specific types. Cards instructing
	// the user to set up something in assistant-settings.
	//   "LIVE_CARD_INSTALL_ASSISTANT" - Cards instructing the user to
	// install assistant.
	//   "LIVE_CARD_DISCLOSURE" - Cards with terms of service / privacy
	// policy which must be reviewed and acknowledged before continuing with
	// the user's intent.
	//   "LIVE_CARD_TERMS_AND_CONDITIONS" - Cards with terms and conditions
	// that aren't explicitly requested by the user, but which provide
	// additional information relevant to the user's intent.
	//   "LIVE_CARD_WEB_ANSWERS" - Cards with web answers to user questions.
	//   "LIVE_CARD_HEALTH" - Cards with information about health
	// conditions.
	//   "LIVE_CARD_NEWS" - Cards with news items.
	//   "LIVE_CARD_RESERVE_HOTEL" - Cards for reserving hotels.
	//   "LIVE_CARD_SHOPPING_SETTINGS" - Cards leading the user to Shopping
	// settings.
	//   "LIVE_CARD_SHOPPING_VIEW_CART" - Cards leading the user to their
	// Shopping carts.
	//   "LIVE_CARD_MAPS_DIRECTIONS" - Cards with directions on Google Maps.
	//   "LIVE_CARD_ATTRIBUTION" - Cards showing the source of some content.
	//   "LIVE_CARD_HANDOFF_ACTIVITY" - Cards representing all kinds of
	// activities: go/agent-activity-api
	//   "LIVE_CARD_HANDOFF_LINK_ACCOUNT" - Cards instructing the user to
	// link a 3P account for handoffs.
	//   "LIVE_CARD_HANDOFF_PLAY_STORE_PURCHASE" - Cards leading the user to
	// complete digital purchases on their phones.
	//   "LIVE_CARD_KP_ANSWERS" - Cards with answers to KP queries.
	//   "LIVE_CARD_BLUELINK_TTS" - Cards with bluelink sent by
	// go/bluelink-tts.
	//   "LIVE_CARD_VOICE_RETRAIN" - Cards instructing the user to retrain
	// their voice model.
	//   "LIVE_CARD_ENABLE_PERSONAL_RESULTS" - Cards instructing the user to
	// enable personal results.
	//   "LIVE_CARD_ENABLE_DEVICE_CONTACTS" - Cards and notifications
	// instructing the user to enable the "contact info from your devices"
	// account flag.
	//   "LIVE_CARD_INFORMATIONAL" - A catch-all interaction type for live
	// cards coming from Geppetto.
	//   "LIVE_CARD_HELP_PAGES" - A live card that takes users to google
	// help pages.
	//   "LIVE_CARD_SHOPPING_LIST" - A live card that takes users to their
	// shopping list.
	//   "LIVE_CARD_SPEEDDIAL_MISSING_CONTACT" - A live card that links to
	// Assistant Settings lets user add missing contacts to speed dial.
	//   "LIVE_CARD_SPEEDDIAL_PROMO_UNVERIFIED_USER" - A live card that
	// links to Assistant Settings lets user enable speed dial contacts, but
	// with throttling (b/151226137, #6 in go/help-comm-punts).
	//   "LIVE_CARD_SPEEDDIAL_REMOVE_CONTACTS" - A live card that links to
	// Assistant Settings lets user delete speed dial contacts.
	//   "LIVE_CARD_SPEEDDIAL_SHOW_CONTACTS" - A live card that links to
	// Assistant Settings lets user see the list of speed dial contacts.
	//   "LIVE_CARD_REVIEW_SUMMARY" - Cards for review summary response.
	//   "LIVE_CARD_LINE_SETTINGS" - Cards instructing the user to set up
	// LINE settings for assistant interaction.
	//   "LIVE_CARD_LOCATE_DEVICE_NOTIFICATION_SETTINGS" - Cards instructing
	// the user to turn on notification settings for GHA app on iPhone so
	// that they could use Assistant to find the phone.
	//   "LIVE_CARD_APP_INTERACTION_SETTINGS" - Cards for pointing users to
	// the assistant app-integration settings.
	//   "SHARE_MEETING" - Notifications with meeting information.
	//   "SHARE_MEETING_LIVE_CARD" - Cards with meeting information.
	//   "LINK_ZOOM" - Notifications with Zoom linking instructions.
	//   "CREATE_DUO_GROUP" - Cards for create duo group instruction.
	//   "PRIVACY_ACTIONS" - Privacy actions notifications
	//   "LIVE_CARD_FAMILY_BELL" - Family Bell Live Card notifications
	//   "LIVE_CARD_FAMILY_BELL_IOS" - Family Bell Live Card notifications
	// specifically for iOS
	//   "FAMILY_BELL_RING" - Notification to allow family bell to ring on
	// mobile devices.
	//   "FAMILY_BELL_GET_READY" - Get Ready Bell Card notification for
	// Smart Displays
	//   "THIRD_PARTY_ORDER_STATUS_UPDATE" - 3P-specific notifications.
	// Status updates for transactions.
	//   "THIRD_PARTY_ALERT" - Alerts.
	//   "THIRD_PARTY_SUBSCRIPTION" - Subscriptions.
	//   "THIRD_PARTY_SMART_DISPLAY_CARD" - Cards (push notifications to
	// smart displays).
	//   "PROFILE_GRANT_NOTIFICATION" - Notification resulted from user
	// granting profile permission to 3P.
	//   "PROFILE_TELL_ME_MORE_NOTIFICATION" - Notification resulted from
	// user ask "tell me more" about profile grant.
	//   "HOME_AUTOMATION_DEVICE_NOTIFICATION" - Device notification for
	// Home Automation: go/assistant-device-notifications.
	//   "CHANGE_DEFAULT_MEDIA_PROVIDER" - Notification sent to notify users
	// to change default media provider in Assistant Settings. See
	// go/change-dmp-dd for more details.
	//   "DOWNLOAD_NOT_INSTALLED_PROVIDER"
	//   "PROMOTE_PLAY_RADIO_ROUTINE"
	//   "MEDIA_CROSS_DEVICE_PROMOTION" - Deprecated. Media specific
	// notifications. Notification sent to promote Media Assistant on phones
	// for existing Chirp/Jasper users. go/media-cross-device-promotion.
	//   "MEDIA_LINK_3P_PROVIDER_NOTIFICATION" - Notification sent to notify
	// users link their 3p music account in Assistant Settings. See
	// go/media-notif-link-3p-account for more details.
	//   "MEDIA_PREFERRED_PODCAST_PROVIDER_NOTIFICATION" - Notification sent
	// to notify users to choose a preferred podcast provider in Assistant
	// Settings. See b/159824581 for more details.
	//   "MEDIA_INITIATION"
	//   "VOICE_DELIGHT_DELAYED_ACTION" - A delayed action sent by voice
	// delight.
	//   "WRAPPED_REMOTE_INTERACTION" - An interaction sent to a remote
	// device using a PushMessage.
	//   "ASYNC_INTERACTION" - An push message wrapping an interaction
	// that's resulting from an asynchronous cloud execution. The resulting
	// notification might have ui elements like buttons etc.
	//   "REENGAGEMENT_NOTIFICATION" - Notifications for re-engagement.
	//   "BLUE_GINGER_RESPONSE" - Notification sent when final answer ready
	// for users' query on assistant.
	//   "BLUE_GINGER_SURVEY" - Notification sent to users some time after
	// service to do a survey.
	//   "SMARTHOME_DOORBELL"
	//   "SMARTHOME_ALARM"
	//   "SMARTHOME_ASYNCHRONOUS"
	//   "SMARTHOME_BROADCAST"
	//   "SMARTHOME_FOLLOW_UP"
	//   "SMARTHOME_PHONES"
	//   "COMMUNICATION_MISSED_CALL" - Notification sent when the user
	// missed a call on Dragonglass devices: go/missed-calls-on-jasper.
	//   "VUI_CONSENT_MISSING_DI"
	//   "VUI_CONSENT_MISSING_THIRD_PARTY_DISCLOSURE"
	//   "WEB_ANSWERS_NOTIFICATION"
	//   "PERSONAL_INTELLIGENCE_NOTIFICATION"
	//   "PERSONAL_INTELLIGENCE_LIVE_CARD"
	//   "LENS_REMINDER"
	//   "IQS_NOTIFICATION" - Notification for HomeIntelligenceService(IQS)
	// go/iqs-notification-sink
	//   "ASSISTANT_SURVEY"
	//   "ASSISTANT_SURVEY_IMPORTANCE_MIN" - Deprecated! use
	// ASSISTANT_SURVEY_PRIORITY_LOW Similar to ASSISTANT_SURVEY but used by
	// Android TV to set android_tv_importance to IMPORTANCE_MIN.
	//   "ASSISTANT_SURVEY_PRIORITY_LOW" - Similar to ASSISTANT_SURVEY but
	// used by Android TV to set android_tv_notification_priority to
	// PRIORITY_LOW.
	//   "WHEREABOUTS_CHECKIN"
	//   "TRAVEL_ASSISTANT_FLIGHT_CHECKIN"
	//   "DIALER_AUTH"
	//   "MODES_POI"
	//   "HEADY_CONCISE_ANSWERS_ATTRIBUTION"
	//   "HEADY_CONCISE_ANSWERS_EXPLORATION"
	//   "HEADY_ELENCHUS_ATTRIBUTION"
	//   "HEADY_ELENCHUS_EXPLORATION"
	//   "HEADY_GENERATED_ANSWERS_ATTRIBUTION"
	//   "HEADY_GENERATED_ANSWERS_EXPLORATION"
	//   "HEADY_INTERACTIVE_QUESTIONS_ATTRIBUTION"
	//   "HEADY_INTERACTIVE_QUESTIONS_EXPLORATION"
	//   "HEADY_KP_DESCRIPTION_ATTRIBUTION"
	//   "HEADY_KP_DESCRIPTION_EXPLORATION"
	//   "HEADY_READ_WEBANSWER_ATTRIBUTION"
	//   "HEADY_READ_WEBANSWER_EXPLORATION"
	//   "HEADY_SMART_PUNTS_WEBANSWERS"
	//   "HEADY_TELLMEMORE_ATTRIBUTION"
	//   "HEADY_TELLMEMORE_EXPLORATION"
	//   "HEADY_VOICE_SUGGESTIONS_ATTRIBUTION"
	//   "HEADY_VOICE_SUGGESTIONS_EXPLORATION"
	//   "HEADY_WEBANSWERS_LIST_ATTRIBUTION"
	//   "HEADY_WEBANSWERS_LIST_EXPLORATION"
	//   "COMMUNICATION_VIDEO_MESSAGE"
	//   "HEALTH_ASSISTANT_ADD_GOAL_PARTNER" - Notifications from Health
	// Assistant. See go/assistant-notifications-for-health-assistant-prd.
	//   "HEALTH_ASSISTANT_SUGGEST_GOAL_PARTNER"
	//   "HEALTH_ASSISTANT_EDUCATIONAL"
	//   "HEALTH_ASSISTANT_GOAL_REMINDER"
	//   "HEALTH_ASSISTANT_WEATHER_REMINDER"
	//   "HEALTH_ASSISTANT_GOAL_FOLLOWUP"
	//   "HEALTH_ASSISTANT_ORGANIZATIONAL"
	//   "HEALTH_ASSISTANT_WEEKLY_REPORT"
	//   "HEALTH_ASSISTANT_WEEKLY_FEEDBACK"
	//   "ASSISTANT_SPEAKERS_MOBILE_NOTIFICATION"
	//   "ASSISTANT_SPEAKERS_ACTION_RENDER_HARD"
	//   "ASSISTANT_SPEAKERS_CHURNOUT_ANSWER_OTHER"
	//   "ASSISTANT_SPEAKERS_CHURNOUT_DEVICE_MEDIA_CONTROL"
	//   "ASSISTANT_SPEAKERS_CHURNOUT_ALARM"
	//   "ASSISTANT_SPEAKERS_CHURNOUT_LIST"
	//   "ASSISTANT_SPEAKERS_CHURNOUT_PERSONALITY_CURATED_CONTENT"
	//   "ASSISTANT_SPEAKERS_ONBOARD"
	//   "ASSISTANT_SPEAKERS_ONBOARD_ANSWER"
	//   "ASSISTANT_SPEAKERS_ONBOARD_VOLUME_CONTROL"
	//   "ASSISTANT_SPEAKERS_ONBOARD_ALARM"
	//   "ASSISTANT_SPEAKERS_ONBOARD_LIST"
	//   "ASSISTANT_SPEAKERS_ONBOARD_JOKE"
	//   "ASSISTANT_SPEAKERS_ONBOARD_ACTION_RENDER"
	//   "ALARM_EXPIRATION"
	//   "SCREENLESS_WCYD_PERSONALIZED_SUGGESTION_EXPLANATION_LIVECARD"
	//   "FAMILY_SHARING"
	//   "SUPPORT_ARTICLE"
	//   "LOCKSCREEN_PERSONAL_RESULTS_SETTING"
	//   "ASSISTANT_ON_LOCKSCREEN_SETTING"
	//   "MULTI_DEVICE_NOTIFICATION_FEEDBACK"
	//   "MULTI_DEVICE_FEEDBACK_CHIRP"
	//   "DRAGONGLASS_SPORT_MODULE"
	//   "DEVICES_PLATFORM"
	//   "DRAGONGLASS_CONCIERGE_CARD"
	//   "BLUE_STEEL_SETUP"
	//   "ZEROSTATE_VIP_BIRTHDAY" - Birthday notifications from the
	// Assistant ZeroState.
	//   "ZEROSTATE_ANNIVERSARY"
	//   "ZEROSTATE_OWN_BIRTHDAY"
	//   "ZEROSTATE_VIP_BIRTHDAY_ONE_WEEK_BEFORE"
	//   "ZEROSTATE_VIP_BIRTHDAY_ONE_DAY_BEFORE"
	//   "ZEROSTATE_STARRED_CONTACT_BIRTHDAY_ONE_WEEK_BEFORE"
	//   "ZEROSTATE_STARRED_CONTACT_BIRTHDAY_ONE_DAY_BEFORE"
	//   "ZEROSTATE_OWN_BIRTHDAY_ONE_WEEK_BEFORE"
	//   "ZEROSTATE_OWN_BIRTHDAY_ONE_DAY_BEFORE"
	//   "ZEROSTATE_CALENDAR_ANNIVERSARY"
	//   "ZEROSTATE_CALENDAR_VIP_BIRTHDAY_ONE_WEEK_BEFORE"
	//   "ZEROSTATE_CALENDAR_VIP_BIRTHDAY_ONE_DAY_BEFORE"
	//   "ASSISTANT_FAMILY_READ_ALONG"
	//   "BEQUT"
	//   "ASSISTJS_ACTIONS_LINKS"
	//   "ZEROSTATE_INTEPRETER_DOWNLOAD_PACK" - Interpreter download pack
	// notifications from the Assistant ZeroState.
	//   "PROACTIVE_API"
	//   "TRANSACTIONS_VOICE_MATCH_OPTIN" - Notifications from AoG
	// Transactions
	//   "TRANSACTIONS_VOICE_MATCH" - Notifications from AoG Transactions
	// placed using Voice Match.
	//   "TRANSACTIONS_VOICE_MATCH_OPTIN_FOR_GAMES" - Notifications from AoG
	// Transactions triggered when users complete playing 3P games.
	//   "LIVE_CARD_XTALK" - Cards showing the source of 3rd party content
	// qouted in xTalk.
	//   "DO_IT_AGAIN" - Do-It-Again notifications.
	//   "DO_IT_AGAIN_WEATHER"
	//   "DO_IT_AGAIN_GOOGLE_HOME"
	//   "DO_IT_AGAIN_FREQUENT_ACTIONS"
	//   "DO_IT_AGAIN_BOOSTED"
	//   "DO_IT_AGAIN_CROSS_DEVICE"
	//   "DO_IT_AGAIN_INITIAL" - These Do It Again interaction types are
	// deprecated and exist only because small portion of users is still
	// receiving the notifications they have set up in a live experiment.
	//   "DO_IT_AGAIN_CONFIRMATION"
	//   "SUBSCRIPTIONS_DO_IT_AGAIN"
	//   "CALENDAR_MEETING_MISSING_ROOM"
	//   "CALENDAR_NEWLY_ADDED_MEETING"
	//   "FOOD_REORDERING"
	//   "HEALTH_AND_FITNESS_MEDITATION"
	//   "HEALTH_AND_FITNESS_SLEEP_COACHING"
	//   "HEALTH_AND_FITNESS_WELLNESS_SETTING"
	//   "ZEROSTATE_ON_MY_WAY_HOME" - On my way home notifications from the
	// Assistant ZeroState.
	//   "ZEROSTATE_ON_MY_WAY_HOME_DISCOVERY" - On my way home discovery
	// notifications.
	//   "SMART_DISPLAY_WEB_URL_CLICK"
	//   "GEO_TRAFFIC_TO_PLACE" - Traffic to place notifications (commute
	// driving) from Maps. PRD(go/ga-notifications-prd)
	//   "GEO_TIME_TO_LEAVE" - Time to leave notifications from Maps.
	// PRD(go/ga-notifications-prd)
	//   "GEO_TTL_CALENDAR_EVENT" - Calendar event time to leave
	// notifications from Maps. PRD(go/ga-notifications-prd)
	//   "GEO_TTL_RESERVED_RESTAURANT" - Restaurant reservation Time to
	// leave notifications from Maps. PRD(go/ga-notifications-prd)
	//   "GEO_TTL_RESERVED_SOCIAL_EVENT" - Restaurant reservation Time to
	// leave notifications from Maps. PRD(go/ga-notifications-prd)
	//   "GEO_TTL_FLIGHT_PASSENGER_DEPARTURE" - Restaurant reservation Time
	// to leave notifications from Maps. PRD(go/ga-notifications-prd)
	//   "GEO_AAP_GROCERY_STORE"
	//   "GEO_AAP_BEAUTY_WELLNESS"
	//   "GEO_AAP_RESTAURANT"
	//   "GEO_AAP_TRANSIT"
	//   "GEO_AAP_APP_RECOMMENDATIONS"
	//   "GEO_AAP_HYBRID_HOTSEAT"
	//   "GEO_AAP_LANDMARK"
	//   "GEO_AAP_SHOPPING_CENTER"
	//   "GEO_AAP_HOTEL"
	//   "GEO_AAP_RESTAURANT_DEAL"
	//   "GEO_AAP_CHAIN_DEAL"
	//   "GEO_AAP_EXPERIMENT"
	//   "APP_ACTIONS_SHORTCUTS" - Notifications of the App Actions team for
	// creating a app shortcut.
	//   "APP_ACTIONS_HEADSUP_NOTIFICATION" - Notifications of the App
	// Actions team to notify users about how to use the features of App
	// Actions. PRD (go/app-integration-order-food) UX
	// (go/app-integration-in-product-discovery)
	//   "APP_ACTIONS_PERSONAL_INVENTORY_NOTIFICATION" - Notifications of
	// the App Actions team to notify users about the use of their personal
	// on device data. Design doc: go/personal-inventory-notification UX:
	// go/icing-notification-demo
	//   "WARM_WORDS_TRIGGERING_SURVEY" - Notification to get user feedback
	// about warm words triggering.
	//   "PHOX_NEW_MOVIE_RECOMMENDATION" - Notification for a new movie
	// recommendation found in photos.
	//   "PHOX_NEW_TASK_RECOMMENDATION" - Notification for a new task
	// recommendation found in photos.
	//   "GSA_NLS_PERMISSION" - Notification to request
	// GsaNotificationListener permission.
	//   "UPDATE_STICKY_NOTES" - Notification to update the sticky notes
	// cards on dragonglass.
	//   "INDIAN_PREMIER_LEAGUE_PROMO_CAMPAIGN"
	//   "FELA_CAMPAIGN_INTRO"
	//   "FELA_CAMPAIGN_REENGAGEMENT"
	//   "FELA_CAMPAIGN_WON"
	//   "LOBBY_HIGHLIGHTS"
	//   "MORRIS_OOBE" - Notification to ask users to complete the Morris
	// OOBE and use Morris in their next drive.
	//   "MORRIS_OOBE_FROM_GMM_OPT_IN"
	//   "MORRIS_OOBE_FROM_GMM_NOT_NOW"
	//   "MORRIS_DRIVING_SCREEN_OOBE_NEW_USER"
	//   "MORRIS_DRIVING_SCREEN_OOBE_ALL_PERMISSIONS"
	//   "MORRIS_DRIVING_SCREEN_OOBE_AR_PERMISSION"
	//   "MORRIS_DRIVING_SCREEN_OOBE_NA_PERMISSION"
	//   "MORRIS_DRIVING_SCREEN_OOBE_BT_PERMISSION"
	//   "MORRIS_DRIVING_SCREEN_AR"
	//   "MORRIS_DRIVING_SCREEN_BT"
	//   "MORRIS_MICRO"
	//   "AAE_ENABLE_CONTACT_UPLOAD_PERMISSION" - Notification to enable
	// contact upload from paired device.
	//   "PHOX_OPTIN_DISCOVERABILITY"
	//   "VM_UPGRADE_PUNT"
	//   "INVITE_GUEST_USER"
	//   "FAMILY_NUDGE_SHARED_REMINDERS"
	//   "BIOGRAPHER_PROACTIVE" - Notification to promote Assistant memory.
	//   "ASPIRE_REMINDER"
	//   "ASPIRE_CONNECT"
	//   "ASPIRE_CELEBRATE"
	//   "PRIVACY_GROWTH"
	//   "LOCATE_DEVICE"
	//   "BIRTHDAY_COUNTDOWN" - Notification for Birthday Countdown on
	// DragonGlass.
	//   "PROACTIVE_RECIPES"
	//   "CUSTOM_PRONUNCIATION_CONTACT_NO_MATCH"
	//   "CUSTOM_PRONUNCIATION_CALL_HANG_UP"
	//   "AE_USER_ONBOARDING_NETFLIX"
	//   "AE_USER_ONBOARDING_ZOOM"
	//   "SNAPSHOT_MORNING_PROMO_CAMPAIGN"
	//   "PROACTIVE_API_WHAT_CAN_YOU_DO"
	//   "VOICE_ENROLLMENT_ON_DEVICE"
	//   "ENABLE_ACCOUNT_AGENDA_QUERIES"
	//   "CREATE_EVENT_EDUCATIONAL"
	//   "ZEROSTATE_CONVERSATION_STARTERS"
	//   "ZEROSTATE_REFRESH_MAGICAL"
	//   "UNUSED_DEVICE_CLEANUP"
	//   "REMOTE_VEHICLE_ACTION_SETUP_PROMOTION"
	//   "FAMILY_NUDGE_ELVIS"
	//   "AADC_MINOR_MOMENT" - AADC.
	//   "PAYMENTS_SETTINGS"
	//   "SMARTSPACE_HOLIDAY_ALARMS"
	//   "CROSS_DEVICE_TIMER"
	//   "CROSS_DEVICE_TIMER_FCM_PING" - Temporary solution for sending
	// empty notification as FCM ping
	//   "MEMORY_AWARENESS" - Memory/Stash
	// go/memory-awareness-notification-prd
	//   "MEMORY_SHORTCUT"
	//   "MEMORY_TAP_SAVE"
	//   "SHELDON_DISCLOSURE" - Notification for legally-required disclosure
	// of Sheldon project. go/sheldon-notification-prd.
	//   "PROACTIVE_API_FASTTRACK" - Notification configured through
	// FastTrack UI: http://fasttrack.
	//   "PERSONAL_RESULTS_OPTIN" - Notification for Personal Response (PR)
	// opt-in: go/migrate-pr-notifs-tng-ma-prd
	//   "HEADPHONE_PERSONAL_RESULTS_OPTIN" - Notification for Headphone
	// Personal Response (HPR) opt-in: go/migrate-pr-notifs-tng-ma-prd
	//   "UNIT_TESTING" - NOTE: This should always stay at the bottom of the
	// list.
	AsyncInteractionType string `json:"asyncInteractionType,omitempty"`

	// Attachment: OPTIONAL. Attachments associated with this Reminder. If
	// the attachment has different behavior on different surfaces (e.g.,
	// deeplinks), specify multiple attachments here, and specify the
	// surface types and links in the inner fields. There should be at most
	// one attachment for each surface.
	Attachment []*AssistantRemindersAttachment `json:"attachment,omitempty"`

	// BareTitle: OPTIONAL. Populated only for assignable reminders (E.g.
	// "buy milk"). It will be used in the post-execution card-rendering. If
	// not poulated, i.e. in non-assignable mode, caller should fallback to
	// use $title.
	BareTitle string `json:"bareTitle,omitempty"`

	// ClientId: OPTIONAL. The reminders "client" id. This ID uniquely
	// identifies a reminder instance and may be generated by any client
	// that writes to our Reminder backend.
	ClientId string `json:"clientId,omitempty"`

	// ClientType: REQUIRED. The type of this attachment. This is used for
	// frontends (e.g., Hubpage) to customize UX. And also for customized VE
	// logging.
	ClientType *QualityDialogManagerReminderClientType `json:"clientType,omitempty"`

	// CreateTime: OPTIONAL. The create time of this reminder. This field is
	// propagated only for the reminders fetched from backend.
	CreateTime *AssistantApiDateTime `json:"createTime,omitempty"`

	// CreateTimestamp: OPTIONAL. The create time of this reminder. This
	// field is propagated only only for the reminders fetched from backend.
	CreateTimestamp string `json:"createTimestamp,omitempty"`

	// Creator: OPTIONAL. Creator of a reminder (owned by the current user).
	// Used in shared reminder RUD operations.
	Creator *QualityActionsReminderPerson `json:"creator,omitempty"`

	// CustomizedNotificationCard: OPTIONAL. Contains fields needed to build
	// the customized notification card
	CustomizedNotificationCard []*QualityActionsCustomizedNotification `json:"customizedNotificationCard,omitempty"`

	// Datetime: A representation of the Gregorian calendar date and
	// timezone-relative time a reminder is scheduled for. This contains the
	// date and time of either a single reminder or the upcoming instance of
	// a recurring reminder.
	Datetime *AssistantApiDateTime `json:"datetime,omitempty"`

	// Description: OPTIONAL. Full-length description of the reminder.
	Description string `json:"description,omitempty"`

	DocumentAssignmentSource *QualityActionsReminderDocument `json:"documentAssignmentSource,omitempty"`

	DynamiteGroupAssignmentSource *QualityActionsReminderDynamiteGroup `json:"dynamiteGroupAssignmentSource,omitempty"`

	// Id: DEPRECATED. Use `client_id` or `server_id` instead.
	Id string `json:"id,omitempty"`

	Location *QualityActionsReminderLocation `json:"location,omitempty"`

	// Log: OPTIONAL. Associated logs to be plumbed through along with a
	// reminder.
	Log *AssistantLogsReminderLog `json:"log,omitempty"`

	// MemoryPayload: OPTIONAL. Memory record payload which is associated
	// with this reminder. This will be set for all Assistant reminders
	// created after the first launch of the Reminder Memory integration,
	// see go/reminders-memory for more details. Also, this might apply to
	// all other types of reminders.
	MemoryPayload *AssistantRemindersMemoryPayload `json:"memoryPayload,omitempty"`

	// Notifying: OPTIONAL. True if the reminder is notifying on the device
	// that is making the request to the server.
	Notifying bool `json:"notifying,omitempty"`

	// PersonalReferenceMetadata: OPTIONAL. Populated if the reminder is
	// based off of a personal reference, e.g. [my hotel] when the user has
	// a hotel reservation. Contains the information needed for suggestion
	// chip attribution, e.g. a link back to the email reservation.
	PersonalReferenceMetadata *CopleySourceTypeList `json:"personalReferenceMetadata,omitempty"`

	// Recipient: OPTIONAL. Recipient of a reminder (created by the current
	// user). Used for shared reminder CRUD operations.
	Recipient *QualityActionsReminderPerson `json:"recipient,omitempty"`

	Recurrence *QualityActionsReminderRecurrenceInfo `json:"recurrence,omitempty"`

	// ServerId: OPTIONAL. The reminders backend "server" id. Only filled in
	// some scenarios, e.g. to generate the reminders hubpage
	// detailed-reminder view.
	ServerId string `json:"serverId,omitempty"`

	// Possible values:
	//   "UNSET"
	//   "MORNING"
	//   "AFTERNOON"
	//   "EVENING"
	//   "NIGHT"
	SymbolicTime string `json:"symbolicTime,omitempty"`

	// Title: REQUIRED. The main textual representation of the reminder with
	// the final title. For assignable reminders, this would be e.g. "From
	// John: buy milk".
	Title string `json:"title,omitempty"`

	// UpdateTimestamp: OPTIONAL. The last updated time of this reminder.
	// This field is propagated only for the reminders fetched from ARIS
	// (go/aris-dd).
	UpdateTimestamp string `json:"updateTimestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Archived") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Archived") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminder) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminder
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsReminderDocument: Message representing a Document (i.e.
// Google Docs, Sheets, Slides) This is currently only used to indicate
// the existence of said document and can be later extended to include
// more document information as needed.
type QualityActionsReminderDocument struct {
}

// QualityActionsReminderDynamiteGroup: Message representing a Dynamite
// Group (AKA Google Chat space) This is currently only used to indicate
// the existence of said group and can be later extended to include more
// group information as needed.
type QualityActionsReminderDynamiteGroup struct {
}

// QualityActionsReminderLocation: A representation of
// reminder-triggering locations. They may be specific, resolved
// locations, non-specific location groups, or personal aliases. Next
// id: 12
type QualityActionsReminderLocation struct {
	CategoryInfo *QualityActionsReminderLocationCategoryInfo `json:"categoryInfo,omitempty"`

	ChainInfo *QualityActionsReminderLocationChainInfo `json:"chainInfo,omitempty"`

	// CustomLocationType: Optional additional information about the types
	// of the custom location. This field is not stored in backend, and is
	// only used to plumb NLP information to fulfillment UI.
	//
	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "BUSINESS"
	//   "PLACE"
	//   "ADDRESS"
	CustomLocationType string `json:"customLocationType,omitempty"`

	// DisplayAddress: An address string that is suitable for displaying to
	// the user in an application interface. It can be detailed, or brief.
	// e.g. "80 Absolute Ave, Unit 1708, Mississauga, ON" e.g. "151 Charles
	// Street West"
	DisplayAddress string `json:"displayAddress,omitempty"`

	// GeoFeatureId: Filled if location_type is CUSTOM and this is a
	// resolved instance of a business (not for specific address locations).
	GeoFeatureId *GeostoreFeatureIdProto `json:"geoFeatureId,omitempty"`

	Lat float64 `json:"lat,omitempty"`

	Lng float64 `json:"lng,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "HOME"
	//   "WORK"
	//   "CHAIN"
	//   "CATEGORICAL"
	//   "CUSTOM"
	LocationType string `json:"locationType,omitempty"`

	// Name: Descriptive name, e.g. "43rd st new york", a user-edited place
	// name (e.g. "Gym"), or a reverse geocoded business name. This can be
	// any string.
	Name string `json:"name,omitempty"`

	// PersonalLocationMetadata: Deprecated in favor of
	// Reminder.personal_reference_metadata.
	PersonalLocationMetadata *CopleySourceTypeList `json:"personalLocationMetadata,omitempty"`

	// TtsAddress: A localized, shortened version of the address, suitable
	// for TTS. This originates in the LocationFrame.
	TtsAddress string `json:"ttsAddress,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminderLocation) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminderLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityActionsReminderLocation) UnmarshalJSON(data []byte) error {
	type NoMethod QualityActionsReminderLocation
	var s1 struct {
		Lat gensupport.JSONFloat64 `json:"lat"`
		Lng gensupport.JSONFloat64 `json:"lng"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Lat = float64(s1.Lat)
	s.Lng = float64(s1.Lng)
	return nil
}

// QualityActionsReminderLocationCategoryInfo: If LocationType is
// CATEGORICAL, this is info about the category. For example, the
// category "Grocery Stores" includes chains such as Safeway and Whole
// Foods.
type QualityActionsReminderLocationCategoryInfo struct {
	// DisplayName: A (localized) display string describing the category.
	// This is s generic string describing the category, and may be
	// different than the term the user actually said, e.g. name:
	// "supermarket", display_name: "Grocery Stores"
	DisplayName string `json:"displayName,omitempty"`

	// Possible values:
	//   "UNKNOWN_CATEGORY"
	//   "GROCERY_STORES"
	//   "ELECTRONICS_STORES"
	//   "HARDWARE_STORES"
	//   "PET_STORES"
	//   "PHARMACIES"
	//   "SHOPPING_CENTERS"
	//   "SPORTING_GOODS_STORES"
	//   "TOY_STORES"
	LocationCategory string `json:"locationCategory,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminderLocationCategoryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminderLocationCategoryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsReminderLocationChainInfo: If LocationType is CHAIN,
// this is info about the chain.
type QualityActionsReminderLocationChainInfo struct {
	// ChainMid: The freebase mid of the chain entity.
	ChainMid string `json:"chainMid,omitempty"`

	// ChainName: The geostore.NameProto.text (corresponding to the user's
	// language) at the time of reminder creation. In most cases, this is
	// the same as name, but there may be corner cases where they differ,
	// e.g. name: "bestbuy", chain_name: "Best Buy".
	ChainName string `json:"chainName,omitempty"`

	// FeatureId: The (corporate entity) chain's MapFacts feature id.
	FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChainMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChainMid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminderLocationChainInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminderLocationChainInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsReminderPerson: A representation of a person other than
// the current user, who may have created the reminder for the current
// user, or will receive it from them.
type QualityActionsReminderPerson struct {
	// DisplayName: REQUIRED. Their full name, which will be shown/spoken
	// when referring to this person informally, e.g. "You have 2 reminders
	// from Dave Smith."
	DisplayName string `json:"displayName,omitempty"`

	// EmailAddress: OPTIONAL. Their email address.
	EmailAddress string `json:"emailAddress,omitempty"`

	// GaiaId: REQUIRED. Their gaia id (used by the backend for CRUD
	// operations).
	GaiaId int64 `json:"gaiaId,omitempty,string"`

	// GivenName: REQUIRED. Their given name, which will be shown/spoken
	// when referring to this person informally, e.g. "You have 2 reminders
	// from Dave."
	GivenName string `json:"givenName,omitempty"`

	// PhotoUrl: OPTIONAL. The URL of the photo. This field is read from
	// photo field from go/people-api. Also see go/khdgk for URL formats.
	// This field might be missing if user does not have photo URL
	// available.
	PhotoUrl string `json:"photoUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminderPerson) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminderPerson
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsReminderRecurrenceInfo: Recurrence rule for specifying
// time-based repeating reminders.
type QualityActionsReminderRecurrenceInfo struct {
	// ClientId: OPTIONAL. Client-assigned-id for the recurring reminder
	ClientId string `json:"clientId,omitempty"`

	// Recurrence: The recurrence pattern.
	Recurrence *AssistantApiRecurrence `json:"recurrence,omitempty"`

	// RecurrenceId: An id which uniquely identifies a recurrence series.
	RecurrenceId string `json:"recurrenceId,omitempty"`

	// ServerId: REQUIRED. Server-assigned-id for the recurring reminder
	ServerId string `json:"serverId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsReminderRecurrenceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsReminderRecurrenceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsRingtone: Ringtone information used for the
// notification of timer and alarm.
type QualityActionsRingtone struct {
	// PauseDuration: The delay between each two sounds.
	PauseDuration *AssistantApiDuration `json:"pauseDuration,omitempty"`

	// SoundUrl: The sound urls will be used to play.
	SoundUrl []string `json:"soundUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PauseDuration") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PauseDuration") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsRingtone) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsRingtone
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsRoom: The room in which an alarm or timer resides
type QualityActionsRoom struct {
	HomegraphId string `json:"homegraphId,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HomegraphId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HomegraphId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsRoom) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsRoom
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityActionsTimer: Conceptually, timers are clocks that count down
// from an initial duration and notify when they reach 0. In practice,
// as a timer is running, it holds a stable expiration time and computes
// the remaining duration using the current time. When a timer is
// paused, it holds a stable remaining duration.
type QualityActionsTimer struct {
	// CreationTime: The time when this timer was created
	CreationTime *AssistantApiTimestamp `json:"creationTime,omitempty"`

	// Device: Identifies the device this timer belongs to.
	Device *AssistantApiSettingsDeviceSettings `json:"device,omitempty"`

	// ExpireTime: When not paused: the time the timer is (or was) scheduled
	// to expire, in milliseconds since the Unix epoch. This should be
	// deprecated and replaced by the expire_timer_time with DateTime type
	// once DateTime proto includes unix timestamp (b/63636831).
	ExpireTime int64 `json:"expireTime,omitempty,string"`

	// ExpireTimerTime: This is currently being only used only for the
	// response generation when the user describe the expired datatime as a
	// search constraint. We will used it for everything else once that for
	// filtering once DateTime proto includes unix timestamp (b/63636831)
	// and expire_time is deprecated.
	ExpireTimerTime *NlpSemanticParsingDatetimeDateTime `json:"expireTimerTime,omitempty"`

	// Id: A string key used as an identifier to this timer, unique for a
	// given Provider.
	Id string `json:"id,omitempty"`

	// Label: The label, provided by a user, associated with this timer.
	Label string `json:"label,omitempty"`

	// LastUpdated: The time when this timer was last updated (creation,
	// paused, resumed, etc.)
	LastUpdated *AssistantApiTimestamp `json:"lastUpdated,omitempty"`

	// OriginalDuration: The duration of the timer when it was started, in
	// milliseconds.
	OriginalDuration int64 `json:"originalDuration,omitempty,string"`

	// OriginalTimerDuration: The duration set for the timer. The
	// DateTimeModifier field is ignored. This field is currently only
	// experimental until we switch the Dialog code and gramnar to the new
	// format.
	OriginalTimerDuration *NlpSemanticParsingDatetimeDuration `json:"originalTimerDuration,omitempty"`

	// Provider: The provider that owns this alarm. For Android, this
	// includes the app that owns this alarm, where an intent should be sent
	// to modify it.
	Provider *AssistantApiCoreTypesProvider `json:"provider,omitempty"`

	// RemainingDuration: When PAUSED: the remaining duration in
	// milliseconds.
	RemainingDuration int64 `json:"remainingDuration,omitempty,string"`

	// RemainingTimerDuration: The duration remained for the timer. This is
	// needed because there is no expiration date for paused timer. The
	// DateTimeModifier field is ignored. This field is currently only
	// experimental until we switch the Dialog code and gramnar to the new
	// format.
	RemainingTimerDuration *NlpSemanticParsingDatetimeDuration `json:"remainingTimerDuration,omitempty"`

	// Ringtone: The ringtone will be played when the timer fires, it will
	// replace the beep sound if it is not empty.
	Ringtone *QualityActionsRingtone `json:"ringtone,omitempty"`

	// RingtoneTaskMetadata: Ringtone Task Metadata information used to
	// generate sound for firing the timer.
	RingtoneTaskMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadata `json:"ringtoneTaskMetadata,omitempty"`

	// Room: Contains info about the room the timer is in
	Room *QualityActionsRoom `json:"room,omitempty"`

	// Status: The current status of the timer.
	//
	// Possible values:
	//   "UNKNOWN_TIMER_STATUS"
	//   "RUNNING" - The timer is currently counting down.
	//   "PAUSED" - The timer is currently paused.
	//   "EXPIRED" - The timer has expired (and has notified the user).
	//   "RESET" - The timer is paused at its initial duration
	// (countdown_state is not set).
	Status string `json:"status,omitempty"`

	// Vibrate: Whether or not the device will vibrate when the timer fires.
	Vibrate bool `json:"vibrate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CreationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreationTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityActionsTimer) MarshalJSON() ([]byte, error) {
	type NoMethod QualityActionsTimer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityAuthorityTopicEmbeddingsVersionedItem: Proto populated into
// shards and copied to superroot. Message storing a versioned
// TopicEmbeddings scores. This is copied from TopicEmbeddings in
// docjoins.
type QualityAuthorityTopicEmbeddingsVersionedItem struct {
	PageEmbedding string `json:"pageEmbedding,omitempty"`

	// SiteEmbedding: Compressed site/page embeddings.
	SiteEmbedding string `json:"siteEmbedding,omitempty"`

	// SiteFocusScore: Number denoting how much a site is focused on one
	// topic.
	SiteFocusScore float64 `json:"siteFocusScore,omitempty"`

	// SiteRadius: The measure of how far page_embeddings deviate from the
	// site_embedding.
	SiteRadius float64 `json:"siteRadius,omitempty"`

	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PageEmbedding") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PageEmbedding") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityAuthorityTopicEmbeddingsVersionedItem) MarshalJSON() ([]byte, error) {
	type NoMethod QualityAuthorityTopicEmbeddingsVersionedItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityAuthorityTopicEmbeddingsVersionedItem) UnmarshalJSON(data []byte) error {
	type NoMethod QualityAuthorityTopicEmbeddingsVersionedItem
	var s1 struct {
		SiteFocusScore gensupport.JSONFloat64 `json:"siteFocusScore"`
		SiteRadius     gensupport.JSONFloat64 `json:"siteRadius"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SiteFocusScore = float64(s1.SiteFocusScore)
	s.SiteRadius = float64(s1.SiteRadius)
	return nil
}

type QualityCalypsoAppsLink struct {
	ApplicationId []string `json:"applicationId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsLink) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityCalypsoAppsUniversalAuLiveOpDetail: Contains the needed
// information for serving a single LiveOp/LiveEvent on AU. Next ID: 9
type QualityCalypsoAppsUniversalAuLiveOpDetail struct {
	// CountryLevelScheduleInformation: Key is country, and value is the
	// schedule information in that country.
	CountryLevelScheduleInformation map[string]QualityCalypsoAppsUniversalAuLiveOpEvent `json:"countryLevelScheduleInformation,omitempty"`

	// DefaultFormatInformation: Fallback option for the LiveOp format. We
	// will try en-US -> en -> any locale and get the first one that is
	// available.
	DefaultFormatInformation *QualityCalypsoAppsUniversalAuLiveOpFormat `json:"defaultFormatInformation,omitempty"`

	// DefaultScheduleInformation: Fallback option for the LiveOp event
	// scheduling information. Will use earliest start time and last end
	// time from PDC LiveOps data dump.
	DefaultScheduleInformation *QualityCalypsoAppsUniversalAuLiveOpEvent `json:"defaultScheduleInformation,omitempty"`

	// EventId: android
	EventId string `json:"eventId,omitempty"`

	// EventType: [REQUIRED] type of live op event.
	//
	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "MAJOR_UPDATE" - Major Update - An update which introduces major
	// changes.
	//   "SALE" - Sale - Time limited discount.
	//   "EVENT" - Event - A time limited event available in the game or
	// app.
	//   "CROSSOVER" - Crossover, also known as IP collaboration in JP -
	// This is an event involving a collaboration IP.
	//   "PRE_REG_UPDATE" - Pre-registration update - announcement for
	// pre-reg apps. Note that this maps to a subtype of Major Update in the
	// Play Console UI.
	//   "LOYALTY" - Loyalty LiveOps event. E.g. special points earn
	// promotion etc.
	//   "FIRST_PARTY_PROMOTION" - First party promotions funded by Play.
	//   "AUTO_GENERATED_SALE" - Sale events auto-generated by Play for apps
	// on sale, rather than a sale event as declared through PDC.
	//   "NEW_RELEASE" - Events for major new app releases. Auto-generated
	// by the recommendations backend.
	//   "IAP_SKU_SALE" - Sale events generated by sku config, rather than a
	// sale event as declared through PDC.
	//   "OFFER" - Offer - see offer types below for the types.
	// go/liveops-config-deals
	//   "IAP_SKU_DEALS" - Out-of-app purchasable in-app promotions funded
	// by Play.
	//   "FEATURED_PRODUCTS" - Out-of-app purchasable in-app products,
	// configured by developers through Play Console.
	// go/store-content-featured_product-prd
	// go/featured-in-app-products-pc-dd, go/featured-products-serving-dd
	EventType string `json:"eventType,omitempty"`

	// EventUrl: ios
	EventUrl string `json:"eventUrl,omitempty"`

	// LocaleLevelFormatInformation: Key is locale, and value is the format
	// information for that locale.
	LocaleLevelFormatInformation map[string]QualityCalypsoAppsUniversalAuLiveOpFormat `json:"localeLevelFormatInformation,omitempty"`

	Priority string `json:"priority,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CountryLevelScheduleInformation") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CountryLevelScheduleInformation") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalAuLiveOpDetail) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalAuLiveOpDetail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityCalypsoAppsUniversalAuLiveOpEvent: Contains the schedule for a
// single live-op event. Next ID: 4
type QualityCalypsoAppsUniversalAuLiveOpEvent struct {
	// EndTimestampMillis: [REQUIRED] End time in UTC for the live-op event.
	EndTimestampMillis int64 `json:"endTimestampMillis,omitempty,string"`

	// PreviewTimestampMillis: If specified, a live-op event must be shown
	// only after this preview-time (in UTC). Otherwise, the event can be
	// shown at any time as long as its before the end time.
	PreviewTimestampMillis int64 `json:"previewTimestampMillis,omitempty,string"`

	// StartTimestampMillis: [REQUIRED] Start time in UTC for the live-op
	// event.
	StartTimestampMillis int64 `json:"startTimestampMillis,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndTimestampMillis")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTimestampMillis") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalAuLiveOpEvent) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalAuLiveOpEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityCalypsoAppsUniversalAuLiveOpFormat: Contains the format
// information for a single LiveOp/LiveEvent. Next ID: 11
type QualityCalypsoAppsUniversalAuLiveOpFormat struct {
	Deeplink string `json:"deeplink,omitempty"`

	Description string `json:"description,omitempty"`

	// Eyebrow: iOS only, kind of event type
	Eyebrow string `json:"eyebrow,omitempty"`

	ImageUrl string `json:"imageUrl,omitempty"`

	OriginalImageUrl string `json:"originalImageUrl,omitempty"`

	SquareImageUrl string `json:"squareImageUrl,omitempty"`

	// Status: iOS only, sort of start schedule
	Status string `json:"status,omitempty"`

	Title string `json:"title,omitempty"`

	VideoId string `json:"videoId,omitempty"`

	VideoUrl string `json:"videoUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Deeplink") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Deeplink") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalAuLiveOpFormat) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalAuLiveOpFormat
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityCalypsoAppsUniversalAuLiveOpsDetailInfo: Stores all possible
// LiveOps/LiveEvents that are eligible to be shown for an app.
type QualityCalypsoAppsUniversalAuLiveOpsDetailInfo struct {
	LiveOpEvents []*QualityCalypsoAppsUniversalAuLiveOpDetail `json:"liveOpEvents,omitempty"`

	PackageName string `json:"packageName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LiveOpEvents") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LiveOpEvents") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalAuLiveOpsDetailInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalAuLiveOpsDetailInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityCalypsoAppsUniversalImage struct {
	FifeUrl string `json:"fifeUrl,omitempty"`

	Height int64 `json:"height,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FifeUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FifeUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalImage) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalImage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityCalypsoAppsUniversalImageData struct {
	// EnhancedImage: iOS cover image, which includes the uni image from UAM
	// only.
	EnhancedImage *QualityCalypsoAppsUniversalImage `json:"enhancedImage,omitempty"`

	// FeatureGraphic: aka. promotional image / cover image.
	FeatureGraphic *QualityCalypsoAppsUniversalImage `json:"featureGraphic,omitempty"`

	Screenshot []*QualityCalypsoAppsUniversalImage `json:"screenshot,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EnhancedImage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EnhancedImage") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCalypsoAppsUniversalImageData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCalypsoAppsUniversalImageData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityCopiaFireflySiteSignal: Proto message containing site-level
// signal for search stack. Because firefly_stats.proto depends on
// "//segindexer:compositedoc_proto", we cannot make perdocdata contain
// it.
type QualityCopiaFireflySiteSignal struct {
	DailyClicks int64 `json:"dailyClicks,omitempty,string"`

	DailyGoodClicks int64 `json:"dailyGoodClicks,omitempty,string"`

	DataTimeSec int64 `json:"dataTimeSec,omitempty,string"`

	FirstBoostedTimeSec int64 `json:"firstBoostedTimeSec,omitempty,string"`

	ImpressionsInBoostedPeriod int64 `json:"impressionsInBoostedPeriod,omitempty,string"`

	LatestBylineDateSec int64 `json:"latestBylineDateSec,omitempty,string"`

	LatestFirstseenSec int64 `json:"latestFirstseenSec,omitempty,string"`

	NumOfArticles8 int64 `json:"numOfArticles8,omitempty,string"`

	// NumOfArticlesByPeriods: number of articles (lattice article score is
	// 0.8 or more) sliced by 30 days (num_of_articles_by_periods[0] is the
	// newest).
	NumOfArticlesByPeriods googleapi.Int64s `json:"numOfArticlesByPeriods,omitempty"`

	NumOfGamblingPages int64 `json:"numOfGamblingPages,omitempty,string"`

	NumOfUrls int64 `json:"numOfUrls,omitempty,string"`

	// NumOfUrlsByPeriods: number of urls sliced by 30 days
	// (num_of_urls_by_periods[0] is the newest).
	NumOfUrlsByPeriods googleapi.Int64s `json:"numOfUrlsByPeriods,omitempty"`

	RecentImpForQuotaSystem int64 `json:"recentImpForQuotaSystem,omitempty,string"`

	// SiteFp: Hash value of the site. This will be used by our experiment
	// and analysis.
	SiteFp uint64 `json:"siteFp,omitempty,string"`

	TotalImpressions int64 `json:"totalImpressions,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DailyClicks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DailyClicks") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityCopiaFireflySiteSignal) MarshalJSON() ([]byte, error) {
	type NoMethod QualityCopiaFireflySiteSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityDialogManagerExternalIds: Various external IDs that we may
// have for a given LocalResult. These IDs can map to the corresponding
// result in other Google systems (KnowledgeGraph) or in third-party
// systems (OpenTable).
type QualityDialogManagerExternalIds struct {
	// BlueGingerSupportedServices: This field tells us whether this
	// LocalResult supports any of the services that Blue Ginger offers.
	BlueGingerSupportedServices *BlueGingerClientVisibleProtoBlueGingerSupportedServices `json:"blueGingerSupportedServices,omitempty"`

	KnowledgeGraphMid string `json:"knowledgeGraphMid,omitempty"`

	// MaddenSupportedActions: Google-internal actions supported by
	// go/madden for this LocalResult.
	MaddenSupportedActions *GeoOndemandAssistantSupportedActions `json:"maddenSupportedActions,omitempty"`

	OpenTableRestaurantId string `json:"openTableRestaurantId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BlueGingerSupportedServices") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "BlueGingerSupportedServices") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityDialogManagerExternalIds) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDialogManagerExternalIds
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityDialogManagerLocalIntentOptions struct {
	// Intent: LINT.ThenChange(
	// //depot/google3/googledata/nlp/generation/messages/assistant/\
	// dialog_LOCAL_LocalAssistantSchema/\
	// dialog.LOCAL.LocalAssistantSchema_zxx.genx.textpb,
	// //depot/google3/quality/dialog_manager/verticals/local/assistant/\
	// suggestion_chip_util.cc)
	//
	// Possible values:
	//   "UNKNOWN"
	//   "ADDRESS"
	//   "CALL"
	//   "DIRECTIONS"
	//   "HOURS"
	//   "INTERNAL_FOOD_ORDERING"
	//   "NEXT"
	//   "MENU"
	//   "PHONE_NUMBER"
	//   "RESERVATIONS"
	Intent []string `json:"intent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Intent") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Intent") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityDialogManagerLocalIntentOptions) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDialogManagerLocalIntentOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityDialogManagerLocalResult: A generic representation of a local
// result returned by a local backend. Next ID: 33
type QualityDialogManagerLocalResult struct {
	// AdminArea1: This field can represent different areas depending on the
	// country. For example in the US it is state but in Canada it would be
	// a province.
	AdminArea1 string `json:"adminArea1,omitempty"`

	// AvailableIntents: The set of available intents changes with result.
	// An intersection of available_intents and allowed_intents (See:
	// local_config.proto), is shown to the user.
	AvailableIntents *QualityDialogManagerLocalIntentOptions `json:"availableIntents,omitempty"`

	// BusinessType: Bitset of business types this result falls into. Many
	// fields in this message may be unset - expect good coverage for
	// restaurants and hotels for now, but not for other verticals.
	BusinessType *NlpSemanticParsingLocalBusinessType `json:"businessType,omitempty"`

	Country string `json:"country,omitempty"`

	// CountryCode: The two-letter ISO 3166-1 country code of this result.
	// Generated by FindFeatureCountryCode
	// http://google3/geostore/base/public/country.h?l=39&rcl=154898119 so
	// it should always be populated, but technically there is no guarantee.
	CountryCode string `json:"countryCode,omitempty"`

	// DistanceMeters: For a directions result, this field will be the
	// distance from the origin to this result using the best measure we
	// have available - the distance along a route, if we have one, or just
	// the crow's flight distance. For a local result, this field will be
	// the crow's flight distance from the user to the result.
	DistanceMeters uint64 `json:"distanceMeters,omitempty,string"`

	// DistanceUnits: The standard units of the location where the user is
	// based (not their current location). For example, miles for a user
	// from the US, kilometers for the UK. A US user currently in the UK
	// should have units read in miles.
	//
	// Possible values:
	//   "UNIT_UNKNOWN"
	//   "UNIT_NONE" - for scalar values
	//   "UNIT_DEGREES" - Temperature: "unqualified degrees", needed by
	// GenX.
	//   "UNIT_DEGREES_CELSIUS"
	//   "UNIT_DEGREES_FAHRENHEIT"
	//   "UNIT_DEGREES_KELVIN"
	//   "UNIT_MILLISECONDS"
	//   "UNIT_SECONDS"
	//   "UNIT_MINUTES"
	//   "UNIT_HOURS"
	//   "UNIT_DAYS"
	//   "UNIT_MILLIMETERS"
	//   "UNIT_CENTIMETERS"
	//   "UNIT_METERS"
	//   "UNIT_YARDS"
	//   "UNIT_KILOMETERS"
	//   "UNIT_MILES" - US Mile
	//   "UNIT_SCANDINAVIAN_MILES" - Scandinavian Mile, only supported for
	// Scandinavian languages, through the measurement library (not through
	// code).
	//   "UNIT_METERS_PER_SECOND"
	//   "UNIT_KILOMETERS_PER_HOUR"
	//   "UNIT_MILES_PER_HOUR" - US Mile/hour
	//   "UNIT_PERCENT"
	//   "UNIT_FEET"
	//   "UNIT_INCHES"
	//   "UNIT_HOURS_MINUTES_SECONDS" - Compound unit that expresses a
	// temporal duration in hours, minutes, and seconds. Used in conjunction
	// with numeric_value expressed in seconds. Examples: numeric_value = 1
	// "one second" numeric_value = 2 "two seconds" numeric_value = 30
	// "thirty seconds" numeric_value = 59 "fifty-nine seconds"
	// numeric_value = 60 "one minute" numeric_value = 61 "one minute and
	// one second" numeric_value = 119 "one minute and fifty-nine seconds"
	// numeric_value = 120 "two minutes" numeric_value = 121 "two minute and
	// one second" numeric_value = 3599 "fifty-nine minutes and fifty-nine
	// seconds" numeric_value = 3600 "one hour" numeric_value = 3601 "one
	// hour and one second"
	//   "UNIT_HOURS_MINUTES" - Compound unit that expresses a temporal
	// duration in hours and minutes. seconds. Used in conjunction with
	// numeric_value expressed in minutes. Examples: numeric_value = 1 "one
	// minute" numeric_value = 2 "two minutes" numeric_value = 30 "thirty
	// minutes" numeric_value = 59 "fifty-nine minutes" numeric_value = 60
	// "one hour" numeric_value = 61 "one hour one minute" numeric_value =
	// 119 "one hour fifty-nine minutes" numeric_value = 120 "two hours"
	// numeric_value = 121 "two hours one minute" numeric_value = 3599
	// "fifty-nine hours fifty-nine minutes""
	//   "UNIT_SPORTS_SCORE" - Sports scores are generally just numbers, but
	// sometimes these numbers need to be expressed in a certain format (for
	// example, "nil" instead of "zero" for GB locales in EN). This unit
	// allows this specialization, but otherwise acts as UNIT_NONE in
	// practice.
	//   "UNIT_WEEKS"
	//   "UNIT_MONTHS"
	//   "UNIT_YEARS"
	//   "UNIT_CALORIES" - kCal (i.e. Big Calorie)
	//   "UNIT_DAYS_HOURS_MINUTES_SECONDS" - Similar to
	// UNIT_HOURS_MINUTES_SECONDS, but with more headroom.
	//   "UNIT_WEEKS_DAYS_HOURS_MINUTES_SECONDS"
	//   "UNIT_ACRES"
	//   "UNIT_SQUARE_MILES"
	//   "UNIT_HECTARES"
	//   "UNIT_SQUARE_KILOMETERS" - Surface areas.
	//   "UNIT_SQUARE_CENTIMETERS"
	//   "UNIT_BAR" - Pressure
	//   "UNIT_KILOPASCAL"
	//   "UNIT_PSI"
	//   "UNIT_POUND" - Mass
	//   "UNIT_KILOGRAM"
	//   "UNIT_SHORT_TON"
	//   "UNIT_LONG_TON"
	//   "UNIT_METRIC_TON"
	//   "UNIT_OUNCE"
	//   "UNIT_GRAM"
	DistanceUnits string `json:"distanceUnits,omitempty"`

	// ExternalIds: Various external IDs that we may have for this result.
	ExternalIds *QualityDialogManagerExternalIds `json:"externalIds,omitempty"`

	// Possible values:
	//   "UNKNOWN_TYPE"
	//   "ESTABLISHMENT"
	//   "GEOCODE_ADDRESS"
	//   "GEOCODE_INTERSECTION"
	//   "GEOCODE_ROUTE"
	FeatureType string `json:"featureType,omitempty"`

	// InUserAdminArea1: If true, this LocalResult is located in the same
	// state as the user's location.
	InUserAdminArea1 bool `json:"inUserAdminArea1,omitempty"`

	// InUserCountry: If true, this LocalResult is located in the same
	// country as the user's location.
	InUserCountry bool `json:"inUserCountry,omitempty"`

	// InUserLocality: Whether this result is in the same city or town that
	// the user is in.
	InUserLocality bool `json:"inUserLocality,omitempty"`

	// InternalFoodOrderingMetadata: Internal Food ordering action (i.e food
	// ordering via Google) metadata.
	InternalFoodOrderingMetadata *LocalsearchProtoInternalFoodOrderingActionMetadata `json:"internalFoodOrderingMetadata,omitempty"`

	// IsBusinessChain: If the original query had a chain intent, and this
	// result is for a business chain.
	IsBusinessChain bool `json:"isBusinessChain,omitempty"`

	// Locality: City/Town.
	Locality string `json:"locality,omitempty"`

	// Name: The name of the result, extracted from its FeatureProto's name
	// field.
	Name string `json:"name,omitempty"`

	// Neighborhood: Neighborhood within a city. This field is not likely to
	// be set for towns or smaller cities.
	Neighborhood string `json:"neighborhood,omitempty"`

	// ResultId: All info we will need to lookup this result in search.
	ResultId *NlpSemanticParsingLocalLocalResultId `json:"resultId,omitempty"`

	StreetName string `json:"streetName,omitempty"`

	StreetNumber string `json:"streetNumber,omitempty"`

	// Synonym: A list of text synonyms the user could use to refer to the
	// result.
	Synonym []string `json:"synonym,omitempty"`

	// TtsAddress: The address of this result formatted for TTS output. This
	// formatting removes acronyms like 2-letter state codes as they cannot
	// be spoken well.
	TtsAddress string `json:"ttsAddress,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdminArea1") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdminArea1") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityDialogManagerLocalResult) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDialogManagerLocalResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityDialogManagerReminderClientType: Define Reminder Client Type.
// This field is for the purposes of 1) UX Customization: Reminder
// frontends can be configured to have a slightly different UX (e.g., A
// customized button on Hubpage. A customized notification layout.) 2)
// Metrics: Client can count how many Reminders with a certain client
// type are retrieved/mutated. (e.g., VEIDs in go/oparaw.) 3) Index:
// ListReminder can list all Reminders with a certain client type. 4)
// Visibility control: some frontends (identified by provenance type,
// shortn/_xVC9nY2Eb8) only have access to a subset of client types.
type QualityDialogManagerReminderClientType struct {
	// Possible values:
	//   "UNSPECIFIED"
	//   "ASSISTANT" - A regular Assistant Reminder.
	//   "FORESIGHT" - DEPRECATED. Foresight on WebAnswers callouts with a
	// notification that leads to the Reminders Hub.
	//   "FORESIGHT_TAP_TO_PAYLOAD" - Foresight on WebAnswers callouts with
	// a notification that leads to the Search payload
	// (go/foresight-reminders-callout-launch-report).
	//   "NBA_ALL_STAR_VOTING"
	//   "FORESIGHT_LONG_ANSWER"
	//   "FORESIGHT_WHEN_IS"
	//   "FORESIGHT_PORKY_PIG"
	//   "NOTES_AND_LISTS_SUGGESTION_CHIP"
	//   "FAMILY_NOTES"
	//   "PEOPLE_INTELLIGENCE" - People Intelligence reminders (go/cr-full)
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Type") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Type") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityDialogManagerReminderClientType) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDialogManagerReminderClientType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityDniDocPreviewRestrictions: Set of per-document markup
// restrictions based on go/eucd-indexing-design. Used for EUCD and
// global preview compliance. Next ID: 17
type QualityDniDocPreviewRestrictions struct {
	// BylineDateSecs: Publish date set by webmaster. See detailed
	// description here: http://shortn/_1eC0zzjR7k. Note that this will
	// currently only be set for canonical documents where byline date could
	// be extracted.
	BylineDateSecs int64 `json:"bylineDateSecs,omitempty,string"`

	// CrawlTsUsec: The time that the info in this attachment was computed
	// during crawl, in microseconds.
	CrawlTsUsec int64 `json:"crawlTsUsec,omitempty,string"`

	// ExtendedNewsPreviewsDomain: Whether this document comes from a domain
	// that is affected by Extended News Previews (ENP) and its status
	// (approved/rejected).
	ExtendedNewsPreviewsDomain *QualityDniExtendedNewsPreviews `json:"extendedNewsPreviewsDomain,omitempty"`

	// FaviconDisplay: Whether the favicon for a given domain should be
	// displayed. FAVICON_DISPLAY_UNSPECIFIED - Display the favicon
	// DISABLE_FAVICON - the favicon should not be rendered by the feature
	//
	// Possible values:
	//   "FAVICON_DISPLAY_UNSPECIFIED" - Not specified, no preview
	// policy-related restrictions apply (but other restrictions like Fair
	// Use still do).
	// go/protodosdonts#do-include-an-unspecified-value-in-an-enum
	//   "DISABLE_FAVICON" - Do not display the Favicon for the domain.
	FaviconDisplay string `json:"faviconDisplay,omitempty"`

	// FirstseenDateSecs: Firstseen date populated by indexing. It works as
	// fallback to byline_date if it doesn't exist. Note that this will
	// currently only be set for canonical documents where firstseen date
	// could be populated.
	FirstseenDateSecs int64 `json:"firstseenDateSecs,omitempty"`

	// IsAmp: Only be true when the page itself is an AMP page. For paired
	// AMP, the canonical page will have this bit as false.
	IsAmp bool `json:"isAmp,omitempty"`

	IsEucdDomain bool `json:"isEucdDomain,omitempty"`

	// MaxSnippetLength: The max number of snippet characters allowed. Based
	// on document markup. No limit if value is less than 0, Google could
	// use any length of snippets. Default value 0 is the strictest
	// restriction, to avoid violating mistakenly If not set, there is no
	// snippet length policy to enforce. Features must first check
	// has_max_snippet_length to avoid applying an overly strict policy.
	MaxSnippetLength int64 `json:"maxSnippetLength,omitempty"`

	// MaxSnippetLengthFromPublisher: Same as the max_snippet_length,
	// max_thumbnail_size, max_video_preview_secs listed above. But values
	// are based on publisher's preferences from Search Console's robots
	// meta tag tool.
	MaxSnippetLengthFromPublisher int64 `json:"maxSnippetLengthFromPublisher,omitempty"`

	MaxSnippetLengthPublisherDefault int64 `json:"maxSnippetLengthPublisherDefault,omitempty"`

	// MaxThumbnailSize: The max thumbnail size allowed. Based on document
	// markup Default value NONE is the strictest restriction, to avoid
	// violating mistakenly. If not set, there is no thumbnail policy to
	// enforce.
	//
	// Possible values:
	//   "THUMBNAIL_UNSPECIFIED" - Not specified, no preview policy-related
	// restrictions apply (but other restrictions like Fair Use still do).
	//   "NONE" - Publisher explicitly requires a no-image treatment.
	//   "STANDARD" - Translates to 50k pixels.
	//   "LARGE" - Translates to 300k pixels.
	MaxThumbnailSize string `json:"maxThumbnailSize,omitempty"`

	// Possible values:
	//   "THUMBNAIL_UNSPECIFIED" - Not specified, no preview policy-related
	// restrictions apply (but other restrictions like Fair Use still do).
	//   "NONE" - Publisher explicitly requires a no-image treatment.
	//   "STANDARD" - Translates to 50k pixels.
	//   "LARGE" - Translates to 300k pixels.
	MaxThumbnailSizeFromPublisher string `json:"maxThumbnailSizeFromPublisher,omitempty"`

	MaxThumbnailSizePublisherDefault int64 `json:"maxThumbnailSizePublisherDefault,omitempty"`

	// MaxVideoPreviewSecs: The max seconds of video preview allowed. Based
	// on document markup. No limit if value is less than 0, Google could
	// show any seconds of video. Default value 0 is the strictest
	// restriction, to avoid violating mistakenly If not set, there is no
	// preview length policy to enforce. Features must first check
	// has_max_video_preview_secs to avoid applying an overly strict policy.
	MaxVideoPreviewSecs int64 `json:"maxVideoPreviewSecs,omitempty"`

	MaxVideoPreviewSecsFromPublisher int64 `json:"maxVideoPreviewSecsFromPublisher,omitempty"`

	MaxVideoPreviewSecsPublisherDefault int64 `json:"maxVideoPreviewSecsPublisherDefault,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BylineDateSecs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BylineDateSecs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityDniDocPreviewRestrictions) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDniDocPreviewRestrictions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityDniExtendedNewsPreviews: When making changes to this proto,
// make sure to run: blaze test
// commerce/datastore/tools/codegen:code_generator_test blaze run
// commerce/datastore/tools/codegen:code_generator See
// http://go/cds-schema-council for details. LINT.IfChange
type QualityDniExtendedNewsPreviews struct {
	// CountryCode: Publisher's country code (ISO-3166) Used in V0.
	//
	// Possible values:
	//   "UNKNOWN_TWO_CHARACTER_COUNTRY_CODE"
	//   "AD"
	//   "AE"
	//   "AF"
	//   "AG"
	//   "AI"
	//   "AL"
	//   "AM"
	//   "AN"
	//   "AO"
	//   "AQ"
	//   "AR"
	//   "AS"
	//   "AT"
	//   "AU"
	//   "AW"
	//   "AX"
	//   "AZ"
	//   "BA"
	//   "BB"
	//   "BD"
	//   "BE"
	//   "BF"
	//   "BG"
	//   "BH"
	//   "BI"
	//   "BJ"
	//   "BL"
	//   "BM"
	//   "BN"
	//   "BO"
	//   "BQ"
	//   "BR"
	//   "BS"
	//   "BT"
	//   "BV"
	//   "BW"
	//   "BY"
	//   "BZ"
	//   "CA"
	//   "CC"
	//   "CD"
	//   "CF"
	//   "CG"
	//   "CH"
	//   "CI"
	//   "CK"
	//   "CL"
	//   "CM"
	//   "CN"
	//   "CO"
	//   "CR"
	//   "CS"
	//   "CU"
	//   "CV"
	//   "CW"
	//   "CX"
	//   "CY"
	//   "CZ"
	//   "DE"
	//   "DJ"
	//   "DK"
	//   "DM"
	//   "DO"
	//   "DZ"
	//   "EC"
	//   "EE"
	//   "EG"
	//   "EH"
	//   "ER"
	//   "ES"
	//   "ET"
	//   "EU"
	//   "FI"
	//   "FJ"
	//   "FK"
	//   "FM"
	//   "FO"
	//   "FR"
	//   "FX"
	//   "GA"
	//   "GB"
	//   "GD"
	//   "GE"
	//   "GF"
	//   "GG"
	//   "GH"
	//   "GI"
	//   "GL"
	//   "GM"
	//   "GN"
	//   "GP"
	//   "GQ"
	//   "GR"
	//   "GS"
	//   "GT"
	//   "GU"
	//   "GW"
	//   "GY"
	//   "HK"
	//   "HM"
	//   "HN"
	//   "HR"
	//   "HT"
	//   "HU"
	//   "ID"
	//   "IE"
	//   "IL"
	//   "IM"
	//   "IN"
	//   "IO"
	//   "IQ"
	//   "IR"
	//   "IS"
	//   "IT"
	//   "JE"
	//   "JM"
	//   "JO"
	//   "JP"
	//   "KE"
	//   "KG"
	//   "KH"
	//   "KI"
	//   "KM"
	//   "KN"
	//   "KP"
	//   "KR"
	//   "KW"
	//   "KY"
	//   "KZ"
	//   "LA"
	//   "LB"
	//   "LC"
	//   "LI"
	//   "LK"
	//   "LR"
	//   "LS"
	//   "LT"
	//   "LU"
	//   "LV"
	//   "LY"
	//   "MA"
	//   "MC"
	//   "MD"
	//   "ME"
	//   "MF"
	//   "MG"
	//   "MH"
	//   "MK"
	//   "ML"
	//   "MM"
	//   "MN"
	//   "MO"
	//   "MP"
	//   "MQ"
	//   "MR"
	//   "MS"
	//   "MT"
	//   "MU"
	//   "MV"
	//   "MW"
	//   "MX"
	//   "MY"
	//   "MZ"
	//   "NA"
	//   "NC"
	//   "NE"
	//   "NF"
	//   "NG"
	//   "NI"
	//   "NL"
	//   "NO"
	//   "NP"
	//   "NR"
	//   "NU"
	//   "NZ"
	//   "OM"
	//   "PA"
	//   "PE"
	//   "PF"
	//   "PG"
	//   "PH"
	//   "PK"
	//   "PL"
	//   "PM"
	//   "PN"
	//   "PR"
	//   "PS"
	//   "PT"
	//   "PW"
	//   "PY"
	//   "QA"
	//   "RE"
	//   "RO"
	//   "RS"
	//   "RU"
	//   "RW"
	//   "SA"
	//   "SB"
	//   "SC"
	//   "SD"
	//   "SE"
	//   "SG"
	//   "SH"
	//   "SI"
	//   "SJ"
	//   "SK"
	//   "SL"
	//   "SM"
	//   "SN"
	//   "SO"
	//   "SR"
	//   "SS"
	//   "ST"
	//   "SV"
	//   "SX"
	//   "SY"
	//   "SZ"
	//   "TC"
	//   "TD"
	//   "TF"
	//   "TG"
	//   "TH"
	//   "TJ"
	//   "TK"
	//   "TL"
	//   "TM"
	//   "TN"
	//   "TO"
	//   "TR"
	//   "TT"
	//   "TV"
	//   "TW"
	//   "TZ"
	//   "UA"
	//   "UG"
	//   "UK"
	//   "UM"
	//   "US"
	//   "UY"
	//   "UZ"
	//   "VA"
	//   "VC"
	//   "VE"
	//   "VG"
	//   "VI"
	//   "VN"
	//   "VU"
	//   "WF"
	//   "WS"
	//   "YE"
	//   "YT"
	//   "YU"
	//   "ZA"
	//   "ZM"
	//   "ZW"
	//   "ZZ"
	//   "NORDICS"
	CountryCode string `json:"countryCode,omitempty"`

	// DesnippetedCountryCode: List of countries that desnippet the
	// publisher. ISO 3166-1-alpha-2 country code (such as FR). See
	// go/iiuse#region-identifiers. Used in V1.
	DesnippetedCountryCode []string `json:"desnippetedCountryCode,omitempty"`

	// PolicyCriteriaBase64: Search Console Signals that modifies how policy
	// are calculated. Didn't add `wmconsole.EnpDesnippetingOverrideRules`
	// direcly to avoid cicular dependency issue:
	// go/enp-v2#bookmark=id.dvb1qcltabv9 ENPv2 proto
	// (EnpDesnippetingOverrideRules):
	// google3/crawler/wmconsole/proto/config_enp_desnippeting_override_rules
	// .proto
	PolicyCriteriaBase64 string `json:"policyCriteriaBase64,omitempty"`

	// Status: ENP status.
	//
	// Possible values:
	//   "STATUS_UNSPECIFIED" -
	// go/protodosdonts#do-include-an-unspecified-value-in-an-enum
	//   "GOOGLE_DEFAULT" - ENP accepted or pending state, no preview
	// restrictions and can be overridden by robots meta-tag. Deprecation
	// note: has been replaced for V1's `SHOW_SNIPPET` status
	//   "DEPRECATED_DO_NOT_USE_SHOW_SNIPPET_5" - Reserving old value to
	// make F1 schema happy.
	//   "ENP_REJECTED" - Publisher rejected ENP - no snippets, no markup
	// override. Deprecation note: has been replaced for V1's `DESNIPPET`
	// status
	//   "DEPRECATED_DO_NOT_USE_DESNIPPET_6" - Reserving old value to make
	// F1 schema happy.
	//   "INELIGIBLE_DOMAIN" - Domain not found in the list. Not eligible
	// for more processing. This could behave in the same manner as the
	// GOOGLE_DEFAULT option, but allows for separation of assumptions if
	// need be. Deprecation note: check for status code `kNotFound` to avoid
	// creating an ENP proto when is not needed.
	//   "QA_DESNIPPET" - This state is only used for QA/testing purposes.
	// Deprecation node: testing phase is over. Do not use.
	//   "SHOW_SNIPPET" - Similar to GOOGLE_DEFAULT - used in V1.
	//   "DESNIPPET" - Similar to ENP_REJECTED - used in V1.
	Status string `json:"status,omitempty"`

	// Version: The default version is V0 (for backward compatibility).
	//
	// Possible values:
	//   "VERSION_UNSPECIFIED" -
	// go/protodosdonts#do-include-an-unspecified-value-in-an-enum
	//   "V0" - The fields that will be used: status and country_code.
	// go/enp-v0
	//   "V1" - The fields that will be used: status and
	// desnippeted_country_code go/enp-v1
	//   "V2" - go/enp-v2
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityDniExtendedNewsPreviews) MarshalJSON() ([]byte, error) {
	type NoMethod QualityDniExtendedNewsPreviews
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityFringeFringeQueryPriorPerDocData: PerDocData for
// fringe-query-prior (built into the shards for eventual consumption at
// Fringe classification time). Not stored in DocJoins. NEXT ID: 11
type QualityFringeFringeQueryPriorPerDocData struct {
	EncodedCalibratedFringeSitePriorScore int64 `json:"encodedCalibratedFringeSitePriorScore,omitempty"`

	// EncodedChardXlqHoaxPrediction: An encoding of the Chard XLQ-hoax
	// prediction in [0,1].
	EncodedChardXlqHoaxPrediction int64 `json:"encodedChardXlqHoaxPrediction,omitempty"`

	// EncodedChardXlqYmylPrediction: An encoding of the Chard XLQ-YMYL
	// prediction in [0,1].
	EncodedChardXlqYmylPrediction int64 `json:"encodedChardXlqYmylPrediction,omitempty"`

	// EncodedDocumentFringeVulnerability: An estimate of the vulnerability
	// of this doc to show fringe content, based on the context around the
	// document. Can be interpreted as a 'safe' QScore threshold to use (see
	// go/doc-fringe-vulnerability for more info). Encoded for compactness
	// and to restrict visibility. Please contact fringe-ranking@ to get
	// access to quality_fringe::DocumentFringeVulnerabilityEncoding to
	// decode this field.
	EncodedDocumentFringeVulnerability int64 `json:"encodedDocumentFringeVulnerability,omitempty"`

	// EncodedEntityPriorScore: Highest entity prior seen for document's
	// Headline and SingleTopic entities (see go/topicality-score for
	// definitions of entity topicalities). Represents probability that a
	// query is fringe, given that the entity is in the result set with
	// topicality >= Headline. Scores scaled to integers between 0 and 1000
	// for compactness. Scores must be interpreted through
	// FringeQueryPriorEncoding::Decode API.
	EncodedEntityPriorScore int64 `json:"encodedEntityPriorScore,omitempty"`

	// EncodedFringePriorScore: Probability that a query is fringe, given
	// this document is in the result set. Scores scaled to integers between
	// 0 and 1000 for compactness. Scores must be interpreted through
	// FringeQueryPriorEncoding::Decode API.
	EncodedFringePriorScore int64 `json:"encodedFringePriorScore,omitempty"`

	// EncodedFringeSitePriorScore: Probability that a query is fringe,
	// given this document's site is in the result set. Scores scaled to
	// integers between 0 and 1000 for compactness. Scores must be
	// interpreted through FringeQueryPriorEncoding::Decode API.
	EncodedFringeSitePriorScore int64 `json:"encodedFringeSitePriorScore,omitempty"`

	// EncodedFringeSitePriorScoreForQfsTraining: Probability that a query
	// is fringe, given this document's site is in the result set. Does not
	// use signals with a dependency on the QueryFringeScore of a document.
	// Scores scaled to integers between 0 and 1000 for compactness. Scores
	// must be interpreted through FringeQueryPriorEncoding::Decode API.
	// Will NOT be present if the fringe_site_prior_score_for_qfs_training
	// is not significantly different from the site_prior_score.
	EncodedFringeSitePriorScoreForQfsTraining int64 `json:"encodedFringeSitePriorScoreForQfsTraining,omitempty"`

	// EncodedPredictedXlqScoreAndConfidence: A combined encoding of the
	// pXLQ score in [0,1] and the confidence with which that score should
	// be interpreted in [0,1].
	EncodedPredictedXlqScoreAndConfidence int64 `json:"encodedPredictedXlqScoreAndConfidence,omitempty"`

	// EncodedProximityScore: A score in [0, 1] representing the similarity
	// of this doc to known fringe-vulnerable 'seeds'. See
	// go/fringe-proximity for more information. Encoded for compactness and
	// to restrict visibility.
	EncodedProximityScore int64 `json:"encodedProximityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EncodedCalibratedFringeSitePriorScore") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "EncodedCalibratedFringeSitePriorScore") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityFringeFringeQueryPriorPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityFringeFringeQueryPriorPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityGenieComplexQueriesComplexQueriesOutputRewrite struct {
	Entities []*QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity `json:"entities,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "SIMPLE_SPLIT_LOW_CONFIDENCE" - E.g. A query where we are unsure if
	// we should split.
	//   "SIMPLE_SPLIT" - E.g. "Set a timer for 3 minutes and set a timer
	// for 6 minutes".
	//   "COMPLEX_SPLIT_LOW_CONFIDENCE" - E.g. "Set a timer for 3 and for 6
	// minutes".
	//   "COMPLEX_SPLIT_HIGH_CONFIDENCE" - E.g. "Set a timer for 3 minutes
	// and a timer for 6 minutes".
	//   "COMPARATIVE" - E.g. "Who is older Barack Obama or Justin Bieber".
	//   "HARDCODED_SPLIT_BY_REGEX" - E.g. "Play Madonna at volume 5".
	RewriteType string `json:"rewriteType,omitempty"`

	TextualRewrite string `json:"textualRewrite,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entities") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entities") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityGenieComplexQueriesComplexQueriesOutputRewrite) MarshalJSON() ([]byte, error) {
	type NoMethod QualityGenieComplexQueriesComplexQueriesOutputRewrite
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity struct {
	Mid string `json:"mid,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity) MarshalJSON() ([]byte, error) {
	type NoMethod QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityGeoBrainlocBrainlocAttachment: Compressed version of
// quality_geo_brainloc.goldmine.BrainlocAnnotation for indexing. (See
// BrainlocAnnotation for detailed documentation.) Next ID: 10
type QualityGeoBrainlocBrainlocAttachment struct {
	BrainlocVersion int64 `json:"brainlocVersion,omitempty"`

	TopCitiesRawScores []int64 `json:"topCitiesRawScores,omitempty"`

	// TopCitiesVocabIds: Compressed top locations and their scores.
	// *Locations are stored using their model vocab IDs. *Location scores
	// are stored using 14 bits of precision (2 bytes).
	TopCitiesVocabIds []int64 `json:"topCitiesVocabIds,omitempty"`

	TopCountiesRawScores []int64 `json:"topCountiesRawScores,omitempty"`

	TopCountiesVocabIds []int64 `json:"topCountiesVocabIds,omitempty"`

	TopCountriesRawScores []int64 `json:"topCountriesRawScores,omitempty"`

	TopCountriesVocabIds []int64 `json:"topCountriesVocabIds,omitempty"`

	TopStatesRawScores []int64 `json:"topStatesRawScores,omitempty"`

	TopStatesVocabIds []int64 `json:"topStatesVocabIds,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrainlocVersion") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrainlocVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityGeoBrainlocBrainlocAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod QualityGeoBrainlocBrainlocAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityLabelsGoogleLabelData struct {
	Label []*QualityLabelsGoogleLabelDataLabel `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityLabelsGoogleLabelData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityLabelsGoogleLabelData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityLabelsGoogleLabelDataLabel struct {
	// Confidence: If global_label_value is present, confidence is ignored.
	// confidence is DEPRECATED.
	Confidence float64 `json:"confidence,omitempty"`

	// GlobalLabelBucket: A byte-size value representing 64 * (1 +
	// global_label_value). Use this instead of global_label_value to save
	// on label storage. See quality_prose::LabelValueToBucket() for more
	// info.
	GlobalLabelBucket int64 `json:"globalLabelBucket,omitempty"`

	GlobalLabelValue float64 `json:"globalLabelValue,omitempty"`

	// LabelId: At least one of label_id and label_name must be filled in
	LabelId int64 `json:"labelId,omitempty"`

	LabelName string `json:"labelName,omitempty"`

	Provider []*QualityLabelsGoogleLabelDataLabelProvider `json:"provider,omitempty"`

	ProviderId googleapi.Uint64s `json:"providerId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityLabelsGoogleLabelDataLabel) MarshalJSON() ([]byte, error) {
	type NoMethod QualityLabelsGoogleLabelDataLabel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityLabelsGoogleLabelDataLabel) UnmarshalJSON(data []byte) error {
	type NoMethod QualityLabelsGoogleLabelDataLabel
	var s1 struct {
		Confidence       gensupport.JSONFloat64 `json:"confidence"`
		GlobalLabelValue gensupport.JSONFloat64 `json:"globalLabelValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.GlobalLabelValue = float64(s1.GlobalLabelValue)
	return nil
}

// QualityLabelsGoogleLabelDataLabelProvider: If Provider group is not
// present the provider is the legacy classifiers (with id 0) and the
// label_value provided by Google is the global_label_value.
type QualityLabelsGoogleLabelDataLabelProvider struct {
	// Feed: This field is intended to be deprecated. If id == 0 and feed is
	// true it means this label is from a feed. If id == 0 and feed is
	// false, this label is from "Google" If id != 0, feed is meaningless.
	Feed bool `json:"feed,omitempty"`

	// Id: We are currently using this field to indicate an id of the set of
	// classifiers that produced this label. This deviates from the original
	// intention. Also see ClassifierDescription and refer to
	// http://go/genre-labels-provider-id for further info.
	Id uint64 `json:"id,omitempty,string"`

	// LabelBucket: A byte-size value representing 64 * (1 +
	// global_label_value). Use it instead of global_label_value to save on
	// label storage.
	LabelBucket int64 `json:"labelBucket,omitempty"`

	LabelValue float64 `json:"labelValue,omitempty"`

	// Name: This name will only sometimes be filled in! Frontends can in
	// general expect this to be filled in, but it will not usually be
	// stored in backends.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Feed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Feed") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityLabelsGoogleLabelDataLabelProvider) MarshalJSON() ([]byte, error) {
	type NoMethod QualityLabelsGoogleLabelDataLabelProvider
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityLabelsGoogleLabelDataLabelProvider) UnmarshalJSON(data []byte) error {
	type NoMethod QualityLabelsGoogleLabelDataLabelProvider
	var s1 struct {
		LabelValue gensupport.JSONFloat64 `json:"labelValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LabelValue = float64(s1.LabelValue)
	return nil
}

type QualityNavboostCrapsAgingData struct {
	// LastMonthBucket: Documents with byline date younger than month at the
	// event time.
	LastMonthBucket *QualityNavboostCrapsAgingDataAgingAgeBucket `json:"lastMonthBucket,omitempty"`

	// LastWeekBucket: Documents with byline date younger than week at the
	// event time.
	LastWeekBucket *QualityNavboostCrapsAgingDataAgingAgeBucket `json:"lastWeekBucket,omitempty"`

	// LastYearBucket: Documents with byline date younger than year at the
	// event time.
	LastYearBucket *QualityNavboostCrapsAgingDataAgingAgeBucket `json:"lastYearBucket,omitempty"`

	// YearPlusBucket: Documents with byline date older than year at the
	// event time.
	YearPlusBucket *QualityNavboostCrapsAgingDataAgingAgeBucket `json:"yearPlusBucket,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LastMonthBucket") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastMonthBucket") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsAgingData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsAgingData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityNavboostCrapsAgingDataAgingAgeBucket struct {
	GoodClicks float64 `json:"goodClicks,omitempty"`

	Impressions float64 `json:"impressions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GoodClicks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GoodClicks") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsAgingDataAgingAgeBucket) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsAgingDataAgingAgeBucket
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNavboostCrapsAgingDataAgingAgeBucket) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNavboostCrapsAgingDataAgingAgeBucket
	var s1 struct {
		GoodClicks  gensupport.JSONFloat64 `json:"goodClicks"`
		Impressions gensupport.JSONFloat64 `json:"impressions"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GoodClicks = float64(s1.GoodClicks)
	s.Impressions = float64(s1.Impressions)
	return nil
}

// QualityNavboostCrapsCrapsClickSignals: Click / impression signals for
// craps. The tag numbers are the same as they were in the original
// CrapsData (below). This is deliberate.
type QualityNavboostCrapsCrapsClickSignals struct {
	// AbsoluteImpressions: Thus far this field is only used for host level
	// unsquashed impressions. When compressed (e.g., in perdocdata.proto,
	// CompressedQualitySignals), this value is represented individually and
	// thus is generally incompatible with the other values which are
	// compressed as click-ratios.
	AbsoluteImpressions float64 `json:"absoluteImpressions,omitempty"`

	BadClicks float64 `json:"badClicks,omitempty"`

	Clicks float64 `json:"clicks,omitempty"`

	GoodClicks float64 `json:"goodClicks,omitempty"`

	Impressions float64 `json:"impressions,omitempty"`

	LastLongestClicks float64 `json:"lastLongestClicks,omitempty"`

	// UnicornClicks: The subset of clicks that are associated with an event
	// from a Unicorn user.
	UnicornClicks float64 `json:"unicornClicks,omitempty"`

	// UnsquashedClicks: This is not being populated for the current format
	// - instead two instances of CrapsClickSignals (squashed/unsquashed)
	// are used. We are migrating to the new format where this field will be
	// populated.
	UnsquashedClicks float64 `json:"unsquashedClicks,omitempty"`

	// UnsquashedImpressions: This is not being populated for the current
	// format - instead two instances of CrapsClickSignals
	// (squashed/unsquashed) are used. We are migrating to the new format
	// where this field will be populated.
	UnsquashedImpressions float64 `json:"unsquashedImpressions,omitempty"`

	UnsquashedLastLongestClicks float64 `json:"unsquashedLastLongestClicks,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbsoluteImpressions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbsoluteImpressions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsCrapsClickSignals) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsCrapsClickSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNavboostCrapsCrapsClickSignals) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNavboostCrapsCrapsClickSignals
	var s1 struct {
		AbsoluteImpressions         gensupport.JSONFloat64 `json:"absoluteImpressions"`
		BadClicks                   gensupport.JSONFloat64 `json:"badClicks"`
		Clicks                      gensupport.JSONFloat64 `json:"clicks"`
		GoodClicks                  gensupport.JSONFloat64 `json:"goodClicks"`
		Impressions                 gensupport.JSONFloat64 `json:"impressions"`
		LastLongestClicks           gensupport.JSONFloat64 `json:"lastLongestClicks"`
		UnicornClicks               gensupport.JSONFloat64 `json:"unicornClicks"`
		UnsquashedClicks            gensupport.JSONFloat64 `json:"unsquashedClicks"`
		UnsquashedImpressions       gensupport.JSONFloat64 `json:"unsquashedImpressions"`
		UnsquashedLastLongestClicks gensupport.JSONFloat64 `json:"unsquashedLastLongestClicks"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AbsoluteImpressions = float64(s1.AbsoluteImpressions)
	s.BadClicks = float64(s1.BadClicks)
	s.Clicks = float64(s1.Clicks)
	s.GoodClicks = float64(s1.GoodClicks)
	s.Impressions = float64(s1.Impressions)
	s.LastLongestClicks = float64(s1.LastLongestClicks)
	s.UnicornClicks = float64(s1.UnicornClicks)
	s.UnsquashedClicks = float64(s1.UnsquashedClicks)
	s.UnsquashedImpressions = float64(s1.UnsquashedImpressions)
	s.UnsquashedLastLongestClicks = float64(s1.UnsquashedLastLongestClicks)
	return nil
}

// QualityNavboostCrapsCrapsData: NEXT TAG: 27
type QualityNavboostCrapsCrapsData struct {
	// AgingCounts: Contains counter for Aging signal (go/freshness-aging).
	// It's used internally by Craps/Aging pipeline.
	AgingCounts *QualityNavboostCrapsAgingData `json:"agingCounts,omitempty"`

	BadClicks float64 `json:"badClicks,omitempty"`

	Clicks float64 `json:"clicks,omitempty"`

	// Country: The two-letter uppercase country slice of the CrapsData.
	// Examples: "US", "FR", "BR"
	Country string `json:"country,omitempty"`

	// Device: The device interface and os slice of the CrapsData.
	Device *QualityNavboostCrapsCrapsDevice `json:"device,omitempty"`

	// Features: Contains CrapsClickSignals for specific features. (i.e. for
	// mobile, US, metro id - 123")
	Features []*QualityNavboostCrapsFeatureCrapsData `json:"features,omitempty"`

	GoodClicks float64 `json:"goodClicks,omitempty"`

	// Impressions: These fields may become legacy fields; we may retire
	// them and use the squashed field (below) instead, to allow for some
	// nesting.
	Impressions float64 `json:"impressions,omitempty"`

	// Language: The language slice of the CrapsData. Examples: "en", "fr",
	// "pt-BR",
	Language string `json:"language,omitempty"`

	// LastLongestClicks: The number of clicks that were last and longest in
	// related user queries.
	LastLongestClicks float64 `json:"lastLongestClicks,omitempty"`

	// MobileData: DO NOT USE: Use the above mobile_signals fields instead.
	// DO NOT REMOVE: Field is present in legacy protos in golden tests.
	MobileData *QualityNavboostCrapsCrapsData `json:"mobileData,omitempty"`

	// MobileSignals: The portion of this CrapsData aggregated on data from
	// tier 1/2 mobile interfaces in QSessions.
	MobileSignals *QualityNavboostCrapsCrapsClickSignals `json:"mobileSignals,omitempty"`

	// PackedIpAddress: Contains a packed string in network byte order, as
	// expected by CrapsIpPrior. Only populated if we looked up the
	// ip_prior_bad_fraction at retrieval time.
	PackedIpAddress string `json:"packedIpAddress,omitempty"`

	// PatternLevel: Level of pattern. More general patterns get higher
	// values. For URL patterns this field = 0. For example, if we have
	// "http://abc.def.ghi/xyz.html" level 0 pattern will be
	// "http://abc.def.ghi/xyz.html" level 1 pattern will be
	// "p://abc.def.ghi" level 2 pattern will be "p://def.ghi"
	PatternLevel int64 `json:"patternLevel,omitempty"`

	// PatternSccStats: For pattern data, this will contain stats of the
	// SCC's of the individual urls contributing to the pattern.
	PatternSccStats *QualityNavboostCrapsStatsWithWeightsProto `json:"patternSccStats,omitempty"`

	Query string `json:"query,omitempty"`

	// SliceTag: This field can be used by the craps pipeline to slice up
	// signals by various attributes such as device type, country, locale
	// etc. The slice_tag can be an arbitrary string, and the CrapsData
	// values for each slice_tag are aggregated separately, together with
	// the default empty slice_tag.
	SliceTag string `json:"sliceTag,omitempty"`

	// Squashed: Not used yet - we will probably move the impressions /
	// clicks / good_clicks bad clicks / last longest clicks into here from
	// top level, and rename those fields to legacy.
	Squashed *QualityNavboostCrapsCrapsClickSignals `json:"squashed,omitempty"`

	// UnscaledIpPriorBadFraction: Used to assign a prior based on IP
	// address. See quality/navboost/craps/craps-ip-prior.h. This value is
	// prior to the linear transformation (scaling / offset / min / max)
	// that's applied in craps-penalty.cc.
	UnscaledIpPriorBadFraction float64 `json:"unscaledIpPriorBadFraction,omitempty"`

	// Unsquashed: We will start using this one for the retuning rollout.
	Unsquashed *QualityNavboostCrapsCrapsClickSignals `json:"unsquashed,omitempty"`

	UnsquashedMobileSignals *QualityNavboostCrapsCrapsClickSignals `json:"unsquashedMobileSignals,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AgingCounts") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AgingCounts") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsCrapsData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsCrapsData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNavboostCrapsCrapsData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNavboostCrapsCrapsData
	var s1 struct {
		BadClicks                  gensupport.JSONFloat64 `json:"badClicks"`
		Clicks                     gensupport.JSONFloat64 `json:"clicks"`
		GoodClicks                 gensupport.JSONFloat64 `json:"goodClicks"`
		Impressions                gensupport.JSONFloat64 `json:"impressions"`
		LastLongestClicks          gensupport.JSONFloat64 `json:"lastLongestClicks"`
		UnscaledIpPriorBadFraction gensupport.JSONFloat64 `json:"unscaledIpPriorBadFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BadClicks = float64(s1.BadClicks)
	s.Clicks = float64(s1.Clicks)
	s.GoodClicks = float64(s1.GoodClicks)
	s.Impressions = float64(s1.Impressions)
	s.LastLongestClicks = float64(s1.LastLongestClicks)
	s.UnscaledIpPriorBadFraction = float64(s1.UnscaledIpPriorBadFraction)
	return nil
}

// QualityNavboostCrapsCrapsDevice: CrapsDevice has the gws interface,
// gws tier and operating system for events from QSessions.
type QualityNavboostCrapsCrapsDevice struct {
	// Possible values:
	//   "DEVICE_OS_UNKNOWN"
	//   "DEVICE_OS_OTHER"
	//   "DEVICE_OS_WINDOWS"
	//   "DEVICE_OS_OSX"
	//   "DEVICE_OS_LINUX"
	//   "DEVICE_OS_ANDROID"
	//   "DEVICE_OS_IOS"
	Os string `json:"os,omitempty"`

	// UxInterface: An enum taken from GWSLogEntryProto that indicates what
	// type of device a request came from. This includes an entry for
	// DESKTOP(1), MOBILE(2), and TABLET(3) devices. Reference: -
	// gwslog(608): GWSLogEntryProto.ux_interface
	UxInterface int64 `json:"uxInterface,omitempty"`

	// UxTier: Indicates the device browser tier for the given request. 1
	// means modern browsers, 3 means very old browsers, and 2 is everything
	// in the middle. See Reference: - gwslog(609): GWSLogEntryProto.ux_tier
	UxTier int64 `json:"uxTier,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Os") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Os") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsCrapsDevice) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsCrapsDevice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityNavboostCrapsFeatureCrapsData struct {
	// Country: Country, like "us". If not present, it's an aggregation for
	// all countries. This is the same format as one used in Glue.
	Country string `json:"country,omitempty"`

	// Device: Device, like "m". If not present, it's an aggregation for all
	// devices. "m" - mobile devices. "d" - destop devices.
	Device string `json:"device,omitempty"`

	// Language: Language, like "en". If not present, it's an aggregation
	// for all languages. This is the same format as one used in Glue.
	Language string `json:"language,omitempty"`

	// LocationId: Location id for metro and city. If not present, it's an
	// aggregation for all locations within current country.
	LocationId int64 `json:"locationId,omitempty"`

	// Signals: CRAPS Signals for the locale.
	Signals *QualityNavboostCrapsCrapsClickSignals `json:"signals,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Country") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Country") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsFeatureCrapsData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsFeatureCrapsData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityNavboostCrapsStatsWithWeightsProto struct {
	Hi float64 `json:"hi,omitempty"`

	Kind int64 `json:"kind,omitempty"`

	Lo float64 `json:"lo,omitempty"`

	Mean float64 `json:"mean,omitempty"`

	Median float64 `json:"median,omitempty"`

	N int64 `json:"n,omitempty"`

	Pc10 float64 `json:"pc10,omitempty"`

	Pc25 float64 `json:"pc25,omitempty"`

	Pc75 float64 `json:"pc75,omitempty"`

	Pc90 float64 `json:"pc90,omitempty"`

	StdError float64 `json:"stdError,omitempty"`

	Stddev float64 `json:"stddev,omitempty"`

	VarOfMean float64 `json:"varOfMean,omitempty"`

	Variance float64 `json:"variance,omitempty"`

	WeightedN float64 `json:"weightedN,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Hi") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Hi") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNavboostCrapsStatsWithWeightsProto) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNavboostCrapsStatsWithWeightsProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNavboostCrapsStatsWithWeightsProto) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNavboostCrapsStatsWithWeightsProto
	var s1 struct {
		Hi        gensupport.JSONFloat64 `json:"hi"`
		Lo        gensupport.JSONFloat64 `json:"lo"`
		Mean      gensupport.JSONFloat64 `json:"mean"`
		Median    gensupport.JSONFloat64 `json:"median"`
		Pc10      gensupport.JSONFloat64 `json:"pc10"`
		Pc25      gensupport.JSONFloat64 `json:"pc25"`
		Pc75      gensupport.JSONFloat64 `json:"pc75"`
		Pc90      gensupport.JSONFloat64 `json:"pc90"`
		StdError  gensupport.JSONFloat64 `json:"stdError"`
		Stddev    gensupport.JSONFloat64 `json:"stddev"`
		VarOfMean gensupport.JSONFloat64 `json:"varOfMean"`
		Variance  gensupport.JSONFloat64 `json:"variance"`
		WeightedN gensupport.JSONFloat64 `json:"weightedN"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Hi = float64(s1.Hi)
	s.Lo = float64(s1.Lo)
	s.Mean = float64(s1.Mean)
	s.Median = float64(s1.Median)
	s.Pc10 = float64(s1.Pc10)
	s.Pc25 = float64(s1.Pc25)
	s.Pc75 = float64(s1.Pc75)
	s.Pc90 = float64(s1.Pc90)
	s.StdError = float64(s1.StdError)
	s.Stddev = float64(s1.Stddev)
	s.VarOfMean = float64(s1.VarOfMean)
	s.Variance = float64(s1.Variance)
	s.WeightedN = float64(s1.WeightedN)
	return nil
}

// QualityNsrExperimentalNsrTeamData: Experimental NsrTeam data. This is
// a proto containing versioned signals which can be used to run live
// experiments. This proto will not be propagated to MDU shards, but it
// will be populated at query time by go/web-signal-joins inside the
// CompressedQualitySignals subproto of PerDocData proto. See go/0DayLEs
// for the design doc. Note how this is only meant to be used during
// LEs, it should *not* be used for launches.
type QualityNsrExperimentalNsrTeamData struct {
	VersionedSignals []*QualityNsrExperimentalNsrTeamScoringSignal `json:"versionedSignals,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VersionedSignals") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VersionedSignals") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrExperimentalNsrTeamData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrExperimentalNsrTeamData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityNsrExperimentalNsrTeamScoringSignal: The versioned signals
// used by the ExperimentalNsrTeamData proto.
type QualityNsrExperimentalNsrTeamScoringSignal struct {
	ValueBool bool `json:"valueBool,omitempty"`

	ValueDouble float64 `json:"valueDouble,omitempty"`

	ValueFloat float64 `json:"valueFloat,omitempty"`

	ValueInt32 int64 `json:"valueInt32,omitempty"`

	ValueUint32 int64 `json:"valueUint32,omitempty"`

	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ValueBool") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ValueBool") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrExperimentalNsrTeamScoringSignal) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrExperimentalNsrTeamScoringSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrExperimentalNsrTeamScoringSignal) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrExperimentalNsrTeamScoringSignal
	var s1 struct {
		ValueDouble gensupport.JSONFloat64 `json:"valueDouble"`
		ValueFloat  gensupport.JSONFloat64 `json:"valueFloat"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ValueDouble = float64(s1.ValueDouble)
	s.ValueFloat = float64(s1.ValueFloat)
	return nil
}

// QualityNsrExperimentalNsrTeamWSJData: This is a wrapper needed for
// the WSJ corpus. We want the WSJ RPCs to inject both the
// experimental_data and the keys, and as of June 2022 these need to be
// first level members of the proto.
type QualityNsrExperimentalNsrTeamWSJData struct {
	ExperimentalNsrTeamData *QualityNsrExperimentalNsrTeamData `json:"experimentalNsrTeamData,omitempty"`

	// LookupKey: The key used to lookup this data in the WSJ corpus. The
	// WSJ data is sitechunk-level, however the documents in the MDU shards
	// are simply urls. WSJ does a mapping from url -> {primary_chunk,
	// secondary, fallbacks, etc.} and retrieves all the keys from the
	// corpus. This lookup key field will keep track of which key was used
	// for this particular lookup.
	LookupKey string `json:"lookupKey,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExperimentalNsrTeamData") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExperimentalNsrTeamData")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrExperimentalNsrTeamWSJData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrExperimentalNsrTeamWSJData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityNsrNSRVersionedData: Versioned NSR score data.
type QualityNsrNSRVersionedData struct {
	// Value: The corresponding NSR value.
	Value float64 `json:"value,omitempty"`

	// VersionId: The unique id of the version, preferably just scaled: 19.1
	// x 10 = 191.
	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Value") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Value") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNSRVersionedData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNSRVersionedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrNSRVersionedData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrNSRVersionedData
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// QualityNsrNsrChunksProto: The NsrChunksProto corresponds to the
// NSRChunks class. The data saved by the proto and the class is the
// same. We provide utilities to go from one to the other.
type QualityNsrNsrChunksProto struct {
	// PrimaryChunk: Primary NSR sitechunk. In most of the cases it's same
	// as HOST_LEVEL_V3 sitechunked canonical url of the document. In rare,
	// but important cases it's based on page markup (see
	// quality/nsr/util/sitechunker.h for details).
	PrimaryChunk string `json:"primaryChunk,omitempty"`

	// SecondaryChunks: Secondary NSR sitechunk. When present, it provides
	// more granular chunking than primary sitechunks (see
	// quality/nsr/util/sitechunker.h for details). Note that the NSRChunks
	// class does not store trivial secondary chunks. Be aware of this when
	// constructing NsrChunksProto from scratch.
	SecondaryChunks []string `json:"secondaryChunks,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PrimaryChunk") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PrimaryChunk") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNsrChunksProto) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNsrChunksProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityNsrNsrChunksWithSourceInfo struct {
	NsrChunks *QualityNsrNsrChunksProto `json:"nsrChunks,omitempty"`

	// SiteChunkSource: These are annotated in the Goldmine NSR annotator.
	//
	// Possible values:
	//   "SITE_CHUNK_SOURCE_UNKNOWN"
	//   "SITE_CHUNK_SOURCE_WEBUTIL" - As of June 2021 this corresponds to
	// HOST_LEVEL_V3 granularity.
	//   "SITE_CHUNK_SOURCE_BREADCRUMBS"
	//   "SITE_CHUNK_SOURCE_AUTHOR"
	//   "SITE_CHUNK_SOURCE_COOKBOOK"
	//   "SITE_CHUNK_SOURCE_CRAWLED_SELLER_DATA"
	SiteChunkSource string `json:"siteChunkSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NsrChunks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NsrChunks") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNsrChunksWithSourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNsrChunksWithSourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityNsrNsrData: NOTE: When adding a new field to be propagated to
// Raffia check if NsrPatternSignalSpec needs to be updated. Next ID: 52
type QualityNsrNsrData struct {
	// ArticleScore: Score from article classification of the site.
	ArticleScore float64 `json:"articleScore,omitempty"`

	ArticleScoreV2 float64 `json:"articleScoreV2,omitempty"`

	// ChardEncoded: Site-level chard score: site quality predictor based on
	// content.
	ChardEncoded int64 `json:"chardEncoded,omitempty"`

	ChardVariance float64 `json:"chardVariance,omitempty"`

	// ClusterId: An id for defining clusters of sites. Used in ecosystem
	// experiments (project Tundra).
	ClusterId int64 `json:"clusterId,omitempty"`

	ClusterUplift *QualityNsrNsrDataClusterUplift `json:"clusterUplift,omitempty"`

	// ClutterScore: Delta site-level signal in Q* penalizing sites with a
	// large number of distracting/annoying resources loaded by the site
	// (see go/clutter-v0).
	ClutterScore float64 `json:"clutterScore,omitempty"`

	ClutterScores []*QualityNsrVersionedFloatSignal `json:"clutterScores,omitempty"`

	DirectFrac float64 `json:"directFrac,omitempty"`

	// HealthScore: Categorical signals.
	HealthScore float64 `json:"healthScore,omitempty"`

	Host string `json:"host,omitempty"`

	// I18nBucket: Currently corresponds to i18n_g42_bucket.
	I18nBucket int64 `json:"i18nBucket,omitempty"`

	// Impressions: Site-level impressions.
	Impressions float64 `json:"impressions,omitempty"`

	// IsCovidLocalAuthority: Bit to determine whether the site has the
	// local authority covid signal, as computed by go/covid-local-authority
	IsCovidLocalAuthority bool `json:"isCovidLocalAuthority,omitempty"`

	// IsElectionAuthority: Bit to determine whether the site has the
	// election authority signal, as computed by go/election-authority
	IsElectionAuthority bool `json:"isElectionAuthority,omitempty"`

	// IsVideoFocusedSite: Bit to determine whether the site has mostly
	// video content, but is not hosted on any known video-hosting domains.
	// Site is considered to be video-focused, if it has > 50% of the URLs
	// with watch pages (with smoothing prior). ariane/4045246
	IsVideoFocusedSite bool `json:"isVideoFocusedSite,omitempty"`

	Language int64 `json:"language,omitempty"`

	LargeOrgId int64 `json:"largeOrgId,omitempty"`

	// LocalityScore: Locality score of the site, i.e. the locality
	// component of the LocalAuthority signal (see go/pq-localauthority).
	LocalityScore float64 `json:"localityScore,omitempty"`

	Metadata *QualityNsrNsrDataMetadata `json:"metadata,omitempty"`

	// NewNsr: This field used as a temporary field for clean transitions
	// when we need to roll out Q* and NSR changes simultaneously.
	NewNsr float64 `json:"newNsr,omitempty"`

	Nsr float64 `json:"nsr,omitempty"`

	// NsrEpoch: The epoch from which this NSR value is coming from.
	NsrEpoch string `json:"nsrEpoch,omitempty"`

	// NsrOverrideBid: This signal is used to unconditionally override NSR
	// as a bid in Q*. Should only be used in case of emergency (see
	// go/nsr-override-bid). To have any effect, the value should be present
	// and greater than 0.001.
	NsrOverrideBid float64 `json:"nsrOverrideBid,omitempty"`

	// NsrVariance: NSR variance logodds [0, infinity).
	NsrVariance float64 `json:"nsrVariance,omitempty"`

	// NsrdataFromFallbackPatternKey: If true indicates that we do not have
	// NSR data computed for the chunk, and instead the data is coming from
	// an average of other host chunks.
	NsrdataFromFallbackPatternKey bool `json:"nsrdataFromFallbackPatternKey,omitempty"`

	// Pnav: Fractional signals.
	Pnav float64 `json:"pnav,omitempty"`

	// PriorAdjustedNsr: NSR - prior. Estimate of whether the site is
	// above/below average NSR in its slice.
	PriorAdjustedNsr []*QualityNsrVersionedFloatSignal `json:"priorAdjustedNsr,omitempty"`

	// SecondarySiteChunk: Secondary NSR sitechunk. When present, it
	// provides more granular chunking than primary sitechunks (see
	// quality/nsr/util/sitechunker.h for details).
	SecondarySiteChunk string `json:"secondarySiteChunk,omitempty"`

	ShoppingScore float64 `json:"shoppingScore,omitempty"`

	// SiteAutopilotScore: Aggregated value of url autopilot scores for this
	// sitechunk.
	SiteAutopilotScore float64 `json:"siteAutopilotScore,omitempty"`

	// SiteChunk: Primary NSR sitechunk. In most of the cases it's same as
	// HOST_LEVEL_V3 sitechunked canonical url of the document. In rare, but
	// important cases it's based on page markup (see
	// quality/nsr/util/sitechunker.h for details).
	SiteChunk string `json:"siteChunk,omitempty"`

	// SiteChunkSource: These are only annotated in the Goldmine NSR
	// annotator.
	//
	// Possible values:
	//   "SITE_CHUNK_SOURCE_UNKNOWN"
	//   "SITE_CHUNK_SOURCE_HOST_V2" - As of June 2021 this actually
	// corresponds to HOST_LEVEL_V3 granularity.
	//   "SITE_CHUNK_SOURCE_BREADCRUMBS"
	//   "SITE_CHUNK_SOURCE_AUTHOR"
	//   "SITE_CHUNK_SOURCE_COOKBOOK"
	//   "SITE_CHUNK_SOURCE_CRAWLED_SELLER_DATA"
	SiteChunkSource string `json:"siteChunkSource,omitempty"`

	// SiteLinkIn: Average value of the site_link_in for pages in the
	// sitechunk.
	SiteLinkIn float64 `json:"siteLinkIn,omitempty"`

	// SiteLinkOut: Aggregated value of url link out scores for this
	// sitechunk.
	SiteLinkOut float64 `json:"siteLinkOut,omitempty"`

	SitePr float64 `json:"sitePr,omitempty"`

	// SiteQualityStddev: Estimate of site's PQ rating stddev--spread of the
	// page-level PQ ratings of a site. Note this is different from
	// nsr_variance which predicts error of NSR itself from the aggregated
	// site-level rating.
	SiteQualityStddev float64 `json:"siteQualityStddev,omitempty"`

	// SpambrainLavcScore: The SpamBrain LAVC score, as of July 2022. See
	// more information at go/cloverfield-lavc-deck.
	SpambrainLavcScore float64 `json:"spambrainLavcScore,omitempty"`

	SpambrainLavcScores []*QualityNsrVersionedFloatSignal `json:"spambrainLavcScores,omitempty"`

	// Tofu: Site-level tofu score: site quality predictor based on content.
	Tofu float64 `json:"tofu,omitempty"`

	UgcScore float64 `json:"ugcScore,omitempty"`

	Url string `json:"url,omitempty"`

	// VersionedAsrData: Versioned map of ASR (authenticity) values.
	VersionedAsrData []*QualityNsrVersionedFloatSignal `json:"versionedAsrData,omitempty"`

	// VersionedData: Versioned map of NSR values for experimenting with the
	// next release.
	VersionedData []*QualityNsrNSRVersionedData `json:"versionedData,omitempty"`

	VideoScore float64 `json:"videoScore,omitempty"`

	// Vlq: Score of the Video LQ model.
	Vlq float64 `json:"vlq,omitempty"`

	// VlqNsr: NSR from a headroom model targeting low-quality video sites.
	VlqNsr float64 `json:"vlqNsr,omitempty"`

	YmylNewsV2Score float64 `json:"ymylNewsV2Score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ArticleScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ArticleScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNsrData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNsrData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrNsrData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrNsrData
	var s1 struct {
		ArticleScore       gensupport.JSONFloat64 `json:"articleScore"`
		ArticleScoreV2     gensupport.JSONFloat64 `json:"articleScoreV2"`
		ChardVariance      gensupport.JSONFloat64 `json:"chardVariance"`
		ClutterScore       gensupport.JSONFloat64 `json:"clutterScore"`
		DirectFrac         gensupport.JSONFloat64 `json:"directFrac"`
		HealthScore        gensupport.JSONFloat64 `json:"healthScore"`
		Impressions        gensupport.JSONFloat64 `json:"impressions"`
		LocalityScore      gensupport.JSONFloat64 `json:"localityScore"`
		NewNsr             gensupport.JSONFloat64 `json:"newNsr"`
		Nsr                gensupport.JSONFloat64 `json:"nsr"`
		NsrOverrideBid     gensupport.JSONFloat64 `json:"nsrOverrideBid"`
		NsrVariance        gensupport.JSONFloat64 `json:"nsrVariance"`
		Pnav               gensupport.JSONFloat64 `json:"pnav"`
		ShoppingScore      gensupport.JSONFloat64 `json:"shoppingScore"`
		SiteAutopilotScore gensupport.JSONFloat64 `json:"siteAutopilotScore"`
		SiteLinkIn         gensupport.JSONFloat64 `json:"siteLinkIn"`
		SiteLinkOut        gensupport.JSONFloat64 `json:"siteLinkOut"`
		SitePr             gensupport.JSONFloat64 `json:"sitePr"`
		SiteQualityStddev  gensupport.JSONFloat64 `json:"siteQualityStddev"`
		SpambrainLavcScore gensupport.JSONFloat64 `json:"spambrainLavcScore"`
		Tofu               gensupport.JSONFloat64 `json:"tofu"`
		UgcScore           gensupport.JSONFloat64 `json:"ugcScore"`
		VideoScore         gensupport.JSONFloat64 `json:"videoScore"`
		Vlq                gensupport.JSONFloat64 `json:"vlq"`
		VlqNsr             gensupport.JSONFloat64 `json:"vlqNsr"`
		YmylNewsV2Score    gensupport.JSONFloat64 `json:"ymylNewsV2Score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ArticleScore = float64(s1.ArticleScore)
	s.ArticleScoreV2 = float64(s1.ArticleScoreV2)
	s.ChardVariance = float64(s1.ChardVariance)
	s.ClutterScore = float64(s1.ClutterScore)
	s.DirectFrac = float64(s1.DirectFrac)
	s.HealthScore = float64(s1.HealthScore)
	s.Impressions = float64(s1.Impressions)
	s.LocalityScore = float64(s1.LocalityScore)
	s.NewNsr = float64(s1.NewNsr)
	s.Nsr = float64(s1.Nsr)
	s.NsrOverrideBid = float64(s1.NsrOverrideBid)
	s.NsrVariance = float64(s1.NsrVariance)
	s.Pnav = float64(s1.Pnav)
	s.ShoppingScore = float64(s1.ShoppingScore)
	s.SiteAutopilotScore = float64(s1.SiteAutopilotScore)
	s.SiteLinkIn = float64(s1.SiteLinkIn)
	s.SiteLinkOut = float64(s1.SiteLinkOut)
	s.SitePr = float64(s1.SitePr)
	s.SiteQualityStddev = float64(s1.SiteQualityStddev)
	s.SpambrainLavcScore = float64(s1.SpambrainLavcScore)
	s.Tofu = float64(s1.Tofu)
	s.UgcScore = float64(s1.UgcScore)
	s.VideoScore = float64(s1.VideoScore)
	s.Vlq = float64(s1.Vlq)
	s.VlqNsr = float64(s1.VlqNsr)
	s.YmylNewsV2Score = float64(s1.YmylNewsV2Score)
	return nil
}

// QualityNsrNsrDataClusterUplift: The uplift-per-cluster values used in
// Tundra's uplift arm.
type QualityNsrNsrDataClusterUplift struct {
	// Local: Score for the local sites arm.
	Local float64 `json:"local,omitempty"`

	// Small: Score for the small sites arm.
	Small float64 `json:"small,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Local") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Local") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNsrDataClusterUplift) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNsrDataClusterUplift
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrNsrDataClusterUplift) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrNsrDataClusterUplift
	var s1 struct {
		Local gensupport.JSONFloat64 `json:"local"`
		Small gensupport.JSONFloat64 `json:"small"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Local = float64(s1.Local)
	s.Small = float64(s1.Small)
	return nil
}

// QualityNsrNsrDataMetadata: Contains meta information about this data.
// This field is only available in docjoins (and potentially MDU
// shards), it is not populated offline. NOTE: This is a new field (Nov
// 2022) and we do not want clients to depend on this; please contact
// qscore-team@ if you want to use this information.
type QualityNsrNsrDataMetadata struct {
	// EncodedLookupInformation: Encoded lookup information. The fields set
	// above are expensive to store. Storing them in docjoins is fine, but
	// we cannot store them in MDU shards. In order for the MDU shards to
	// display field provenance information, we store them as a bitfield.
	// For details about the encoding and decoding scheme, see
	// quality_nsr::util::EncodeMetadataLookupInformation. We expect this to
	// occupy 8 bytes as long as there are less than 64 fields in NsrData
	// proto, 12 bytes between 64 and 92 fields, etc.
	EncodedLookupInformation string `json:"encodedLookupInformation,omitempty"`

	// GoldmineLookupKeyPerField: Same as raffia_lookup_key_per_field. Note
	// that the goldmine_lookups have priority; if a field appears in both
	// goldmine and raffia entries, it means it was taken from goldmine. If
	// it's missing here but present in raffia_lookup_key_per_field, it was
	// taken from raffia.
	GoldmineLookupKeyPerField map[string]int64 `json:"goldmineLookupKeyPerField,omitempty"`

	// GoldmineLookupKeys: The lookup keys attempted by goldmine. Note that
	// goldmine only runs for urls which can be chunked differently than
	// raffia; in those cases, goldmine related fields are empty.
	GoldmineLookupKeys []string `json:"goldmineLookupKeys,omitempty"`

	LastTimeProcessedGoldmineInSeconds int64 `json:"lastTimeProcessedGoldmineInSeconds,omitempty,string"`

	// LastTimeProcessedMduInSeconds: This field is populated only during
	// MDU population, so it's *not* present in docjoins, but it's present
	// in production so that it can be displayed.
	LastTimeProcessedMduInSeconds int64 `json:"lastTimeProcessedMduInSeconds,omitempty,string"`

	// LastTimeProcessedRaffiaInSeconds: Records the last time each system
	// has processed the proto. These are recorded as seconds from the unix
	// epoch. Ideally these fields would be google.protobuf.Timestamp, but
	// the scoring bundle (which depends on this proto) does not understand
	// proto3 syntax. See cl/500942047 for details.
	LastTimeProcessedRaffiaInSeconds int64 `json:"lastTimeProcessedRaffiaInSeconds,omitempty,string"`

	// NsrChunksWithSourceInfo: Stores the NSRChunks (computed by goldmine)
	// which were used to populate the data.
	NsrChunksWithSourceInfo *QualityNsrNsrChunksWithSourceInfo `json:"nsrChunksWithSourceInfo,omitempty"`

	RaffiaLookupKey string `json:"raffiaLookupKey,omitempty"`

	// RaffiaLookupKeyPerField: Returns the raffia lookup key per each field
	// in the NsrData proto (with exclusion of the Metadata sub-message
	// (i.e. this)). It contains information like 3 : 1, meaning that the
	// field inside NsrData with id '3' (in this case 'host') has been taken
	// by raffia from the raffia lookup key at index 1.
	RaffiaLookupKeyPerField map[string]int64 `json:"raffiaLookupKeyPerField,omitempty"`

	// RaffiaLookupKeys: This is an internal field set by Raffia, to
	// indicate which lookup keys have been attempted to populate the
	// NsrData for this document. This will allow us to determine which key
	// has been used to populate each field in the proto. The keys are
	// ordered by lookup priority; raffia will give priority to earlier
	// keys, and only take fields from later keys if they are missing.
	RaffiaLookupKeys []string `json:"raffiaLookupKeys,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EncodedLookupInformation") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncodedLookupInformation")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrNsrDataMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrNsrDataMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityNsrPQData: Next id: 17
type QualityNsrPQData struct {
	// Chard: URL-level chard prediction (encoded as an int).
	Chard int64 `json:"chard,omitempty"`

	DeltaAutopilotScore float64 `json:"deltaAutopilotScore,omitempty"`

	DeltaLinkIncoming float64 `json:"deltaLinkIncoming,omitempty"`

	DeltaLinkOutgoing float64 `json:"deltaLinkOutgoing,omitempty"`

	// DeltaPageQuality: The delta score of the URL-level quality predictor.
	DeltaPageQuality float64 `json:"deltaPageQuality,omitempty"`

	// DeltaSubchunkAdjustment: Total deltaNSR adjustment based on
	// subchunks. This is a page-level adjustment (subchunks are retrieved
	// based on the page classification).
	DeltaSubchunkAdjustment float64 `json:"deltaSubchunkAdjustment,omitempty"`

	LinkIncoming float64 `json:"linkIncoming,omitempty"`

	LinkOutgoing float64 `json:"linkOutgoing,omitempty"`

	// NumOffdomainAnchors: The total number of offdomain anchors seen by
	// the NSR pipeline for this page.
	NumOffdomainAnchors float64 `json:"numOffdomainAnchors,omitempty"`

	Page2vecLq float64 `json:"page2vecLq,omitempty"`

	SubchunkData []*QualityNsrPQDataSubchunkData `json:"subchunkData,omitempty"`

	// Tofu: URL-level tofu prediction.
	Tofu float64 `json:"tofu,omitempty"`

	UrlAutopilotScore float64 `json:"urlAutopilotScore,omitempty"`

	// Vlq: URL-level score of the VLQ model.
	Vlq float64 `json:"vlq,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Chard") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Chard") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrPQData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrPQData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrPQData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrPQData
	var s1 struct {
		DeltaAutopilotScore     gensupport.JSONFloat64 `json:"deltaAutopilotScore"`
		DeltaLinkIncoming       gensupport.JSONFloat64 `json:"deltaLinkIncoming"`
		DeltaLinkOutgoing       gensupport.JSONFloat64 `json:"deltaLinkOutgoing"`
		DeltaPageQuality        gensupport.JSONFloat64 `json:"deltaPageQuality"`
		DeltaSubchunkAdjustment gensupport.JSONFloat64 `json:"deltaSubchunkAdjustment"`
		LinkIncoming            gensupport.JSONFloat64 `json:"linkIncoming"`
		LinkOutgoing            gensupport.JSONFloat64 `json:"linkOutgoing"`
		NumOffdomainAnchors     gensupport.JSONFloat64 `json:"numOffdomainAnchors"`
		Page2vecLq              gensupport.JSONFloat64 `json:"page2vecLq"`
		Tofu                    gensupport.JSONFloat64 `json:"tofu"`
		UrlAutopilotScore       gensupport.JSONFloat64 `json:"urlAutopilotScore"`
		Vlq                     gensupport.JSONFloat64 `json:"vlq"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DeltaAutopilotScore = float64(s1.DeltaAutopilotScore)
	s.DeltaLinkIncoming = float64(s1.DeltaLinkIncoming)
	s.DeltaLinkOutgoing = float64(s1.DeltaLinkOutgoing)
	s.DeltaPageQuality = float64(s1.DeltaPageQuality)
	s.DeltaSubchunkAdjustment = float64(s1.DeltaSubchunkAdjustment)
	s.LinkIncoming = float64(s1.LinkIncoming)
	s.LinkOutgoing = float64(s1.LinkOutgoing)
	s.NumOffdomainAnchors = float64(s1.NumOffdomainAnchors)
	s.Page2vecLq = float64(s1.Page2vecLq)
	s.Tofu = float64(s1.Tofu)
	s.UrlAutopilotScore = float64(s1.UrlAutopilotScore)
	s.Vlq = float64(s1.Vlq)
	return nil
}

// QualityNsrPQDataSubchunkData: Data used to compute
// delta_subchunk_adjustment. (I.e, the subchunks looked up, with their
// confidences and weights). This data is not propagated to ascorer.
type QualityNsrPQDataSubchunkData struct {
	// Confidence: Confidence associated with the chunk.
	Confidence float64 `json:"confidence,omitempty"`

	// DeltaNsr: Subchunk delta in nsr.
	DeltaNsr float64 `json:"deltaNsr,omitempty"`

	// PageWeight: Weight with which this document belong to this subchunk
	// (greater than 0).
	PageWeight float64 `json:"pageWeight,omitempty"`

	// Type: Type of this chunk. Eg, ymyl_health, d2v, etc.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrPQDataSubchunkData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrPQDataSubchunkData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrPQDataSubchunkData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrPQDataSubchunkData
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		DeltaNsr   gensupport.JSONFloat64 `json:"deltaNsr"`
		PageWeight gensupport.JSONFloat64 `json:"pageWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.DeltaNsr = float64(s1.DeltaNsr)
	s.PageWeight = float64(s1.PageWeight)
	return nil
}

type QualityNsrVersionedFloatSignal struct {
	// Value: The corresponding float value.
	Value float64 `json:"value,omitempty"`

	// VersionId: Unique version id.
	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Value") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Value") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityNsrVersionedFloatSignal) MarshalJSON() ([]byte, error) {
	type NoMethod QualityNsrVersionedFloatSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityNsrVersionedFloatSignal) UnmarshalJSON(data []byte) error {
	type NoMethod QualityNsrVersionedFloatSignal
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

type QualityOrbitAsteroidBeltDocumentIntentScores struct {
	// ImageIntentScores: Map of imageid key to ImageIntentScores, for
	// images on cdoc.doc_images
	ImageIntentScores map[string]QualityOrbitAsteroidBeltImageIntentScores `json:"imageIntentScores,omitempty"`

	// Intents: The 'intents' and 'scores' fields are stored as parallel
	// lists for compactness. The 'scores' field should not be accessed
	// directly, but instead through the functions in
	// document_intent_scores_utils.
	//
	// Possible values:
	//   "NONE"
	//   "TUTORIAL"
	//   "EXAMPLES"
	//   "MAP"
	//   "TRANSLATE"
	//   "MEANING"
	//   "LISTEN"
	//   "PROMOTION"
	//   "SOUNDTRACK"
	//   "GIF"
	//   "EPISODES"
	//   "REGISTER"
	//   "EVENT_LISTING"
	//   "RANKING"
	//   "DISCOGRAPHY"
	//   "DIRECTIONS"
	//   "NEWS"
	//   "POPULATION"
	//   "BEHIND_THE_SCENES"
	//   "SOCIAL_MEDIA"
	//   "FAN_FICTION"
	//   "ADVICE"
	//   "RECIPES"
	//   "CAST"
	//   "ONLINE_QUIZ"
	//   "HOURS_OF_OPERATION"
	//   "DEFINITION"
	//   "REAL_ESTATE_LISTING"
	//   "FOR_KIDS"
	//   "BOOKS_BY_AUTHOR"
	//   "PREVIEW"
	//   "BIOGRAPHY"
	//   "PURCHASE"
	//   "MENU"
	//   "BLOG"
	//   "UNBOXING"
	//   "IMAGES"
	//   "NUTRITION_FACTS"
	//   "SCIENTIFIC_EXPLANATION"
	//   "ABOUT_PAGE"
	//   "READ_BOOK"
	//   "TRAVEL_GUIDE"
	//   "SPECS"
	//   "CALCULATOR"
	//   "DOWNLOAD"
	//   "SCORES"
	//   "SUMMARY"
	//   "QUOTES"
	//   "SHOWTIMES"
	//   "CATALOG"
	//   "ONLINE_CLASS"
	//   "CALENDAR"
	//   "ANALYSIS"
	//   "LOCATION_FINDER"
	//   "COMIC"
	//   "RENT"
	//   "WATCH_MOVIE_TV_SHOW"
	//   "CHARACTERS"
	//   "STUDY_GUIDE"
	//   "WATCH_VIDEO"
	//   "APP"
	//   "REVIEW"
	//   "SHEET_MUSIC"
	//   "SEARCH_RESULTS"
	//   "LOGIN"
	//   "TRIVIA"
	//   "CONTACT_PAGE"
	//   "TEMPLATE"
	//   "RESERVATION"
	//   "CUSTOMER_SUPPORT"
	//   "INTERVIEW"
	//   "USER_COMMENTS"
	//   "COUPON"
	//   "FLIGHT_TRACKER"
	//   "COMPANY_FINANCIALS"
	//   "WEATHER"
	//   "FORUM"
	//   "THESAURUS"
	//   "ONLINE_GAMES"
	//   "MANUAL"
	//   "JOB_POSTING"
	//   "MUSIC_VIDEO"
	//   "LYRICS"
	//   "SYMPTOMS"
	//   "REPAIR"
	//   "BUYING_GUIDE" - This is specifically for the buying guides
	// carousel (go/oshop-buying-guides). Consider using
	// PRODUCT_BUYING_GUIDE instead.
	//   "PRODUCT_EDITORIAL_REVIEW"
	//   "SHOPPING_MERCHANT_PRODUCT"
	//   "SHOPPING_REVIEW_OR_BUYING_GUIDE" - This is basically an "or" of
	// PRODUCT_REVIEW, PRODUCT_COMPARISON, and PRODUCT_BUYING_GUIDE. Use
	// those three intents instead.
	//   "PRODUCT_REVIEW"
	//   "PRODUCT_COMPARISON"
	//   "PRODUCT_BUYING_GUIDE"
	//   "SHOPAHOLIC" - This is the unmodified http://go/shopaholic score
	// "forwarded" through Orbit. Note that scores less than 0.4 are not
	// written to cdoc and will show up as 0.0.
	//   "GOOGLE_SCREENSHOT" - This is an image intent
	//   "MUGSHOT" - Image intent representing whether there is a mugshot in
	// the image (or if the image is itself a mugshot).
	//   "CRIME" - Document intent representing whether a page is
	// crime-related (go/crime-demotion-in-image-search-dd)
	//   "SHOPPING_TOPN" - Document intent representing whether a page is
	// recommending best shopping products fulfilling certain application
	// (e.g. "best laptops for students"). See go/shopping_topn_orbit.
	//   "RESERVED_FOR_NEW_ENUM_128" - ========== Enums for new intents
	// ========== Instructions: When adding a new intent, use the reserved
	// enum number from the start of this list, and add a new reserved enum
	// number to the end for the next person. There is a unit test that
	// checks there are at least 20 reserved enums. See go/new-intentkeyenum
	// for details.
	//   "RESERVED_FOR_NEW_ENUM_129"
	//   "RESERVED_FOR_NEW_ENUM_130"
	//   "RESERVED_FOR_NEW_ENUM_131"
	//   "RESERVED_FOR_NEW_ENUM_132"
	//   "RESERVED_FOR_NEW_ENUM_133"
	//   "RESERVED_FOR_NEW_ENUM_134"
	//   "RESERVED_FOR_NEW_ENUM_135"
	//   "RESERVED_FOR_NEW_ENUM_136"
	//   "RESERVED_FOR_NEW_ENUM_137"
	//   "RESERVED_FOR_NEW_ENUM_138"
	//   "RESERVED_FOR_NEW_ENUM_139"
	//   "RESERVED_FOR_NEW_ENUM_140"
	//   "RESERVED_FOR_NEW_ENUM_141"
	//   "RESERVED_FOR_NEW_ENUM_142"
	//   "RESERVED_FOR_NEW_ENUM_143"
	//   "RESERVED_FOR_NEW_ENUM_144"
	//   "RESERVED_FOR_NEW_ENUM_145"
	//   "RESERVED_FOR_NEW_ENUM_146"
	//   "RESERVED_FOR_NEW_ENUM_147"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_97" - ==========
	// Enums for new large intents ========== Please ask orbit@ before using
	// these.
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_98"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_99"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_100"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_101"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_102"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_103"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_104"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_105"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_106"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_107"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_108"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_109"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_110"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_111"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_112"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_113"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_114"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_115"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_116"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_117"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_118"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_119"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_120"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_121"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_122"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_123"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_124"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_125"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_126"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_127"
	Intents []string `json:"intents,omitempty"`

	// Scores: The intent scores, scaled to integers between 0 and 100 for
	// compactness.
	Scores []int64 `json:"scores,omitempty"`

	// Version: Version 0: Presence of an intent label in the 'intents'
	// field represents our best-effort classification. The 'scores' field
	// is not meaningful. Version 1: Values in the 'scores' field represent
	// the estimated precision of the classifier for a threshold at that
	// score.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageIntentScores")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageIntentScores") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityOrbitAsteroidBeltDocumentIntentScores) MarshalJSON() ([]byte, error) {
	type NoMethod QualityOrbitAsteroidBeltDocumentIntentScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityOrbitAsteroidBeltImageIntentScores struct {
	// Intents: The unique identifier for an Asteroid Belt document intent
	// is being reused here
	//
	// Possible values:
	//   "NONE"
	//   "TUTORIAL"
	//   "EXAMPLES"
	//   "MAP"
	//   "TRANSLATE"
	//   "MEANING"
	//   "LISTEN"
	//   "PROMOTION"
	//   "SOUNDTRACK"
	//   "GIF"
	//   "EPISODES"
	//   "REGISTER"
	//   "EVENT_LISTING"
	//   "RANKING"
	//   "DISCOGRAPHY"
	//   "DIRECTIONS"
	//   "NEWS"
	//   "POPULATION"
	//   "BEHIND_THE_SCENES"
	//   "SOCIAL_MEDIA"
	//   "FAN_FICTION"
	//   "ADVICE"
	//   "RECIPES"
	//   "CAST"
	//   "ONLINE_QUIZ"
	//   "HOURS_OF_OPERATION"
	//   "DEFINITION"
	//   "REAL_ESTATE_LISTING"
	//   "FOR_KIDS"
	//   "BOOKS_BY_AUTHOR"
	//   "PREVIEW"
	//   "BIOGRAPHY"
	//   "PURCHASE"
	//   "MENU"
	//   "BLOG"
	//   "UNBOXING"
	//   "IMAGES"
	//   "NUTRITION_FACTS"
	//   "SCIENTIFIC_EXPLANATION"
	//   "ABOUT_PAGE"
	//   "READ_BOOK"
	//   "TRAVEL_GUIDE"
	//   "SPECS"
	//   "CALCULATOR"
	//   "DOWNLOAD"
	//   "SCORES"
	//   "SUMMARY"
	//   "QUOTES"
	//   "SHOWTIMES"
	//   "CATALOG"
	//   "ONLINE_CLASS"
	//   "CALENDAR"
	//   "ANALYSIS"
	//   "LOCATION_FINDER"
	//   "COMIC"
	//   "RENT"
	//   "WATCH_MOVIE_TV_SHOW"
	//   "CHARACTERS"
	//   "STUDY_GUIDE"
	//   "WATCH_VIDEO"
	//   "APP"
	//   "REVIEW"
	//   "SHEET_MUSIC"
	//   "SEARCH_RESULTS"
	//   "LOGIN"
	//   "TRIVIA"
	//   "CONTACT_PAGE"
	//   "TEMPLATE"
	//   "RESERVATION"
	//   "CUSTOMER_SUPPORT"
	//   "INTERVIEW"
	//   "USER_COMMENTS"
	//   "COUPON"
	//   "FLIGHT_TRACKER"
	//   "COMPANY_FINANCIALS"
	//   "WEATHER"
	//   "FORUM"
	//   "THESAURUS"
	//   "ONLINE_GAMES"
	//   "MANUAL"
	//   "JOB_POSTING"
	//   "MUSIC_VIDEO"
	//   "LYRICS"
	//   "SYMPTOMS"
	//   "REPAIR"
	//   "BUYING_GUIDE" - This is specifically for the buying guides
	// carousel (go/oshop-buying-guides). Consider using
	// PRODUCT_BUYING_GUIDE instead.
	//   "PRODUCT_EDITORIAL_REVIEW"
	//   "SHOPPING_MERCHANT_PRODUCT"
	//   "SHOPPING_REVIEW_OR_BUYING_GUIDE" - This is basically an "or" of
	// PRODUCT_REVIEW, PRODUCT_COMPARISON, and PRODUCT_BUYING_GUIDE. Use
	// those three intents instead.
	//   "PRODUCT_REVIEW"
	//   "PRODUCT_COMPARISON"
	//   "PRODUCT_BUYING_GUIDE"
	//   "SHOPAHOLIC" - This is the unmodified http://go/shopaholic score
	// "forwarded" through Orbit. Note that scores less than 0.4 are not
	// written to cdoc and will show up as 0.0.
	//   "GOOGLE_SCREENSHOT" - This is an image intent
	//   "MUGSHOT" - Image intent representing whether there is a mugshot in
	// the image (or if the image is itself a mugshot).
	//   "CRIME" - Document intent representing whether a page is
	// crime-related (go/crime-demotion-in-image-search-dd)
	//   "SHOPPING_TOPN" - Document intent representing whether a page is
	// recommending best shopping products fulfilling certain application
	// (e.g. "best laptops for students"). See go/shopping_topn_orbit.
	//   "RESERVED_FOR_NEW_ENUM_128" - ========== Enums for new intents
	// ========== Instructions: When adding a new intent, use the reserved
	// enum number from the start of this list, and add a new reserved enum
	// number to the end for the next person. There is a unit test that
	// checks there are at least 20 reserved enums. See go/new-intentkeyenum
	// for details.
	//   "RESERVED_FOR_NEW_ENUM_129"
	//   "RESERVED_FOR_NEW_ENUM_130"
	//   "RESERVED_FOR_NEW_ENUM_131"
	//   "RESERVED_FOR_NEW_ENUM_132"
	//   "RESERVED_FOR_NEW_ENUM_133"
	//   "RESERVED_FOR_NEW_ENUM_134"
	//   "RESERVED_FOR_NEW_ENUM_135"
	//   "RESERVED_FOR_NEW_ENUM_136"
	//   "RESERVED_FOR_NEW_ENUM_137"
	//   "RESERVED_FOR_NEW_ENUM_138"
	//   "RESERVED_FOR_NEW_ENUM_139"
	//   "RESERVED_FOR_NEW_ENUM_140"
	//   "RESERVED_FOR_NEW_ENUM_141"
	//   "RESERVED_FOR_NEW_ENUM_142"
	//   "RESERVED_FOR_NEW_ENUM_143"
	//   "RESERVED_FOR_NEW_ENUM_144"
	//   "RESERVED_FOR_NEW_ENUM_145"
	//   "RESERVED_FOR_NEW_ENUM_146"
	//   "RESERVED_FOR_NEW_ENUM_147"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_97" - ==========
	// Enums for new large intents ========== Please ask orbit@ before using
	// these.
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_98"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_99"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_100"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_101"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_102"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_103"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_104"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_105"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_106"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_107"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_108"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_109"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_110"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_111"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_112"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_113"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_114"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_115"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_116"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_117"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_118"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_119"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_120"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_121"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_122"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_123"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_124"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_125"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_126"
	//   "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_127"
	Intents []string `json:"intents,omitempty"`

	// Scores: The intent scores, scaled to integers between 0 and 100 for
	// compactness.
	Scores []int64 `json:"scores,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Intents") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Intents") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityOrbitAsteroidBeltImageIntentScores) MarshalJSON() ([]byte, error) {
	type NoMethod QualityOrbitAsteroidBeltImageIntentScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityPreviewChosenSnippetInfo: Information for chosen snippet. Next
// ID: 8
type QualityPreviewChosenSnippetInfo struct {
	// IsVulgar: Whether this snippet is a vulgar candidate.
	IsVulgar bool `json:"isVulgar,omitempty"`

	LeadingTextType string `json:"leadingTextType,omitempty"`

	// SnippetHtml: The rendered snippet html.
	SnippetHtml string `json:"snippetHtml,omitempty"`

	// Possible values:
	//   "SNIPPET_TYPE_UNSPECIFIED" - For historical reason, this
	// `SNIPPET_TYPE_UNSPECIFIED` type is defined as value 15 instead of 0.
	//   "SEQUENCE" - A sequence snippet is generated from query term
	// matches (from meta and body sections) and typically consists of
	// multiple tidbits. Currently we only keep one single best combination
	// of the retrieved tidbits.
	//   "SEQUENCE_V2"
	//   "FULL" - A full snippet is also generated from query term matches.
	// Unlike the sequence snippet, this only consists of one expanded
	// tidbit that are scored as the best single tidbit among the retrieved
	// tidbits.
	//   "FULL_V2"
	//   "META" - This is a leading text of meta description.
	//   "LEADING_TEXT" - This is a leading text of main body text (skipping
	// headers), and its starting position is typically identified in the
	// indexing phase.
	//   "SAFT_SENTENCE" - saft sentences.
	//   "RADISH_SENTENCE" - Candidates created from radish attachment.
	//   "RADISH_LIST"
	//   "RADISH_TABLE"
	//   "ANNOTATED_FULL" - Candidates from
	// quality_snippets.SnippetSpansInfo.
	//   "PEREGRINE" - Candidates generated by SnippetFlow in SR.
	SnippetType string `json:"snippetType,omitempty"`

	// Source: Source of the chosen snippet, decided in PORC. String value
	// of quality.porc.TextSnippetCandidate.TextSnippetSource defined at
	// google3/quality/porc/proto/text_snippet.proto
	Source string `json:"source,omitempty"`

	Tidbits []*QualityPreviewChosenSnippetInfoTidbitInfo `json:"tidbits,omitempty"`

	// TrailingEllipsis: Whether this snippet has trailing ellipsis.
	TrailingEllipsis bool `json:"trailingEllipsis,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsVulgar") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsVulgar") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewChosenSnippetInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewChosenSnippetInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityPreviewChosenSnippetInfoTidbitInfo: Information to identify
// tidbits.
type QualityPreviewChosenSnippetInfoTidbitInfo struct {
	// SectionName: Section name of current snippet.
	SectionName string `json:"sectionName,omitempty"`

	// Separator: Separator to put before this tidbit.
	Separator string `json:"separator,omitempty"`

	// TidbitText: Tidbit text for validation.
	TidbitText string `json:"tidbitText,omitempty"`

	// TokenBegin: Tidbit token range in the section.
	TokenBegin uint64 `json:"tokenBegin,omitempty,string"`

	TokenEnd uint64 `json:"tokenEnd,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "SectionName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SectionName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewChosenSnippetInfoTidbitInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewChosenSnippetInfoTidbitInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityPreviewRanklabSnippet: Snippet candidate related information
// and signal scores. This message is used for both snippet scoring and
// ranklab features recording. Next ID: 12 ================== Features
// populated in production =======================
type QualityPreviewRanklabSnippet struct {
	// BrainFeatures: Features from SnippetFlow in Superroot.
	BrainFeatures *QualityPreviewSnippetBrainFeatures `json:"brainFeatures,omitempty"`

	DocumentFeatures *QualityPreviewSnippetDocumentFeatures `json:"documentFeatures,omitempty"`

	// ExperimentalFeatures: For experimental usage, not populated yet.
	ExperimentalFeatures *QualityPreviewSnippetExperimentalFeatures `json:"experimentalFeatures,omitempty"`

	// FinalScore: The final score of this candidate.
	FinalScore float64 `json:"finalScore,omitempty"`

	// IsMuppetSelectedSnippet: Is this the candidate chosen by Muppet
	// scorer.
	IsMuppetSelectedSnippet bool `json:"isMuppetSelectedSnippet,omitempty"`

	// OriginalQueryTermCoverageFeatures: Query term (original terms only)
	// coverage features.
	OriginalQueryTermCoverageFeatures *QualityPreviewSnippetQueryTermCoverageFeatures `json:"originalQueryTermCoverageFeatures,omitempty"`

	QualityFeatures *QualityPreviewSnippetQualityFeatures `json:"qualityFeatures,omitempty"`

	// QueryFeatures: Core set of snippet features.
	QueryFeatures *QualityPreviewSnippetQueryFeatures `json:"queryFeatures,omitempty"`

	// QueryTermCoverageFeatures: Query term (including synonyms) coverage
	// features.
	QueryTermCoverageFeatures *QualityPreviewSnippetQueryTermCoverageFeatures `json:"queryTermCoverageFeatures,omitempty"`

	// RadishFeatures: Radish related information.
	RadishFeatures *QualityPreviewSnippetRadishFeatures `json:"radishFeatures,omitempty"`

	// SnippetInfo: Information to identify current chosen snippet.
	SnippetInfo *QualityPreviewChosenSnippetInfo `json:"snippetInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrainFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrainFeatures") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewRanklabSnippet) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewRanklabSnippet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewRanklabSnippet) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewRanklabSnippet
	var s1 struct {
		FinalScore gensupport.JSONFloat64 `json:"finalScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FinalScore = float64(s1.FinalScore)
	return nil
}

// QualityPreviewRanklabTitle: A collection of data corresponding to a
// single title candidate. This will be used as: - a collection of
// signals to score and select titles in production - an input for
// training title models NOTE: When adding a floating point value for
// Ranklab purposes, use float32 instead of float64, because some of the
// Ranklab library still does not fully support float64. Next ID: 67
type QualityPreviewRanklabTitle struct {
	// BaseGoldmineFinalScore: `goldmine_final_score` value in base.
	BaseGoldmineFinalScore float64 `json:"baseGoldmineFinalScore,omitempty"`

	// BaseRank: The ranking index of this candidate (starting from 0) in
	// base.
	BaseRank int64 `json:"baseRank,omitempty"`

	// DataSourceType: Title source type.
	//
	// Possible values:
	//   "BODY" - The title is from (a substring of) the tag.
	//   "BODY_SWAPPED" - This title is for homepages, whose body title
	// contains site title at the end, and we swap the site title to the
	// beginning and pass it from gwd.
	//   "OPEN_GRAPH" - The title is from tag.
	//   "OPEN_GRAPH_HYBRID" - OPEN_GRAPH title with a site title appended.
	//   "ALT" - The title is from the alternative title pipeline.
	//   "SOURCEMETA" - The title is a blogs, scholar, or news title in the
	// sourcemeta section.
	//   "META" - The title comes from (a substring of) the title tag.
	//   "BODY_HYBRID" - The title is a body title with a site title
	// appended.
	//   "LEADING_TEXT" - The title comes from some other leading text in
	// the
	//   "CHIMERA" - body. The title is created as a compound of multiple
	// different
	//   "EXPERIMENTAL" - sources, via Chimera-Title geneartion subsystem.
	// The title is created as of some experimental system
	//   "DEPRECATED_LEARNED"
	//   "DEPRECATED_LOCAL"
	//   "NUM_TITLE_TYPES"
	DataSourceType string `json:"dataSourceType,omitempty"`

	// DocLang: Document language for this title. It is used for model
	// inference and hence flattened into RanklabTitle instead of
	// RanklabDoc.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	DocLang string `json:"docLang,omitempty"`

	// DocRelevance: Represents how relavant this title candidate is to the
	// document. Ranged in [0, 1], and this signal is basically calculated
	// as Cosine-similarity between salient term vector and pQ2T model of
	// title candidate sentence.
	DocRelevance float64 `json:"docRelevance,omitempty"`

	// DupTokens: Numbers of duplicated tokens. For example, duplicated
	// tokens for a title "dog cat cat cat" is 2 (for 2 extra "cat").
	DupTokens int64 `json:"dupTokens,omitempty"`

	// ForcedExperimentScore: A score assigned for candidates forced by
	// experiments.
	ForcedExperimentScore int64 `json:"forcedExperimentScore,omitempty"`

	// GoldmineAdjustedScore: The score for `text` computed in Goldmine
	// (AlternativeTitlesAnnotator) with additional scoring adjustments
	// applied. Currently includes Blockbert scoring.
	GoldmineAdjustedScore float64 `json:"goldmineAdjustedScore,omitempty"`

	// GoldmineAnchorFactor:
	// ===============================================================
	// Internal boost feature signals used to compute `goldmine_page_score`.
	// They are exposed only for debugging purpose.
	GoldmineAnchorFactor float64 `json:"goldmineAnchorFactor,omitempty"`

	GoldmineAnchorSupportOnly float64 `json:"goldmineAnchorSupportOnly,omitempty"`

	GoldmineBlockbertFactor float64 `json:"goldmineBlockbertFactor,omitempty"`

	GoldmineBodyFactor float64 `json:"goldmineBodyFactor,omitempty"`

	// GoldmineFinalScore: Deprecated: use `goldmine_page_score` instead.
	GoldmineFinalScore float64 `json:"goldmineFinalScore,omitempty"`

	GoldmineForeign float64 `json:"goldmineForeign,omitempty"`

	GoldmineGeometryFactor float64 `json:"goldmineGeometryFactor,omitempty"`

	GoldmineHasBoilerplateInTitle float64 `json:"goldmineHasBoilerplateInTitle,omitempty"`

	GoldmineHasTitleNgram float64 `json:"goldmineHasTitleNgram,omitempty"`

	GoldmineHeaderIsH1 float64 `json:"goldmineHeaderIsH1,omitempty"`

	GoldmineHeadingFactor float64 `json:"goldmineHeadingFactor,omitempty"`

	GoldmineIsBadTitle float64 `json:"goldmineIsBadTitle,omitempty"`

	GoldmineIsHeadingTag float64 `json:"goldmineIsHeadingTag,omitempty"`

	GoldmineIsTitleTag float64 `json:"goldmineIsTitleTag,omitempty"`

	GoldmineIsTruncated float64 `json:"goldmineIsTruncated,omitempty"`

	GoldmineLocalTitleFactor float64 `json:"goldmineLocalTitleFactor,omitempty"`

	GoldmineLocationFactor float64 `json:"goldmineLocationFactor,omitempty"`

	GoldmineNavboostFactor float64 `json:"goldmineNavboostFactor,omitempty"`

	GoldmineOgTitleFactor float64 `json:"goldmineOgTitleFactor,omitempty"`

	GoldmineOnPageDemotionFactor float64 `json:"goldmineOnPageDemotionFactor,omitempty"`

	// GoldmineOtherBoostFeatureCount: The number of BoostFeatures present
	// in AlternativeTitlesGeneator but not populated above.
	GoldmineOtherBoostFeatureCount int64 `json:"goldmineOtherBoostFeatureCount,omitempty"`

	// GoldminePageScore: The score for the `text` computed in Goldmine
	// (AlternativeTitlesAnnotator).
	GoldminePageScore float64 `json:"goldminePageScore,omitempty"`

	GoldmineReadabilityScore float64 `json:"goldmineReadabilityScore,omitempty"`

	GoldmineSalientTermFactor float64 `json:"goldmineSalientTermFactor,omitempty"`

	GoldmineSitenameFactor float64 `json:"goldmineSitenameFactor,omitempty"`

	GoldmineSubHeading float64 `json:"goldmineSubHeading,omitempty"`

	GoldmineTitleTagFactor float64 `json:"goldmineTitleTagFactor,omitempty"`

	GoldmineTrustFactor float64 `json:"goldmineTrustFactor,omitempty"`

	GoldmineUrlMatchFactor float64 `json:"goldmineUrlMatchFactor,omitempty"`

	// HasSiteInfo: Whether a title contains site information.
	HasSiteInfo bool `json:"hasSiteInfo,omitempty"`

	// IsTruncated: Whether this title candidate is truncated or not.
	IsTruncated bool `json:"isTruncated,omitempty"`

	// IsValid: Whether a title is valid (i.e., not empty).
	IsValid bool `json:"isValid,omitempty"`

	// PerTypeQuality: How good or bad this title is as a `data_source_type`
	// title type.
	//
	// Possible values:
	//   "UNKNOWN_QUALITY"
	//   "VERY_GOOD"
	//   "GOOD"
	//   "NORMAL"
	//   "BAD"
	PerTypeQuality string `json:"perTypeQuality,omitempty"`

	// PerTypeRank: Rank of this title among titles of the same
	// `data_source_type`.
	PerTypeRank int64 `json:"perTypeRank,omitempty"`

	// PercentBodyTitleTokensCovered: Numbers of body title tokens covered
	// by this title, in range of [0, 1]. Not set if body title is
	// considered "bad".
	PercentBodyTitleTokensCovered float64 `json:"percentBodyTitleTokensCovered,omitempty"`

	// PercentTokensCoveredByBodyTitle: Numbers of tokens covered by body
	// title, in range of [0, 1]. Not set if body title is considered "bad".
	PercentTokensCoveredByBodyTitle float64 `json:"percentTokensCoveredByBodyTitle,omitempty"`

	// QueryMatch: The number of (different) terms with a query match. It
	// may include the match with any SQuery node (e.g., synonyms).
	QueryMatch int64 `json:"queryMatch,omitempty"`

	// QueryMatchFraction: A number of matched query terms divided by the
	// number of all terms in query. Synonyms or other terms that appear in
	// squery but not in the raw query are excluded. Takes values in [0, 1].
	QueryMatchFraction float64 `json:"queryMatchFraction,omitempty"`

	// QueryRelevance: Represents how relavant this title candidate is to
	// the query. Ranged in [0, 1], and this signal is basically calculated
	// as Cosine-similarity between QBST term vector and pQ2T model of title
	// candidate sentence.
	QueryRelevance float64 `json:"queryRelevance,omitempty"`

	SourceGeometry bool `json:"sourceGeometry,omitempty"`

	SourceHeadingTag bool `json:"sourceHeadingTag,omitempty"`

	SourceLocalTitle bool `json:"sourceLocalTitle,omitempty"`

	SourceOffdomainAnchor bool `json:"sourceOffdomainAnchor,omitempty"`

	SourceOndomainAnchor bool `json:"sourceOndomainAnchor,omitempty"`

	SourceOnsiteAnchor bool `json:"sourceOnsiteAnchor,omitempty"`

	// SourceTitleTag:
	// =============================================================== Title
	// candidate's original source information. They are populated only for
	// non-production environment for debugging purposes.
	SourceTitleTag bool `json:"sourceTitleTag,omitempty"`

	SourceTransliteratedTitle bool `json:"sourceTransliteratedTitle,omitempty"`

	// TestGoldmineFinalScore: `goldmine_final_score` value in test.
	TestGoldmineFinalScore float64 `json:"testGoldmineFinalScore,omitempty"`

	// TestRank: The ranking index of this candidate (starting from 0) in
	// test.
	TestRank int64 `json:"testRank,omitempty"`

	// Text: Title text to display. Populated for debugging purpose only,
	// and won't be used for model inferences. This represetns the exact
	// display text in SERP, with modifications like truncations or
	// site-title appending involved.
	Text string `json:"text,omitempty"`

	// WidthFraction: A rendered width of this title divided by the max
	// allowed width for title. Takes values in [0, 1].
	WidthFraction float64 `json:"widthFraction,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BaseGoldmineFinalScore") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BaseGoldmineFinalScore")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewRanklabTitle) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewRanklabTitle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewRanklabTitle) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewRanklabTitle
	var s1 struct {
		BaseGoldmineFinalScore          gensupport.JSONFloat64 `json:"baseGoldmineFinalScore"`
		DocRelevance                    gensupport.JSONFloat64 `json:"docRelevance"`
		GoldmineAdjustedScore           gensupport.JSONFloat64 `json:"goldmineAdjustedScore"`
		GoldmineAnchorFactor            gensupport.JSONFloat64 `json:"goldmineAnchorFactor"`
		GoldmineAnchorSupportOnly       gensupport.JSONFloat64 `json:"goldmineAnchorSupportOnly"`
		GoldmineBlockbertFactor         gensupport.JSONFloat64 `json:"goldmineBlockbertFactor"`
		GoldmineBodyFactor              gensupport.JSONFloat64 `json:"goldmineBodyFactor"`
		GoldmineFinalScore              gensupport.JSONFloat64 `json:"goldmineFinalScore"`
		GoldmineForeign                 gensupport.JSONFloat64 `json:"goldmineForeign"`
		GoldmineGeometryFactor          gensupport.JSONFloat64 `json:"goldmineGeometryFactor"`
		GoldmineHasBoilerplateInTitle   gensupport.JSONFloat64 `json:"goldmineHasBoilerplateInTitle"`
		GoldmineHasTitleNgram           gensupport.JSONFloat64 `json:"goldmineHasTitleNgram"`
		GoldmineHeaderIsH1              gensupport.JSONFloat64 `json:"goldmineHeaderIsH1"`
		GoldmineHeadingFactor           gensupport.JSONFloat64 `json:"goldmineHeadingFactor"`
		GoldmineIsBadTitle              gensupport.JSONFloat64 `json:"goldmineIsBadTitle"`
		GoldmineIsHeadingTag            gensupport.JSONFloat64 `json:"goldmineIsHeadingTag"`
		GoldmineIsTitleTag              gensupport.JSONFloat64 `json:"goldmineIsTitleTag"`
		GoldmineIsTruncated             gensupport.JSONFloat64 `json:"goldmineIsTruncated"`
		GoldmineLocalTitleFactor        gensupport.JSONFloat64 `json:"goldmineLocalTitleFactor"`
		GoldmineLocationFactor          gensupport.JSONFloat64 `json:"goldmineLocationFactor"`
		GoldmineNavboostFactor          gensupport.JSONFloat64 `json:"goldmineNavboostFactor"`
		GoldmineOgTitleFactor           gensupport.JSONFloat64 `json:"goldmineOgTitleFactor"`
		GoldmineOnPageDemotionFactor    gensupport.JSONFloat64 `json:"goldmineOnPageDemotionFactor"`
		GoldminePageScore               gensupport.JSONFloat64 `json:"goldminePageScore"`
		GoldmineReadabilityScore        gensupport.JSONFloat64 `json:"goldmineReadabilityScore"`
		GoldmineSalientTermFactor       gensupport.JSONFloat64 `json:"goldmineSalientTermFactor"`
		GoldmineSitenameFactor          gensupport.JSONFloat64 `json:"goldmineSitenameFactor"`
		GoldmineSubHeading              gensupport.JSONFloat64 `json:"goldmineSubHeading"`
		GoldmineTitleTagFactor          gensupport.JSONFloat64 `json:"goldmineTitleTagFactor"`
		GoldmineTrustFactor             gensupport.JSONFloat64 `json:"goldmineTrustFactor"`
		GoldmineUrlMatchFactor          gensupport.JSONFloat64 `json:"goldmineUrlMatchFactor"`
		PercentBodyTitleTokensCovered   gensupport.JSONFloat64 `json:"percentBodyTitleTokensCovered"`
		PercentTokensCoveredByBodyTitle gensupport.JSONFloat64 `json:"percentTokensCoveredByBodyTitle"`
		QueryMatchFraction              gensupport.JSONFloat64 `json:"queryMatchFraction"`
		QueryRelevance                  gensupport.JSONFloat64 `json:"queryRelevance"`
		TestGoldmineFinalScore          gensupport.JSONFloat64 `json:"testGoldmineFinalScore"`
		WidthFraction                   gensupport.JSONFloat64 `json:"widthFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BaseGoldmineFinalScore = float64(s1.BaseGoldmineFinalScore)
	s.DocRelevance = float64(s1.DocRelevance)
	s.GoldmineAdjustedScore = float64(s1.GoldmineAdjustedScore)
	s.GoldmineAnchorFactor = float64(s1.GoldmineAnchorFactor)
	s.GoldmineAnchorSupportOnly = float64(s1.GoldmineAnchorSupportOnly)
	s.GoldmineBlockbertFactor = float64(s1.GoldmineBlockbertFactor)
	s.GoldmineBodyFactor = float64(s1.GoldmineBodyFactor)
	s.GoldmineFinalScore = float64(s1.GoldmineFinalScore)
	s.GoldmineForeign = float64(s1.GoldmineForeign)
	s.GoldmineGeometryFactor = float64(s1.GoldmineGeometryFactor)
	s.GoldmineHasBoilerplateInTitle = float64(s1.GoldmineHasBoilerplateInTitle)
	s.GoldmineHasTitleNgram = float64(s1.GoldmineHasTitleNgram)
	s.GoldmineHeaderIsH1 = float64(s1.GoldmineHeaderIsH1)
	s.GoldmineHeadingFactor = float64(s1.GoldmineHeadingFactor)
	s.GoldmineIsBadTitle = float64(s1.GoldmineIsBadTitle)
	s.GoldmineIsHeadingTag = float64(s1.GoldmineIsHeadingTag)
	s.GoldmineIsTitleTag = float64(s1.GoldmineIsTitleTag)
	s.GoldmineIsTruncated = float64(s1.GoldmineIsTruncated)
	s.GoldmineLocalTitleFactor = float64(s1.GoldmineLocalTitleFactor)
	s.GoldmineLocationFactor = float64(s1.GoldmineLocationFactor)
	s.GoldmineNavboostFactor = float64(s1.GoldmineNavboostFactor)
	s.GoldmineOgTitleFactor = float64(s1.GoldmineOgTitleFactor)
	s.GoldmineOnPageDemotionFactor = float64(s1.GoldmineOnPageDemotionFactor)
	s.GoldminePageScore = float64(s1.GoldminePageScore)
	s.GoldmineReadabilityScore = float64(s1.GoldmineReadabilityScore)
	s.GoldmineSalientTermFactor = float64(s1.GoldmineSalientTermFactor)
	s.GoldmineSitenameFactor = float64(s1.GoldmineSitenameFactor)
	s.GoldmineSubHeading = float64(s1.GoldmineSubHeading)
	s.GoldmineTitleTagFactor = float64(s1.GoldmineTitleTagFactor)
	s.GoldmineTrustFactor = float64(s1.GoldmineTrustFactor)
	s.GoldmineUrlMatchFactor = float64(s1.GoldmineUrlMatchFactor)
	s.PercentBodyTitleTokensCovered = float64(s1.PercentBodyTitleTokensCovered)
	s.PercentTokensCoveredByBodyTitle = float64(s1.PercentTokensCoveredByBodyTitle)
	s.QueryMatchFraction = float64(s1.QueryMatchFraction)
	s.QueryRelevance = float64(s1.QueryRelevance)
	s.TestGoldmineFinalScore = float64(s1.TestGoldmineFinalScore)
	s.WidthFraction = float64(s1.WidthFraction)
	return nil
}

// QualityPreviewSnippetBrainFeatures: Snippet brain scores.
type QualityPreviewSnippetBrainFeatures struct {
	// IsSnippetBrainBoldingTriggered: Is the bolding triggered.
	IsSnippetBrainBoldingTriggered bool `json:"isSnippetBrainBoldingTriggered,omitempty"`

	// ModelScore: The score by SnippetBrain model.
	ModelScore float64 `json:"modelScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsSnippetBrainBoldingTriggered") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "IsSnippetBrainBoldingTriggered") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetBrainFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetBrainFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetBrainFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetBrainFeatures
	var s1 struct {
		ModelScore gensupport.JSONFloat64 `json:"modelScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ModelScore = float64(s1.ModelScore)
	return nil
}

// QualityPreviewSnippetDocumentFeatures: Document related features used
// in snippets scoring. Next ID: 10
type QualityPreviewSnippetDocumentFeatures struct {
	ExperimentalTitleSalientTermsScore float64 `json:"experimentalTitleSalientTermsScore,omitempty"`

	LeadingtextDistanceScore float64 `json:"leadingtextDistanceScore,omitempty"`

	MetaBoostScore float64 `json:"metaBoostScore,omitempty"`

	SalientPositionBoostScore float64 `json:"salientPositionBoostScore,omitempty"`

	SalientTermsScore float64 `json:"salientTermsScore,omitempty"`

	SchemaOrgDescriptionBoostScore float64 `json:"schemaOrgDescriptionBoostScore,omitempty"`

	UnstableTokensScore float64 `json:"unstableTokensScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExperimentalTitleSalientTermsScore") to unconditionally include in
	// API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ExperimentalTitleSalientTermsScore") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetDocumentFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetDocumentFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetDocumentFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetDocumentFeatures
	var s1 struct {
		ExperimentalTitleSalientTermsScore gensupport.JSONFloat64 `json:"experimentalTitleSalientTermsScore"`
		LeadingtextDistanceScore           gensupport.JSONFloat64 `json:"leadingtextDistanceScore"`
		MetaBoostScore                     gensupport.JSONFloat64 `json:"metaBoostScore"`
		SalientPositionBoostScore          gensupport.JSONFloat64 `json:"salientPositionBoostScore"`
		SalientTermsScore                  gensupport.JSONFloat64 `json:"salientTermsScore"`
		SchemaOrgDescriptionBoostScore     gensupport.JSONFloat64 `json:"schemaOrgDescriptionBoostScore"`
		UnstableTokensScore                gensupport.JSONFloat64 `json:"unstableTokensScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ExperimentalTitleSalientTermsScore = float64(s1.ExperimentalTitleSalientTermsScore)
	s.LeadingtextDistanceScore = float64(s1.LeadingtextDistanceScore)
	s.MetaBoostScore = float64(s1.MetaBoostScore)
	s.SalientPositionBoostScore = float64(s1.SalientPositionBoostScore)
	s.SalientTermsScore = float64(s1.SalientTermsScore)
	s.SchemaOrgDescriptionBoostScore = float64(s1.SchemaOrgDescriptionBoostScore)
	s.UnstableTokensScore = float64(s1.UnstableTokensScore)
	return nil
}

type QualityPreviewSnippetExperimentalFeatures struct {
	IsLikelyHomepage bool `json:"isLikelyHomepage,omitempty"`

	NumQueryItems int64 `json:"numQueryItems,omitempty"`

	NumTidbits int64 `json:"numTidbits,omitempty"`

	NumVisibleTokens int64 `json:"numVisibleTokens,omitempty"`

	Radish *QualityPreviewSnippetRadishFeatures `json:"radish,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsLikelyHomepage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsLikelyHomepage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetExperimentalFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetExperimentalFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityPreviewSnippetQualityFeatures: Quality related features used
// in snippets scoring. Next ID: 10
type QualityPreviewSnippetQualityFeatures struct {
	ForeignMetaScore float64 `json:"foreignMetaScore,omitempty"`

	HiddenRatioScore float64 `json:"hiddenRatioScore,omitempty"`

	NumTidbitsScore float64 `json:"numTidbitsScore,omitempty"`

	NumVisibleTokensScore float64 `json:"numVisibleTokensScore,omitempty"`

	OutlinkScore float64 `json:"outlinkScore,omitempty"`

	RedundancyScore float64 `json:"redundancyScore,omitempty"`

	SentenceStartScore float64 `json:"sentenceStartScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ForeignMetaScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ForeignMetaScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetQualityFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetQualityFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetQualityFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetQualityFeatures
	var s1 struct {
		ForeignMetaScore      gensupport.JSONFloat64 `json:"foreignMetaScore"`
		HiddenRatioScore      gensupport.JSONFloat64 `json:"hiddenRatioScore"`
		NumTidbitsScore       gensupport.JSONFloat64 `json:"numTidbitsScore"`
		NumVisibleTokensScore gensupport.JSONFloat64 `json:"numVisibleTokensScore"`
		OutlinkScore          gensupport.JSONFloat64 `json:"outlinkScore"`
		RedundancyScore       gensupport.JSONFloat64 `json:"redundancyScore"`
		SentenceStartScore    gensupport.JSONFloat64 `json:"sentenceStartScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ForeignMetaScore = float64(s1.ForeignMetaScore)
	s.HiddenRatioScore = float64(s1.HiddenRatioScore)
	s.NumTidbitsScore = float64(s1.NumTidbitsScore)
	s.NumVisibleTokensScore = float64(s1.NumVisibleTokensScore)
	s.OutlinkScore = float64(s1.OutlinkScore)
	s.RedundancyScore = float64(s1.RedundancyScore)
	s.SentenceStartScore = float64(s1.SentenceStartScore)
	return nil
}

// QualityPreviewSnippetQueryFeatures: Query related features used in
// snippets scoring. Next ID: 7
type QualityPreviewSnippetQueryFeatures struct {
	ExperimentalQueryTitleScore float64 `json:"experimentalQueryTitleScore,omitempty"`

	PassageembedScore float64 `json:"passageembedScore,omitempty"`

	QueryHasPassageembedEmbeddings bool `json:"queryHasPassageembedEmbeddings,omitempty"`

	QueryScore float64 `json:"queryScore,omitempty"`

	RadishScore float64 `json:"radishScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExperimentalQueryTitleScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ExperimentalQueryTitleScore") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetQueryFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetQueryFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetQueryFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetQueryFeatures
	var s1 struct {
		ExperimentalQueryTitleScore gensupport.JSONFloat64 `json:"experimentalQueryTitleScore"`
		PassageembedScore           gensupport.JSONFloat64 `json:"passageembedScore"`
		QueryScore                  gensupport.JSONFloat64 `json:"queryScore"`
		RadishScore                 gensupport.JSONFloat64 `json:"radishScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ExperimentalQueryTitleScore = float64(s1.ExperimentalQueryTitleScore)
	s.PassageembedScore = float64(s1.PassageembedScore)
	s.QueryScore = float64(s1.QueryScore)
	s.RadishScore = float64(s1.RadishScore)
	return nil
}

// QualityPreviewSnippetQueryTermCoverageFeatures: Snippet query term
// coverage features.
type QualityPreviewSnippetQueryTermCoverageFeatures struct {
	SnippetQueryTermCoverage float64 `json:"snippetQueryTermCoverage,omitempty"`

	TitleQueryTermCoverage float64 `json:"titleQueryTermCoverage,omitempty"`

	TitleSnippetQueryTermCoverage float64 `json:"titleSnippetQueryTermCoverage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SnippetQueryTermCoverage") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SnippetQueryTermCoverage")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetQueryTermCoverageFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetQueryTermCoverageFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetQueryTermCoverageFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetQueryTermCoverageFeatures
	var s1 struct {
		SnippetQueryTermCoverage      gensupport.JSONFloat64 `json:"snippetQueryTermCoverage"`
		TitleQueryTermCoverage        gensupport.JSONFloat64 `json:"titleQueryTermCoverage"`
		TitleSnippetQueryTermCoverage gensupport.JSONFloat64 `json:"titleSnippetQueryTermCoverage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SnippetQueryTermCoverage = float64(s1.SnippetQueryTermCoverage)
	s.TitleQueryTermCoverage = float64(s1.TitleQueryTermCoverage)
	s.TitleSnippetQueryTermCoverage = float64(s1.TitleSnippetQueryTermCoverage)
	return nil
}

type QualityPreviewSnippetRadishFeatures struct {
	// AnswerScore: Answer score of the passage for this `navboost_query`.
	AnswerScore float64 `json:"answerScore,omitempty"`

	// NavboostQuery: Navboost query for this radish signal.
	NavboostQuery string `json:"navboostQuery,omitempty"`

	// PassageCoverage: The ratio of overlapping tokens between the radish
	// passage and snippet candidate.
	PassageCoverage float64 `json:"passageCoverage,omitempty"`

	// PassageType: Integer value of
	// indexing::annotations::wa_passages::Passage::Type.
	PassageType int64 `json:"passageType,omitempty"`

	// QueryPassageIdx: The index of this passage under `navboost_query`.
	QueryPassageIdx int64 `json:"queryPassageIdx,omitempty"`

	// SimilarityMethod: How the similarity score is computed. Integer value
	// of
	// mustang_repos_www_snippets::RadishSignalScoringInfo::SimilarityMethod.
	SimilarityMethod int64 `json:"similarityMethod,omitempty"`

	// SimilarityScore: Similarity score between this `navboost_query` and
	// the incoming query.
	SimilarityScore float64 `json:"similarityScore,omitempty"`

	SnippetCoverage float64 `json:"snippetCoverage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnswerScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnswerScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityPreviewSnippetRadishFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod QualityPreviewSnippetRadishFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityPreviewSnippetRadishFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod QualityPreviewSnippetRadishFeatures
	var s1 struct {
		AnswerScore     gensupport.JSONFloat64 `json:"answerScore"`
		PassageCoverage gensupport.JSONFloat64 `json:"passageCoverage"`
		SimilarityScore gensupport.JSONFloat64 `json:"similarityScore"`
		SnippetCoverage gensupport.JSONFloat64 `json:"snippetCoverage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnswerScore = float64(s1.AnswerScore)
	s.PassageCoverage = float64(s1.PassageCoverage)
	s.SimilarityScore = float64(s1.SimilarityScore)
	s.SnippetCoverage = float64(s1.SnippetCoverage)
	return nil
}

// QualityProductProductSiteData: Protocol message for data related to
// product sites. This data is stored as signals data in docjoins.
type QualityProductProductSiteData struct {
	// Locale: Data for each locale.
	Locale []*QualityProductProductSiteDataLocaleData `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityProductProductSiteData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityProductProductSiteData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityProductProductSiteDataLocaleData: Data for one locale.
type QualityProductProductSiteDataLocaleData struct {
	// BoostFactor: Site boosting multiplier.
	BoostFactor float64 `json:"boostFactor,omitempty"`

	// GobiSite: Whether this is a gobi site, ie, a site from a gobi domain
	// that should be boosted for a category query with this gobi domain.
	// For example, amazon.com is a gobi store domain for category query
	// [hdtv] but some sites (like askville.amazon.com) from amazon.com
	// should not be boosted.
	GobiSite bool `json:"gobiSite,omitempty"`

	// Locale: Locale for this data.
	Locale string `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoostFactor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoostFactor") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityProductProductSiteDataLocaleData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityProductProductSiteDataLocaleData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityProductProductSiteDataLocaleData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityProductProductSiteDataLocaleData
	var s1 struct {
		BoostFactor gensupport.JSONFloat64 `json:"boostFactor"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BoostFactor = float64(s1.BoostFactor)
	return nil
}

type QualityProseCSEUrlInfo struct {
	// CseId: There were defined back in 2007, but were never used. optional
	// string label = 2; optional uint64 user = 3; optional float score = 4;
	CseId string `json:"cseId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CseId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CseId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityProseCSEUrlInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityProseCSEUrlInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteAccountProvenance: Used to annotate the source of
// cross-account personal data. See go/cross-account-understanding.
type QualityQrewriteAccountProvenance struct {
	// Possible values:
	//   "UNKNOWN_MULTI_ACCOUNT_DATA_SOURCE"
	//   "PRODUCTIVITY_ACCOUNT" - Data is from a linked A4W account. See
	// go/multiaccount-a4w.
	//   "ASSISTANT_SHARED_CONTACT" - Shared contacts from another user on
	// the same device. See go/shared-contacts-assistant.
	//   "CALENDAR_EVENT_TITLES" - Calendar event titles (currently
	// preloaded). See go/event-title-annotation.
	DataSources []string `json:"dataSources,omitempty"`

	GoogleAccount *QualityQrewriteAccountProvenanceGoogleAccount `json:"googleAccount,omitempty"`

	// ThirdPartyAccount: Note google_account and third_party_account could
	// both exist. For example, a user could share her Spotify account with
	// other users registered on the same device.
	ThirdPartyAccount *QualityQrewriteAccountProvenanceThirdPartyAccount `json:"thirdPartyAccount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataSources") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataSources") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteAccountProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteAccountProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteAccountProvenanceGoogleAccount: The Google account the
// annotated personal data belongs to.
type QualityQrewriteAccountProvenanceGoogleAccount struct {
	Email string `json:"email,omitempty"`

	GaiaId int64 `json:"gaiaId,omitempty,string"`

	IsDasherAccount bool `json:"isDasherAccount,omitempty"`

	IsSecondaryAccount bool `json:"isSecondaryAccount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteAccountProvenanceGoogleAccount) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteAccountProvenanceGoogleAccount
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteAccountProvenanceThirdPartyAccount: The 3P account the
// annotated personal data belongs to.
type QualityQrewriteAccountProvenanceThirdPartyAccount struct {
	// Email: Email address of the linked account (eg foo@outlook.com).
	Email string `json:"email,omitempty"`

	// ThirdPartyProviderId: Unique identifier for the third party provider.
	// Defined by Google via AoG.
	ThirdPartyProviderId int64 `json:"thirdPartyProviderId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteAccountProvenanceThirdPartyAccount) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteAccountProvenanceThirdPartyAccount
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteAlternativeNameInfo: Alternative names with info like
// RecognitionAlternateSource indicating where is it from.
type QualityQrewriteAlternativeNameInfo struct {
	MatchSignal *AssistantVerticalsCommonContactMatchSignal `json:"matchSignal,omitempty"`

	Name string `json:"name,omitempty"`

	// Possible values:
	//   "NONE"
	//   "S3_HYPOTHESES" - Alternate name from S3 recognition topN
	// hypothesis.
	//   "GENIE_QUERY_ALTERNATIVES" - Alternate name from Genie query
	// alternatives.
	//   "NAME_CORRECTION_LOG" - Alternate name from contact correction
	// history.
	//   "FUZZY_CONTACT_MATCH" - Fuzzy match with user's contacts.
	//   "NEURAL_CONTACT_MATCH" - Neural match. See
	// go/phonetic-contact-match.
	//   "NEURAL_CONTACT_MATCH_DARK_LAUNCH" - The dark launch for a neural
	// match. We found a match, but we ignore it for serving and just log
	// it.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MatchSignal") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchSignal") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteAlternativeNameInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteAlternativeNameInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityQrewriteCalendarReference struct {
	CalendarAlias *QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper `json:"calendarAlias,omitempty"`

	ContactCalendarName *QualityQrewriteContactCalendarName `json:"contactCalendarName,omitempty"`

	FamilyCalendarAlias *QualityQrewriteFamilyCalendarAlias `json:"familyCalendarAlias,omitempty"`

	PrimaryCalendarAlias *QualityQrewritePrimaryCalendarAlias `json:"primaryCalendarAlias,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalendarAlias") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalendarAlias") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteCalendarReference) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteCalendarReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteCandidateId: A complete query candidate Id includes a
// list of Id fields. The Id field order is maintained as the order by
// which each field is appended to the list.
type QualityQrewriteCandidateId struct {
	Field []*QualityQrewriteCandidateIdField `json:"field,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Field") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Field") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteCandidateId) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteCandidateId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewriteCandidateIdField: The message represents a field in
// the query candidate Id.
type QualityQrewriteCandidateIdField struct {
	// Index: If needed, a servlet can use this field to assign an ID to
	// distinguish between different candidates of the same CandidateType.
	Index int64 `json:"index,omitempty"`

	// Possible values:
	//   "CANDIDATE_TYPE_UNSPECIFIED"
	//   "IDENTITY"
	//   "SPELLING"
	//   "S3_TOP_HYPOTHESIS"
	//   "AUTO_TRANSLATE"
	//   "ADS_ALTERNATIVE_RUN" - Indicates it is Ads qrewrite request
	// candidate, and it should run on alternative data version.
	// go/ads-qrewrite-multiversion
	//   "NEARBY_RETRIEVAL" - NearbyRetrieval creates a supplemental
	// QRewriteResult to send to Superroot where it is used for a
	// supplemental index lookup.
	//   "CONTEXTUAL_REWRITE" - Indicates that Genie rewrote the query using
	// contextual information.
	//   "SAFT_TOKENIZER"
	//   "CONVO_FPR" - ConversationalRewriteServlet rewrote the query using
	// context
	//   "SPOKEN_INTENT"
	//   "AUTO_TRANSLATE_ARGUMENT_TRANSFER" - Auto Translate with argument
	// transfer. go/missandei-argument-transfer-through-qus The query was
	// rewritten because it is probably a speech recognition error.
	// go/asr-rewriter.
	//   "CONTEXT_AWARE_SPEECH_RECOGNITION_REWRITE"
	//   "MAST" - go/mast-query
	//   "FUZZY_MATCHER_REWRITE" - go/afm
	//   "SHOPPING_PREFERENCES_REWRITE" - Rewrite with user explicit
	// shopping preferences.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteCandidateIdField) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteCandidateIdField
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityQrewriteContactCalendarName struct {
	Contact *NlpSemanticParsingModelsPersonPerson `json:"contact,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Contact") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Contact") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteContactCalendarName) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteContactCalendarName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityQrewriteFamilyCalendarAlias struct {
	FamilyCalendarId string `json:"familyCalendarId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FamilyCalendarId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FamilyCalendarId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteFamilyCalendarAlias) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteFamilyCalendarAlias
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityQrewritePersonalContactData: Contact metadata Next Id: 36
type QualityQrewritePersonalContactData struct {
	// AccountProvenance: Tracks the account owner of this contact. See
	// go/cross-account-understanding.
	AccountProvenance *QualityQrewriteAccountProvenance `json:"accountProvenance,omitempty"`

	// AdditionalContactMetadata: Other metadata relating with the contact.
	// This field is added so that the value can be copied to the
	// corresponding field |additional_contact_metadata| in person.proto,
	// that later will be logged to Assistant Interaction Event footprint
	// from client side.
	AdditionalContactMetadata []googleapi.RawMessage `json:"additionalContactMetadata,omitempty"`

	// CommonNameAliasConfidence: Populated only if matched_name_type is
	// GIVEN_NAME_ALIAS or FULL_NAME_ALIAS.
	CommonNameAliasConfidence float64 `json:"commonNameAliasConfidence,omitempty"`

	// ConceptId: Concept id for relationships in query language, e.g.
	// "Mother" in English, "Mère" in French. It's only populated for
	// source = RELATIONSHIP.
	ConceptId string `json:"conceptId,omitempty"`

	// ConceptIdEn: Concept id for relationships in English, e.g. "Mother"
	// for all non-English locales. It's only populated for source =
	// RELATIONSHIP. It is used as the key to store relationship in memory
	// (see http://go/assistant-relationship). For English, this field is
	// not filled, and we will use concept_id field as the relationship key
	// in memory.
	ConceptIdEn string `json:"conceptIdEn,omitempty"`

	// DisplayName: TODO(shuaiwang) these are kept here temporarily because
	// aqua regression tests are still referring to them, migrating aqua
	// regression tests to use the new person_data field depends on binary
	// change (i.e. this proto change) so there's a period we need to keep
	// both.
	DisplayName string `json:"displayName,omitempty"`

	FamilyName string `json:"familyName,omitempty"`

	// FfracScore: The ffrac score of the suggested contact from Starlight.
	FfracScore float64 `json:"ffracScore,omitempty"`

	GaiaId int64 `json:"gaiaId,omitempty,string"`

	GivenName string `json:"givenName,omitempty"`

	// HasAddressForDeviceContacts: Whether we have address info for this
	// contact. IMPORTANT, READ BEFORE USING THIS FIELD: - This is a
	// temporary solution to export this info for device contacts. - This
	// could only be set for device contacts, contacts from other sources
	// won't have this bit set even if there's address available inside
	// person_data. - This will go away once Starlight supports device
	// contacts, addresses will be available inside person_data the same way
	// as Focus contacts. TODO(shuaiwang) remove after b/20412551
	HasAddressForDeviceContacts bool `json:"hasAddressForDeviceContacts,omitempty"`

	HasGplusProfile bool `json:"hasGplusProfile,omitempty"`

	// IsFromOnDeviceLookup: If the contact data is from on device lookup.
	IsFromOnDeviceLookup bool `json:"isFromOnDeviceLookup,omitempty"`

	// IsTransliteratedMatch: Indicate the contact matches the
	// transliterated query.
	IsTransliteratedMatch bool `json:"isTransliteratedMatch,omitempty"`

	// IsVisibleToGuestsRelationship: If the lookup was done using
	// relationship which is visible to guests. This value will only be set
	// if lookup was done using relationship. E.g. user has a guest
	// relationship (doctor) -> (John) And user says "call doctor", then
	// this value will be true.
	IsVisibleToGuestsRelationship bool `json:"isVisibleToGuestsRelationship,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "SPELLING" - User spelled the name after contact no match.
	LookupNameSource string `json:"lookupNameSource,omitempty"`

	// MatchSignal: Populate only if AlternateSource is not NONE.
	MatchSignal *AssistantVerticalsCommonContactMatchSignal `json:"matchSignal,omitempty"`

	// MatchedNameType:
	// LINT.ThenChange(//depot/google3/assistant/verticals/communication/\
	// fulfillment/proto/contact_logging_enums.proto,
	// //depot/google3/assistant/api/dialog_state/values/person.proto,
	// //depot/google3/assistant/context/proto/person.proto)
	//
	// Possible values:
	//   "UNSPECIFIED"
	//   "GIVEN_NAME" - Contact's given name, or first word in name, or last
	// word if query is in CJK.
	//   "FAMILY_NAME" - Contact's family name, or last word in name, or
	// first word if query is in CJK.
	//   "FULL_NAME" - Contact's display name, or given+family, or
	// family+given if query is in CJK. Contact's middle name is optional.
	//   "NICKNAME" - Query span matches contact's nickname.
	//   "OTHER" - Not used yet.
	//   "INITIAL_WITH_FAMILY_NAME" - Either or both of first/middle
	// initials along with family name.
	//   "EMAIL_USERNAME" - Email username, controlled by
	// FocusNameParams.annotate_email_username.
	//   "VANITY_NICKNAME" - Vanity nicknames like "myself", data is at
	// //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.t
	// xt
	//   "GIVEN_NAME_ALIAS" - Contact's given name is a common name alias of
	// query span, e.g. query [Bob] may match contact with given name
	// "Robert".
	//   "FULL_NAME_ALIAS" - Contact's given name is a common name alias of
	// first word in query span, while remaining parts fully matched.
	//   "HOMOPHONE_GIVEN_NAME" - Homophone name match of given name, or
	// last word. Only for CJK query.
	//   "HOMOPHONE_FAMILY_NAME" - Homophone name match of family name, or
	// first word. Only for CJK query.
	//   "HOMOPHONE_FULL_NAME" - Homophone name match of full name, or
	// family+given. Only for CJK query.
	//   "HOMOPHONE_NICKNAME" - Homophone name match of nickname. Only for
	// CJK query.
	//   "GIVEN_MIDDLE_NAME" - Contact's given name + middle name. Only for
	// contacts with 3 words.
	//   "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL" - Contact's given name along
	// with last name initial. Only support non-CJKT contact name.
	//   "EMAIL_OF_FAMILY_MEMBER" - This type indicates we find a match of
	// the user's family member - as defined by families.google.com - by
	// matching the email full address. Controlled by
	// FocusNameParams.annotate_email_full_address.
	MatchedNameType string `json:"matchedNameType,omitempty"`

	// MatchedRecognitionAlternateName: Alternate name from recognition that
	// has contact matched. Need this to make name correction history log
	// consistent.
	MatchedRecognitionAlternateName string `json:"matchedRecognitionAlternateName,omitempty"`

	// PersonData: Metadata such as name, email, phone, etc.
	PersonData *AppsPeopleOzExternalMergedpeopleapiPerson `json:"personData,omitempty"`

	// PersonalContactDataLog: Log version of PersonalContactData. Holds
	// e.g. FUZZY match results. It is populated in NamedContactFrame when
	// fuzzy match is performed:
	// http://google3/quality/dialog_manager/frames/contact/named_contact_frame.cc?l=255&rcl=331994299
	// Currently only fuzzy ngram match results are logged here.
	PersonalContactDataLog *AssistantLogsCommunicationPersonalContactDataLog `json:"personalContactDataLog,omitempty"`

	// PkgPerson: Contains information about a Copley Person resolution
	// (go/copley-people). This field is used to propagate metadata related
	// to the resolved person, used for attribution and logging. Meaningful
	// data (addresses, phone numbers) are copied into person_data.
	PkgPerson *NlpSemanticParsingQRefAnnotation `json:"pkgPerson,omitempty"`

	// Possible values:
	//   "UNKNOWN_PKG_REFERENCE_TYPE"
	//   "PKG_NAME_REFERENCE" - Ann [Charlie]
	//   "PKG_RELATIONSHIP_REFERENCE" - my family dad my sister's kids
	PkgReferenceType string `json:"pkgReferenceType,omitempty"`

	// RecognitionAlternateScore: Populate only if AlternateSource is not
	// NONE.
	RecognitionAlternateScore float64 `json:"recognitionAlternateScore,omitempty"`

	// RecognitionAlternateSource: If not none, then it indicates the
	// personal contact data is alternate and how the alternate is
	// fulfilled.
	//
	// Possible values:
	//   "NONE"
	//   "S3_HYPOTHESES" - Alternate name from S3 recognition topN
	// hypothesis.
	//   "GENIE_QUERY_ALTERNATIVES" - Alternate name from Genie query
	// alternatives.
	//   "NAME_CORRECTION_LOG" - Alternate name from contact correction
	// history.
	//   "FUZZY_CONTACT_MATCH" - Fuzzy match with user's contacts.
	//   "NEURAL_CONTACT_MATCH" - Neural match. See
	// go/phonetic-contact-match.
	//   "NEURAL_CONTACT_MATCH_DARK_LAUNCH" - The dark launch for a neural
	// match. We found a match, but we ignore it for serving and just log
	// it.
	RecognitionAlternateSource string `json:"recognitionAlternateSource,omitempty"`

	// RelationshipLexicalInfo: Lexical information for relationships in
	// query language, e.g. "Mother" in English, "Mère" in French. It's
	// only populated for source = RELATIONSHIP.
	RelationshipLexicalInfo *CopleyLexicalMetadata `json:"relationshipLexicalInfo,omitempty"`

	// RelationshipMemory: Resolved relationship names and contact pointers
	// from Assistant Memory. This field is populated into both relationship
	// annotation (source = RELATIONSHIP) and Focus/device contacts
	// retrieved by that contact name. The data from Assistant Memory comes
	// from two different columns: ASSISTANT_SETTINGS and
	// PWS_CONTACT_ANNOTATION. We support multiple people with same
	// relationship (e.g. multiple brothers) by using a repeated
	// relationship_memory field. Examples are at
	// go/person-subgrammar-relationship.
	RelationshipMemory []*QualityQrewriteRelationshipMemoryData `json:"relationshipMemory,omitempty"`

	// SharedContactOwnerGaiaId: Gaia ID of the user this contact belongs
	// to. Only populates if contact is shared from another user. See
	// go/shared-contacts-assistant. E.g. user A triggers the request and
	// uses user B's contact data (which is marked as visible to user A).
	// This field will be populated with user B's gaia id.
	SharedContactOwnerGaiaId int64 `json:"sharedContactOwnerGaiaId,omitempty,string"`

	// Source:
	// LINT.ThenChange(//depot/google3/assistant/verticals/communication/\
	// fulfillment/proto/contact_logging_enums.proto,
	// //depot/google3/assistant/api/dialog_state/values/person.proto) Data
	// source of the contact data.
	//
	// Possible values:
	//   "FOCUS_CONTACT" - Contacts from Focus
	//   "DEVICE_CONTACT" - Contacts from device, see go/device-content
	//   "GMAIL_INFERENCE" - Contacts inferred from Gmail
	//   "S3_DECORATOR" - Contacts from S3 decorator
	//   "RELATIONSHIP" - Whitelisted relationships no matter if user has
	// such contact, see go/sls-personal_relationship_names_and_aliases.
	//   "VANITY" - Vanity nicknames or user's own profile name.
	//   "SIGNED_OUT_DEVICE" - Signed out device contact names
	//   "SHARED_CONTACT" - Contacts shared from other users. See
	// go/multi-user-shared-contact.
	//   "FAMILY_MEMBER" - People in the user's family group in
	// http://families.google.com who are not contacts.
	//   "SHARED_DEVICE_USER" - People who share a device with the user who
	// are not contacts.
	//   "ON_DEVICE_CONTACT_LOOKUP" - Contacts from on device lookup during
	// contact fulfillment.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountProvenance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountProvenance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewritePersonalContactData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewritePersonalContactData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityQrewritePersonalContactData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityQrewritePersonalContactData
	var s1 struct {
		CommonNameAliasConfidence gensupport.JSONFloat64 `json:"commonNameAliasConfidence"`
		FfracScore                gensupport.JSONFloat64 `json:"ffracScore"`
		RecognitionAlternateScore gensupport.JSONFloat64 `json:"recognitionAlternateScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CommonNameAliasConfidence = float64(s1.CommonNameAliasConfidence)
	s.FfracScore = float64(s1.FfracScore)
	s.RecognitionAlternateScore = float64(s1.RecognitionAlternateScore)
	return nil
}

type QualityQrewritePrimaryCalendarAlias struct {
}

// QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper: A calendar
// alias wrapper used for query annotation. Aliases values are defined
// in the extension with build visibility restrictions as they may
// contain data from an account other than the user's primary account.
// This proto is used as an metadata output from the QRewrite
// annotation. It can be used for calendar aliases from different
// sources i.e. aliases based on the domain of the account associated
// with the calendar (go/calendar-aliases-annotation).
type QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper struct {
}

// QualityQrewriteRelationshipMemoryData: Relationship->contact data
// provided by Assistant Memory.
type QualityQrewriteRelationshipMemoryData struct {
	// ContactPointer: The contact pointer. See
	// http://go/assistant-contact-id.
	ContactPointer *FocusBackendContactPointer `json:"contactPointer,omitempty"`

	// Value: The contact name copied from UserAttribute.value.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactPointer") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactPointer") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityQrewriteRelationshipMemoryData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityQrewriteRelationshipMemoryData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityRankembedMustangMustangRankEmbedInfo: Used as Mustang
// attachment DO NOT: - ACCESS THE PROTO FIELDS DIRECTLY - USE THE
// DECODING LIBRARY IN
// quality/rankembed/mustang/fixed_point_decoding_helpers.h INSTEAD. -
// USE HARDCODED MustangRankEmbedInfo TEXT PROTOS IN TESTS! USE
// quality/rankembed/test_utils/mustang_rankembed_info_utils.h INSTEAD.
type QualityRankembedMustangMustangRankEmbedInfo struct {
	// CompressedDocumentEmbedding: Each uint64 encodes 8 8-bit values for
	// the quantized document embedding
	CompressedDocumentEmbedding *QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding `json:"compressedDocumentEmbedding,omitempty"`

	// FixedPointEncoding: This field replaces the above 3
	// "per-encoding-type-fields", where the encoding type (and the
	// embedding type) are part of the encoding, and is stored in the first
	// byte. The remaining bytes are the same as the previous 3 fields, but
	// shifted by 1 byte. - byte[0]: encoding type & embedding type -
	// byte[1....]: similar to the above depending on the encoding type.
	FixedPointEncoding string `json:"fixedPointEncoding,omitempty"`

	// ScaledFixedPoint4Encoding: - byte[0]: version - bytes[1...4]: scalar
	// - bytes[5,...]: the values, one byte per 2 values
	ScaledFixedPoint4Encoding string `json:"scaledFixedPoint4Encoding,omitempty"`

	// ScaledFixedPoint8Encoding: - byte[0]: version - bytes[1...4]: scalar
	// - bytes[5,...]: the values, one byte per value
	ScaledFixedPoint8Encoding string `json:"scaledFixedPoint8Encoding,omitempty"`

	// ScaledShiftedFixedPoint4Encoding: - byte[0]: version - bytes[1...4]:
	// scalar - bytes[5...8]: shift - bytes[9,...]: the values, one byte per
	// 2 values
	ScaledShiftedFixedPoint4Encoding string `json:"scaledShiftedFixedPoint4Encoding,omitempty"`

	// VersionAndImprovInfo: First 7 bits encode the version, then each
	// chunck of 5 bits encode the index of a potential improv query (lsb to
	// msb) -------|-----|-----|-----|-----|----- version| id1 | id2 | id3 |
	// id4 | id5 where id1 is the index of the first improv query in the
	// improv debug table. As of cl/270008220, this field only contains the
	// version info. For backward compatibility, version still only uses the
	// first 7 bits, and is still prepended by 5 1 bits.
	VersionAndImprovInfo int64 `json:"versionAndImprovInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CompressedDocumentEmbedding") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "CompressedDocumentEmbedding") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityRankembedMustangMustangRankEmbedInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityRankembedMustangMustangRankEmbedInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding struct {
	// PackedValue: using fixed64 instead of uint64 saves ~14% is storage
	PackedValue googleapi.Uint64s `json:"packedValue,omitempty"`

	Value googleapi.Uint64s `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PackedValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PackedValue") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding) MarshalJSON() ([]byte, error) {
	type NoMethod QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData struct {
	App []*QualityRichsnippetsAppsProtosLaunchableAppPerDocData `json:"app,omitempty"`

	// ForceSendFields is a list of field names (e.g. "App") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "App") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityRichsnippetsAppsProtosLaunchableAppPerDocData: A subset of
// LaunchableApplication, which is stored in the PerDocData proto
// (indexer/perdocdata/perdocdata.proto) and thus stored in the Search
// Mustang index. It is used to identify documents containing app links
// at serving time by SuperRoot. A subset of LaunchableApplication is
// used to save on storage requirements.
type QualityRichsnippetsAppsProtosLaunchableAppPerDocData struct {
	// Possible values:
	//   "DISCOVERED" - This deeplink has been associated with a web
	// document. There is no additional information whether the deeplink's
	// content matches the web document's content.
	//   "VALIDATED" - The contents of this deeplink match the web document
	// it is associated with.
	IndexStatus string `json:"indexStatus,omitempty"`

	// PackageIdFingerprint: Android package id of the application
	// associated with this document (example: 'com.imdb.mobile'), encoded
	// with the Fingerprint2011() function.
	PackageIdFingerprint uint64 `json:"packageIdFingerprint,omitempty,string"`

	// PerAppInfoEncoded: A subset of the data in the PerAppInfo message,
	// encoded to save on space. See quality/calypso/utils/app_info_utils.h
	// for encoding/decoding.
	PerAppInfoEncoded uint64 `json:"perAppInfoEncoded,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "IndexStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IndexStatus") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityRichsnippetsAppsProtosLaunchableAppPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityRichsnippetsAppsProtosLaunchableAppPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySalientCountriesSalientCountry: This is a measure of how
// salient this country is for the document.
type QualitySalientCountriesSalientCountry struct {
	// Country: 2-letter country format.
	Country string `json:"country,omitempty"`

	// Salience: How salient this country is for the document. [0,1] range.
	Salience float64 `json:"salience,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Country") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Country") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientCountriesSalientCountry) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientCountriesSalientCountry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySalientCountriesSalientCountry) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySalientCountriesSalientCountry
	var s1 struct {
		Salience gensupport.JSONFloat64 `json:"salience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Salience = float64(s1.Salience)
	return nil
}

// QualitySalientCountriesSalientCountrySet: Set of SalientCountry for a
// document.
type QualitySalientCountriesSalientCountrySet struct {
	// PackedCountry: Packed Country and salience optimized for index
	// storage
	PackedCountry []int64 `json:"packedCountry,omitempty"`

	PackedSalience []int64 `json:"packedSalience,omitempty"`

	SalientCountry []*QualitySalientCountriesSalientCountry `json:"salientCountry,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PackedCountry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PackedCountry") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientCountriesSalientCountrySet) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientCountriesSalientCountrySet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySalientTermsDocData: DocData contains additional
// salient-term-set-level information that complements a SalientTermSet.
type QualitySalientTermsDocData struct {
	// Confidence: confidence is a measurement of how much data we had to
	// compute the SalientTermSet. Range: [0.0, 1.0]
	Confidence float64 `json:"confidence,omitempty"`

	// HeadVolumeRatio: head_volume_ratio is the ratio of the sum of term
	// frequency of the top K terms over the volume of all terms. Range:
	// [0.0, 1.0]. K is defined by Accumulator2Params::head_size.
	HeadVolumeRatio float64 `json:"headVolumeRatio,omitempty"`

	// Language: language is the main language of this SalientTermSet.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	Language string `json:"language,omitempty"`

	// SignalData: signal_data contains signal-specific (e.g., body,
	// anchors, clicks) data for this SalientTermSet.
	SignalData []*QualitySalientTermsSignalData `json:"signalData,omitempty"`

	// VirtualVolume: virtual_volume is a measurement of how much data we
	// had to compute the SalientTermSet. Range: [0.0, +infinity)].
	VirtualVolume float64 `json:"virtualVolume,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientTermsDocData) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientTermsDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySalientTermsDocData) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySalientTermsDocData
	var s1 struct {
		Confidence      gensupport.JSONFloat64 `json:"confidence"`
		HeadVolumeRatio gensupport.JSONFloat64 `json:"headVolumeRatio"`
		VirtualVolume   gensupport.JSONFloat64 `json:"virtualVolume"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.HeadVolumeRatio = float64(s1.HeadVolumeRatio)
	s.VirtualVolume = float64(s1.VirtualVolume)
	return nil
}

// QualitySalientTermsSalientTerm: SalientTerm can be two things
// depending on where this message is. When right under a
// SalientTermSet, it is a normalized term and weight pair, along with
// other term-level data. When under another SalientTerm message, it is
// a non-normalized original term (see original_term field).
type QualitySalientTermsSalientTerm struct {
	// Idf: idf of the original_term. Used by Accumulator2. This field is
	// only available in debug mode.
	Idf float64 `json:"idf,omitempty"`

	// Label: label can be two things depending on where this message is.
	// When right under a SalientTermSet, it is the normalized term returned
	// by quality_salient_terms::utils::NormalizeTerm() from
	// salient_terms_utils.h. When under another SalientTerm message, it is
	// the original term as found in a signal (see original_term field).
	Label string `json:"label,omitempty"`

	// OriginalTerm: original_term are the different ways we found this
	// normalized term in the signals. They are in increasing idf order (the
	// most common version first). An empty string means that this original
	// term is the same as the label field in the parent SalientTerm
	// message. NOTE: Please do not access this field directly. Use
	// quality_salient_terms::utils::OriginalTermsIterator from
	// salient_terms_utils.h instead.
	OriginalTerm []*QualitySalientTermsSalientTerm `json:"originalTerm,omitempty"`

	// Salience: salience is the importance of the term as a descriptor in
	// [0, 1] (the higher the more important). This field takes precedence
	// over weight field below. NOTE: Please do not access this field
	// directly. Use quality_salient_terms::utils::GetSalience() from
	// salient_terms_utils.h instead.
	Salience float64 `json:"salience,omitempty"`

	// SignalTerm: signal_term contains extra signal-specific (e.g., body,
	// anchors, clicks) data for this term.
	SignalTerm []*QualitySalientTermsSignalTermData `json:"signalTerm,omitempty"`

	// VirtualTf: virtual_tf is the accumulated corrected term frequency
	// from all the signals. This field is only available in debug mode.
	VirtualTf float64 `json:"virtualTf,omitempty"`

	// Weight: weight is the importance of the term as a descriptor in [0,
	// 100] (the higher the more important). NOTE: Please do not access this
	// field directly. Use quality_salient_terms::utils::GetSalience() from
	// salient_terms_utils.h instead. DEPRECATED: prefer salience field
	// above.
	Weight int64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Idf") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Idf") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientTermsSalientTerm) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientTermsSalientTerm
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySalientTermsSalientTerm) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySalientTermsSalientTerm
	var s1 struct {
		Idf       gensupport.JSONFloat64 `json:"idf"`
		Salience  gensupport.JSONFloat64 `json:"salience"`
		VirtualTf gensupport.JSONFloat64 `json:"virtualTf"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Idf = float64(s1.Idf)
	s.Salience = float64(s1.Salience)
	s.VirtualTf = float64(s1.VirtualTf)
	return nil
}

// QualitySalientTermsSalientTermSet: SalientTermSet is a collection of
// terms (unigrams and bigrams) with associated weights that can
// describe something. The "salient terms".
type QualitySalientTermsSalientTermSet struct {
	// DocData: doc_data contain additional salient-term-set-level data.
	DocData *QualitySalientTermsDocData `json:"docData,omitempty"`

	// SalientTerm: salient_term is the list of terms that are good
	// descriptors, sorted in decreasing order of weight.
	SalientTerm []*QualitySalientTermsSalientTerm `json:"salientTerm,omitempty"`

	// Version: version is the Salient Terms version used to create the
	// SalientTermSet. This is specific to web documents salient terms.
	//
	// Possible values:
	//   "UNKNOWN" - In case an old binary doesn't know a recently added
	// version.
	//   "V1" - Approximate AScorer version (ariane/104957).
	//   "V2" - Tucano version (ariane/115621).
	//   "V2_1" - Tucano 2.1 version (ariane/125789).
	//   "V2_2" - Tucano 2.2 version (ariane/139157).
	//   "V3" - Lyrebird: Salient Terms V3 (ariane/183676).
	//   "V3_1" - Lyrebird V2: Salient Terms V3.1 (ariane/194368).
	//   "V3_2" - Lyrebird V3: Salient Terms V3.2 (ariane/201742).
	//   "V4" - Lyrebird V4: Salient Terms V4 (ariane/279440).
	//   "V4_1" - Lyrebird V4.1: Salient Terms V4.1 (ariane/4015709 &
	//   "V4_2" - ariane/4031318). Lyrebird V4.2: Salient Terms V4.2
	// (ariane/4057245)
	//   "V5" - Lyrebird V5: Salient Terms V5 (ariane/4076831)
	//   "V5_1" - Lyrebird V5.1: Salient Terms V5.1 (ariane/4144754)
	//   "V5_2" - Lyrebird V5.2: Salient Terms V5.2 (ariane/4218250)
	//   "V1_BODYONLY" - Lyrebird BodyOnly V1.
	//   "V2_BODYONLY" - Experimental version of Lyrebird BodyOnly V2.
	//   "RENAME_ME_TO_ADD_NEW_ENUM_16" - Dummy enum values to be renamed
	// when a new enum value is needed. Note that this is a requirement from
	// go/cds-schema-council. If you rename one of these enum values, be
	// sure to add (at least one) more below.
	//   "RENAME_ME_TO_ADD_NEW_ENUM_17"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_18"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_19"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_20"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_21"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_22"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_23"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_24"
	//   "RENAME_ME_TO_ADD_NEW_ENUM_25"
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientTermsSalientTermSet) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientTermsSalientTermSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySalientTermsSignalData: SignalData stores signal-specific
// salient-term-set-level information. Stores mostly internal data as it
// is one of the primary data structures used in the populators.
type QualitySalientTermsSignalData struct {
	// Bias: A fixed bias for this signal, the higher the stronger. This can
	// be used to balance the weight of signals independently of the
	// confidence we give it. This field is only available in debug mode.
	Bias float64 `json:"bias,omitempty"`

	// Confidence: The measurement of how much we trust this signal. Range:
	// [0.0, 1.0] This field is available is both debug and non-debug mode.
	Confidence float64 `json:"confidence,omitempty"`

	// HalfSalience: Raw saliences equal to half_salience will be equal to
	// 0.5 normalized. Range: [0, volume]. This field is only available in
	// debug mode.
	HalfSalience float64 `json:"halfSalience,omitempty"`

	// NoiseCorrection: The minimum TF for a term not to be considered
	// noise. While the possible range of values for this field is [0,
	// observed_volume], it is expected to be a somewhat small percentage of
	// observed_volume (e.g. 5%). This field is only available in debug
	// mode.
	NoiseCorrection float64 `json:"noiseCorrection,omitempty"`

	// ObservedConfidence: The measurement of how much we trust this signal,
	// calculated using the observed volume. Range: [0.0, 1.0] This field is
	// only available in debug mode.
	ObservedConfidence float64 `json:"observedConfidence,omitempty"`

	// ObservedVolume: The amount of signal we observed for a document.
	// Range: [0.0, +infinity) This field is only available in debug mode.
	ObservedVolume float64 `json:"observedVolume,omitempty"`

	// RawVolume: The amount of raw signal we observed for a document.
	// Range: [0.0, +infinity) This field is only available in debug mode.
	RawVolume float64 `json:"rawVolume,omitempty"`

	// Source: source is the type of the signal of this SignalData.
	//
	// Possible values:
	//   "BODY"
	//   "ANCHORS"
	//   "CLICKS"
	//   "TITLE"
	//   "NAME"
	//   "DATE"
	//   "URL"
	//   "ENTITY_NAVBOOST" - Only used for Entity Salient Terms.
	//   "SYNTHETIC_BODY" - Only used for Entity Salient Terms.
	Source string `json:"source,omitempty"`

	// Volume: The amount of signal left after applying all corrections.
	// Range: [0.0, +infinity) This field is only available in debug mode.
	Volume float64 `json:"volume,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bias") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bias") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientTermsSignalData) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientTermsSignalData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySalientTermsSignalData) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySalientTermsSignalData
	var s1 struct {
		Bias               gensupport.JSONFloat64 `json:"bias"`
		Confidence         gensupport.JSONFloat64 `json:"confidence"`
		HalfSalience       gensupport.JSONFloat64 `json:"halfSalience"`
		NoiseCorrection    gensupport.JSONFloat64 `json:"noiseCorrection"`
		ObservedConfidence gensupport.JSONFloat64 `json:"observedConfidence"`
		ObservedVolume     gensupport.JSONFloat64 `json:"observedVolume"`
		RawVolume          gensupport.JSONFloat64 `json:"rawVolume"`
		Volume             gensupport.JSONFloat64 `json:"volume"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Bias = float64(s1.Bias)
	s.Confidence = float64(s1.Confidence)
	s.HalfSalience = float64(s1.HalfSalience)
	s.NoiseCorrection = float64(s1.NoiseCorrection)
	s.ObservedConfidence = float64(s1.ObservedConfidence)
	s.ObservedVolume = float64(s1.ObservedVolume)
	s.RawVolume = float64(s1.RawVolume)
	s.Volume = float64(s1.Volume)
	return nil
}

// QualitySalientTermsSignalTermData: SignalTermData is signal-specific
// term-level information. Stores mostly internal data as it is one of
// the primary data structures used in the populators.
type QualitySalientTermsSignalTermData struct {
	// BigramDiscountTf: The deduction of bigram counts from its unigram
	// children. This field is only available in debug mode.
	BigramDiscountTf float64 `json:"bigramDiscountTf,omitempty"`

	// Bigramness: How much we trust this bigram. For bigrams only. Range:
	// [0.0, 1.0] This field is only available in debug mode.
	Bigramness float64 `json:"bigramness,omitempty"`

	// Centrality: Measures how topical this term is to a particular signal.
	// A term like "lincoln" in the Abraham Lincoln's Wikipedia page should
	// have a centrality close to 1.0 while non-central terms like "florida"
	// should have a centrality close to 0.0. Range: [0.0, 1.0] This field
	// is only available in debug mode.
	Centrality float64 `json:"centrality,omitempty"`

	// CorrectedTf: The final term frequency for a particular term. This
	// field is only available in debug mode.
	CorrectedTf float64 `json:"correctedTf,omitempty"`

	// ExpectedTf: The term frequency we were expecting for a term given its
	// IDF. Range: [0, observed_volume] This field is only available in
	// debug mode.
	ExpectedTf float64 `json:"expectedTf,omitempty"`

	// GlobalNpmi: Global NPMI. For bigrams only. This is a measure of the
	// quality of bigrams calculated using IDF. Range: [-1.0, 1.0] This
	// field is only available in debug mode.
	GlobalNpmi float64 `json:"globalNpmi,omitempty"`

	// Idf: The IDF of the label of a particular term. For a canonical term,
	// this is the mean IDF of its originals, weighted by their observed TF.
	// This field is only available in debug mode.
	Idf float64 `json:"idf,omitempty"`

	// IsBigram: Whether or not this term is a bigram. This field is only
	// available in debug mode.
	IsBigram bool `json:"isBigram,omitempty"`

	// Label: Raw string that identifies a particular term. This field is
	// only available in debug mode.
	Label string `json:"label,omitempty"`

	// LocalNpmi: Local NPMI (normalized pointwise mutual information). For
	// bigrams only. This is a measure of the quality of bigrams calculated
	// using observed TF. Range: [-1.0, 1.0] This field is only available in
	// debug mode.
	LocalNpmi float64 `json:"localNpmi,omitempty"`

	// ObservedTf: The observed term frequency in a particular signal. This
	// field is only available in debug mode.
	ObservedTf float64 `json:"observedTf,omitempty"`

	// OriginalTerm: The list of the original terms for a canonical. This is
	// used in the pipeline and it is not present in the final output. This
	// field is only available in debug mode.
	OriginalTerm []*QualitySalientTermsSignalTermData `json:"originalTerm,omitempty"`

	// RawTf: The raw term frequency in a particular signal. This field is
	// only available in debug mode.
	RawTf float64 `json:"rawTf,omitempty"`

	// Salience: The measure of how important this term is in this signal.
	// Range: [0.0, 1.0] This field is only available in debug mode.
	Salience float64 `json:"salience,omitempty"`

	// Source: source is the type of the signal of this SignalTermData.
	//
	// Possible values:
	//   "BODY"
	//   "ANCHORS"
	//   "CLICKS"
	//   "TITLE"
	//   "NAME"
	//   "DATE"
	//   "URL"
	//   "ENTITY_NAVBOOST" - Only used for Entity Salient Terms.
	//   "SYNTHETIC_BODY" - Only used for Entity Salient Terms.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BigramDiscountTf") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BigramDiscountTf") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySalientTermsSignalTermData) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySalientTermsSignalTermData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySalientTermsSignalTermData) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySalientTermsSignalTermData
	var s1 struct {
		BigramDiscountTf gensupport.JSONFloat64 `json:"bigramDiscountTf"`
		Bigramness       gensupport.JSONFloat64 `json:"bigramness"`
		Centrality       gensupport.JSONFloat64 `json:"centrality"`
		CorrectedTf      gensupport.JSONFloat64 `json:"correctedTf"`
		ExpectedTf       gensupport.JSONFloat64 `json:"expectedTf"`
		GlobalNpmi       gensupport.JSONFloat64 `json:"globalNpmi"`
		Idf              gensupport.JSONFloat64 `json:"idf"`
		LocalNpmi        gensupport.JSONFloat64 `json:"localNpmi"`
		ObservedTf       gensupport.JSONFloat64 `json:"observedTf"`
		RawTf            gensupport.JSONFloat64 `json:"rawTf"`
		Salience         gensupport.JSONFloat64 `json:"salience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BigramDiscountTf = float64(s1.BigramDiscountTf)
	s.Bigramness = float64(s1.Bigramness)
	s.Centrality = float64(s1.Centrality)
	s.CorrectedTf = float64(s1.CorrectedTf)
	s.ExpectedTf = float64(s1.ExpectedTf)
	s.GlobalNpmi = float64(s1.GlobalNpmi)
	s.Idf = float64(s1.Idf)
	s.LocalNpmi = float64(s1.LocalNpmi)
	s.ObservedTf = float64(s1.ObservedTf)
	s.RawTf = float64(s1.RawTf)
	s.Salience = float64(s1.Salience)
	return nil
}

type QualitySherlockKnexAnnotation struct {
	Item []*QualitySherlockKnexAnnotationItem `json:"item,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Item") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Item") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySherlockKnexAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySherlockKnexAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySherlockKnexAnnotationItem struct {
	// CalibratedScore: in [0, 1].
	CalibratedScore float64 `json:"calibratedScore,omitempty"`

	DebugName string `json:"debugName,omitempty"`

	// EquivalentMid: in /m/ or /g/.
	EquivalentMid string `json:"equivalentMid,omitempty"`

	// Score: in [0, 1].
	Score float64 `json:"score,omitempty"`

	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CalibratedScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CalibratedScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySherlockKnexAnnotationItem) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySherlockKnexAnnotationItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySherlockKnexAnnotationItem) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySherlockKnexAnnotationItem
	var s1 struct {
		CalibratedScore gensupport.JSONFloat64 `json:"calibratedScore"`
		Score           gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CalibratedScore = float64(s1.CalibratedScore)
	s.Score = float64(s1.Score)
	return nil
}

// QualityShoppingShoppingAttachment: This proto is a lightweight
// version of ShoppingAnnotation in docjoin attachment. We're doing a
// deep copy of protos defined in ShoppingAnnotation so that we can
// control individual fields that will sit in Muppet. Data here will be
// used for scoring organic shopping web results and previews. Many
// shopping related signals, e.g., product review score, are also served
// from this attachment. Next ID: 21
type QualityShoppingShoppingAttachment struct {
	// DatasetModelArticleScore: Score from the blockbert article classifier
	// model. go/article-understanding-project
	DatasetModelArticleScore int64 `json:"datasetModelArticleScore,omitempty"`

	DatasetModelBuyingGuideScore int64 `json:"datasetModelBuyingGuideScore,omitempty"`

	// DatasetModelForumListScore: From forum and qna confidence score *
	// 100, http://go/sdu-ugc-page-intro
	DatasetModelForumListScore int64 `json:"datasetModelForumListScore,omitempty"`

	DatasetModelForumSingleScore int64 `json:"datasetModelForumSingleScore,omitempty"`

	DatasetModelInStoreOnlyScore int64 `json:"datasetModelInStoreOnlyScore,omitempty"`

	DatasetModelIndirectAvailabilityScore int64 `json:"datasetModelIndirectAvailabilityScore,omitempty"`

	// DatasetModelMultiProductScore: From indexing.ml.PageType.confidence *
	// 100 (DatasetModelAnnotation in cdoc) go/sdu-shopping-page-intro
	DatasetModelMultiProductScore int64 `json:"datasetModelMultiProductScore,omitempty"`

	DatasetModelProductComparisonScore int64 `json:"datasetModelProductComparisonScore,omitempty"`

	DatasetModelProductReviewScore int64 `json:"datasetModelProductReviewScore,omitempty"`

	DatasetModelProductTopnScore int64 `json:"datasetModelProductTopnScore,omitempty"`

	DatasetModelQnaListScore int64 `json:"datasetModelQnaListScore,omitempty"`

	DatasetModelQnaSingleScore int64 `json:"datasetModelQnaSingleScore,omitempty"`

	DatasetModelSingleProductScore int64 `json:"datasetModelSingleProductScore,omitempty"`

	DatasetModelSoldOutScore int64 `json:"datasetModelSoldOutScore,omitempty"`

	// ExpiredShoppingPageScore: From
	// indexing.badpages.CollapserInfo.expired_shopping_page_score * 100
	ExpiredShoppingPageScore int64 `json:"expiredShoppingPageScore,omitempty"`

	// MultiProductScore: From
	// MagicPageTypeAnnotation.multiplicity.confidence_score * 100
	// Deprecated as of July 2020 when dataset_model_multi_product_score and
	// dataset_model_single_product_score were added.
	MultiProductScore int64 `json:"multiProductScore,omitempty"`

	Product []*QualityShoppingShoppingAttachmentProduct `json:"product,omitempty"`

	// ShoppingSiteScore: From ShoppingSiteClassifier.score * 100
	ShoppingSiteScore int64 `json:"shoppingSiteScore,omitempty"`

	// ShoppingSiteScoreShopfab: From ShoppingSiteClassifierShopfab.score *
	// 100
	ShoppingSiteScoreShopfab int64 `json:"shoppingSiteScoreShopfab,omitempty"`

	SingleProductScore int64 `json:"singleProductScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DatasetModelArticleScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DatasetModelArticleScore")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityShoppingShoppingAttachmentLocale struct {
	// LanguageId: Use integers for fast scoring. Note: 26 is
	// UNKNOWN_LANGUAGE_ID, 0 is UNKNOWN region, see
	// i18n::languages::Language and StableInternalRegionconverter Use -1 as
	// default for both.
	LanguageId int64 `json:"languageId,omitempty"`

	RegionId int64 `json:"regionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LanguageId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LanguageId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentLocale) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentLocale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityShoppingShoppingAttachmentMokaFacetValue: Moka product
// attribute facet (go/gx).
type QualityShoppingShoppingAttachmentMokaFacetValue struct {
	FacetId int64 `json:"facetId,omitempty,string"`

	MeasureValue float64 `json:"measureValue,omitempty"`

	TagId int64 `json:"tagId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "FacetId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FacetId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentMokaFacetValue) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentMokaFacetValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityShoppingShoppingAttachmentMokaFacetValue) UnmarshalJSON(data []byte) error {
	type NoMethod QualityShoppingShoppingAttachmentMokaFacetValue
	var s1 struct {
		MeasureValue gensupport.JSONFloat64 `json:"measureValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MeasureValue = float64(s1.MeasureValue)
	return nil
}

type QualityShoppingShoppingAttachmentOffer struct {
	// Possible values:
	//   "CONDITION_UNKNOWN"
	//   "CONDITION_NEW"
	//   "CONDITION_REFURBISHED"
	//   "CONDITION_USED"
	//   "CONDITION_OTHER"
	Condition string `json:"condition,omitempty"`

	// Possible values:
	//   "OFFER_CONTROL_TYPE_UNKNOWN"
	//   "OFFER_CONTROL_TYPE_MERCHANT_MANAGED"
	//   "OFFER_CONTROL_TYPE_UNMANAGED"
	ControlType string `json:"controlType,omitempty"`

	// FingerprintOfOfferUrls: fingerprint of original offer item_urland
	// mobile_offer_url (if present) to be able to understand if offer data
	// came from different url.
	FingerprintOfOfferUrls googleapi.Uint64s `json:"fingerprintOfOfferUrls,omitempty"`

	// ImageId: image_id is sorted and distinct for efficient search during
	// serving.
	ImageId googleapi.Uint64s `json:"imageId,omitempty"`

	// InferredImages: inferred_images are sorted by inferred_image_id for
	// efficient search during serving.
	InferredImages []*ShoppingWebentityShoppingAnnotationInferredImage `json:"inferredImages,omitempty"`

	// IsLensBuildable: Is the offer Lens buildable. The corresponding field
	// in Shopping Annotation is SurfaceSelection.
	IsLensBuildable bool `json:"isLensBuildable,omitempty"`

	// MatchingType: information about methods used to match offer with
	// indexed url. See shopping_annotation.proto
	MatchingType int64 `json:"matchingType,omitempty,string"`

	// MerchantAccountId: account_id of the merchant in shopping systems.
	MerchantAccountId int64 `json:"merchantAccountId,omitempty,string"`

	// MerchantItemId: merchant_item_id is meaningless without the
	// merchant_account_id.
	MerchantItemId string `json:"merchantItemId,omitempty"`

	// NonDisplayableBrandMerchantRelationship: direct to consumer brand
	// merchant relationship
	//
	// Possible values:
	//   "OFFER_BRAND_MERCHANT_RELATIONSHIP_UNKNOWN"
	//   "OFFER_BRAND_MERCHANT_RELATIONSHIP_DTC_CHANNEL"
	NonDisplayableBrandMerchantRelationship string `json:"nonDisplayableBrandMerchantRelationship,omitempty"`

	NonDisplayableCurrency string `json:"nonDisplayableCurrency,omitempty"`

	// NonDisplayableOrganicScoreMillis: Normalized riskiness score for
	// Organic destinations. It's in range [1,1000] with 1 being the worst
	// score and 1000 being the best.
	NonDisplayableOrganicScoreMillis int64 `json:"nonDisplayableOrganicScoreMillis,omitempty"`

	OfferDocid uint64 `json:"offerDocid,omitempty,string"`

	// Possible values:
	//   "REFERENCE_TYPE_UNKNOWN"
	//   "REFERENCE_TYPE_MAIN_OFFER_PAGE"
	//   "REFERENCE_TYPE_OUTLINK"
	RefType string `json:"refType,omitempty"`

	SoriVersionId *ShoppingWebentityShoppingAnnotationSoriVersionId `json:"soriVersionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Condition") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Condition") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentOffer) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentOffer
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityShoppingShoppingAttachmentPBlock: Next ID: 18
type QualityShoppingShoppingAttachmentPBlock struct {
	// FullTitle: Field full_title may contain duplicate info from title and
	// list_title.
	FullTitle string `json:"fullTitle,omitempty"`

	// ImageDocid: Ordering for `image_docid`, and `image_info` are the
	// same.
	ImageDocid googleapi.Uint64s `json:"imageDocid,omitempty"`

	ImageInfo []*QualityShoppingShoppingAttachmentPBlockImageInfo `json:"imageInfo,omitempty"`

	IsFreeDelivery bool `json:"isFreeDelivery,omitempty"`

	IsFreeReturn bool `json:"isFreeReturn,omitempty"`

	ListTitle string `json:"listTitle,omitempty"`

	MaxPriceValue float64 `json:"maxPriceValue,omitempty"`

	MinPriceValue float64 `json:"minPriceValue,omitempty"`

	Price string `json:"price,omitempty"`

	PriceCurrency string `json:"priceCurrency,omitempty"`

	PriceValue float64 `json:"priceValue,omitempty"`

	// Title: Product info extracted by Product Blocks
	// go/sdu-shopping-page-intro and go/product-block-extraction. Here is
	// an example of a page with a ## list_title (Shoes) and 3 blocks with
	// their own titles: | Shoes | | ---------------------| | * For Running
	// | | ---------------------| | * Men's Hiking | |
	// ---------------------| ## | * Dress Shoes | The field full_title is
	// what we constructed to best describe the product in the block. For
	// example, for the above 3 blocks, their full_titles will contain info
	// from list_title: "Shoes For Running", "Shoes Men's Hiking", "Dress
	// Shoes". Note that the list_title is not repeated for the 3rd block
	// Real sample pages: http://screen/6UaoBtwWsLfbSKg
	// http://screen/BDHRgDonKG3KcXu, http://screen/53tLwNaX8mmYzDz
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FullTitle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FullTitle") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentPBlock) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentPBlock
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityShoppingShoppingAttachmentPBlock) UnmarshalJSON(data []byte) error {
	type NoMethod QualityShoppingShoppingAttachmentPBlock
	var s1 struct {
		MaxPriceValue gensupport.JSONFloat64 `json:"maxPriceValue"`
		MinPriceValue gensupport.JSONFloat64 `json:"minPriceValue"`
		PriceValue    gensupport.JSONFloat64 `json:"priceValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxPriceValue = float64(s1.MaxPriceValue)
	s.MinPriceValue = float64(s1.MinPriceValue)
	s.PriceValue = float64(s1.PriceValue)
	return nil
}

type QualityShoppingShoppingAttachmentPBlockImageInfo struct {
	Height int64 `json:"height,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentPBlockImageInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentPBlockImageInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityShoppingShoppingAttachmentProduct struct {
	AggregateRating *ShoppingWebentityShoppingAnnotationProductRating `json:"aggregateRating,omitempty"`

	BrandEntityId uint64 `json:"brandEntityId,omitempty,string"`

	CatalogId uint64 `json:"catalogId,omitempty,string"`

	GlobalProductClusterId uint64 `json:"globalProductClusterId,omitempty,string"`

	Locale *QualityShoppingShoppingAttachmentLocale `json:"locale,omitempty"`

	MokaFacet []*QualityShoppingShoppingAttachmentMokaFacetValue `json:"mokaFacet,omitempty"`

	NonDisplayableDescription string `json:"nonDisplayableDescription,omitempty"`

	NonDisplayableTitle string `json:"nonDisplayableTitle,omitempty"`

	Offer *QualityShoppingShoppingAttachmentOffer `json:"offer,omitempty"`

	// OutlinkDomainRelationship: Whether an outlink points to the same
	// domain or off-domain. Only added if the relationship is known, and
	// the Offer has ref_type of OUTLINK.
	//
	// Possible values:
	//   "OUTLINK_TARGET_RELATIONSHIP_UNKNOWN"
	//   "OUTLINK_TARGET_RELATIONSHIP_SAME_DOMAIN"
	//   "OUTLINK_TARGET_RELATIONSHIP_OFF_DOMAIN"
	OutlinkDomainRelationship string `json:"outlinkDomainRelationship,omitempty"`

	// Pblock: Client needs to make decision on which field to use when both
	// non_displayable_title and pblock.final_title are present.
	Pblock *QualityShoppingShoppingAttachmentPBlock `json:"pblock,omitempty"`

	ProductClusterMid uint64 `json:"productClusterMid,omitempty,string"`

	// ProductPopularity: Organic product popularity.
	ProductPopularity float64 `json:"productPopularity,omitempty"`

	// RelevanceEmbedding: Relevance embedding from
	// ShoppingAnnotation.Product
	RelevanceEmbedding []*QualityRankembedMustangMustangRankEmbedInfo `json:"relevanceEmbedding,omitempty"`

	// WeakGlobalProductClusterId: Matched/Inferred weak product identity -
	// set only if the global_product_cluster_id is missing
	WeakGlobalProductClusterId uint64 `json:"weakGlobalProductClusterId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AggregateRating") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregateRating") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityShoppingShoppingAttachmentProduct) MarshalJSON() ([]byte, error) {
	type NoMethod QualityShoppingShoppingAttachmentProduct
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityShoppingShoppingAttachmentProduct) UnmarshalJSON(data []byte) error {
	type NoMethod QualityShoppingShoppingAttachmentProduct
	var s1 struct {
		ProductPopularity gensupport.JSONFloat64 `json:"productPopularity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ProductPopularity = float64(s1.ProductPopularity)
	return nil
}

// QualitySitemapBreadcrumbTarget: Sitelink candidates that is generated
// from breadcrumbs.
type QualitySitemapBreadcrumbTarget struct {
	Docs []*QualitySitemapBreadcrumbTargetDoc `json:"docs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docs") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapBreadcrumbTarget) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapBreadcrumbTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySitemapBreadcrumbTargetDoc struct {
	// Count: The number of web pages that contains the url in their
	// breadcrumbs.
	Count int64 `json:"count,omitempty"`

	Title string `json:"title,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapBreadcrumbTargetDoc) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapBreadcrumbTargetDoc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySitemapCoClickTarget struct {
	Docs []*QualitySitemapCoClickTargetDoc `json:"docs,omitempty"`

	Language string `json:"language,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docs") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapCoClickTarget) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapCoClickTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySitemapCoClickTargetDoc struct {
	CoClickByLocale []*QualitySitemapCoClickTargetDocCoClickByLocale `json:"coClickByLocale,omitempty"`

	Title string `json:"title,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CoClickByLocale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CoClickByLocale") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapCoClickTargetDoc) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapCoClickTargetDoc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySitemapCoClickTargetDocCoClickByLocale struct {
	CoClicks float64 `json:"coClicks,omitempty"`

	CoClicksCapped float64 `json:"coClicksCapped,omitempty"`

	CoClicksParent float64 `json:"coClicksParent,omitempty"`

	Locale string `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CoClicks") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CoClicks") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapCoClickTargetDocCoClickByLocale) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapCoClickTargetDocCoClickByLocale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySitemapCoClickTargetDocCoClickByLocale) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySitemapCoClickTargetDocCoClickByLocale
	var s1 struct {
		CoClicks       gensupport.JSONFloat64 `json:"coClicks"`
		CoClicksCapped gensupport.JSONFloat64 `json:"coClicksCapped"`
		CoClicksParent gensupport.JSONFloat64 `json:"coClicksParent"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CoClicks = float64(s1.CoClicks)
	s.CoClicksCapped = float64(s1.CoClicksCapped)
	s.CoClicksParent = float64(s1.CoClicksParent)
	return nil
}

// QualitySitemapScoringSignals: Scoring signals for computing the
// sitelink score. This message is currently intended only for
// debugging. Accordingly, this is populated in CDoc but not in MDU. It
// is enforced by the [(exclude_from_mdu) = true] annotation of the
// corresponding fields in Target and TargetGroup.
type QualitySitemapScoringSignals struct {
	// Possible values:
	//   "UNSET" - As per Protocol buffer best practice.
	//   "LOW_RELATIVE_CONFIDENCE_IMPRESSIONS"
	Annotations []string `json:"annotations,omitempty"`

	ChromeTransCount uint64 `json:"chromeTransCount,omitempty,string"`

	ChromeTransProb float64 `json:"chromeTransProb,omitempty"`

	ChromeWeight float64 `json:"chromeWeight,omitempty"`

	Country []string `json:"country,omitempty"`

	CountryConfidence []float64 `json:"countryConfidence,omitempty"`

	Impressions uint64 `json:"impressions,omitempty,string"`

	LangConfidence []float64 `json:"langConfidence,omitempty"`

	Language []string `json:"language,omitempty"`

	LocalCountryIdentifier []string `json:"localCountryIdentifier,omitempty"`

	LongClicks uint64 `json:"longClicks,omitempty,string"`

	LongCtr float64 `json:"longCtr,omitempty"`

	NavboostScore float64 `json:"navboostScore,omitempty"`

	NavmenuScore float64 `json:"navmenuScore,omitempty"`

	Pagerank int64 `json:"pagerank,omitempty"`

	RecentLongCtr float64 `json:"recentLongCtr,omitempty"`

	TargetCdocLanguages []int64 `json:"targetCdocLanguages,omitempty"`

	TitleScore float64 `json:"titleScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Annotations") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Annotations") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapScoringSignals) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapScoringSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySitemapScoringSignals) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySitemapScoringSignals
	var s1 struct {
		ChromeTransProb gensupport.JSONFloat64 `json:"chromeTransProb"`
		ChromeWeight    gensupport.JSONFloat64 `json:"chromeWeight"`
		LongCtr         gensupport.JSONFloat64 `json:"longCtr"`
		NavboostScore   gensupport.JSONFloat64 `json:"navboostScore"`
		NavmenuScore    gensupport.JSONFloat64 `json:"navmenuScore"`
		RecentLongCtr   gensupport.JSONFloat64 `json:"recentLongCtr"`
		TitleScore      gensupport.JSONFloat64 `json:"titleScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ChromeTransProb = float64(s1.ChromeTransProb)
	s.ChromeWeight = float64(s1.ChromeWeight)
	s.LongCtr = float64(s1.LongCtr)
	s.NavboostScore = float64(s1.NavboostScore)
	s.NavmenuScore = float64(s1.NavmenuScore)
	s.RecentLongCtr = float64(s1.RecentLongCtr)
	s.TitleScore = float64(s1.TitleScore)
	return nil
}

// QualitySitemapSubresult: Information about a single sub-result.
type QualitySitemapSubresult struct {
	Docid uint64 `json:"docid,omitempty,string"`

	ItemMetadata *QualitySitemapThirdPartyCarouselsListItemMuppetMetadata `json:"itemMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapSubresult) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapSubresult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySitemapSubresultList: A container for encapsulating a list of
// sub-results.
type QualitySitemapSubresultList struct {
	Subresult []*QualitySitemapSubresult `json:"subresult,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Subresult") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Subresult") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapSubresultList) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapSubresultList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySitemapTarget: Represents a single sitelink target, contains
// basic information used to display the target (such as url and title)
// and to, maybe, dynamically change the way targets are selected and/or
// ranked (such as score and is_mobile). Please update the
// TargetInternal message if you make a change to this proto. See "Note
// on adding new fields".
type QualitySitemapTarget struct {
	DEPRECATEDSnippet []string `json:"DEPRECATEDSnippet,omitempty"`

	IsGoodForMobile bool `json:"isGoodForMobile,omitempty"`

	IsMobileN1dup bool `json:"isMobileN1dup,omitempty"`

	// Languages: The languages of the document, taken from its
	// cdoc.properties().languages()
	Languages []int64 `json:"languages,omitempty"`

	// SalientImage: The image data will be copied from the DocInfo
	// response, and will be retrieved online, so this field should not be
	// populated during indexing. This is a temporary field for
	// experimentation.
	SalientImage *WWWResultInfoSubImageDocInfo `json:"salientImage,omitempty"`

	Score float64 `json:"score,omitempty"`

	ScoringSignals *QualitySitemapScoringSignals `json:"scoringSignals,omitempty"`

	// SectionTexts: Section texts used for Page Anchors Preview
	// (go/page-anchor-preview-dd).
	SectionTexts []string `json:"sectionTexts,omitempty"`

	// SnippetResponse: The snippet response for the target document for an
	// empty query.
	SnippetResponse *GenericSnippetResponse `json:"snippetResponse,omitempty"`

	SourceAnchor bool `json:"sourceAnchor,omitempty"`

	Title string `json:"title,omitempty"`

	TwoLevelScore float64 `json:"twoLevelScore,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DEPRECATEDSnippet")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDSnippet") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapTarget) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySitemapTarget) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySitemapTarget
	var s1 struct {
		Score         gensupport.JSONFloat64 `json:"score"`
		TwoLevelScore gensupport.JSONFloat64 `json:"twoLevelScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	s.TwoLevelScore = float64(s1.TwoLevelScore)
	return nil
}

// QualitySitemapTargetGroup: Represents a set of targets. The group may
// have a label field to uniquely identify this target group among
// others - for instance, if these targets' titles were generated using
// an alternative title algorithm, the label can be "newtitles". See
// "Note on adding new fields".
type QualitySitemapTargetGroup struct {
	DEPRECATEDCountry int64 `json:"DEPRECATEDCountry,omitempty"`

	Target []*QualitySitemapTarget `json:"Target,omitempty"`

	// AllTargetsNamedAnchors: If all the targets in this group are named
	// anchors on the source page.
	AllTargetsNamedAnchors bool `json:"allTargetsNamedAnchors,omitempty"`

	// AllTargetsNamedTopictagsScrollto: If all the targets in this group
	// are named topictags_scrollto on the source page.
	AllTargetsNamedTopictagsScrollto bool `json:"allTargetsNamedTopictagsScrollto,omitempty"`

	BreadcrumbTarget *QualitySitemapBreadcrumbTarget `json:"breadcrumbTarget,omitempty"`

	CoClickTarget []*QualitySitemapCoClickTarget `json:"coClickTarget,omitempty"`

	CountryCode string `json:"countryCode,omitempty"`

	Label string `json:"label,omitempty"`

	Language int64 `json:"language,omitempty"`

	ModifiedByHostcardHandler bool `json:"modifiedByHostcardHandler,omitempty"`

	ScoringSignals *QualitySitemapScoringSignals `json:"scoringSignals,omitempty"`

	// TopUrl: A list of top urls with highest two_level_score, i.e.,
	// chrome_trans_clicks.
	TopUrl []*QualitySitemapTopURL `json:"topUrl,omitempty"`

	TwoLevelTarget []*QualitySitemapTwoLevelTarget `json:"twoLevelTarget,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DEPRECATEDCountry")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDCountry") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapTargetGroup) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapTargetGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySitemapThirdPartyCarouselsListItemMuppetMetadata: A set of
// metadata about a list item that is passed on to Muppet from indexing.
type QualitySitemapThirdPartyCarouselsListItemMuppetMetadata struct {
	// UrlFoundOnPage: DEPRECATED. No longer populated, and not used
	// anywhere.
	UrlFoundOnPage bool `json:"urlFoundOnPage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "UrlFoundOnPage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UrlFoundOnPage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapThirdPartyCarouselsListItemMuppetMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapThirdPartyCarouselsListItemMuppetMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySitemapTopURL struct {
	Score float64 `json:"score,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapTopURL) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapTopURL
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualitySitemapTopURL) UnmarshalJSON(data []byte) error {
	type NoMethod QualitySitemapTopURL
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type QualitySitemapTwoLevelTarget struct {
	FirstLevelTarget *QualitySitemapTarget `json:"firstLevelTarget,omitempty"`

	SecondLevelTarget []*QualitySitemapTarget `json:"secondLevelTarget,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FirstLevelTarget") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FirstLevelTarget") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualitySitemapTwoLevelTarget) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySitemapTwoLevelTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualitySnippetsTruncationSnippetBoldedRange: A bolded range in
// printed snippet lines.
type QualitySnippetsTruncationSnippetBoldedRange struct {
	// Begin: Bolded range [begin, end)
	Begin *QualitySnippetsTruncationSnippetBoldedRangePosition `json:"begin,omitempty"`

	End *QualitySnippetsTruncationSnippetBoldedRangePosition `json:"end,omitempty"`

	// Text: Only populated for debugging.
	Text string `json:"text,omitempty"`

	// Possible values:
	//   "TYPE_UNSPECIFIED"
	//   "QUERY_TERM_MATCH"
	//   "RADISH"
	//   "BRAIN"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySnippetsTruncationSnippetBoldedRange) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySnippetsTruncationSnippetBoldedRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualitySnippetsTruncationSnippetBoldedRangePosition struct {
	ByteOffset int64 `json:"byteOffset,omitempty"`

	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ByteOffset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ByteOffset") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualitySnippetsTruncationSnippetBoldedRangePosition) MarshalJSON() ([]byte, error) {
	type NoMethod QualitySnippetsTruncationSnippetBoldedRangePosition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityTimebasedLastSignificantUpdate struct {
	// AdjustmentInfo: This is stored only for debugging purposes. Please
	// consult dates@ team before making a dependency on this field.
	AdjustmentInfo *QualityTimebasedLastSignificantUpdateAdjustments `json:"adjustmentInfo,omitempty"`

	// Date: LastSignificantUpdate as UNIX timestamp in seconds. This is the
	// new signal (go/lsu-dd) from LSU Selector V2 (once that is enabled,
	// see b/171879888 for status), falling back to the legacy V1 signal if
	// the HIGH_PRECISION signal does not exist. Please use the 'source'
	// field to determine where the value comes from.
	Date int64 `json:"date,omitempty,string"`

	// Source: The source the signal comes from.
	//
	// Possible values:
	//   "UNSET"
	//   "LSU_LOW_PRECISION" - The signal from legacy selector
	// (quality/timebased/lastsignificantupdate/lsu-selector.h). It's a
	// fallback for clients relying on ~100% recall of the signal.
	//   "LSU_HIGH_PRECISION_UPDATE_MARKUP_SUPPORTED_BY_CONTENTAGE" - The
	// signal comes from update markup date supported by ContentAge.
	//   "LSU_HIGH_PRECISION_UPDATE_MARKUP_SUPPORTED_BY_ANNOTATION" - The
	// signal comes from update markup date supported by annotation.
	//   "LSU_HIGH_PRECISION_ANNOTATION_WITH_UPDATE_TAG" - The signal comes
	// from date annotation representing update date of a page.
	//   "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_CONTENTAGE" -
	// The signal comes from publication markup date supported by
	// ContentAge.
	//   "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION" -
	// The signal comes from publication markup date supported by
	// annotation.
	//   "LSU_HIGH_PRECISION_ANNOTATION_WITH_PATTERN_BYLINE_TAG" - The
	// signal comes from date annotation often selected as a byline.
	//   "LSU_HIGH_PRECISION_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION" -
	// The signal comes from ContentAge that's supported by date annotation.
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_LOW_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_MEDIUM_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_HIGH_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_FULL_SUPPORT"
	//   "LSU_V1" - Legacy names. Do not use. These are kept around for ~2
	// months to ease transitions.
	//   "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_CONTENTAGE"
	//   "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_ANNOTATION"
	//   "LSU_V2_ANNOTATION_WITH_UPDATE_TAG"
	//   "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_CONTENTAGE"
	//   "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION"
	//   "LSU_V2_ANNOTATION_WITH_PATTERN_BYLINE_TAG"
	//   "LSU_V2_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION"
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdjustmentInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdjustmentInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedLastSignificantUpdate) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedLastSignificantUpdate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityTimebasedLastSignificantUpdateAdjustments struct {
	// AdjustmentSource: If the selected LSU has been adjusted, i.e. the
	// maximum passage timestamp, firstseen or contentage were assigned to
	// LSU, the adjustment source is stored here.
	//
	// Possible values:
	//   "UNSET"
	//   "PASSAGE_TIMESTAMP"
	//   "FIRSTSEEN"
	//   "CONTENT_AGE"
	AdjustmentSource string `json:"adjustmentSource,omitempty"`

	// IsUpperboundTimestampPrecise: The timestamp is precise when it's
	// derived from existing (>March 2022) passage timestamp.
	IsUpperboundTimestampPrecise bool `json:"isUpperboundTimestampPrecise,omitempty"`

	// UnboundedTimestampInSeconds: The timestamp that was picked up by the
	// component indicated in the LastSignificantUpdateSource but was
	// dropped due to exceeding the upper bound. Set only if it is not equal
	// to final LSU.
	UnboundedTimestampInSeconds int64 `json:"unboundedTimestampInSeconds,omitempty,string"`

	// UnboundedTimestampSource: The source that produced the unbounded
	// timestamp.
	//
	// Possible values:
	//   "UNSET"
	//   "LSU_LOW_PRECISION" - The signal from legacy selector
	// (quality/timebased/lastsignificantupdate/lsu-selector.h). It's a
	// fallback for clients relying on ~100% recall of the signal.
	//   "LSU_HIGH_PRECISION_UPDATE_MARKUP_SUPPORTED_BY_CONTENTAGE" - The
	// signal comes from update markup date supported by ContentAge.
	//   "LSU_HIGH_PRECISION_UPDATE_MARKUP_SUPPORTED_BY_ANNOTATION" - The
	// signal comes from update markup date supported by annotation.
	//   "LSU_HIGH_PRECISION_ANNOTATION_WITH_UPDATE_TAG" - The signal comes
	// from date annotation representing update date of a page.
	//   "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_CONTENTAGE" -
	// The signal comes from publication markup date supported by
	// ContentAge.
	//   "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION" -
	// The signal comes from publication markup date supported by
	// annotation.
	//   "LSU_HIGH_PRECISION_ANNOTATION_WITH_PATTERN_BYLINE_TAG" - The
	// signal comes from date annotation often selected as a byline.
	//   "LSU_HIGH_PRECISION_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION" -
	// The signal comes from ContentAge that's supported by date annotation.
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_LOW_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_MEDIUM_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_HIGH_SUPPORT"
	//   "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_FULL_SUPPORT"
	//   "LSU_V1" - Legacy names. Do not use. These are kept around for ~2
	// months to ease transitions.
	//   "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_CONTENTAGE"
	//   "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_ANNOTATION"
	//   "LSU_V2_ANNOTATION_WITH_UPDATE_TAG"
	//   "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_CONTENTAGE"
	//   "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION"
	//   "LSU_V2_ANNOTATION_WITH_PATTERN_BYLINE_TAG"
	//   "LSU_V2_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION"
	UnboundedTimestampSource string `json:"unboundedTimestampSource,omitempty"`

	// UpperboundTimestampInSeconds: The upperbound value derived from
	// passage timestamps. If present, the LSU date should never exceed this
	// value. Design doc: go/lsu-max-passage-timestamp
	UpperboundTimestampInSeconds int64 `json:"upperboundTimestampInSeconds,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AdjustmentSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdjustmentSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedLastSignificantUpdateAdjustments) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedLastSignificantUpdateAdjustments
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityTimebasedOldnessInfo struct {
	// IsOldPage: Set to true if this page is considered old.
	IsOldPage bool `json:"isOldPage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsOldPage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsOldPage") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedOldnessInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedOldnessInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityTimebasedPageType struct {
	// IsForumPage: Set to true if this page is classified as a forum page.
	IsForumPage bool `json:"isForumPage,omitempty"`

	// IsPageWithFreshRepeatedDates: Set to true if this page has a fresh
	// repeated date sequence.
	IsPageWithFreshRepeatedDates bool `json:"isPageWithFreshRepeatedDates,omitempty"`

	// IsQnaPage: Set to true if this page is classified as a question
	// answers page.
	IsQnaPage bool `json:"isQnaPage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsForumPage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsForumPage") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedPageType) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedPageType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityTimebasedSyntacticDate: Next ID: 21
type QualityTimebasedSyntacticDate struct {
	// BylineDate: The following field is set only when the byline date is
	// different from the "date" field above. Currently this happens when
	// the byline date is within the 24 hours of the crawl time, or close
	// but not exactly the same as blog post date due to time zone. The
	// syntactic date is never later than the crawl time. NOTE: If this
	// field is set, use_as_byline_date will be meaningless, and better to
	// be cleared.
	BylineDate int64 `json:"bylineDate,omitempty,string"`

	// Date: The number of seconds since epoch (Jan 1, 1970). This can be
	// negative to indicate a publication date that is before 1970. For
	// example, the ones from NY Times archive:
	// "http://select.nytimes.com/gst/abstract.html?res=F10B13FB3D5A10728FDDA
	// F089" "4DD405B8588F1D3&scp=91&sq=world+war+II&st=p"
	Date int64 `json:"date,omitempty,string"`

	Daterange *QualityTimebasedSyntacticDateDateRange `json:"daterange,omitempty"`

	DebugInfo string `json:"debugInfo,omitempty"`

	// FromExplicitTimeZone: If set to true, the source of the date has
	// explicit time zone specification. Note: This is only used internally
	// and should not be populated in docjoins.
	FromExplicitTimeZone bool `json:"fromExplicitTimeZone,omitempty"`

	// Info: Used to store extra information about the syntactic date. For
	// now only two bits are set. Please refer to the encoding/decoding
	// functions provided in: quality/timebased/syntacticdate/util.h Bit 1 =
	// High confidence byline. This bit is set if the syntactic date has a
	// byline date and this date is considered to be high confidence. Bit 2
	// = High confidence byline without content age. This bit is set if the
	// syntactic date has a byline date and this date is considered to be
	// high confidence without support from content age.
	Info int64 `json:"info,omitempty"`

	Position *QualityTimebasedSyntacticDatePosition `json:"position,omitempty"`

	// PrecisionMark: The precision mark should be of type PRECISION_MARK.
	PrecisionMark int64 `json:"precisionMark,omitempty"`

	// SyntacticDateNotForRestrict: If this is true, do not use syntactic
	// date in date restricts.
	SyntacticDateNotForRestrict bool `json:"syntacticDateNotForRestrict,omitempty"`

	// TimeZoneOffsetSeconds: Indicates the time zone offset in seconds
	// applied to derive `date' in UTC. Example: Annotation: "1pm PST"
	// (UTC-8) => -8 * 3600 = -28800 Note: This is only used internally and
	// should not be populated in docjoins.
	TimeZoneOffsetSeconds int64 `json:"timeZoneOffsetSeconds,omitempty,string"`

	// TrustSyntacticDateInRanking: This bit is set if we believe that the
	// syntactic date is really high confidence, but does not qualify as a
	// byline date.
	TrustSyntacticDateInRanking bool `json:"trustSyntacticDateInRanking,omitempty"`

	// UseAsBylineDate: Whether this date is good for display as the snippet
	// byline date.
	UseAsBylineDate bool `json:"useAsBylineDate,omitempty"`

	// UseInTimeZoneGuessingMode: This bit is set if the syntactic date is
	// good to be used in site-level timezone guessing statistics
	// calculation. (The date should be absolute date having a timestamp
	// with hour and minute level information. It can come with or without
	// time zone information, which is indicated in from_explicit_time_zone
	// field defined below.)
	UseInTimeZoneGuessingMode bool `json:"useInTimeZoneGuessingMode,omitempty"`

	// UseRangeInsteadOfDateForRestrict: If true, the DateRange is used as
	// date restrict, if false, the date is used as date restrict. Has no
	// effect if syntactic_date_not_for_restrict is true.
	UseRangeInsteadOfDateForRestrict bool `json:"useRangeInsteadOfDateForRestrict,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BylineDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BylineDate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedSyntacticDate) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedSyntacticDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityTimebasedSyntacticDateDateRange: If the single date (plus the
// precision mark) is still not good enough, we will use the following
// fields for a date range. In this case, the fields above may all be
// empty.
type QualityTimebasedSyntacticDateDateRange struct {
	End int64 `json:"end,omitempty,string"`

	Start int64 `json:"start,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "End") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "End") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedSyntacticDateDateRange) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedSyntacticDateDateRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityTimebasedSyntacticDatePosition: The following positions are
// the byte offset in doc body, which is consistent with the date
// annotations. (See
// google3/repository/annotations/proto/annotations.proto) These are
// given when we want to use the date as a byline date, so the snippet
// generating code will know the positions.
type QualityTimebasedSyntacticDatePosition struct {
	Begin int64 `json:"begin,omitempty"`

	End int64 `json:"end,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTimebasedSyntacticDatePosition) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTimebasedSyntacticDatePosition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityTravelGoodSitesData: Protocol message for data related to good
// travel sites. This data is stored as signals data in docjoins.
type QualityTravelGoodSitesData struct {
	I18n []*QualityTravelGoodSitesDataI18n `json:"i18n,omitempty"`

	IsAggr bool `json:"isAggr,omitempty"`

	IsAttractionOfficial bool `json:"isAttractionOfficial,omitempty"`

	IsEntity bool `json:"isEntity,omitempty"`

	IsHotelOfficial bool `json:"isHotelOfficial,omitempty"`

	// NormalizationFactor: Factor that determines how local anchor credit
	// is scaled before being added to global anchors.
	NormalizationFactor float64 `json:"normalizationFactor,omitempty"`

	Signal []*QualityTravelGoodSitesDataSignal `json:"signal,omitempty"`

	Site string `json:"site,omitempty"`

	// TotalScore: Site quality score, which determines the site type.
	TotalScore float64 `json:"totalScore,omitempty"`

	// Possible values:
	//   "NOT_GOOD"
	//   "LOCAL_OKAY"
	//   "OKAY"
	//   "GOOD"
	//   "OFFICIAL"
	//   "NUM_TYPES"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "I18n") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "I18n") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTravelGoodSitesData) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTravelGoodSitesData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityTravelGoodSitesData) UnmarshalJSON(data []byte) error {
	type NoMethod QualityTravelGoodSitesData
	var s1 struct {
		NormalizationFactor gensupport.JSONFloat64 `json:"normalizationFactor"`
		TotalScore          gensupport.JSONFloat64 `json:"totalScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NormalizationFactor = float64(s1.NormalizationFactor)
	s.TotalScore = float64(s1.TotalScore)
	return nil
}

type QualityTravelGoodSitesDataI18n struct {
	Locale string `json:"locale,omitempty"`

	// Possible values:
	//   "NOT_GOOD"
	//   "LOCAL_OKAY"
	//   "OKAY"
	//   "GOOD"
	//   "OFFICIAL"
	//   "NUM_TYPES"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Locale") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Locale") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTravelGoodSitesDataI18n) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTravelGoodSitesDataI18n
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityTravelGoodSitesDataSignal: Raw signals that determine the site
// quality score.
type QualityTravelGoodSitesDataSignal struct {
	Name string `json:"name,omitempty"`

	Value float64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityTravelGoodSitesDataSignal) MarshalJSON() ([]byte, error) {
	type NoMethod QualityTravelGoodSitesDataSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityTravelGoodSitesDataSignal) UnmarshalJSON(data []byte) error {
	type NoMethod QualityTravelGoodSitesDataSignal
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// QualityVidyaVideoLanguageVideoLanguage: Audio-based language
// information about a Watch Page. For more information:
// https://g3doc.corp.google.com/video/timedtext/g3doc/ali.md
type QualityVidyaVideoLanguageVideoLanguage struct {
	// Language: Audio language of video classified by Automatic Language
	// Identification. It corresponds to the first language (the highest
	// confidence) in ALIResults.lang_results.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	Language string `json:"language,omitempty"`

	// SpeechClass: Type of detected speech.
	//
	// Possible values:
	//   "UNKNOWN" - Unspecified, or string label not recognized.
	//   "NO_SPEECH"
	//   "HAS_SPEECH_FOR_ASR" - Currently corresponds to simple speech
	SpeechClass string `json:"speechClass,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityVidyaVideoLanguageVideoLanguage) MarshalJSON() ([]byte, error) {
	type NoMethod QualityVidyaVideoLanguageVideoLanguage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityViewsExtractionClusterInfo: Stores cluster scoring information
// for an entity Next Id: 6
type QualityViewsExtractionClusterInfo struct {
	// ClusterId: The cluster_id represents the id of the set entity that
	// WebRef provides.
	ClusterId string `json:"clusterId,omitempty"`

	// ClusterSetScore: Cluster set qref confidence score.
	ClusterSetScore float64 `json:"clusterSetScore,omitempty"`

	// ClusterSiblingMid: The mids of cluster members that are part of the
	// same cluster. Note that cluster members may end up having their own
	// interpretation (EntityInfo which includes a ClusterInfo) or not (eg
	// because they do not explain the full query, and so aqua does not
	// output an interpretation for them). The latter case (a cluster member
	// is output only as part of this field), is equivalent to its score
	// being 0.
	ClusterSiblingMid []string `json:"clusterSiblingMid,omitempty"`

	// Score: The score represents the score of the entity within the
	// cluster.
	Score float64 `json:"score,omitempty"`

	SubCluster []*QualityViewsExtractionClusterInfo `json:"subCluster,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClusterId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClusterId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityViewsExtractionClusterInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QualityViewsExtractionClusterInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *QualityViewsExtractionClusterInfo) UnmarshalJSON(data []byte) error {
	type NoMethod QualityViewsExtractionClusterInfo
	var s1 struct {
		ClusterSetScore gensupport.JSONFloat64 `json:"clusterSetScore"`
		Score           gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClusterSetScore = float64(s1.ClusterSetScore)
	s.Score = float64(s1.Score)
	return nil
}

// QualityWebanswersTranscriptAnnotations: Wraps other annotations that
// are run over auto-generated video captions.
type QualityWebanswersTranscriptAnnotations struct {
	VideoTranscriptAnnotations []*QualityWebanswersVideoTranscriptAnnotations `json:"videoTranscriptAnnotations,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "VideoTranscriptAnnotations") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "VideoTranscriptAnnotations") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityWebanswersTranscriptAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod QualityWebanswersTranscriptAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type QualityWebanswersVideoTranscriptAnnotations struct {
	// AmarnaDocid: Should precisely match the amarna_docid in
	// ContentBasedVideoMetadata.
	AmarnaDocid string `json:"amarnaDocid,omitempty"`

	// AsrRepair: The results of ASR transcript quality analysis.
	AsrRepair *IndexingVideosAsrTranscriptRepairAnnotation `json:"asrRepair,omitempty"`

	// Lang: The language of the transcript as recorded in Amarna.
	Lang string `json:"lang,omitempty"`

	PunctuatedTranscript string `json:"punctuatedTranscript,omitempty"`

	SaftDocument *NlpSaftDocument `json:"saftDocument,omitempty"`

	SaftSentenceBoundary *SentenceBoundaryAnnotations `json:"saftSentenceBoundary,omitempty"`

	// TimingInfo: Timing information that maps sentence boundaries in the
	// punctuated transcript with timing offsets for the start and end of
	// those sentences.
	TimingInfo *QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations `json:"timingInfo,omitempty"`

	WebrefEntities *RepositoryWebrefWebrefEntities `json:"webrefEntities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AmarnaDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmarnaDocid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityWebanswersVideoTranscriptAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod QualityWebanswersVideoTranscriptAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations: YouTube
// caption timing information for http://go/video-answers.
type QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations struct {
	DurationMs int64 `json:"durationMs,omitempty"`

	Instances []*QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance `json:"instances,omitempty"`

	UploaderName string `json:"uploaderName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DurationMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DurationMs") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance:
// Byte-offset and timing information in videos. In CompositeDoc, we
// will store the instance per sentence.
type QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance struct {
	// Begin: Byte offsets in HTML. begin is inclusive and end is exclusive.
	Begin int64 `json:"begin,omitempty"`

	End int64 `json:"end,omitempty"`

	VideoBeginMs int64 `json:"videoBeginMs,omitempty"`

	VideoEndMs int64 `json:"videoEndMs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance) MarshalJSON() ([]byte, error) {
	type NoMethod QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RegistrationInfo: Domain registration information for the document.
// NEXT ID TO USE: 3
type RegistrationInfo struct {
	// CreatedDate: This is the number of days since January 1st 1995 that
	// this domain was last created. This should always fit in 15 bits.
	CreatedDate int64 `json:"createdDate,omitempty"`

	// ExpiredDate: This is the number of days since January 1st 1995 that
	// this domain last expired. This should always fit in 15 bits. Jan 1st
	// 1995 was chosen by the history project as a special epoch date. Both
	// the registrationinfo dates and the linkage dates are measured in days
	// since this epoch.
	ExpiredDate int64 `json:"expiredDate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CreatedDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreatedDate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RegistrationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RegistrationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryAnnotationsGeoTopic: GeoTopicality of a document is a set
// of GeoTopics ordered by their normalized scores.
type RepositoryAnnotationsGeoTopic struct {
	// Address: Stores parent/container information containing city,
	// province & country.
	Address *GeostoreAddressProto `json:"address,omitempty"`

	// ComponentScores: The raw scores used to calculate the
	// normalized_score. Note that not all these scores may be exposed to
	// the users.
	ComponentScores []*RepositoryAnnotationsGeoTopicalityScore `json:"componentScores,omitempty"`

	// Confidence: A score [0, 1] indicating the confidence.
	Confidence float64 `json:"confidence,omitempty"`

	// DenseCity: Is this a dense city (e.g., population > 100k)?
	DenseCity bool `json:"denseCity,omitempty"`

	// EstablishmentType: Sub type for POI types like ESTABLISHMENT_POI,
	// ESTABLISHMENT_GROUNDS & ESTABLISHMENT_BUILDING
	EstablishmentType int64 `json:"establishmentType,omitempty"`

	// LatE7: Latitude and Longitude of the location.
	LatE7 int64 `json:"latE7,omitempty"`

	LngE7 int64 `json:"lngE7,omitempty"`

	// LocationName: Name of the Geographic location. This is the normalized
	// name.
	LocationName string `json:"locationName,omitempty"`

	// NormalizedScore: A score [0, 1] indicating the likelihood of the
	// location being the GeoTopicality.
	NormalizedScore float64 `json:"normalizedScore,omitempty"`

	// OysterId: Oyster Feature ID of the location.
	OysterId *GeostoreFeatureIdProto `json:"oysterId,omitempty"`

	// OysterType: Oyster Feature Type
	OysterType int64 `json:"oysterType,omitempty"`

	// SumContainedPoiNormalizedScores: The sum of the normalized scores of
	// POIs contained within a particular locality.
	SumContainedPoiNormalizedScores float64 `json:"sumContainedPoiNormalizedScores,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Address") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Address") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsGeoTopic) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsGeoTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryAnnotationsGeoTopic) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryAnnotationsGeoTopic
	var s1 struct {
		Confidence                      gensupport.JSONFloat64 `json:"confidence"`
		NormalizedScore                 gensupport.JSONFloat64 `json:"normalizedScore"`
		SumContainedPoiNormalizedScores gensupport.JSONFloat64 `json:"sumContainedPoiNormalizedScores"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.NormalizedScore = float64(s1.NormalizedScore)
	s.SumContainedPoiNormalizedScores = float64(s1.SumContainedPoiNormalizedScores)
	return nil
}

type RepositoryAnnotationsGeoTopicality struct {
	// Geotopics: The geotopics are ordered by normalized_score in
	// descending order.
	Geotopics []*RepositoryAnnotationsGeoTopic `json:"geotopics,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Geotopics") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Geotopics") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsGeoTopicality) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsGeoTopicality
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryAnnotationsGeoTopicalityScore struct {
	RawScore float64 `json:"rawScore,omitempty"`

	// Possible values:
	//   "TITLE_SCORE" - On-Page Scores Indicates the presence of the
	// geopoint in the title of the document. Range of values - [0, 2].
	//   "LEADING_MENTIONS_SCORE" - Indicates the presence of the geopoint
	// in the leading few tokens of the document. This is useful for
	// newspaper articles where the significant location is byline. Range of
	// values - [0, infinity].
	//   "QUALIFIER_BOOST" - Boost associated with the presence of
	// CandidateGeoPointAnnotationTags RESOLVED_BY_FQGA. This is pretty
	// common for Byline locations. Range of values - [0, infinity]
	//   "TAG_BOOST" - Boost associated with the presence of the rest of the
	// CandidateGeoPointAnnotationTags. Range of values - [0, infinity]
	//   "FREQUENCY_SCORE" - Score associated with the number of mentions of
	// the location in the document. This is a log function of the number of
	// mentions.
	//   "AVERAGE_PARENT_BOOST" - Score associated with the parental support
	// (support by parent features) for the location. Range of values - [0,
	// 1.0)
	//   "OVERALL_SCORE" - Overall Score obtained by the combining all the
	// individual scores. Range of values - [0, infinity]
	//   "ON_PAGE_NORMALIZED_SCORE" - A score [0, 1] indicating the
	// likelihood of the location being GeoTopicality using on page signals.
	//   "OFF_PAGE_NORMALIZED_SCORE" - Off-Page Scores A score [0, 1]
	// indicating the likelihood of the location being GeoTopicality using
	// off-page signals (mainly incoming links).
	//   "ANCHOR_COUNT" - Number of incoming links to the document with the
	// location in question being part of the anchor text. Range of values
	// [0, infinity]
	//   "ENDMARKER_FOR_SCORES" - This value should be one bigger than the
	// largest Score that is actually used.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RawScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RawScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsGeoTopicalityScore) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsGeoTopicalityScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryAnnotationsGeoTopicalityScore) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryAnnotationsGeoTopicalityScore
	var s1 struct {
		RawScore gensupport.JSONFloat64 `json:"rawScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RawScore = float64(s1.RawScore)
	return nil
}

// RepositoryAnnotationsMustangSentimentSnippetAnnotations: A conceptual
// structure for storing sentiment snippet information in mustang.
// Essentially an adaptation of PhraseAnnotationProperties from
// //repository/annotations/proto/annotations.proto.
type RepositoryAnnotationsMustangSentimentSnippetAnnotations struct {
	// DeprecatedMagnitude: Deprecated: use snippet_score instead
	DeprecatedMagnitude float64 `json:"deprecatedMagnitude,omitempty"`

	// DeprecatedPolarity: Deprecated: use snippet_score instead
	DeprecatedPolarity float64 `json:"deprecatedPolarity,omitempty"`

	End int64 `json:"end,omitempty"`

	IsTruncated bool `json:"isTruncated,omitempty"`

	// Possible values:
	//   "UNKNOWN" - Not analyzed.
	//   "POSITIVE"
	//   "NEGATIVE"
	//   "MIXED" - Sentiment is present, but neither positive or negative is
	// clearly prevailing.
	//   "NEUTRAL" - There is no significant sentiment present.
	PhraseType string `json:"phraseType,omitempty"`

	SnippetScore int64 `json:"snippetScore,omitempty"`

	// SnippetText: This protobuffer is serving double duty as both a
	// Mustang attachment and the response proto that gets returned by
	// Mustang in the WWWSnippetResponse's info MessageSet. When stored as
	// an attachment, this field will always be empty. However, when
	// returned with the WWWSnippetResponse, Mustang will print and store
	// the actual sentiment snippet's text here.
	SnippetText string `json:"snippetText,omitempty"`

	// Start: begin and end are token offsets.
	Start int64 `json:"start,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeprecatedMagnitude")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeprecatedMagnitude") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsMustangSentimentSnippetAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsMustangSentimentSnippetAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryAnnotationsMustangSentimentSnippetAnnotations) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryAnnotationsMustangSentimentSnippetAnnotations
	var s1 struct {
		DeprecatedMagnitude gensupport.JSONFloat64 `json:"deprecatedMagnitude"`
		DeprecatedPolarity  gensupport.JSONFloat64 `json:"deprecatedPolarity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DeprecatedMagnitude = float64(s1.DeprecatedMagnitude)
	s.DeprecatedPolarity = float64(s1.DeprecatedPolarity)
	return nil
}

type RepositoryAnnotationsRdfaBreadcrumbs struct {
	// Crumb: Each crumb represents one link of the breadcrumb chain.
	Crumb []*RepositoryAnnotationsRdfaCrumb `json:"crumb,omitempty"`

	// Url: The URL of the document from which this breadcrumb trail was
	// extracted.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Crumb") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Crumb") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaBreadcrumbs) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaBreadcrumbs
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryAnnotationsRdfaCrumb: The information contained in a single
// crumb.
type RepositoryAnnotationsRdfaCrumb struct {
	// Title: The text that represented this crumb in the document.
	Title string `json:"title,omitempty"`

	// Url: The URL linked from this crumb.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Title") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Title") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaCrumb) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaCrumb
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryAnnotationsRdfaRdfaRichSnippetsApplication: This structure
// holds data for application information for rich snippets Next ID: 53
type RepositoryAnnotationsRdfaRdfaRichSnippetsApplication struct {
	AppTypeData *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationAppTypeData `json:"appTypeData,omitempty"`

	// ApplicationUrl: Fields for internal use
	ApplicationUrl string `json:"applicationUrl,omitempty"`

	Breadcrumbs *RepositoryAnnotationsRdfaBreadcrumbs `json:"breadcrumbs,omitempty"`

	// Category: Application information.
	Category []string `json:"category,omitempty"`

	// CountriesSupported: These are currently used only for Google Play.
	CountriesSupported []string `json:"countriesSupported,omitempty"`

	CountryPrices []*RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice `json:"countryPrices,omitempty"`

	Currency string `json:"currency,omitempty"`

	Description string `json:"description,omitempty"`

	// DevConsoleId: Developer console ID of the app if it exists. The ID is
	// available for an app registered to Google Developers Console, not
	// Play Developer Console.
	DevConsoleId string `json:"devConsoleId,omitempty"`

	// ExtractedIconColor: Top 1 of extracted icon colors. We keep this
	// field for backward compatibility.
	ExtractedIconColor int64 `json:"extractedIconColor,omitempty"`

	// ExtractedIconColors: Top 10 of extracted icon colors. r = (rgb >> 16)
	// & 0xff; g = (rgb >> 8) & 0xff; b = rgb & 0xff;
	ExtractedIconColors []int64 `json:"extractedIconColors,omitempty"`

	// FilteringTag: Tags to be indexed for filtering, e.g.
	// "ft_popular_score_gt_1m".
	FilteringTag []string `json:"filteringTag,omitempty"`

	Genre []string `json:"genre,omitempty"`

	// HasEditorsChoiceBadge: Whether the app has editors choice tag
	HasEditorsChoiceBadge bool `json:"hasEditorsChoiceBadge,omitempty"`

	// IconUrlHref: Icon and Screenshots
	IconUrlHref string `json:"iconUrlHref,omitempty"`

	IconUrlThumbnail string `json:"iconUrlThumbnail,omitempty"`

	// ImageData: Copied from
	// google3/contentads/shared/boulder/mobile-app-data-image-data.proto.
	ImageData *QualityCalypsoAppsUniversalImageData `json:"imageData,omitempty"`

	// InAppPurchase: Whether the app offers in-app purchase.
	InAppPurchase bool `json:"inAppPurchase,omitempty"`

	// IsDefaultLangLocale: Indicates if the localized data comes from
	// default locale. This is needed because the default localized data
	// does not specify its locale. If this is true, lang_locale may not be
	// the correct locale and should be ignored.
	IsDefaultLangLocale bool `json:"isDefaultLangLocale,omitempty"`

	// LangLocale: locale for the localized data, such as name, description
	// and screenshots
	LangLocale string `json:"langLocale,omitempty"`

	LastUpdated string `json:"lastUpdated,omitempty"`

	// LiveOpDetails: Unified proto for android LiveOps and iOS LiveEvents.
	LiveOpDetails *QualityCalypsoAppsUniversalAuLiveOpsDetailInfo `json:"liveOpDetails,omitempty"`

	LocalizedTrustedGenome *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationLocalizedTrustedGenome `json:"localizedTrustedGenome,omitempty"`

	// Marketplace: Market Android or itunes
	Marketplace string `json:"marketplace,omitempty"`

	Name string `json:"name,omitempty"`

	NumDownloads string `json:"numDownloads,omitempty"`

	// OperatingSystems: See
	// google3/quality/richsnippets/schema/data/operating_systems_rules.txt
	// for possible values.
	OperatingSystems []string `json:"operatingSystems,omitempty"`

	// OptionalResult: Whether this App is optional result for Grid UI.
	OptionalResult bool `json:"optionalResult,omitempty"`

	OriginalRating string `json:"originalRating,omitempty"`

	// Possible values:
	//   "UNKNOWN_MOBILE"
	//   "IOS_IPHONE_OR_IPOD"
	//   "IOS_IPAD"
	PhysicalDeviceTags []string `json:"physicalDeviceTags,omitempty"`

	// Possible values:
	//   "UNKNOWN_BROWSER"
	//   "CHROME"
	//   "FIREFOX"
	PlatformTags []string `json:"platformTags,omitempty"`

	PopularScore float64 `json:"popularScore,omitempty"`

	// Price: Price
	Price string `json:"price,omitempty"`

	RankData *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRankData `json:"rankData,omitempty"`

	// Rating: Ratings and reviews Either for this version only or for all
	// versions to be displayed.
	Rating string `json:"rating,omitempty"`

	RatingCount string `json:"ratingCount,omitempty"`

	ReleaseDate string `json:"releaseDate,omitempty"`

	ReviewAuthor string `json:"reviewAuthor,omitempty"`

	ReviewCount string `json:"reviewCount,omitempty"`

	// ScreenUrlHref: TODO(b/260128276) deprecate this field in favor of
	// image_data.
	ScreenUrlHref []string `json:"screenUrlHref,omitempty"`

	ScreenUrlThumbnail []string `json:"screenUrlThumbnail,omitempty"`

	// Size: bytes or numeric with MB or GB
	Size string `json:"size,omitempty"`

	Subcategory []string `json:"subcategory,omitempty"`

	// SupportsAndroidTv: Whether this App supports Android TV. Note that
	// some App supports more than one platforms. So we would use boolean
	// for a platform.
	SupportsAndroidTv bool `json:"supportsAndroidTv,omitempty"`

	// SupportsChromecast: Whether this App supports Google Cast.
	SupportsChromecast bool `json:"supportsChromecast,omitempty"`

	TotalRating float64 `json:"totalRating,omitempty"`

	// TotalRatingCount: Rating_count including all versions of this
	// application.
	TotalRatingCount int64 `json:"totalRatingCount,omitempty"`

	// TrustedGenomeData: Trusted Genome data with categorical app
	// information key: locale (e.g. en, en_US)
	TrustedGenomeData map[string]VendingConsumerProtoTrustedGenomeAnnotation `json:"trustedGenomeData,omitempty"`

	// Vendor: Vendor
	Vendor string `json:"vendor,omitempty"`

	VendorCanonicalUrl string `json:"vendorCanonicalUrl,omitempty"`

	VendorUrl string `json:"vendorUrl,omitempty"`

	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AppTypeData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppTypeData") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplication) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplication
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplication) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplication
	var s1 struct {
		PopularScore gensupport.JSONFloat64 `json:"popularScore"`
		TotalRating  gensupport.JSONFloat64 `json:"totalRating"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PopularScore = float64(s1.PopularScore)
	s.TotalRating = float64(s1.TotalRating)
	return nil
}

type RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationAppTypeData struct {
	// PlayStoreAppType: Top level app category type (GAME or APPLICATION).
	// Copied from playwright.
	PlayStoreAppType string `json:"playStoreAppType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PlayStoreAppType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PlayStoreAppType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationAppTypeData) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationAppTypeData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice struct {
	CountryCode string `json:"countryCode,omitempty"`

	// CurrencyCode: ISO 4217 currency code.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// Price: Price string converted from double value in a standard
	// currency unit, like '199.35' or '1400'.
	Price string `json:"price,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationLocalizedTrustedGenome struct {
	// Language: The chosen language
	Language string `json:"language,omitempty"`

	// LocalizedTg: The TG tags matching the locale of the doc, if available
	LocalizedTg *VendingConsumerProtoTrustedGenomeAnnotation `json:"localizedTg,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationLocalizedTrustedGenome) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationLocalizedTrustedGenome
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRank struct {
	AppStoreLink string `json:"appStoreLink,omitempty"`

	CategoryId string `json:"categoryId,omitempty"`

	CategoryName string `json:"categoryName,omitempty"`

	ChartType string `json:"chartType,omitempty"`

	Rank int64 `json:"rank,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AppStoreLink") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppStoreLink") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRank) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRank
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRankData struct {
	// PlaywrightCategoryId: Copied from the category_id field from
	// Playwright docs. It helps decide which category to show in app
	// ranking info.
	PlaywrightCategoryId []string `json:"playwrightCategoryId,omitempty"`

	Rank []*RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRank `json:"rank,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PlaywrightCategoryId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PlaywrightCategoryId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRankData) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationRankData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAggregatedEntityNameScores: Represents the aggregated
// score of the entities for a given name, aggregated over all sources.
// Next available tag: 3.
type RepositoryWebrefAggregatedEntityNameScores struct {
	EntityScore []*RepositoryWebrefEntityNameScore `json:"entityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAggregatedEntityNameScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAggregatedEntityNameScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAnchorIndices: Identifies a set of anchors in the
// CompositeDoc. Typically these anchors were collapsed by WebRef into a
// single anchor and they were treated by the annotator as equivalent.
// They all contain the same mentions (at the same offsets).
type RepositoryWebrefAnchorIndices struct {
	// Index: The set of indices in the Anchors::anchor() array that belong
	// to the collapsed anchors.
	Index []int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnchorIndices) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnchorIndices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAnnotatedCategoryInfo: Information about a category
// annotation on a name.
type RepositoryWebrefAnnotatedCategoryInfo struct {
	// DebugString: A debug string for the category.
	DebugString string `json:"debugString,omitempty"`

	// Listiness: Listiness score of the category.
	Listiness float64 `json:"listiness,omitempty"`

	// Mid: The mid of the entity representing the category.
	Mid uint64 `json:"mid,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DebugString") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugString") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotatedCategoryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotatedCategoryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefAnnotatedCategoryInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefAnnotatedCategoryInfo
	var s1 struct {
		Listiness gensupport.JSONFloat64 `json:"listiness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Listiness = float64(s1.Listiness)
	return nil
}

// RepositoryWebrefAnnotationDebugInfo: Debug info about the concept
// annotations. Note that it might not be present in the output.
type RepositoryWebrefAnnotationDebugInfo struct {
	// Description: Only use for debugging, this should not be displayed to
	// user or used for any kind of logic/processing.
	Description string `json:"description,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotationDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotationDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAnnotationRatings: Human ratings of webref
// annotations (document-level ratings, mention-level ratings, etc.).
type RepositoryWebrefAnnotationRatings struct {
	DocLevelRelevanceRatings *RepositoryWebrefDocLevelRelevanceRatings `json:"docLevelRelevanceRatings,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DocLevelRelevanceRatings") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocLevelRelevanceRatings")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotationRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotationRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAnnotationStatsPerType: Annotation statistics for
// each token type. Next available tag: 8.
type RepositoryWebrefAnnotationStatsPerType struct {
	// AvgOpenWorld: The average score for the open world for: - all ranges
	// of this segment_type; - all capitalized ranges of this segment_type;
	// - all uncapitalized ranges of this segment_type.
	AvgOpenWorld float64 `json:"avgOpenWorld,omitempty"`

	AvgOpenWorldCap float64 `json:"avgOpenWorldCap,omitempty"`

	AvgOpenWorldUncap float64 `json:"avgOpenWorldUncap,omitempty"`

	// NumRangesWithCandidates: The number of ranges with candidates that
	// made it past primary pruning for: - all ranges of this segment_type;
	// - all capitalized ranges of this segment_type; - all uncapitalized
	// ranges of this segment_type.
	NumRangesWithCandidates int64 `json:"numRangesWithCandidates,omitempty,string"`

	NumRangesWithCandidatesCap int64 `json:"numRangesWithCandidatesCap,omitempty,string"`

	NumRangesWithCandidatesUncap int64 `json:"numRangesWithCandidatesUncap,omitempty,string"`

	// TokenType: The segment type.
	//
	// Possible values:
	//   "INVALID" - To be used to mark an invalid token type. This proto
	// enum does not follow the good practices, which suggest that such a
	// value should be with tag 0:
	// go/protodosdonts#do-include-an-unspecified-value-in-an-enum. Because
	// this is a legacy situation and it is not safe to just change the
	// tags, the enum contains an invalid type at this tag and can be used
	// to specify the default value wherever this is needed.
	//   "CONTENT" - The main html content of a document.
	//   "URL" - The urls of a document/
	//   "ANCHOR" - The anchors pointing to a document.
	//   "QUERY" - The navboost queries of a document
	//   "INSTANT_QUERY" - The instant navboost queries of a document
	//   "A_HREF_TAG" - The href-value of the tags in the document's content
	//   "LINK_HREF_TAG" - The href-value of the tags in the document's
	// content
	//   "IMG_ALT_TAG" - The alt-value of the tags in the document's content
	//   "IMG_SRC_TAG" - The src-value of the tags in the document's content
	//   "META_CONTENT_TAG" - The content-value of the tags "description"
	// and "keyword"
	//   "TITLE" - The document
	//   "ANY" - Special value used to represent any other tokentype.
	//   "IMAGE_QUERY" - The Image Search navboost queries.
	//   "CONTEXT_ENTITY" - Entities added from annotation context.
	//   "RESULT_ENTITY" - Represents an entity found in the results for
	// Qref.
	//   "CONTEXT_QUERY" - A query used as additional context for Qref
	// annotations.
	//   "SIMILAR_QUERIES" - Similar Queries. They are only used to retrieve
	// entities that might be able to explain original query. As in Q2@2018
	// we don't want them to be scored or provide context for scoring
	// because of their overall big CPU impact on qrewrite (+50%).
	//   "SPORE_GRAPH" - A freetext dump + metadata from Spore
	// GraphAnnotations.
	//   "OFFDOMAIN_ANCHOR" - Offdomain anchors pointing to a document.
	//   "ONSITE_ANCHOR" - Onsite anchors pointing to a document.
	//   "NAME_CANDIDATE" - Name candidate extracted from the topic or
	// generated from trusted source.
	//   "TOPIC_LINK" - A link extracted directly from the topic:
	//   "QUERY_NAME_CANDIDATE" - Queries to reference pages which are
	// potential names of the entity:
	//   "ANCHOR_NAME_CANDIDATE" - Anchor texts to reference pages which are
	// potential names of the entity: Tokenized potential reference page
	// URLs of the entity. Token matching is none because lookups are
	// external annotations only.
	//   "INJECTED_NAME_CANDIDATE" - Injected name candidates are appended
	// using this segment type.
	//   "REFERENCE_PAGE_URL"
	//   "REFERENCE_PAGE_LINK" - URLs that are linked to the reference page
	// of the entity. Token matching is none because lookups are external
	// annotations only.
	//   "DEPRECATED_ENTITY_METADATA" - A special position that is used for
	// lookup of entity metadata in name table.
	//   "STRONG_IDENTIFIER" - Tokenized potential strong id of the entity,
	// like phone number, ISBN. Token matching is none because lookups are
	// external annotations only.
	//   "REFERENCE_PAGE_URL_INLINK" - A special position used for lookup of
	// inlinks to reference page urls.
	//   "REFERENCE_PAGE_LINK_INLINK" - A special position used for lookup
	// of inlink scores for reference page outlinks.
	//   "GEO_LINK"
	//   "PRINCIPAL_NAME" - A name used in the name matching library for all
	// types of matching. The type NAME_CANDIDATE is used for names that are
	// only used for inexpensive types of matching.
	//   "NAME_BLACKLIST" - Name blacklist for enriched entity.
	//   "ENTITY_CONTEXT_TOKENS" - Lyrics for song entities.
	//   "VIDEO_TRANSCRIPT"
	//   "VIDEO_OCR"
	//   "IMAGE_OCR"
	//   "LENS"
	//   "ONLY_LOOKUP_METADATA" - Entries which are created in order to
	// instruct the fprint-loader to load metadata for the contained ngrams.
	//   "EMBEDDED_CONTENT" - The embedded content in the document (e.g.,
	// within json scripts).
	TokenType string `json:"tokenType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvgOpenWorld") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvgOpenWorld") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotationStatsPerType) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotationStatsPerType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefAnnotationStatsPerType) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefAnnotationStatsPerType
	var s1 struct {
		AvgOpenWorld      gensupport.JSONFloat64 `json:"avgOpenWorld"`
		AvgOpenWorldCap   gensupport.JSONFloat64 `json:"avgOpenWorldCap"`
		AvgOpenWorldUncap gensupport.JSONFloat64 `json:"avgOpenWorldUncap"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AvgOpenWorld = float64(s1.AvgOpenWorld)
	s.AvgOpenWorldCap = float64(s1.AvgOpenWorldCap)
	s.AvgOpenWorldUncap = float64(s1.AvgOpenWorldUncap)
	return nil
}

// RepositoryWebrefAnnotatorCheckpointFprint: Holds annotator
// checkpoints which record the state of the annotations. This is useful
// for tracking down the source of diffs, in particular for
// non-determinism.
type RepositoryWebrefAnnotatorCheckpointFprint struct {
	Fingerprint uint64 `json:"fingerprint,omitempty,string"`

	Label string `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Fingerprint") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotatorCheckpointFprint) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotatorCheckpointFprint
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefAnnotatorProfile: A message to collect annotator
// performance data.
type RepositoryWebrefAnnotatorProfile struct {
	NumCandidateMentions int64 `json:"numCandidateMentions,omitempty"`

	NumEntities int64 `json:"numEntities,omitempty"`

	NumMentions int64 `json:"numMentions,omitempty"`

	NumTokens int64 `json:"numTokens,omitempty"`

	// ProcessorTimingsRoot: Root/total of the timings from all the
	// processors that worked on the given document or query.
	ProcessorTimingsRoot *RepositoryWebrefProcessorTiming `json:"processorTimingsRoot,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NumCandidateMentions") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumCandidateMentions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefAnnotatorProfile) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefAnnotatorProfile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefBookEditionMetadata: Book editions metadata for a
// book entity. This metadata is a pair of "/book/book_edition" mid and
// its ISBN number.
type RepositoryWebrefBookEditionMetadata struct {
	// BookEditionIsbn: Use varint encoding to save space.
	BookEditionIsbn uint64 `json:"bookEditionIsbn,omitempty,string"`

	BookEditionMid uint64 `json:"bookEditionMid,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "BookEditionIsbn") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BookEditionIsbn") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefBookEditionMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefBookEditionMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefBootstrappingScore struct {
	ScoreRatio float64 `json:"scoreRatio,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ScoreRatio") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ScoreRatio") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefBootstrappingScore) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefBootstrappingScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefBootstrappingScore) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefBootstrappingScore
	var s1 struct {
		ScoreRatio gensupport.JSONFloat64 `json:"scoreRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ScoreRatio = float64(s1.ScoreRatio)
	return nil
}

// RepositoryWebrefCategoryAnnotation: High level category annotations
// for documents and queries.
type RepositoryWebrefCategoryAnnotation struct {
	// BrowsyTopic: Experimental scores to be used by Discover.
	BrowsyTopic *RepositoryWebrefCategoryAnnotationBrowsyTopic `json:"browsyTopic,omitempty"`

	// DebugString: Title of the category. Eg "Politics", "Technology".
	DebugString string `json:"debugString,omitempty"`

	// Hitcat: Sources asserting the category. In the future we may have one
	// calibrated confidence score.
	Hitcat *RepositoryWebrefCategoryAnnotationHitCatSource `json:"hitcat,omitempty"`

	// Mid: Mid representation of the category. Eg "/m/05qt0". WARNING: In
	// UDR this field is not populated, use document_entity.entity.mid
	// instead of document_entity.category.mid.
	Mid string `json:"mid,omitempty"`

	// Shopping: Qprime asserting this category.
	Shopping *RepositoryWebrefCategoryAnnotationShoppingSignals `json:"shopping,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrowsyTopic") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrowsyTopic") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCategoryAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCategoryAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCategoryAnnotationBrowsyTopic: Experimental scores
// for browsy topics, see * go/example-docs-with-implicit-fashion-styles
// * go/browsy-entities
type RepositoryWebrefCategoryAnnotationBrowsyTopic struct {
	Confidence float64 `json:"confidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCategoryAnnotationBrowsyTopic) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCategoryAnnotationBrowsyTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefCategoryAnnotationBrowsyTopic) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefCategoryAnnotationBrowsyTopic
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// RepositoryWebrefCategoryAnnotationHitCatSource: The HitCat page
// classifier. See go/hitcat2 If you use any HitCat score, please: 1.
// Add your use-case to go/hits-clients. 2. Subscribe to hits-users@ to
// receive general updates.
type RepositoryWebrefCategoryAnnotationHitCatSource struct {
	// Confidence: Confidence of the category in the range [0.0, 1.0). If a
	// page has the category "NBA" with high confidence we also expect it to
	// have the "Basketball" with high confidence. Categories with a
	// confidence lower than 0.05 are omitted. This can be interpreted as a
	// confidence of 0, i.e. a strong signal that the category is not
	// relevant for the page. For some categories this score is calibrated
	// per-category to estimate the true precision. E.g., 70% of documents
	// retrieved within the confidence range [0.7 - eps, 0.7 + eps] will be
	// relevant when eps is close to 0.
	Confidence float64 `json:"confidence,omitempty"`

	// CumulativeConfidence: Calibrated cumulative confidence guaranteeing
	// maxmial recall for a precision target. E.g., At least 90% of
	// documents retrieved with cumulative_confidence >= 0.9 will be
	// relevant. This score is always calibrated per-category to estimate
	// the true cumulative precision and is not set for uncalibrated
	// categories.
	CumulativeConfidence float64 `json:"cumulativeConfidence,omitempty"`

	// ExperimentalConfidence: Note: For testing the next version. May
	// change at any time. Experimental confidence of the category in the
	// range (0.0, 1.0).
	ExperimentalConfidence float64 `json:"experimentalConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCategoryAnnotationHitCatSource) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCategoryAnnotationHitCatSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefCategoryAnnotationHitCatSource) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefCategoryAnnotationHitCatSource
	var s1 struct {
		Confidence             gensupport.JSONFloat64 `json:"confidence"`
		CumulativeConfidence   gensupport.JSONFloat64 `json:"cumulativeConfidence"`
		ExperimentalConfidence gensupport.JSONFloat64 `json:"experimentalConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.CumulativeConfidence = float64(s1.CumulativeConfidence)
	s.ExperimentalConfidence = float64(s1.ExperimentalConfidence)
	return nil
}

// RepositoryWebrefCategoryAnnotationShoppingSignals: The QPrime query
// classifier signals.
type RepositoryWebrefCategoryAnnotationShoppingSignals struct {
	// IsShoppingAnnotation: Whether QPrime asserts that particular
	// category.
	IsShoppingAnnotation bool `json:"isShoppingAnnotation,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsShoppingAnnotation") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsShoppingAnnotation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCategoryAnnotationShoppingSignals) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCategoryAnnotationShoppingSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCategoryInfo: All informations about category types
// of the entity.
type RepositoryWebrefCategoryInfo struct {
	// AllTypes: Contains all types relevant for this entity, along with
	// their provenances and confidences. This field basically replicates
	// information above in a unified way, so that Refcon scroing can make
	// better use of it. If present, Refcon scoring will use all_types, and
	// ignore other fields like freebase_type. Note: there is some basic
	// conflict resolution applied when all_types are computed (implemented
	// in type-extractor.cc, IsLikelyConflictingFreebase).
	AllTypes []*RepositoryWebrefFreebaseType `json:"allTypes,omitempty"`

	FreebaseType []*RepositoryWebrefFreebaseType `json:"freebaseType,omitempty"`

	KgCollection []*RepositoryWebrefKGCollection `json:"kgCollection,omitempty"`

	OysterType *RepositoryWebrefOysterType `json:"oysterType,omitempty"`

	// SalientCategory: verticals4 categories that cooccur with this entity,
	// aggregated over D2E. See where we read from CompactDocClassification
	// in
	// http://google3/repository/webref/preprocessing/fatcat-categories.cc.
	SalientCategory []*RepositoryWebrefFatcatCategory `json:"salientCategory,omitempty"`

	WikipediaCategory []*RepositoryWebrefWikipediaCategory `json:"wikipediaCategory,omitempty"`

	// WpCategory: WPCat CategotyResult classification.
	WpCategory []*RepositoryWebrefFreebaseType `json:"wpCategory,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllTypes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllTypes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCategoryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCategoryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterMetadata: Metadata about clusters. See
// go/webref-variants for details. Next available tag: 6.
type RepositoryWebrefClusterMetadata struct {
	// IsSet: If true, this entity is a synthetic entity created to
	// represent a "set" in a cluster, i.e. to represent a set of entities
	// (its children in the cluster graph) when we cannot disambiguate among
	// them. This is similar to a KG Collection, but this is not in KG.
	IsSet bool `json:"isSet,omitempty"`

	// RuleInstance: Explanation of where this cluster, and this entity,
	// come from. All entities in a cluster have this, not just entities
	// that have been created because of the cluster.
	RuleInstance *RepositoryWebrefClusterProtoRuleInstance `json:"ruleInstance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsSet") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterProtoMidListRule: A rule that defines a
// Cluster based on a list of mids. It creates a single Set, and makes
// it the parent of each of the mids in the list.
type RepositoryWebrefClusterProtoMidListRule struct {
	// Id: Id of this rule; this is used to generate ids for the synthetic
	// entities created for a cluster. Required.
	Id string `json:"id,omitempty"`

	// Mid: The mids of the entities that will be made into a cluster.
	Mid []string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterProtoMidListRule) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterProtoMidListRule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterProtoMidListRuleInstance: An instance of a
// "mid list" rule. Each "mid list" rule defines exactly one cluster.
type RepositoryWebrefClusterProtoMidListRuleInstance struct {
	// Possible values:
	//   "ELEMENT" - One of the entities explicitly given in the rule.
	//   "SET" - The entity that represents ambiguity among all ELEMENTs.
	Role string `json:"role,omitempty"`

	// Rule: The rule that this is an instance of. Required.
	Rule *RepositoryWebrefClusterProtoMidListRule `json:"rule,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Role") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Role") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterProtoMidListRuleInstance) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterProtoMidListRuleInstance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterProtoRelationRule: A rule that defines a
// Cluster based on a relation. Given a relation (a link type) R, then:
// For each entity B that has incoming links of type R This defines an
// instance of this rule, with argument=B We create a Set S We make B a
// child of S For each entity A that has a link R to B, we make A a
// child of S Next available tag: 6
type RepositoryWebrefClusterProtoRelationRule struct {
	// Relation: The topic_property_name for the link that defines the
	// relation, e.g. "/tv/tv_series_episode/series". Can start with a "!"
	// to indicate that this link is reversed during extraction and we want
	// the reversed case. Required.
	Relation string `json:"relation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Relation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Relation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterProtoRelationRule) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterProtoRelationRule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterProtoRelationRuleInstance: An instance of a
// "relation" rule. Each "relation" rule defines a number of clusters,
// one for each entity B that that has incoming links of a certain type
// R; all entities with an outgoing link to B of type R are part of that
// cluster.
type RepositoryWebrefClusterProtoRelationRuleInstance struct {
	// Possible values:
	//   "SOURCE" - One entity with an outgoing link of type R.
	//   "TARGET" - The entity with the incoming link of type R.
	//   "SET" - The entity that represents ambiguity among SOURCEs and
	// TARGET.
	Role string `json:"role,omitempty"`

	// Rule: The rule that this is an instance of. Required.
	Rule *RepositoryWebrefClusterProtoRelationRule `json:"rule,omitempty"`

	// Target: The one entity that the links of type R point to. Required.
	Target *RepositoryWebrefWebrefEntityId `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Role") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Role") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterProtoRelationRuleInstance) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterProtoRelationRuleInstance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefClusterProtoRuleInstance: When we apply a rule to
// define a particular cluster, we have a RuleInstance. Some kinds of
// rules for clusters define more than one cluster. In those rules we
// say things like "for each entity X with this property, we create a
// cluster where..."; each particular cluster that we create is the
// result of an *instance* of that rule, where the argument X has been
// bound to a particular entity (note that this also applies to rules
// that define only one cluster; in that case, there are no arguments).
// An entity that is part of a cluster plays a "role" in such a cluster.
// This message describes such an instantiation of a rule with a role
// and with concrete values for the arguments.
type RepositoryWebrefClusterProtoRuleInstance struct {
	// MidList: Exactly one of these *RuleInstance fields needs to be
	// present for clusters which have not been merged; it selects the
	// specific kind of rule instance. For merged clusters both fields may
	// be present.
	MidList *RepositoryWebrefClusterProtoMidListRuleInstance `json:"midList,omitempty"`

	Relation []*RepositoryWebrefClusterProtoRelationRuleInstance `json:"relation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MidList") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MidList") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefClusterProtoRuleInstance) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefClusterProtoRuleInstance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCompactFlatPropertyValue: Flattened version of
// possibly nested compound values. This means that the `value` in here
// is *never* a `compound_value` and all predicate MIDs on the nested
// path are collapsed into the repeated `predicate_encoded_mid` field.
// When `predicate_encoded_mid` contains only one predicate, this is
// equivalent to a CompactKgPropertyValue.
type RepositoryWebrefCompactFlatPropertyValue struct {
	PredicateEncodedMid googleapi.Uint64s `json:"predicateEncodedMid,omitempty"`

	// PropertyName: The property corresponding to predicte_encoded_mid
	// above. This is populated in some non-serving tables.
	PropertyName string `json:"propertyName,omitempty"`

	Value []*RepositoryWebrefCompactKgValue `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PredicateEncodedMid")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PredicateEncodedMid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCompactFlatPropertyValue) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCompactFlatPropertyValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCompactKgPropertyValue: Analog to
// freebase::PropertyValue
type RepositoryWebrefCompactKgPropertyValue struct {
	EncodedMid uint64 `json:"encodedMid,omitempty,string"`

	Hrid string `json:"hrid,omitempty"`

	Value []*RepositoryWebrefCompactKgValue `json:"value,omitempty"`

	// Possible values:
	//   "HAS_UNKNOWN_VALUE" - There are values, but we don't know what they
	// are. (e.g. person is known to have children, but we don't know who
	// they are) (This is only sensible if len(values) == 0; it is an error
	// to see this value if len(values) > 0)
	//   "HAS_NO_VALUE" - We know that there are no values for this
	// predicate. (e.g. person is known to have zero children) (This is only
	// sensible if len(values) == 0; it is an error to see this value if
	// len(values) > 0)
	ValueStatus string `json:"valueStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EncodedMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncodedMid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCompactKgPropertyValue) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCompactKgPropertyValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCompactKgTopic: Analog to freebase::Topic
type RepositoryWebrefCompactKgTopic struct {
	// Mid: Mid of the topic; only filled in if no values.
	Mid uint64 `json:"mid,omitempty,string"`

	PropertyValue []*RepositoryWebrefCompactKgPropertyValue `json:"propertyValue,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCompactKgTopic) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCompactKgTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefCompactKgValue: Analog to freebase::Value
// TODO(b/144526840) This representation has several quality and
// performance issues. Next available tag number: 12
type RepositoryWebrefCompactKgValue struct {
	// BoolValue: Present when value is bool.
	BoolValue bool `json:"boolValue,omitempty"`

	// CompoundValue: Compound values are those that contain either a number
	// of simple valued facets (such as a latitude/longitude pair), or
	// "mediator" topics representing multi-dimensional relationships
	// between topics. See metaweb/data/topictable/topic.proto for more
	// details.
	CompoundValue *RepositoryWebrefCompactKgTopic `json:"compoundValue,omitempty"`

	// DatetimeValue: Present when value is datetime.
	DatetimeValue string `json:"datetimeValue,omitempty"`

	// EnumValue: Present when value is enum.
	EnumValue string `json:"enumValue,omitempty"`

	// FloatValue: Present when value is float.
	FloatValue float64 `json:"floatValue,omitempty"`

	// IdValue: Present when value is an id.
	IdValue uint64 `json:"idValue,omitempty,string"`

	// IntValue: Present when value is int.
	IntValue int64 `json:"intValue,omitempty,string"`

	// SerializedProtoValue: Present when value is a serialized protocol
	// buffer.
	SerializedProtoValue string `json:"serializedProtoValue,omitempty"`

	// TextValue: Present when value is text.
	TextValue string `json:"textValue,omitempty"`

	// UriValue: Present when value is URI.
	UriValue string `json:"uriValue,omitempty"`

	// UriValueFprint32: 32-bit fprint of uri. Can be used instead of
	// `uri_value` to save space. See `GetNormalizedUriFprint32()`.
	UriValueFprint32 int64 `json:"uriValueFprint32,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoolValue") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefCompactKgValue) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefCompactKgValue
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefCompactKgValue) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefCompactKgValue
	var s1 struct {
		FloatValue gensupport.JSONFloat64 `json:"floatValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FloatValue = float64(s1.FloatValue)
	return nil
}

// RepositoryWebrefComponentReference: The ArgumentValue reference to
// Mention.CompoundMention.Component. Next available tag number: 4
type RepositoryWebrefComponentReference struct {
	// DebugEntity: Optionally the freebase_mid of the WebrefEntity which
	// the Component identifies via entity_index. This is purely to help
	// humans diagnose the WebrefEntities structure, may not always be
	// present and should not be used by production code. Use
	// QueryJoinToMeaningStructConverter to compose a proper value in place
	// of the component reference.
	DebugEntity string `json:"debugEntity,omitempty"`

	// FuncallName: The WebrefEntity referenced by `index` is equivalent to
	// this function call in this context, but not universally such that we
	// don't want to recursively expand its MRF. Use this for example if an
	// entity corresponds to a category in an Intersect: CellPhones() &
	// RelatedTo(/m/foo), where /m/cell_phones is equivalent to CellPhones()
	// (and may or may not have an annotated span), but we don't want to
	// generally assert that /m/cell_phones == CellPhones(). This cannot be
	// an actual FunctionCall to avoid a circular dependency.
	FuncallName string `json:"funcallName,omitempty"`

	// Index: The index of the Component of the CompoundMention which has
	// the mrf_index of this MRF expression in WebrefEntity. Required.
	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugEntity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugEntity") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefComponentReference) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefComponentReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefConceptNameMetadata: Metadata proto to be stored in
// concept tables. Note: Name table only stores name_type_mask for
// better performance. Remember to change NameToConceptEntry if you add
// a field to this proto.
type RepositoryWebrefConceptNameMetadata struct {
	// NameTypeMask: Bitfield of ConceptNameMetadata::NameType bits.
	NameTypeMask uint64 `json:"nameTypeMask,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "NameTypeMask") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NameTypeMask") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefConceptNameMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefConceptNameMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefDetailedEntityScores: Detailed scores about the
// topicality of an entity. Next available tag: 16
type RepositoryWebrefDetailedEntityScores struct {
	// Connectedness: Represents how much the entity is connected/related to
	// the other entities in the document. This signal partially influences
	// the topicality score, but it is not totally aligned with it: an
	// entity can be very related to the rest of the document, but not
	// central for understanding it. Likewise, an entity can be central to
	// understand a document, but not very related to the rest of the
	// document. The value is in [0, 1].
	Connectedness float64 `json:"connectedness,omitempty"`

	// DocScore: How well the document scores for the entity. The score is
	// unnormalized, and serves as a relative ranking signal between
	// different documents for an entity.
	DocScore float64 `json:"docScore,omitempty"`

	// GeoTopicNormalizedScore: If the annotation corresponds to a geo
	// topic, this is populated with GeoTopic::normalized_score.
	GeoTopicNormalizedScore float64 `json:"geoTopicNormalizedScore,omitempty"`

	// IsAuthor: True if the entity is the author of the document. This was
	// mainly developed and tuned for news articles (e.g. /m/02x27qn on
	// "www.vogue.com/article/flint-town-netflix") but is also popluated for
	// other content (e.g. scientific articles). Important: the semantics of
	// this field may change in the future or it might be removed and
	// replaced with a different API. If you want to use this field, please
	// reach out to ke-authors@ first.
	IsAuthor bool `json:"isAuthor,omitempty"`

	// IsPublisher: True if the entity is the publisher of the page (e.g.
	// CNN on "http://www.cnn.com/foo/bar").
	IsPublisher bool `json:"isPublisher,omitempty"`

	// IsReferencePage: Set to true iff the entity matches the full URL of
	// the document, meaning that it is a reference page or related page of
	// the entity.
	IsReferencePage bool `json:"isReferencePage,omitempty"`

	// LocalEntityLocationConfidence: If the annotation corresponds to a
	// local entity, this is populated with
	// LocalEntityAnnotations::Instance::location_confidence.
	LocalEntityLocationConfidence float64 `json:"localEntityLocationConfidence,omitempty"`

	// NormalizedTopicality: Representation of the topicality score that is
	// normalized in [0, 1] and which sum over all entities in the document
	// is 1. It represents the "proportion" of the document that talks about
	// the entity. This score is less human interpretable as the bucketized
	// topicality score (EntityAnnotations.topicality_score), but is more
	// suited for some usages like aggregations.
	NormalizedTopicality float64 `json:"normalizedTopicality,omitempty"`

	// ReferencePageScores: Signals used for mining new reference pages, set
	// by the reference-page-scorer processor (that is turned off by
	// default). This field is not populated, except for special reference
	// page extraction runs.
	ReferencePageScores *RepositoryWebrefReferencePageScores `json:"referencePageScores,omitempty"`

	// RelevanceScore: Relevance score generated by a Machine Learning
	// entity classifier. This signal is similar to topicality, but machine
	// learning based and supported by EntitySignals, not Webref. See
	// http://go/entityclassifier for details on the classifier.
	RelevanceScore float64 `json:"relevanceScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Connectedness") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Connectedness") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDetailedEntityScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDetailedEntityScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefDetailedEntityScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefDetailedEntityScores
	var s1 struct {
		Connectedness                 gensupport.JSONFloat64 `json:"connectedness"`
		DocScore                      gensupport.JSONFloat64 `json:"docScore"`
		GeoTopicNormalizedScore       gensupport.JSONFloat64 `json:"geoTopicNormalizedScore"`
		LocalEntityLocationConfidence gensupport.JSONFloat64 `json:"localEntityLocationConfidence"`
		NormalizedTopicality          gensupport.JSONFloat64 `json:"normalizedTopicality"`
		RelevanceScore                gensupport.JSONFloat64 `json:"relevanceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Connectedness = float64(s1.Connectedness)
	s.DocScore = float64(s1.DocScore)
	s.GeoTopicNormalizedScore = float64(s1.GeoTopicNormalizedScore)
	s.LocalEntityLocationConfidence = float64(s1.LocalEntityLocationConfidence)
	s.NormalizedTopicality = float64(s1.NormalizedTopicality)
	s.RelevanceScore = float64(s1.RelevanceScore)
	return nil
}

type RepositoryWebrefDetailedMentionScores struct {
	// ResultEntityScore: How much support this mention received from the
	// results for PostRef. This is populated only if explicitly requested
	// and different from 0.
	ResultEntityScore float64 `json:"resultEntityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ResultEntityScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ResultEntityScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDetailedMentionScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDetailedMentionScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefDetailedMentionScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefDetailedMentionScores
	var s1 struct {
		ResultEntityScore gensupport.JSONFloat64 `json:"resultEntityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ResultEntityScore = float64(s1.ResultEntityScore)
	return nil
}

// RepositoryWebrefDisplayInfo: Information that can be used to display
// the entity (e.g. title, image...).
type RepositoryWebrefDisplayInfo struct {
	// DisplayName: Per language display name from reliable sources.
	DisplayName []*RepositoryWebrefDisplayName `json:"displayName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDisplayInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDisplayInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefDisplayName: Per language display name from reliable
// sources (e.g. Freebase, Wikipedia). The name can be ambiguous (e.g.
// "Springfield" rather than "Springfield, Idaho"), and is thus to be
// used in a context which provides sufficient disambiguation. See:
// http://go/entity-names WARNING: This data is DEPRECATED and any
// user-visible entity names need to be fetched from TopicServer. Note
// that any display names included in this proto are merely a
// pass-through from KG and have no freshness guarantees.
type RepositoryWebrefDisplayName struct {
	// CanonicalName: An encylopedia style topic name (e.g. "Dog", not
	// "Dogs"). Corresponds to Freebase /type/object/name and similar
	// sources.
	CanonicalName string `json:"canonicalName,omitempty"`

	// Language: The language of this name. See http://goto/iii for all the
	// details on the language identifiers.
	Language string `json:"language,omitempty"`

	// SubjectName: A name as it would be used for a news topic, an
	// interest, the subject of a story. E.g. in list of things ("Related
	// topics: Smartphones, computers, accidents". "Interests: Dogs"). *Fall
	// back:* If the field is not populated, fall back to the
	// "canonical_name" field. This field is usually not populated since (a)
	// in most cases the subject form name is the same as the canonical
	// name, and (b) data coverage of subject-form names is currently much
	// lower than data coverage of canonical names. Note: In some languages
	// (e.g. French) the difference between canonical names and subject
	// names is larger than in English (not just plural vs. singular), but
	// still strictly grammatical (including an article, capitalization,
	// plural vs. singular). Corresponds to Freebase
	// /freebase/linguistic_hint/subject_form.
	SubjectName string `json:"subjectName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDisplayName) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDisplayName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefDocLevelRelevanceRatings: List of
// PerDocRelevanceRatings for Precision@5 evals done via ewok (template
// 2282).
type RepositoryWebrefDocLevelRelevanceRatings struct {
	PerDocRelevanceRatings []*RepositoryWebrefPerDocRelevanceRatings `json:"perDocRelevanceRatings,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PerDocRelevanceRatings") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PerDocRelevanceRatings")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDocLevelRelevanceRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDocLevelRelevanceRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefDocumentMetadata: Information about the document
// which is not produced by webref, typically copied from the docjoin.
// Next available tag: 15
type RepositoryWebrefDocumentMetadata struct {
	// CdocAttachments: A copy of selected extensions from
	// cdoc.doc_attachments and cdoc.per_doc_data, controlled by:
	// --webref_doc_metadata_copy_instant_navboost_document (copies
	// doc_attachments[quality_freshness_abacus::InstantNavBoostDocument]
	// (TypeId 105421467), defined in
	// quality/freshness/abacus/public/abacus.proto). Used in Querybase to
	// have navboost associated with relevant cdocs.
	// --webref_doc_metadata_copy_per_doc_navboost (copies
	// per_doc_data[navboostdata]) (TypeId 4256936), defined in
	// mustang/repository/navboost/proto/navboostmustang.proto. Used in
	// Querybase to have navboost associated with relevant docs. Note that
	// it is not present in the original doc_attachments, but in
	// per_doc_data, and we copy it over here so as not to depend on the
	// proto directly, as they are not compatible due to different
	// app_engine compatibility. --webref_doc_metadata_copy_images (copies
	// doc_attachments[indexing::images::RelatedImageSignal]) (TypeId
	// 21265426), defined in indexing/images/proto/image-linker.proto.
	CdocAttachments *Proto2BridgeMessageSet `json:"cdocAttachments,omitempty"`

	// CrawlTime: The timestamp of when the document was crawled (if known).
	// Copied from CompositeDoc.Content.CrawlTime.
	CrawlTime int64 `json:"crawlTime,omitempty,string"`

	// DocFp: Fingerprint of the document. We compute and set this
	// fingerprint when creating the pagesets that we use for evals.
	// Otherwise, this field is not normally set. We use the field to make
	// sure that the human ratings that we have are generated for the same
	// version of the document, otherwise they might be invalid. We do not
	// compute the fingerprint on the fly (e.g. as a fingerprint of the
	// proto buffer serialization of the cdoc) because protocol buffer
	// serialization is not stable.
	DocFp uint64 `json:"docFp,omitempty,string"`

	// DocId: DocId of the annotated document as read from
	// cdoc.doc().docid().
	DocId uint64 `json:"docId,omitempty,string"`

	// ForwardingUrls: Urls that forward to this url. Needed for url ->
	// topical entity entries.
	ForwardingUrls *RepositoryWebrefForwardingUrls `json:"forwardingUrls,omitempty"`

	// IsDisambiguationPage: Set to true if the document is a known
	// disambiguation page, e.g. https://en.wikipedia.org/wiki/Orange.
	IsDisambiguationPage bool `json:"isDisambiguationPage,omitempty"`

	// Language: The document language, as read from
	// doc().content().language(). This is go/language-enum value.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	Language string `json:"language,omitempty"`

	// NumIncomingAnchors: The (weighted) number of incoming anchors (links
	// from other documents).
	NumIncomingAnchors float64 `json:"numIncomingAnchors,omitempty"`

	// RepeatedCdocAttachments: Copies of selected repeated extensions from
	// cdoc, controlled by: --webref_doc_metadata_copy_images (copies the
	// repeated doc_images field (TypeId 8798074), defined in
	// image/search/imagedoc.proto).
	RepeatedCdocAttachments []*Proto2BridgeMessageSet `json:"repeatedCdocAttachments,omitempty"`

	// SalientTerms: The salient terms for this document. Only set if
	// --webref_doc_metadata_copy_salient_terms is true. Same motivation as
	// the title field above.
	SalientTerms *QualitySalientTermsSalientTermSet `json:"salientTerms,omitempty"`

	// Title: The title of the document. Only set if
	// --webref_doc_metadata_set_title is true. The idea is that we can use
	// this to more easily learn things like: title contains "restaurants"
	// -> more likely to be a list page.
	Title string `json:"title,omitempty"`

	// TotalClicks: The total clicks on this document, taken from navboost
	// data.
	TotalClicks float64 `json:"totalClicks,omitempty"`

	// Url: The url of the document.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CdocAttachments") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CdocAttachments") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDocumentMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDocumentMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefDocumentMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefDocumentMetadata
	var s1 struct {
		NumIncomingAnchors gensupport.JSONFloat64 `json:"numIncomingAnchors"`
		TotalClicks        gensupport.JSONFloat64 `json:"totalClicks"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NumIncomingAnchors = float64(s1.NumIncomingAnchors)
	s.TotalClicks = float64(s1.TotalClicks)
	return nil
}

// RepositoryWebrefDomainSpecificRepresentation: Represents a domain
// specific entity data.
type RepositoryWebrefDomainSpecificRepresentation struct {
	// EntityData: The actual domain specific data. For example it can be
	// freebase.Topic, repository_wikipedia.WikiJoin, ocean.WorkMetadata,
	// geostore.Feature.
	EntityData *Proto2BridgeMessageSet `json:"entityData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefDomainSpecificRepresentation) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefDomainSpecificRepresentation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEnricherDebugData: Top level proto for enricher
// specific debug data that is only displayed in the Webref demo and
// should not be used for anything production-related. Next id: 4.
type RepositoryWebrefEnricherDebugData struct {
	// NonMidProperties: Contains selected properties (from KG) whose values
	// are not other entities (in which case they would be represented in
	// link_info) but scalar values, possibly reachable through (multiple)
	// CVTs.
	NonMidProperties []*RepositoryWebrefCompactFlatPropertyValue `json:"nonMidProperties,omitempty"`

	// ReferencePage: This field contains reference pages for this entity. A
	// reference page is a page that is highly topical for this entity,
	// which can be used to mine additional information about this entity.
	// Example reference pages for Apple Inc. would be the composite docs
	// for "http://en.wikipedia.org/wiki/Apple_Inc." and
	// http://www.apple.com. For actors or movies, you can also have the
	// imdb page. Also see: http://go/refx-pages.
	ReferencePage []*RepositoryWebrefSimplifiedCompositeDoc `json:"referencePage,omitempty"`

	// RelatedPage: This field contains mined related pages for the entity.
	// A related page is a page that is moderately topical for this entity
	// (More details: http://shortn/_KCE0GfQlpJ). This is mainly used to
	// mine additional information for entities which do not have reference
	// pages Unlike reference pages, a single doc can be a related page for
	// multiple mids.
	RelatedPage []*RepositoryWebrefSimplifiedCompositeDoc `json:"relatedPage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NonMidProperties") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NonMidProperties") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEnricherDebugData) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEnricherDebugData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEntityAnnotations: All annotations for a given
// concept (in one document collection). Available tags: [10-15], [19-]
type RepositoryWebrefEntityAnnotations struct {
	// ConfidenceScore: The overall confidence that the entity is annotated
	// somewhere in the document or query. For WebRef it is computed as a
	// function of the mention confidences weighted by the importance of
	// each mention, where for documents a mention is of greater importance
	// if it occurs in the title, h1 or anchors. For QRef it is just the
	// maximum of the confidence over all mentions. NOTE: You probably want
	// to use the mention-level segment_mentions.mention.confidence_score
	// field instead of this one.
	ConfidenceScore float64 `json:"confidenceScore,omitempty"`

	DebugInfo *RepositoryWebrefAnnotationDebugInfo `json:"debugInfo,omitempty"`

	// DetailedEntityScores: Additional information about how the entity
	// relates to the page, for example whether it is a business entity
	// which published the page.
	DetailedEntityScores *RepositoryWebrefDetailedEntityScores `json:"detailedEntityScores,omitempty"`

	// ExplainedRangeInfo: All ranges explained by the entity or any other
	// entity it implies. Used in the context of partial query
	// interpretation (go/partial-understanding).
	ExplainedRangeInfo *RepositoryWebrefExplainedRangeInfo `json:"explainedRangeInfo,omitempty"`

	// IsImplicit: An entity is marked as implicit if there is no explicit
	// mention of the entity in the content of the page. For instance, all
	// mentions of the entity are in query, url and/or anchors; or the
	// entity has only implicit content mentions.
	IsImplicit bool `json:"isImplicit,omitempty"`

	// IsResolution: True if the entity is an MDVC summary entity, i.e. it
	// might not be mentioned directly on the query, but it is the product
	// of resolving a set of explicit annotations. E.g. "2014 FIFA World
	// Cup" can be the summary for the query: [soccer world cup in brazil]
	// even though none of the names of the entity is mentioned on the
	// query. Summary nodes can also be synthetic, i.e. have a /t/ mid, as
	// they represent the intersection between a set of regular annotations.
	// For more information, see http://go/mdvc-output.
	IsResolution bool `json:"isResolution,omitempty"`

	// SegmentMentions: All mentions of a given concept grouped by segments.
	// For Webref, there are many different kinds of segment, such as
	// content, title and anchors; while for QRef, there is only one segment
	// called CONTENT. For QRef this field contains the primary output of
	// the annotator, and for WebRef it together with topicality_score does.
	SegmentMentions []*RepositoryWebrefSegmentMentions `json:"segmentMentions,omitempty"`

	// TopicalityRank: Rank of the entity when sorted by topicality score.
	TopicalityRank int64 `json:"topicalityRank,omitempty"`

	// TopicalityScore: The WebRef topicality score of the entity for this
	// document. This score indicates how related is the entity to the
	// overall topic of the document. See
	// https://goto.google.com/topicality-score for details. This field is
	// not present in QRef output. Note that the topicality and the
	// confidence score are orthogonal measures. It is possible that the
	// annotator is absolutely sure that an entity is mentioned in a given
	// range in the document, but this entity may be unrelated to the
	// overall topic of the page (e.g. the entity "RSS" is mentioned in the
	// footer of appleinsider.com). In this case the mention has a very high
	// confidence score, but very low topicality score.
	TopicalityScore float64 `json:"topicalityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfidenceScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfidenceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefEntityAnnotations) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefEntityAnnotations
	var s1 struct {
		ConfidenceScore gensupport.JSONFloat64 `json:"confidenceScore"`
		TopicalityScore gensupport.JSONFloat64 `json:"topicalityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceScore = float64(s1.ConfidenceScore)
	s.TopicalityScore = float64(s1.TopicalityScore)
	return nil
}

// RepositoryWebrefEntityDebugInfo: Provides some debug info for the
// entity. This data shown to engineers (for debugging) and to raters
// (so it ultimately impacts eval metrics), but is also used to train ML
// models (see below). IMPORTANT: Despite the proto naming, this data
// has production quality impact. The data below is mostly
// human-readable text that is useful to help engineers with debugging.
// However the text is also used as input to machine-learned natural
// language processing models, which are used in production Webref.
type RepositoryWebrefEntityDebugInfo struct {
	// Description: A human-readable description of the entity. This can
	// range from brief, machine-generated notes to lengthy human-written
	// paragraphs from Wikipedia.
	Description string `json:"description,omitempty"`

	// Language: The language (III LanguageCode) of the `title` and
	// `description` fields.
	Language string `json:"language,omitempty"`

	// Score: Internal score to merge debug info. should not set in final
	// entityjoins.
	Score float64 `json:"score,omitempty"`

	// Title: A short human-readable name/title of the entity, similar to
	// what is displayed at the top of a Hume page. Suitable to be displayed
	// in a list.
	Title string `json:"title,omitempty"`

	// Url: Link to a page with more information about the entity (internal
	// Hume page, external Wikipedia page, etc.).
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefEntityDebugInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefEntityDebugInfo
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefEntityJoin: Next available tag: 35. Represents all
// the information that we have for a given entity.
type RepositoryWebrefEntityJoin struct {
	// AnnotatedEntityId: The id of this entity, prefer accessing through
	// webref-entities-util.h functions.
	AnnotatedEntityId *RepositoryWebrefWebrefEntityId `json:"annotatedEntityId,omitempty"`

	// Cdoc: This field contains reference pages for this entity. A
	// reference page is a page that is highly topical for this entity,
	// which can be used to mine additional information about this entity.
	// Example reference pages for Apple Inc. would be the composite docs
	// for "http://en.wikipedia.org/wiki/Apple_Inc." and
	// http://www.apple.com. For actors or movies, you can also have the
	// imdb page. Also see: http://go/refx-pages.
	Cdoc []*RepositoryWebrefSimplifiedCompositeDoc `json:"cdoc,omitempty"`

	// ContextNameInfo: The context names (with scores) of this entity. The
	// difference to regular names (aka name_info) is that context names are
	// not used for finding mentions in a document as they consist of names
	// somehow related to the entity (e.g. name "fisherman s wharf" for the
	// entity "Gary Danko"). Used for reconciling freebase and oyster.
	ContextNameInfo []*RepositoryWebrefGlobalNameInfo `json:"contextNameInfo,omitempty"`

	// DebugInfo: Debug information about the entity.
	DebugInfo []*RepositoryWebrefEntityDebugInfo `json:"debugInfo,omitempty"`

	// EnricherAnnotatorProfile: Optional profiling data from the enricher
	// that enriched this entity (and produced this EntityJoin as debug
	// output).
	EnricherAnnotatorProfile *RepositoryWebrefAnnotatorProfile `json:"enricherAnnotatorProfile,omitempty"`

	// EnricherDebugData: Contains debug data produced by enricher and only
	// used for debug purpose (e.g. demo).
	EnricherDebugData *RepositoryWebrefEnricherDebugData `json:"enricherDebugData,omitempty"`

	// ExtraData: Additional metadata about the entity, that can be derived
	// from the "raw data" (composite doc, domain specific data...), or come
	// from other sources. Despite its name, this field often contains quite
	// important information.
	ExtraData *RepositoryWebrefExtraMetadata `json:"extraData,omitempty"`

	// HumanRatings: Human ratings (e.g. ratings from EWOK). This is
	// typically only populated in the evaluation pipelines (e.g. P@5).
	HumanRatings *RepositoryWebrefHumanRatings `json:"humanRatings,omitempty"`

	// LinkInfo: Contains all links (with scores) that Webref knows for this
	// entity. Links are relationships between entities. The data in this
	// field is very important for the quality of the model.
	LinkInfo []*RepositoryWebrefGlobalLinkInfo `json:"linkInfo,omitempty"`

	// NameInfo: Contains all names (with scores) that Webref knows for this
	// entity. The data in this field is very important for the quality of
	// the model.
	NameInfo []*RepositoryWebrefGlobalNameInfo `json:"nameInfo,omitempty"`

	// RefconNameInfo: Contains names and names metadata used by Refcon.
	RefconNameInfo []*RepositoryWebrefRefconRefconNameInfo `json:"refconNameInfo,omitempty"`

	// Representation: An entity can have metadata from various data
	// sources. Generally speaking all sources will be / should be
	// reconciled into a single KG Topic entry. However, in some cases we
	// pull in additional chunks of metadata from these sources; these are
	// stored in this field. For example a local business could have a KG
	// entry (topic proto), wikipedia entry (WikiJoin) and a MapFacts entry
	// (Feature proto).
	Representation []*RepositoryWebrefDomainSpecificRepresentation `json:"representation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotatedEntityId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotatedEntityId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityJoin) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityJoin
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEntityLinkMetadata: Metadata about the nature of the
// link.
type RepositoryWebrefEntityLinkMetadata struct {
	// AggregateFlags: The aggregate kind flags for the link.
	AggregateFlags *RepositoryWebrefLinkKindFlags `json:"aggregateFlags,omitempty"`

	// KindInfo: Information about all the link kinds associated with the
	// link.
	KindInfo []*RepositoryWebrefLinkKindInfo `json:"kindInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregateFlags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregateFlags") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityLinkMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityLinkMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEntityLinkSource: All link data for a given source.
type RepositoryWebrefEntityLinkSource struct {
	// KgProperty: KG-property if the SourceType is associated with a
	// KG-property (TOPIC_PROPERTY, NEW_TOPIC_PROPERTY).
	KgProperty string `json:"kgProperty,omitempty"`

	// Score: Score in [0, \infty) that represents how relatively likely it
	// is to see that entity cooccurring with the main entity (in the entity
	// join). A value of 1.0 means that the two entities are basically
	// independent. The higher the more likely (relatively to the individual
	// entity probabilities) they are to cooccur.
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "UNKNOWN_LINK_SOURCE"
	//   "REFERENCE_PAGE_MENTIONS" - Entity mentions from a reference page.
	// Those mentions come from wikilinks.
	//   "OYSTER_RELATIONS" - Links added based on relations in oyster
	// feature protos.
	//   "TYPE_BASED_LINKS" - Links generated to topics related to a topic's
	// type.
	//   "TIME_LINKS" - Links between year entity and month entity.
	//   "COMPOUND_LINKS" - Links between compound and attribute entity.
	// Data comes from WikiJoin.
	//   "HUMAN_LANGUAGE_LINKS" - Links between for human languages,
	// currently we have human_language <-> human_language and
	// human_language <-> translation. Reason to have these links: link
	// weights for them from other sources (e.g., REFERENCE_PAGE_MENTIONS)
	// are too small. In order to improve annotation for language entities,
	// we need to manually increase these link weights.
	//   "NEW_TOPIC_PROPERTY" - Links from kg-properties.
	//   "EXPERIMENTAL_LINKS" - For experiments only, see flag
	// enricher_experimental_link_table in enricher-link-scorer.cc.
	//   "PERSONAL_LINKS" - Links from the Personal Knowledge Graph indexing
	// pipeline.
	//   "EBSE" - Entity-based salient entities.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KgProperty") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KgProperty") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityLinkSource) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityLinkSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefEntityLinkSource) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefEntityLinkSource
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefEntityNameRatings: Stores all human ratings collected
// for a given entity name.
type RepositoryWebrefEntityNameRatings struct {
	Language string `json:"language,omitempty"`

	Name string `json:"name,omitempty"`

	// Ratings: Every entity name receives one or a few ratings from human
	// raters.
	Ratings []*RepositoryWebrefEntityNameRatingsEntityNameRating `json:"ratings,omitempty"`

	// Tags: Multiple tags can be assigned to a rated entity name. The tags
	// can be used when computing metrics in the Name Eval, so that
	// different metrics are computed separately for different sets of
	// examples that have the same tag.
	Tags []string `json:"tags,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityNameRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityNameRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefEntityNameRatingsEntityNameRating struct {
	// Comment: Comment left by the rater to justify the rating decision.
	Comment string `json:"comment,omitempty"`

	// Possible values:
	//   "LABEL_UNSPECIFIED"
	//   "LABEL_GOOD"
	//   "LABEL_BAD"
	//   "LABEL_I_DONT_KNOW"
	Label string `json:"label,omitempty"`

	// Possible values:
	//   "SOURCE_UNSPECIFIED"
	//   "SOURCE_REFX" - Ratings from RefX engineers.
	//   "SOURCE_QAAS" - Ratings from QaaS raters.
	//   "SOURCE_SLS" - Ratings from Search Language Specialists (go/sls)
	// raters.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Comment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Comment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityNameRatingsEntityNameRating) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityNameRatingsEntityNameRating
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEntityNameScore: Represents a score for an entity.
// Next available tag: 39.
type RepositoryWebrefEntityNameScore struct {
	// BootstrappingPreviousIteration: If the EntityNameScore is part of a
	// bootstrapped model, then this field contains the score_ratio from the
	// previous model ("Model 0"). If Model 0 does not have a corresponding
	// entry, because it did not know about this name for this entity, then
	// bootstrapping_previous_iteration is left empty.
	BootstrappingPreviousIteration *RepositoryWebrefBootstrappingScore `json:"bootstrappingPreviousIteration,omitempty"`

	// Confidence: Confidence that this name is a trusted name of the
	// entity. A reasonable threshold for name trust is 0.6. A name can be
	// trusted and still have very low score_ratio, esp. if it is ambiguous
	// (e.g. 'mercury') and/or not the dominant interpretation (e.g.
	// "siberian husky" -> /m/06krnsr (a book)).
	Confidence float64 `json:"confidence,omitempty"`

	// DebugInfo: Debug information about the entity.
	DebugInfo []*RepositoryWebrefEntityDebugInfo `json:"debugInfo,omitempty"`

	// DebugVariantSignals: Source and score data, this is internal to refx
	// (e.g. for demo/debug).
	DebugVariantSignals []*RepositoryWebrefPreprocessingNameVariantSignals `json:"debugVariantSignals,omitempty"`

	// Entity: Sparse metadata about the entity, usage should be moved back
	// to individual fields, this avoids having cyclic dependencies.
	Entity *RepositoryWebrefEntityJoin `json:"entity,omitempty"`

	// ExtendedScoreRatio: Stores region specific score ratios for the
	// entity when it is significantly different from the language version
	// above.
	ExtendedScoreRatio []*RepositoryWebrefExtendedEntityNameScore `json:"extendedScoreRatio,omitempty"`

	// IncludeInModel: Include this name in the name lookup table.
	IncludeInModel bool `json:"includeInModel,omitempty"`

	// InternalBootstrapIsOpenWorld: Transient field, only used in bootstrap
	// pipeline.
	InternalBootstrapIsOpenWorld bool `json:"internalBootstrapIsOpenWorld,omitempty"`

	InternalIsClusterParent bool `json:"internalIsClusterParent,omitempty"`

	// IsClusterGlobal: Set to true iff the concept is cluster parent and
	// the name can be a name for any child of the cluster. (e.g.
	// 'starbucks' is cluster_global for the [Starbucks] chain cluster).
	IsClusterGlobal bool `json:"isClusterGlobal,omitempty"`

	// IsDropped: Documened at:
	// repository/webref/universal/webref_data/enricher/entity-data.h
	IsDropped bool `json:"isDropped,omitempty"`

	// IsMatchlessResultContext: Only for context names: Whether this
	// EntityNameScore represents an entity that was dominant in the search
	// results but was not annotated by QRef during learning. Matchless
	// result contexts are useful for bootstrapping, where different model
	// iterations may have different names and thus context scores from
	// Model 0 that are inconsistent with the names from Model 1.
	IsMatchlessResultContext bool `json:"isMatchlessResultContext,omitempty"`

	// IsPruned: Documened at:
	// repository/webref/universal/webref_data/enricher/entity-data.h
	IsPruned bool `json:"isPruned,omitempty"`

	// Mid: The id of the entity.
	Mid uint64 `json:"mid,omitempty,string"`

	// NameMetadata: Metadata about this name aggregated from name signals.
	NameMetadata *RepositoryWebrefPreprocessingNameEntityMetadata `json:"nameMetadata,omitempty"`

	// RangeMetadata: Metadata of segment range, which is annotated by this
	// entity.
	RangeMetadata []*RepositoryWebrefRangeMetadata `json:"rangeMetadata,omitempty"`

	// Score: The absolute score of that entity. score = artificial_score +
	// volume_based_score
	Score float64 `json:"score,omitempty"`

	// ScoreRatio: Ratio between this entity score and the total score over
	// all entities. This is including the "open world" information if it
	// was estimated.
	ScoreRatio float64 `json:"scoreRatio,omitempty"`

	// UseAsNameCandidate: When this field is true, we consider this context
	// name as candidate in Enricher's names pipeline.
	UseAsNameCandidate bool `json:"useAsNameCandidate,omitempty"`

	// VolumeBasedScore: Absolute score that comes from quantitative sources
	// such as navboost clicks, anchors, etc. artificial_score = score -
	// volume_based_score
	VolumeBasedScore float64 `json:"volumeBasedScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BootstrappingPreviousIteration") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "BootstrappingPreviousIteration") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityNameScore) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityNameScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefEntityNameScore) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefEntityNameScore
	var s1 struct {
		Confidence       gensupport.JSONFloat64 `json:"confidence"`
		Score            gensupport.JSONFloat64 `json:"score"`
		ScoreRatio       gensupport.JSONFloat64 `json:"scoreRatio"`
		VolumeBasedScore gensupport.JSONFloat64 `json:"volumeBasedScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.Score = float64(s1.Score)
	s.ScoreRatio = float64(s1.ScoreRatio)
	s.VolumeBasedScore = float64(s1.VolumeBasedScore)
	return nil
}

// RepositoryWebrefEntityNameSource: Represents the data for a given
// source of names, including all entity scores. Notice that a source of
// name can be just a signal like a multiplier. Next available tag: 8.
type RepositoryWebrefEntityNameSource struct {
	// EntityScore: All the entity-name scores from that source. Keyed by
	// the EntityNameScore.entity_id field.
	EntityScore []*RepositoryWebrefEntityNameScore `json:"entityScore,omitempty"`

	// Type: Describes where the data comes from.
	//
	// Possible values:
	//   "SOURCE_TITLE"
	//   "SOURCE_QUERY"
	//   "SOURCE_ANCHOR"
	//   "PRODUCT_TITLE"
	//   "PRODUCT_QUERY"
	//   "COMMON_NGRAM_CONCEPT_BOOST" - Special source that contains data on
	// how much to boost the score of the entity because it is a common
	// word/ngram concept (as opposed for example to proper noun).
	//   "FREEBASE_NAME" - A freebase name or alias.
	//   "TYPE_BASED_INVERSE_DEMOTION_FACTOR" - Special source that contains
	// data on how much to demote the score of the entity because of its
	// type. This contains the inverse of the demotion.
	//   "STRONG_IDENTIFIER" - The name comes from a strong identifier, for
	// example a URL, ISBN, UPC...
	//   "UNTRUSTED_ANCHOR" - The name comes from an untrusted anchor (for
	// example from an untrusted external page).
	//   "PERSON_NAME" - The name comes from a person full or partial name.
	//   "OYSTER_NAME" - The name comes from an Oyster NameProto associated
	// with a location.
	//   "UNTRUSTED_QUERY" - The name comes from query clicks on untrusted
	// pages.
	//   "OYSTER_NAME_DERIVED" - The name is derived from an Oyster
	// NameProto, e.g., by adding an address component or a type.
	//   "RELATED_CONTEXT" - The name is extracted from related entities
	// (e.g. based on link_info).
	//   "WIKI_DESCRIPTION" - Textual description of the entity (e.g. from
	// first wikipedia paragraph). Usually longer than a regular entity name
	// (can include multiple sentences).
	//   "WIKI_INFOBOX" - Names extracted from a wikipedia infobox.
	//   "FREEBASE_PROPERTY" - Names extracted from text-valued freebase
	// properties (other than the ones which are already included in
	// FREEBASE_NAME).
	//   "WIKI_IS_A_TYPE" - Is-a type extracted from wikipedia description.
	//   "OYSTER_TYPE" - The name is derived from an Oyster type.
	//   "OYSTER_ADDRESS" - The name is derived from an Oyster address.
	//   "SOURCE_MODEL" - The name contains aggregated scores from a run of
	// the model pipeline. This is used to store old prior scores when
	// learning new priors from e.g. queries.
	//   "LEAKED_NAME_DEMOTION" - Demotion due to the name is suspected to
	// be leaked from a related entity.
	//   "PRODUCT_TITLE_VARIATION" - The name is a generated variation based
	// on Product Search titles.
	//   "TRUSTED_NAME" - Trusted names are not squashed, and have a high
	// confidence. A name should get source type trusted if: - None of the
	// above types is more appropriate. - We are very confident that the
	// names are correct for the given entity. An example usage is for stock
	// ticker names which originate from Google Finance data. Trusted name's
	// scores are not squashed (i.e. the total score volume for trusted
	// names for a given name is not bounded.) In addition trusted names are
	// canonical names, so they are not dropped in the preprocessing
	// pipeline.
	//   "SUBSET_NAME" - This name has been recognized as a (fuzzy/partial)
	// subset of a strong name, hence gets some score and trust because of
	// that.
	//   "UNTRUSTED_COOCCURRENCE_NAME" - Names from Cooccurrence pipeline.
	//   "RESULTS_ENTITIES_QUERY" - The name is a query for which the entity
	// was featured in the results.
	//   "RELATED_ENTITIES_NGRAM" - The name is an ngram for which the
	// entity was featured in the results.
	//   "CLIENT_PROVIDED_NAME" - Names from clients' complementary data.
	//   "GENERATED_CONTAINING_CONTEXT" - A possibly disambiguating context
	// for the entity generated from the model data, for example " " for a
	// city.
	//   "DOC_NAME_AGGREGATES" - Scores from the document name aggregated
	// scores.
	//   "QUERY_NAME_AGGREGATES" - Scores from the query name aggregated
	// scores.
	//   "SOURCE_LEARNED_QUERY" - The name score comes from the query learn
	// prior stage.
	//   "COMPANY_OR_WEBSITE_DERIVED_NAME" - Company or website derived
	// name.
	//   "GENERATED_SPARSE_CONTEXT" - Retrieval contexts made out of bigrams
	// pairing tokens from names of related entities.
	//   "GENERATED_ARTIFICIAL_CONTEXT" - Retrieval contexts made out of a
	// name, followed by an artificial contextual token representing e.g. a
	// type or coarse geo location. The annotator will generate lookups when
	// it has reason to believe the range may contain an entity with the
	// property.
	//   "GENERATED_S2CELL_CONTEXT" - Retrieval contexts made out of bigrams
	// pairing tokens of pruned names and the S2 cells around the entity (if
	// the entity has a geo location).
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityNameSource) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityNameSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefEntityScores: Keeps a set of scores about an entity.
// Next available tag: 20.
type RepositoryWebrefEntityScores struct {
	// AllCapsProb: Probability that any given name of this entity is fully
	// capitalized.
	AllCapsProb float64 `json:"allCapsProb,omitempty"`

	// AlphaEntityIdf: This field is only for debugging and link weight
	// experiments. It stores the entity's idf from the alpha model. Alpha
	// idfs are used for link weight computations and available during model
	// omega building via enricher_current_entity_idf_for_link_direction.
	AlphaEntityIdf float64 `json:"alphaEntityIdf,omitempty"`

	// CommonNgramProb: Probability that the entity is a common ngram (e.g.
	// from dictionary).
	CommonNgramProb float64 `json:"commonNgramProb,omitempty"`

	// EntityIdf: The final (model omega) idf of an entity. Equals log2(1 /
	// probability of the entity to appear in a document). This probability
	// is currently estimated from its names (i.e. it is a sum of the name
	// frequency weighted by P(entity | name)).
	EntityIdf float64 `json:"entityIdf,omitempty"`

	// NameCapitalizationProb: Probability that any given name of this
	// entity is capitalized.
	NameCapitalizationProb float64 `json:"nameCapitalizationProb,omitempty"`

	// PersonProb: The following fields are deprecated and should eventually
	// be removed. They use data and rules that have not been refreshed for
	// ~10y and KG has changed a lot in the meantime.
	PersonProb float64 `json:"personProb,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AllCapsProb") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllCapsProb") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefEntityScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefEntityScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefEntityScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefEntityScores
	var s1 struct {
		AllCapsProb            gensupport.JSONFloat64 `json:"allCapsProb"`
		AlphaEntityIdf         gensupport.JSONFloat64 `json:"alphaEntityIdf"`
		CommonNgramProb        gensupport.JSONFloat64 `json:"commonNgramProb"`
		EntityIdf              gensupport.JSONFloat64 `json:"entityIdf"`
		NameCapitalizationProb gensupport.JSONFloat64 `json:"nameCapitalizationProb"`
		PersonProb             gensupport.JSONFloat64 `json:"personProb"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AllCapsProb = float64(s1.AllCapsProb)
	s.AlphaEntityIdf = float64(s1.AlphaEntityIdf)
	s.CommonNgramProb = float64(s1.CommonNgramProb)
	s.EntityIdf = float64(s1.EntityIdf)
	s.NameCapitalizationProb = float64(s1.NameCapitalizationProb)
	s.PersonProb = float64(s1.PersonProb)
	return nil
}

// RepositoryWebrefExplainedRangeInfo: Information about all ranges
// explained by the entity or any other entity it implies. For example,
// the Zurich entity may explain both tokens "Zurich" and "Switzerland"
// in [FIFA Zurich Switzerland], the first directly, the other via
// implication. Only used in the context of query annotation.
type RepositoryWebrefExplainedRangeInfo struct {
	// ExplainedRange: All ranges explained by the entity.
	ExplainedRange []*RepositoryWebrefExplainedRangeInfoExplainedRange `json:"explainedRange,omitempty"`

	// Possible values:
	//   "NONE"
	//   "PARTIAL" - Represents a PU result (go/partial-understanding).
	//   "FULL" - Represents a Sirius result (go/sirius).
	GeoQueryCoverage string `json:"geoQueryCoverage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExplainedRange") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExplainedRange") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefExplainedRangeInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefExplainedRangeInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefExplainedRangeInfoExplainedRange: A range of the
// annotated document explained by an entity.
type RepositoryWebrefExplainedRangeInfoExplainedRange struct {
	// Mention: SegmentMention describing the occurrence of the token in the
	// document.
	Mention *RepositoryWebrefSegmentMention `json:"mention,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mention") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefExplainedRangeInfoExplainedRange) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefExplainedRangeInfoExplainedRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefExtendedEntityNameScore: Used to store
// region-specific score ratio per entity. Next available tag: 4.
type RepositoryWebrefExtendedEntityNameScore struct {
	// Domain: The domain name of the website, e.g. "play.google.com".
	Domain string `json:"domain,omitempty"`

	// Region: The region in the III standard (http://go/iii). Eg. "US",
	// "GB"
	Region string `json:"region,omitempty"`

	// ScoreRatio: Score ratio for the entity, same as the EntityNameScore
	// score ratio.
	ScoreRatio float64 `json:"scoreRatio,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefExtendedEntityNameScore) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefExtendedEntityNameScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefExtendedEntityNameScore) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefExtendedEntityNameScore
	var s1 struct {
		ScoreRatio gensupport.JSONFloat64 `json:"scoreRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ScoreRatio = float64(s1.ScoreRatio)
	return nil
}

// RepositoryWebrefExtraMetadata: Additional metadata about the entity,
// that can be derived from the "raw data" (composite doc, domain
// specific data...), or come from other sources. Next available tag is
// 35.
type RepositoryWebrefExtraMetadata struct {
	// BookEditionMetadata: For a book entity, store its book editions
	// metadata. Used by Juggernaut to do /book/book_edition recon, see
	// ariane/265006. This field is used by Juggernaut only.
	BookEditionMetadata []*RepositoryWebrefBookEditionMetadata `json:"bookEditionMetadata,omitempty"`

	// CategoryInfo: Information about category types of the entity.
	CategoryInfo *RepositoryWebrefCategoryInfo `json:"categoryInfo,omitempty"`

	// ClusterMetadata: Metadata about clusters.
	ClusterMetadata *RepositoryWebrefClusterMetadata `json:"clusterMetadata,omitempty"`

	// DisplayInfo: Information for displaying the entity in applications.
	DisplayInfo *RepositoryWebrefDisplayInfo `json:"displayInfo,omitempty"`

	// EntityScores: Additional scores for the entity.
	EntityScores *RepositoryWebrefEntityScores `json:"entityScores,omitempty"`

	// EquivalentEntityId: An entity in KG that represents the same (or
	// equivalent) entity in the real world. In particular, this is used for
	// mid-forwarding: when de-duping entities in KG, the old ids represent
	// the exact same entity as the one they were merged with. So when we
	// see one id in the query and the other in a document, they are treated
	// as the same entity.
	EquivalentEntityId []*RepositoryWebrefWebrefEntityId `json:"equivalentEntityId,omitempty"`

	// GeoMetadata: Geo-specific entity metadata.
	GeoMetadata *RepositoryWebrefGeoMetadataProto `json:"geoMetadata,omitempty"`

	// KcAttributeMetadata: Metadata related to KC attributes and Question &
	// Answer triggering.
	KcAttributeMetadata *RepositoryWebrefKCAttributeMetadata `json:"kcAttributeMetadata,omitempty"`

	// LatentEntities: A list of entities that are latent given this entity.
	// For example, "Lionel Messi" can have the latent entity "FC
	// Barcelona". The latent entity links are materialized in an offline
	// pipeline using r/w/scripts/latent_entities/latent-entities.pq. For
	// more information, see go/latent-entities.
	LatentEntities *RepositoryWebrefLatentEntities `json:"latentEntities,omitempty"`

	// MdvcMetadata: Metadata about MDVC.
	MdvcMetadata *RepositoryWebrefMdvcMetadata `json:"mdvcMetadata,omitempty"`

	// OtherMetadata: Other metadata.
	OtherMetadata *Proto2BridgeMessageSet `json:"otherMetadata,omitempty"`

	// PrimaryRecording: The primary recording mid of a recording cluster
	// entity. Used by Juggernaut to do /music/recording recon, see
	// b/139901317. The primary recording is unique to a recording cluster.
	// This field is used by Juggernaut only.
	PrimaryRecording uint64 `json:"primaryRecording,omitempty,string"`

	// ProductMetadata: Products-specific entity metadata.
	ProductMetadata *RepositoryWebrefProductMetadata `json:"productMetadata,omitempty"`

	// SpecialEntityType: # LINT.ThenChange(
	// //depot/google3/repository/webref/evaluation/query/metrics/util.cc)
	//
	// Possible values:
	//   "UNDEFINED" - Used for all entities for which SpecialEntityType has
	// not yet been implemented. Treat this value as equivalent to having no
	// information about whether the entity is special or not, i.e. treat it
	// like !has_special_entity_type.
	//   "COLLECTION" - The entity represents not a single KG entity but a
	// collection or collection set. For example, consider the query [when
	// was john smith born]. We don't know for sure which John Smith the
	// query refers to, but we're >90% sure that it refers to a person
	// (/collection/people). For entities with special_entity_type ==
	// COLLECTION, the main MID field is set to a /t MID derived
	// deterministically from the entire query, the annotated subrange and
	// the collection. The actual collection ID(s) can be found in
	// webref_entity.collections (assuming this message is stored in
	// webref_entity.entity_join.extra_data).
	//   "DATETIME" - The entity represents a date, such as "January 24,
	// 2018", "November 17", or "September 1999". For entities of type
	// DATETIME, the main MID field is set to a /t MID derived
	// deterministically from the specific date, which itself can be found
	// in datetime_metadata.
	//   "MRF" - This entity has a 'mrf' field with a MRF compound
	// representation.
	//   "SHOPPING_CATALOG_TOKEN" - The entity represents an ungrounded
	// concept that is a shopping catalog token and has a /t MID.
	//   "LIGHTWEIGHT_TOKEN" - This entity has lightweight token semantic.
	// It should be used with compound representation (go/lwt-tmids,
	// go/compounds-in-refx). For example, a /t MID entity will be annotated
	// to a range [from zurich], SpecialEntityType::LIGHTWEIGHT_TOKEN will
	// be attached to the resulting EntityJoin.
	SpecialEntityType string `json:"specialEntityType,omitempty"`

	SpecialWord []*MapsQualitySpecialWordsProto `json:"specialWord,omitempty"`

	// SupportTransferRules: Metadata about support transfer rules defined
	// for this entity.
	SupportTransferRules []*RepositoryWebrefSupportTransferRule `json:"supportTransferRules,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BookEditionMetadata")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BookEditionMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefExtraMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefExtraMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefFatcatCategory struct {
	// Id: The category ID from verticals4. See go/verticals4 and where we
	// read them in
	// http://google3/repository/webref/preprocessing/fatcat-categories.cc
	Id int64 `json:"id,omitempty"`

	// Score: The relative weight of the category within a distribution.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefFatcatCategory) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefFatcatCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefFatcatCategory) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefFatcatCategory
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefForwardingUrls: Submessage for forwarding urls in
// DocumentMetadata.
type RepositoryWebrefForwardingUrls struct {
	// ForwardingUrl: Urls that forward to this url. Used for url -> topical
	// entity entries.
	ForwardingUrl []string `json:"forwardingUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ForwardingUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ForwardingUrl") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefForwardingUrls) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefForwardingUrls
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefFprintModifierProto:
// ----------------------------------------------------------------------
// ----- Enums defining the available modifier options.
type RepositoryWebrefFprintModifierProto struct {
	// Possible values:
	//   "CAPITALIZATION_ANY" - Unspecified capitalization.
	//   "CAPITALIZATION_FIRST_ONLY" - Only the first character of the first
	// token is capitalized.
	//   "CAPITALIZATION_SOME" - At least one character other than the first
	// character of the first token is capitalized.
	//   "CAPITALIZATION_ALL" - All characters are capitalized.
	Capitalization string `json:"capitalization,omitempty"`

	// Possible values:
	//   "ENCLOSING_ANY" - Unspecified enclosing characters.
	//   "ENCLOSING_QUOTES" - The name is enclosed in quotes (single or
	// double)
	//   "ENCLOSING_PARENTHESIS" - The name is enclosed in some kind of
	// parenthesis.
	//   "ENCLOSING_OTHER" - The name is enclosed in other characters such
	// as "|" or "*".
	Enclosing string `json:"enclosing,omitempty"`

	// Language: i18.languages.Language enum defined in
	// i18n/languages/proto/languages.proto UNKNOWN_LANGUAGE
	Language int64 `json:"language,omitempty"`

	// Possible values:
	//   "NAMESPACE_DEFAULT" - The default namespace to which all WebRef
	// names are added.
	//   "NAMESPACE_WEBIT" - The namespace for WebIt-specific classification
	// data.
	NamespaceType string `json:"namespaceType,omitempty"`

	// Possible values:
	//   "PUNCTUATION_ANY" - Unspecified punctuation.
	//   "PUNCTUATION_INNER" - The name contains punctuation characters.
	Punctuation string `json:"punctuation,omitempty"`

	// Possible values:
	//   "SENTENCE_ANY" - Unspecified position of the name with respect to
	// the sentence.
	//   "SENTENCE_BEGINNING" - The name occurs at the beginning of a
	// sentence (i.e., after certain punctuation characters like "." or
	// "!").
	Sentence string `json:"sentence,omitempty"`

	// Possible values:
	//   "SOURCE_ANY" - Unspecified source type.
	//   "SOURCE_NEWS" - The source is a news page.
	//   "SOURCE_YOUTUBE" - The source is a youtube page.
	SourceType string `json:"sourceType,omitempty"`

	// Possible values:
	//   "STEMMING_ANY" - Unspecified stemming.
	//   "STEMMING_YES" - The name results from stemming.
	Stemming string `json:"stemming,omitempty"`

	// Possible values:
	//   "STYLE_ANY" - Unspecified formatting.
	//   "STYLE_DISTINCT" - The name has a different format than the
	// surrounding tokens.
	Style string `json:"style,omitempty"`

	// Possible values:
	//   "INVALID" - To be used to mark an invalid token type. This proto
	// enum does not follow the good practices, which suggest that such a
	// value should be with tag 0:
	// go/protodosdonts#do-include-an-unspecified-value-in-an-enum. Because
	// this is a legacy situation and it is not safe to just change the
	// tags, the enum contains an invalid type at this tag and can be used
	// to specify the default value wherever this is needed.
	//   "CONTENT" - The main html content of a document.
	//   "URL" - The urls of a document/
	//   "ANCHOR" - The anchors pointing to a document.
	//   "QUERY" - The navboost queries of a document
	//   "INSTANT_QUERY" - The instant navboost queries of a document
	//   "A_HREF_TAG" - The href-value of the tags in the document's content
	//   "LINK_HREF_TAG" - The href-value of the tags in the document's
	// content
	//   "IMG_ALT_TAG" - The alt-value of the tags in the document's content
	//   "IMG_SRC_TAG" - The src-value of the tags in the document's content
	//   "META_CONTENT_TAG" - The content-value of the tags "description"
	// and "keyword"
	//   "TITLE" - The document
	//   "ANY" - Special value used to represent any other tokentype.
	//   "IMAGE_QUERY" - The Image Search navboost queries.
	//   "CONTEXT_ENTITY" - Entities added from annotation context.
	//   "RESULT_ENTITY" - Represents an entity found in the results for
	// Qref.
	//   "CONTEXT_QUERY" - A query used as additional context for Qref
	// annotations.
	//   "SIMILAR_QUERIES" - Similar Queries. They are only used to retrieve
	// entities that might be able to explain original query. As in Q2@2018
	// we don't want them to be scored or provide context for scoring
	// because of their overall big CPU impact on qrewrite (+50%).
	//   "SPORE_GRAPH" - A freetext dump + metadata from Spore
	// GraphAnnotations.
	//   "OFFDOMAIN_ANCHOR" - Offdomain anchors pointing to a document.
	//   "ONSITE_ANCHOR" - Onsite anchors pointing to a document.
	//   "NAME_CANDIDATE" - Name candidate extracted from the topic or
	// generated from trusted source.
	//   "TOPIC_LINK" - A link extracted directly from the topic:
	//   "QUERY_NAME_CANDIDATE" - Queries to reference pages which are
	// potential names of the entity:
	//   "ANCHOR_NAME_CANDIDATE" - Anchor texts to reference pages which are
	// potential names of the entity: Tokenized potential reference page
	// URLs of the entity. Token matching is none because lookups are
	// external annotations only.
	//   "INJECTED_NAME_CANDIDATE" - Injected name candidates are appended
	// using this segment type.
	//   "REFERENCE_PAGE_URL"
	//   "REFERENCE_PAGE_LINK" - URLs that are linked to the reference page
	// of the entity. Token matching is none because lookups are external
	// annotations only.
	//   "DEPRECATED_ENTITY_METADATA" - A special position that is used for
	// lookup of entity metadata in name table.
	//   "STRONG_IDENTIFIER" - Tokenized potential strong id of the entity,
	// like phone number, ISBN. Token matching is none because lookups are
	// external annotations only.
	//   "REFERENCE_PAGE_URL_INLINK" - A special position used for lookup of
	// inlinks to reference page urls.
	//   "REFERENCE_PAGE_LINK_INLINK" - A special position used for lookup
	// of inlink scores for reference page outlinks.
	//   "GEO_LINK"
	//   "PRINCIPAL_NAME" - A name used in the name matching library for all
	// types of matching. The type NAME_CANDIDATE is used for names that are
	// only used for inexpensive types of matching.
	//   "NAME_BLACKLIST" - Name blacklist for enriched entity.
	//   "ENTITY_CONTEXT_TOKENS" - Lyrics for song entities.
	//   "VIDEO_TRANSCRIPT"
	//   "VIDEO_OCR"
	//   "IMAGE_OCR"
	//   "LENS"
	//   "ONLY_LOOKUP_METADATA" - Entries which are created in order to
	// instruct the fprint-loader to load metadata for the contained ngrams.
	//   "EMBEDDED_CONTENT" - The embedded content in the document (e.g.,
	// within json scripts).
	TokenType string `json:"tokenType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Capitalization") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Capitalization") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefFprintModifierProto) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefFprintModifierProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefFreebaseType: The Freebase type information.
type RepositoryWebrefFreebaseType struct {
	// Provenance: Optional - for inferred types the principal source of
	// information.
	Provenance []string `json:"provenance,omitempty"`

	// Score: Optional score. Not present in KG directly but e.g. in WPCat.
	Score float64 `json:"score,omitempty"`

	// TypeMid: Mid of this type. Equivalent to type_name, but is more
	// compact. When present, overrides type_name (which can be omitted in
	// this case to save space).
	TypeMid uint64 `json:"typeMid,omitempty,string"`

	// TypeName: e.g.: "/business/industry", "/book/book_subject",
	// "/people/person"...
	TypeName string `json:"typeName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Provenance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Provenance") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefFreebaseType) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefFreebaseType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefFreebaseType) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefFreebaseType
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefGenericIndices: Identifies the segment index for
// Webref SegmentTypes not covered by other *Indices messages.
type RepositoryWebrefGenericIndices struct {
	// Index: The segment index.
	Index int64 `json:"index,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefGenericIndices) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefGenericIndices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefGeoMetadataProto: Geo-specific information about the
// entity. Next available tag: 34.
type RepositoryWebrefGeoMetadataProto struct {
	// Address: Stores parent/container information containing city,
	// province & country.
	Address *GeostoreAddressProto `json:"address,omitempty"`

	AddressSynonyms []*RepositoryWebrefGeoMetadataProtoAddressSynonym `json:"addressSynonyms,omitempty"`

	// AreaKm2: Area in km^2 of the feature if the feature has polygon.
	AreaKm2 float64 `json:"areaKm2,omitempty"`

	// Bound: The tight bounds of this feature. Note that these are
	// different from the FeatureProto.bound field.
	Bound *GeostoreRectProto `json:"bound,omitempty"`

	// CountryCode: Country code of the country of the entity. Only
	// available in qref-metadata.
	CountryCode string `json:"countryCode,omitempty"`

	// Location: The geographic location (center) and geometry of this
	// entity. See geostore.FeatureProto for more details.
	Location *GeostorePointProto `json:"location,omitempty"`

	// Name: The best name from Oyster for this entity. Is only included for
	// some types of entities, and is a trimmed version of the proto (some
	// fields are cleared).
	Name *GeostoreNameProto `json:"name,omitempty"`

	// OysterId: The oyster id of the entity
	OysterId *GeostoreFeatureIdProto `json:"oysterId,omitempty"`

	// StableIntegerCountryCode: Numerical country code, converted with
	// i18n/identifiers/stableinternalregionconverter.h. It is the same as
	// country_code, but it is available in the annotator model (and takes
	// less space).
	StableIntegerCountryCode int64 `json:"stableIntegerCountryCode,omitempty"`

	// Timezone: Timezone if the feature is contained inside one.
	Timezone string `json:"timezone,omitempty"`

	// WpLocation: Information about the geographic location (center)
	// extracted from the wikijoins.
	WpLocation []*RepositoryWebrefWikipediaGeocode `json:"wpLocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Address") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Address") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefGeoMetadataProto) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefGeoMetadataProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefGeoMetadataProto) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefGeoMetadataProto
	var s1 struct {
		AreaKm2 gensupport.JSONFloat64 `json:"areaKm2"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AreaKm2 = float64(s1.AreaKm2)
	return nil
}

// RepositoryWebrefGeoMetadataProtoAddressSynonym: Terms from
// AddressComponent proto that we can use as address synonyms. At the
// time of annotation we have the entire AddressProto, however we can't
// use it all due to size. So only store relevant pieces of components
// (defined in superroot/impls/localweb/s2_synoyms.h).
type RepositoryWebrefGeoMetadataProtoAddressSynonym struct {
	Language string `json:"language,omitempty"`

	Name string `json:"name,omitempty"`

	// Type: The type of the geocoded address. e.g. Road, Lake, Ocean,
	// building. This comes from TypeCategory field in
	// geostore/base/proto/feature.proto
	Type int64 `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefGeoMetadataProtoAddressSynonym) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefGeoMetadataProtoAddressSynonym
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefGlobalLinkInfo: Groups together the LinkInfo for all
// locales.
type RepositoryWebrefGlobalLinkInfo struct {
	// DebugTitle: A short human-readable name/title of the entity, similar
	// to what is displayed at the top of a Hume page. Do not use for any
	// production purpose as it does not provide guarantees for stability or
	// policy checks (access requirements).
	DebugTitle string `json:"debugTitle,omitempty"`

	// IsBoostedPrimaryWeightLink: Whether this is a BoostedPrimaryWeight
	// link. For these links in some cases a higher weight is used for
	// primary scoring.
	IsBoostedPrimaryWeightLink bool `json:"isBoostedPrimaryWeightLink,omitempty"`

	// TargetMid: The mid of the linked entity.
	TargetMid uint64 `json:"targetMid,omitempty,string"`

	// VariantInfo: The information about this link for each locale.
	VariantInfo []*RepositoryWebrefLinkInfo `json:"variantInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugTitle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugTitle") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefGlobalLinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefGlobalLinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefGlobalNameInfo: Groups together the NameInfo for all
// variants of a given name. The variants of a name have the same
// normalized string, but they have a different original string and/or a
// different language/region. Example: For the name "apple", there may
// be variants such as "apple|en", "apple|en|US", "apple|de",
// "Apple|en"...
type RepositoryWebrefGlobalNameInfo struct {
	// NormalizedName: The normalized name.
	NormalizedName string `json:"normalizedName,omitempty"`

	// VariantInfo: All the variants of this name together with associated
	// information such as score, sources, etc.
	VariantInfo []*RepositoryWebrefNameInfo `json:"variantInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NormalizedName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NormalizedName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefGlobalNameInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefGlobalNameInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefHumanRatings struct {
	AnnotationRatings *RepositoryWebrefAnnotationRatings `json:"annotationRatings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationRatings")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationRatings") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefHumanRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefHumanRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefImageQueryIndices: Identifies a set of Image NavBoost
// queries in the CompositeDoc. Each CompositeDoc can contain several
// images, so we store the image index from the CompositeDoc::doc_images
// with the index of the particular query inside
// ImageData::image_data_navboost.
type RepositoryWebrefImageQueryIndices struct {
	// CanonicalDocid: The (canonical) image docid of the ImageData this
	// image query is part of. Useful for identifying the ImageData even
	// after doc_images are updated in between Webref annotation runs. Use
	// docid only when canonical_docid == 0.
	CanonicalDocid uint64 `json:"canonicalDocid,omitempty,string"`

	Docid uint64 `json:"docid,omitempty,string"`

	// ImageIndex: WARNING: The doc_images in docjoins are subject to
	// updates including non-deterministic reordering of doc_images and
	// their image_nb_data extensions. This means that without re-running
	// WebrefAnnotator one cannot rely on the accuracy or even consistency
	// of either image_index or query_index when parsing a cdoc from
	// docjoins. In those situations one ought to rely on canonical_docid
	// (or docid when canonical_docid is absent viz. 0). The index of the
	// source image in CompositeDoc::doc_images.
	ImageIndex int64 `json:"imageIndex,omitempty"`

	// QueryIndex: Queries index in ImageData::image_data_navboost.
	QueryIndex *RepositoryWebrefQueryIndices `json:"queryIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalDocid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefImageQueryIndices) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefImageQueryIndices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefJuggernautIndices: Identifies the source of Spore
// segments in the CompositeDoc.
type RepositoryWebrefJuggernautIndices struct {
	// Index: Index within the proto. Several indices are necessary in case
	// of nested repeated fields. The data can be accessed as follows:
	// TOPICS: topic_annotations.kg_schema_topic(index(0))
	// .property_value(index(1)) .value(index(2)); TRIPLES:
	// reconcile_request.triple(index(0));
	Index []int64 `json:"index,omitempty"`

	// Possible values:
	//   "NONE" - Synthetic segment without a source in the cdoc.
	//   "TOPICS" -
	// repository_annotations::spore::extractor::TopicAnnotations.
	//   "TRIPLES" - repository_webref::ReconcileRequest.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Index") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Index") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefJuggernautIndices) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefJuggernautIndices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefKCAttributeMetadata: Metadata related to KC
// attributes and Question & Answer triggering. Next available tag: 2.
type RepositoryWebrefKCAttributeMetadata struct {
	// EquivalentAttributeId: Equivalent kc attribute id for the given
	// entity if applicable. E.g. for Daughter (/m/029wnx) this will be
	// 'kc:/people/person:daughter'.
	EquivalentAttributeId string `json:"equivalentAttributeId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EquivalentAttributeId") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EquivalentAttributeId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefKCAttributeMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefKCAttributeMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefKGCollection: See go/kg-collections
type RepositoryWebrefKGCollection struct {
	// DebugId: A human friendly identifier (collection hrid). NOTE: The
	// field name is a misnomer, this is the preferred field to use in
	// production.
	DebugId string `json:"debugId,omitempty"`

	// Id: Identifier of the collection, usually a MID (/m/xyz or /g/zyw).
	// NOTE: In most cases, this is not the id that should be used, debug_id
	// is the preferred identifier. The main reason is the this is not a
	// stable id (mid for collection sometimes shift around).
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefKGCollection) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefKGCollection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLatentEntities: A list of entities that are latent
// given this entity. For example, "Lionel Messi" can have the latent
// entity "FC Barcelona". See go/refx-latent-entities for detailed
// description.
type RepositoryWebrefLatentEntities struct {
	// LatentEntity: Latent entities with associated metadata including
	// source of the relationship. This is pruned ("compacted") from the
	// concept table and will never reach the annotator.
	LatentEntity []*RepositoryWebrefLatentEntity `json:"latentEntity,omitempty"`

	// LatentMid: List of broader MIDs from the Sports Hierarchy. Named
	// incorrectly, it does not contain all latent mids.
	LatentMid []string `json:"latentMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LatentEntity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LatentEntity") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLatentEntities) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLatentEntities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLatentEntity: Metadata about a latent entity and its
// relationship to a given child. See go/hits.
type RepositoryWebrefLatentEntity struct {
	// BroaderImportance: The relatedness score of the two entities
	// corresponding to each source above.
	BroaderImportance []float64 `json:"broaderImportance,omitempty"`

	// Mid: The mid of the latent entity.
	Mid string `json:"mid,omitempty"`

	// Sources: The sources this generalization relationship is coming from.
	//
	// Possible values:
	//   "INVALID"
	//   "VERTICAL_SPECIFIC_RELATIONS" - Hierarchical relations from the
	// Sports hierarchy. The Sports hierarchy is derived from a set of
	// manually curated KG properties.
	//   "NN_HIERARCHY_V1" - The HITS hierarchy.
	Sources []string `json:"sources,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BroaderImportance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BroaderImportance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLatentEntity) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLatentEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLexicalAnnotation: LexicalAnnotation is public
// lightweight serving structure for both WordGraph features and LWT
// annotations to expose lexical information downstream from RefX, e.g.
// in LooseParser.
type RepositoryWebrefLexicalAnnotation struct {
	LexicalRange []*RepositoryWebrefLexicalRange `json:"lexicalRange,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LexicalRange") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LexicalRange") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLexicalAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLexicalAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLexicalRange: A single understood lexicon of the
// |category| on byte range from |begin_offset| (inclusive) to
// |end_offset| (exclusive). The byte range could be a subtoken range or
// span across multiple tokens.
type RepositoryWebrefLexicalRange struct {
	// BeginOffset: Byte offset of the begin of the |category|.
	BeginOffset int64 `json:"beginOffset,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "RELATIONAL_ADJECTIVE" - A range that is an adjectival expression
	// referring to a base entity.
	//   "SUPERLATIVE" - An adjectival range is expressed in the superlative
	// degree.
	//   "PLURAL" - A range which is lexically plural.
	//   "FEMALE" - A range expressing unequivocally a (semantic) female
	// gender. This could be for expressions that are intrinsically female
	// ("aunt") or the female expression of an entity that is lexically
	// gendered ("chairwoman" as opposed to "chairman" or "chairperson").
	//   "ASPECT" - The range designates an aspect, that is, a modifier of
	// some other range.
	//   "TARGET_AUDIENCE" - Facets.
	//   "TARGET_PURPOSE"
	//   "SETTING_BY_LOCATION"
	//   "DECORATIVE_PATTERN"
	//   "ELECTRONIC_DEVICE_CONNECTIVITY"
	//   "DIETARY_RESTRICTION"
	//   "ACTOR"
	//   "ADAPTATION_SOURCE"
	//   "AGE"
	//   "AUTHOR"
	//   "AUTHOR_OF_ADAPTATION_SOURCE"
	//   "AWARD_NOMINATED_FOR"
	//   "AWARD_WON"
	//   "BATTERY_LIFE"
	//   "BATTERY_TYPE"
	//   "BRAND"
	//   "COLOR"
	//   "COUNTRY_OF_ORIGIN"
	//   "DEGREE_OF_BRIGHTNESS"
	//   "DEGREE_OF_SEXINESS"
	//   "DURATION"
	//   "EXCLUDED_INGREDIENT"
	//   "FICTIONAL_CHARACTER"
	//   "FILM_DIRECTOR"
	//   "GENRE"
	//   "INTENDED_SPECIAL_OCCASION"
	//   "LENGTH"
	//   "MATERIAL"
	//   "MEDIA_PROVIDER"
	//   "MUSIC_COMPOSER"
	//   "ORIGINAL_MEDIA_PROVIDER"
	//   "PRIMARY_GENRE"
	//   "PRODUCTION_COMPANY"
	//   "PUBLICATION_DATE"
	//   "RECENCY"
	//   "RELATED_ARTISTIC_WORK"
	//   "RELEASE_DATE"
	//   "SECONDARY_GENRE"
	//   "SETTING_BY_FICTIONAL_LOCATION"
	//   "SETTING_BY_REAL_LOCATION"
	//   "SETTING_BY_TIME"
	//   "SUPPORTED_VIRTUAL_ASSISTANT"
	//   "TEMPERATURE"
	//   "THEME"
	//   "TVM_ATTRIBUTE"
	//   "WEIGHT" - End of facets. This line marks where to generate new
	// values for facets.
	Category string `json:"category,omitempty"`

	// Direction: Direction defines the relation between the measurable
	// aspect and the facet.
	//
	// Possible values:
	//   "MEASURABLE_ASPECT_DIRECTION_UNSPECIFIED"
	//   "MEASURABLE_ASPECT_INCREASING"
	//   "MEASURABLE_ASPECT_DECREASING"
	Direction string `json:"direction,omitempty"`

	// EndOffset: Byte offset of the end of the |category|.
	EndOffset int64 `json:"endOffset,omitempty"`

	// FacetMid: The mid of the facet associated with ASPECT category.
	FacetMid uint64 `json:"facetMid,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "BeginOffset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BeginOffset") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLexicalRange) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLexicalRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLightweightTokensMatchedLightweightToken: Necessary
// information of lightweight token pattern with entity retrieval to
// pass to downstream clients. For example: FpTokenRange:
// normalized_text: "zurichben" language: Hungarian retrieved_entity:
// /m/08966 (with name "zurich") will get: MatchedLightweightToken:
// LightweightTokenType: "LOCATIVE" begin_offset: 6 end_offset: 9
// pattern_id: 8141703461898598811 source_entity_index: 0 FpTokenRange:
// normalized_text: "egyesult allamokott" language: Hungarian
// retrieved_entity: /m/09c7w0 (with name "egyesult allamok") will get:
// MatchedLightweightToken: LightweightTokenType: "LOCATIVE"
// begin_offset: 16 end_offset: 19 pattern_id: 10449962977910715124
// source_entity_index: 0 Note that begin_offset and end_offset marks
// the input byte range of the matched input text. For example, if the
// input text is [tannlegas] in Norwegian, this matches with the rewrite
// rule "*e:*as" to transform "tannlegas" to "tannlege". The matched
// byte range is [7, 9) on "as", therefore begin_offset = 7 and
// end_offset = 9. This must not be confused with the rewritten range
// [7, 8) on "e". Also, keep in mind these are byte offsets, not
// codepoints.
type RepositoryWebrefLightweightTokensMatchedLightweightToken struct {
	// AdditionalBeginOffset: The byte offset of the beging of the
	// additional lightweight token match. e.g. the prefix pattern of the
	// circumfix.
	AdditionalBeginOffset int64 `json:"additionalBeginOffset,omitempty"`

	// AdditionalEndOffset: The byte offset of the end of the additional
	// lightweight token match. e.g. the suffix pattern of the circumfix.
	AdditionalEndOffset int64 `json:"additionalEndOffset,omitempty"`

	// BeginOffset: The byte offset of the begin of the lightweight token
	// match within each range. The default value of -1 (std::string::npos)
	// means that there's no affix or adposition detected.
	BeginOffset int64 `json:"beginOffset,omitempty"`

	// EndOffset: The byte offset of the end of the lightweight token match
	// within each range. The default value of 0 means that there's no affix
	// or adposition detected.
	EndOffset int64 `json:"endOffset,omitempty"`

	// PatternId: Matched pattern Id which will be used to retrieve back
	// pattern features. Pattern id is only populated for Enricher model.
	PatternId uint64 `json:"patternId,omitempty,string"`

	// SourceEntityIndex: The index of the source entity in the resulting
	// WebrefEntities or WebrefEntitiesWrapper, to which the lightweight
	// token rule is applied. This field is only populated at the end of
	// Qref scorer when we are sure which source entity should output.
	SourceEntityIndex int64 `json:"sourceEntityIndex,omitempty"`

	// Type: The type of the lightweight token match, which provides the
	// semantic information.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "DEFINITE" - Articles or markers that express the definitess of a
	// noun (see go/wordgraph/definiteness).
	//   "INDEFINITE" - Articles or markers that express the indefiniteness
	// of a noun (see go/wordgraph/definiteness).
	//   "ABLATIVE" - Linguistic markers that express the movement from a
	// place (like the English preposition *from* in a sentence like "I came
	// *from* my place").
	//   "ADESSIVE" - Linguistic markers that express the location *near* a
	// place (like in the English preposition *near* in a sentence like "I
	// am near the house").
	//   "ALLATIVE" - Linguistic markers that express the movement towards a
	// place (like the English preposition *to* in a sentence like "I go
	// *to* my house").
	//   "LOCATIVE" - Linguistic markers that express the location *in* a
	// place (like the English preposition *in* in a sentence like "I am
	// *in* my house").
	//   "ACROSS_FROM" - Reference to a physical entity that is located on
	// the opposite side of/across the road from the location of another
	// entity.
	//   "BEHIND" - Refer to a physical entity that is *behind* another
	// entity.
	//   "IN_FRONT" - Refer to a physical entity that is located *in front*
	// of another entity.
	//   "EAST" - Refer to a physical entity that is located *in the east*
	// of another entity.
	//   "WEST" - Refer to a physical entity that is located *in the west*
	// of another entity.
	//   "NORTH" - Refer to a physical entity that is located *in the north*
	// of another entity.
	//   "SOUTH" - Refer to a physical entity that is located *in the south*
	// of another entity.
	//   "LEFT" - Refer to a physical entity that is located *on the left*
	// of another entity.
	//   "RIGHT" - Refer to a physical entity that is located *on the right*
	// of another entity.
	//   "ADJACENT" - Refers to a physical entity that is located in the
	// immediate proximity to a place. This semantic is much more specific
	// than the ADESSIVE one
	//   "GENITIVE" - Linguistic markers that express the relation of a noun
	// with another noun (like the 's marker in English in "Mary's book").
	// Please note that this is different from possessive makers in the
	// sense that the adposition precedes or succeeds the 'OWNER' instead of
	// the 'OWNED' noun.
	//   "ACCUSATIVE" - Linguistic markers that would be used to mark the
	// accusative, generally the direct object of a verb.
	//   "INSTRUMENTAL" - Linguistic marker that is used to mark the
	// instrumental case, indicating the instrument or means by which an
	// action is accomplished.
	//   "DATIVE" - Linguistic markers that would be used to mark the dative
	// case, generally the indirect object of a verb.
	//   "CAUSATIVE" - Linguistic markers that would be used to indicate
	// that a subject either causes someone or something else to do or be
	// something or causes a change in state of a non-volitional event.
	//   "SOCIATIVE" - Linguistic markers that would be used to indicate
	// association, or means by which action is done.
	//   "INTERROGATIVE" - Linguistic markers that would be used to make
	// questions.
	//   "PREPOSITIONAL" - Linguistic markers that mark the object of a
	// preposition. This term can be used in languages where nouns have a
	// declensional form that appears exclusively in combination with
	// certain prepositions. These markers do not include the actual
	// preposition but only the corresponding inflection pattern.
	//   "VOCATIVE" - Linguistic markers that would be used in addressing or
	// invoking a person or thing.
	//   "OBLIQUE" - Linguistic markers used to indicate that the noun
	// generally can not be used in a subject position.
	//   "EMPHATIC" - Linguistic markers used to express attitude or
	// emphasis. They can occur with nouns, adjectives, verbs and adverbs.
	//   "MESSAGE_RECIPIENT" - Linguistic markers that mark the recipient
	// (or receiver) of a message or a call.
	//   "MESSAGE_INITIATOR" - Linguistic markers that mark the initiator of
	// a message or a call.
	//   "MY_POSSESSION" - Linguistic markers (like English determiner "my")
	// that mark a possession from a first person singular possessor.
	//   "OUR_POSSESSION" - Linguistic markers (like English determiner
	// "our") that mark a possession from a first person plural possessor.
	//   "YOUR_SINGULAR_POSSESSION" - Linguistic markers (like English
	// determiner "your") that mark a possession from a second person
	// singular possessor.
	//   "YOUR_PLURAL_POSSESSION" - Linguistic markers (like Italian
	// determiner "vostro") that mark a possession from a second person
	// plural possessor.
	//   "YOUR_POLITE_POSSESSION" - Linguistic markers (like Italian
	// determiner "suo") that mark a possession from a second person
	// possessor in polite form.
	//   "TRANSLATE_SOURCE_LANGUAGE" - Linguistic markers that mark the
	// source language in an expression like "translate *from* English".
	//   "TRANSLATE_TARGET_LANGUAGE" - Linguistic markers that mark the
	// target language in an expression like "translate *into* French".
	//   "NEW_MODIFIER"
	//   "RECENT_MODIFIER"
	//   "COURTESY_WORD"
	//   "GENERIC_ADPOSITION"
	//   "TARGET_CURRENCY" - Linguistic markers that mark the target
	// currency in an expression like "how much is 5 dollars *in* pounds".
	//   "SOURCE_CURRENCY" - Linguistic markers that mark the source
	// currency in an expression like "convert *from* dollars to pounds".
	//   "PLURAL" - Plural markers
	//   "CONJUNCTIVE" - Conjunctive coordinator or marker (like English
	// "and").
	//   "OPPOSITION_CONJUNCTIVE" - Opposition conjunctive or marker (like
	// English "versus", "v.s.").
	//   "MASCULINE_HONORIFIC" - Masculine Honorific markers.
	//   "FEMININE_HONORIFIC" - Feminine Honorific markers.
	//   "GENERIC_HONORIFIC" - Non-specific Honorifc markers.
	//   "NEGATIVE_SUPERLATIVE"
	//   "SUPERLATIVE"
	//   "FACET_AUDIENCE" - Facets.
	//   "FACET_PURPOSE"
	//   "FACET_SETTING_BY_LOCATION"
	//   "FACET_DECORATIVE_PATTERN"
	//   "FACET_ELECTRONIC_DEVICE_CONNECTIVITY"
	//   "FACET_DIETARY_RESTRICTION"
	//   "FACET_ACTOR"
	//   "FACET_ADAPTATION_SOURCE"
	//   "FACET_AGE"
	//   "FACET_AUTHOR"
	//   "FACET_AUTHOR_OF_ADAPTATION_SOURCE"
	//   "FACET_AWARD_NOMINATED_FOR"
	//   "FACET_AWARD_WON"
	//   "FACET_BATTERY_LIFE"
	//   "FACET_BATTERY_TYPE"
	//   "FACET_BRAND"
	//   "FACET_COLOR"
	//   "FACET_COUNTRY_OF_ORIGIN"
	//   "FACET_DEGREE_OF_BRIGHTNESS"
	//   "FACET_DEGREE_OF_SEXINESS"
	//   "FACET_DURATION"
	//   "FACET_EXCLUDED_INGREDIENT"
	//   "FACET_FICTIONAL_CHARACTER"
	//   "FACET_FILM_DIRECTOR"
	//   "FACET_GENRE"
	//   "FACET_INTENDED_SPECIAL_OCCASION"
	//   "FACET_LENGTH"
	//   "FACET_MATERIAL"
	//   "FACET_MEDIA_PROVIDER"
	//   "FACET_MUSIC_COMPOSER"
	//   "FACET_ORIGINAL_MEDIA_PROVIDER"
	//   "FACET_PRIMARY_GENRE"
	//   "FACET_PRODUCTION_COMPANY"
	//   "FACET_PUBLICATION_DATE"
	//   "FACET_RECENCY"
	//   "FACET_RELATED_ARTISTIC_WORK"
	//   "FACET_RELEASE_DATE"
	//   "FACET_SECONDARY_GENRE"
	//   "FACET_SETTING_BY_FICTIONAL_LOCATION"
	//   "FACET_SETTING_BY_REAL_LOCATION"
	//   "FACET_SETTING_BY_TIME"
	//   "FACET_SUPPORTED_VIRTUAL_ASSISTANT"
	//   "FACET_TEMPERATURE"
	//   "FACET_THEME"
	//   "FACET_TVM_ATTRIBUTE"
	//   "FACET_WEIGHT" - End of facets. This line marks where to generate
	// new values for facets.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalBeginOffset") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdditionalBeginOffset") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLightweightTokensMatchedLightweightToken) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLightweightTokensMatchedLightweightToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLightweightTokensPerMentionLightweightToken: Collects
// all lightweight token patterns for each CandidateMention or Mention.
type RepositoryWebrefLightweightTokensPerMentionLightweightToken struct {
	MatchedLightweightToken []*RepositoryWebrefLightweightTokensMatchedLightweightToken `json:"matchedLightweightToken,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MatchedLightweightToken") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchedLightweightToken")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLightweightTokensPerMentionLightweightToken) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLightweightTokensPerMentionLightweightToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLightweightTokensPerNameLightweightToken: Collects
// all lightweight token patterns for each NameToConceptEntry.
type RepositoryWebrefLightweightTokensPerNameLightweightToken struct {
	MatchedLightweightToken []*RepositoryWebrefLightweightTokensMatchedLightweightToken `json:"matchedLightweightToken,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MatchedLightweightToken") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchedLightweightToken")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLightweightTokensPerNameLightweightToken) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLightweightTokensPerNameLightweightToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLinkInfo: Represents all information we have about a
// specific/localized link. Next available tag: 11.
type RepositoryWebrefLinkInfo struct {
	// AggregatedScore: The score aggregated from all sources.
	AggregatedScore float64 `json:"aggregatedScore,omitempty"`

	// IsPreferredDirection: The EntityJoin keeps bi-directional links, but
	// for some applications we only need them in one direction. This value
	// indicates whether this is the preferred direction to keep. (We
	// usually prefer keeping the link from the less common to the more
	// common entity for performance reasons). For categorical links the
	// preferred direction is from child to parent.
	IsPreferredDirection bool `json:"isPreferredDirection,omitempty"`

	// Metadata: The metadata associated with the link.
	Metadata *RepositoryWebrefEntityLinkMetadata `json:"metadata,omitempty"`

	// Source: The per-source scores.
	Source []*RepositoryWebrefEntityLinkSource `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregatedScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefLinkInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefLinkInfo
	var s1 struct {
		AggregatedScore gensupport.JSONFloat64 `json:"aggregatedScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AggregatedScore = float64(s1.AggregatedScore)
	return nil
}

// RepositoryWebrefLinkKindFlags: A bitmap of bool values associated
// with a link kind. Next available tag: 12
type RepositoryWebrefLinkKindFlags struct {
	// Possible values:
	//   "NO_CLUSTER"
	//   "CLUSTER_CHILD_OF" - The main entity is a child of the linked
	// entity.
	//   "CLUSTER_PARENT_OF" - The main entity is a parent of the linked
	// entity.
	Cluster string `json:"cluster,omitempty"`

	// Possible values:
	//   "NO_CONTAINMENT"
	//   "CONTAINED_BY" - The main entity is a geographically contained by
	//   "CONTAINS" - the linked entity. The main entity is a geographical
	// container of
	//   "PARTIAL_OVERLAP" - the linked entity. The main entity partially
	// overlaps with the
	//   "HAS_STREET_NUMBER" - linked entity. The main entity is a street
	// and contains the
	//   "LOCATED_ON_STREET" - street number that is represented by the
	// linked entity. The main entity is a street number and is
	GeoContainment string `json:"geoContainment,omitempty"`

	// Possible values:
	//   "NO_IMPLICATION"
	//   "IMPLIED_BY" - The main entity is implied by the linked entity.
	//   "IMPLIES" - The main entity implies the linked entity.
	//   "BIDIRECTIONAL_IMPLICATION" - Both entities imply each other.
	//   "UNDERMERGED" - Both entities are the same concept.
	Implication string `json:"implication,omitempty"`

	// Possible values:
	//   "NO_LATENT_ENTITY" - There is no latent entity relationship between
	// the entities. Default value, should not be explicitly set.
	//   "LATENT_ENTITY" - The relationship points to a latent entity. For
	// example, if "Lionel Messi" has latent entity "FC Barcelona", this
	// should be populated on the relationship from Messi to Barcelona.
	//   "MANIFEST_ENTITY" - The reverse of LATENT_ENTITY, e.g. from "FC
	// Barcelona" to "Lionel Messi".
	//   "LATENT_ENTITY_V2" - Links pointing to latent entities according to
	// the new hierarchy. See go/refx-latent-entities.
	//   "MANIFEST_ENTITY_V2" - Links pointing to manifest entities
	// according to the new hierarchy.
	LatentEntity string `json:"latentEntity,omitempty"`

	// Possible values:
	//   "NO_MDVC"
	//   "MDVC_SPECIALIZATION_OF" - (Transitive) descendant in MDVC
	// hierarchy.
	//   "MDVC_GENERALIZATION_OF" - (Transitive) ancestor in MDVC hierarchy.
	//   "MDVC_DIMENSION_VALUE" - MDVC attribute.
	//   "MDVC_DIMENSION_VALUE_OF" - MDVC attribute owner.
	//   "MDVC_RESOLUTION" - MDVC resolution.
	//   "MDVC_EXPANDED_OUTPUT" - MDVC_EXPANDED_OUTPUT is used to mark the
	// link between annotated entities and the entities that were added by
	// output expansion, e.g. from a car model to the latest model year.
	Mdvc string `json:"mdvc,omitempty"`

	// Possible values:
	//   "NO_PROPERTY" - There is no property relationship between the
	// entities. Default value, should not be explicitly set.
	//   "EQUIVALENT_TOPIC" - The relationship points from a property to its
	// equivalent topic. For example, from /people/person/parents to
	// /m/Parent.
	//   "EQUIVALENT_PROPERTY" - The relationship points from a topic to an
	// equivalent property. For example, from /m/Parent to
	// /people/person/parents.
	Property string `json:"property,omitempty"`

	// Possible values:
	//   "NO_RESOLUTION"
	//   "MAY_BE_RESOLVED_FROM" - The link type is such that we may add a
	//   "MAY_RESOLVE_TO" - RESOLVED_FROM attribute to it later. The link
	// type is such that we may add a
	//   "RESOLVED_FROM" - RESOLVES_TO attribute to it later. The current
	// entity is resolved from the linked
	//   "RESOLVES_TO" - entity (e.g. the link goes from to ). The current
	// entity is one of the entities that
	Resolution string `json:"resolution,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cluster") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cluster") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLinkKindFlags) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLinkKindFlags
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLinkKindInfo: Information about one of the types of a
// linked entity.
type RepositoryWebrefLinkKindInfo struct {
	// Flags: The flags associated with the link kind.
	Flags *RepositoryWebrefLinkKindFlags `json:"flags,omitempty"`

	// KcLinkName: Link name extracted from Knowledge Card facts.
	KcLinkName string `json:"kcLinkName,omitempty"`

	// TopicPropertyName: If the link was extracted from a property, the
	// name of the property. Can start with an exclamation mark "!" to
	// indicate that the inverse relationship is specified. (e.g.
	// "!/tv/tv_series_episode/series" is the inverse of
	// "tv/tv_program/episodes").
	TopicPropertyName string `json:"topicPropertyName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Flags") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Flags") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLinkKindInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLinkKindInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefLocalizedString: Next available tag: 8.
type RepositoryWebrefLocalizedString struct {
	// Domain: The domain name from which results come, e.g.
	// "play.google.com".
	Domain string `json:"domain,omitempty"`

	// FprintModifier: FprintModifier describing the formatting of the
	// string. If fprint_modifier is set, then original_string, language and
	// region should not be set.
	FprintModifier *RepositoryWebrefFprintModifierProto `json:"fprintModifier,omitempty"`

	// Language: The language in the III standard (http://go/iii)
	Language string `json:"language,omitempty"`

	NormalizedString string `json:"normalizedString,omitempty"`

	OriginalString string `json:"originalString,omitempty"`

	// Region: The region in the III standard (http://go/iii)
	Region string `json:"region,omitempty"`

	// SourceType: Which querybase pipeline the data comes from.
	//
	// Possible values:
	//   "SOURCE_NAVBOOST" - From queries derived from regular NavBoost data
	// and stored in querybase, querybase-zero or querybase-zero-dev.
	//   "SOURCE_SCRAPE" - From scraped queries.
	//   "SOURCE_INSTANT_NAVBOOST" - From queries derived from Instant
	// NavBoost data and stored in querybase-fresh-zero or
	// querybase-fresh-zero-dev.
	SourceType string `json:"sourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefLocalizedString) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefLocalizedString
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMdvcMetadata: Metadata about MDVC (go/mdvc). Next
// available tag: 18.
type RepositoryWebrefMdvcMetadata struct {
	// Dimension: Undergoing migration into the PerVertical message. Avoid
	// using it. Concept ids of MDVC dimensions of this concept.
	Dimension googleapi.Uint64s `json:"dimension,omitempty"`

	// ExpandedOutputConceptId: Undergoing migration into the PerVertical
	// message. Avoid using it. List of encoded mids to be expanded in
	// WebRef/QRef output whenever this entity gets annotated. Will be
	// populated in the annotators once static data is deprecated.
	// b/78866814.
	ExpandedOutputConceptId googleapi.Uint64s `json:"expandedOutputConceptId,omitempty"`

	// Generalization: Undergoing migration into the PerVertical message.
	// Avoid using it. Concept ids of MDVC generalizations of this concept.
	Generalization googleapi.Uint64s `json:"generalization,omitempty"`

	// IsSynthetic: True iff the topic is synthetically created during by
	// MDVC extraction.
	IsSynthetic bool `json:"isSynthetic,omitempty"`

	// PerVertical: Data, specific to particular verticals.
	PerVertical []*RepositoryWebrefMdvcMetadataPerVertical `json:"perVertical,omitempty"`

	// ResolutionPriority: Undergoing migration into the PerVertical
	// message. Avoid using it. Resolution priority for this entity. In case
	// a query has many possible resolutions, only the ones with the highest
	// resolution priority are annotated.
	ResolutionPriority int64 `json:"resolutionPriority,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Dimension") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Dimension") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMdvcMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMdvcMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMdvcMetadataPerVertical: Per-vertical part. Next
// available tag: 19
type RepositoryWebrefMdvcMetadataPerVertical struct {
	// CompatibleIds: Concept ids compatible with this topic:
	// specializations and/or ones having this concept as a dimension.
	// Always includes the topic itself.
	CompatibleIds googleapi.Uint64s `json:"compatibleIds,omitempty"`

	// DimensionIds: Concept ids of the dimension values of this topic.
	DimensionIds googleapi.Uint64s `json:"dimensionIds,omitempty"`

	// ExpandedOutputIds: Concept ids to annotate whenever this entity is
	// annotated.
	ExpandedOutputIds googleapi.Uint64s `json:"expandedOutputIds,omitempty"`

	// GeneralizationIds: Concept ids of the generalizations of this topic.
	GeneralizationIds googleapi.Uint64s `json:"generalizationIds,omitempty"`

	// IsCore: True if the topic is considered a "core topic" for the
	// vertical.
	IsCore bool `json:"isCore,omitempty"`

	// IsDimension: If true, the entity is a dimension for some entities in
	// the vertical.
	IsDimension bool `json:"isDimension,omitempty"`

	// IsGeneralization: If true, the entity is a generalization for some
	// entities in the vertical.
	IsGeneralization bool `json:"isGeneralization,omitempty"`

	// ResolutionPriority: Resolution priority for this entity. If there are
	// many possible resolutions to a MDVC understanding, only the ones with
	// the highest priority are annotated.
	ResolutionPriority int64 `json:"resolutionPriority,omitempty"`

	// SubVerticalFp: Fingerprints that identify the topic's sub-verticals,
	// if any.
	SubVerticalFp googleapi.Uint64s `json:"subVerticalFp,omitempty"`

	// VerticalName: Name of the vertical this message is about.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "CARS"
	//   "CVG"
	//   "PRODUCTS"
	//   "SYMPTOMS"
	//   "CHAINS"
	//   "MOVIES"
	//   "SPORTS_TEAM"
	//   "EXAMS"
	//   "MOTORCYCLES"
	//   "PRIMEREF"
	//   "SONGS"
	//   "EDUCATION"
	//   "EVENTS"
	VerticalName string `json:"verticalName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CompatibleIds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompatibleIds") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMdvcMetadataPerVertical) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMdvcMetadataPerVertical
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMention: Multiple entities can be identified on a
// document or query. Each entity can be mentioned several times in
// different positions on the document or query. This message describes
// a single mention of the entity. Note that a mention can be either
// explicit or implicit mentions. All explicit mentions refer to exact
// range in the document where the entity occurred, but implicit
// mentions may or may not have corresponding range. Next available tag
// number: 40
type RepositoryWebrefMention struct {
	// AddedByCloseAnswers: Whether this mention was created by CloseAnswers
	// on Postref. This bit is populated into corresponding intent_query
	// through Aqua.
	AddedByCloseAnswers bool `json:"addedByCloseAnswers,omitempty"`

	// AdditionalExplainedRange: If the mention's range is discontinuous,
	// additional ranges that are a part of the mention but are not included
	// in the begin/end range above.
	AdditionalExplainedRange []*RepositoryWebrefMentionAdditionalExplainedRange `json:"additionalExplainedRange,omitempty"`

	// Begin: The [begin, end) byte offset, compatible with the Goldmine
	// DocState representation. - For CONTENT, TITLE, META_CONTENT_TAG and
	// IMG_ALT_TAG segments, the offsets are relative to the beginning of
	// the document content. - For ANCHOR, QUERY, URL, IMAGE_QUERY,
	// CONTEXT_ENTITY, CONTEXT_QUERY, SPORE_GRAPH, INSTANT_QUERY and
	// VIDEO_TRANSCRIPT segments, the offsets are relative to the beginning
	// of the corresponding (sub-)segment or text from doc attachment. The
	// (indexing.annotations.goldmine) options are marks for Goldmine
	// AnnotationsFinder to locate begin and end offsets in order to extract
	// them
	Begin int64 `json:"begin,omitempty"`

	// BeginTokenIndex: The [begin end) token offsets in the Goldmine
	// DocState. They follow similar rules as "begin" and "end" above, but
	// for tokens rather than byte offsets. These fields are currently only
	// populated by the query annotator.
	BeginTokenIndex int64 `json:"beginTokenIndex,omitempty"`

	// CompoundMention: For a compound mention, the references to the entity
	// and mention of the components. Each compound_mention claims one or
	// more 'mrf' fields from the WebrefEntity owning this mention. Use
	// QueryJoinToMeaningStructConverter to expand compound mentions into
	// complete MRF.
	CompoundMention []*RepositoryWebrefMentionCompoundMention `json:"compoundMention,omitempty"`

	// ConfidenceScore: A probabilistic score describing how certain the
	// annotator is that this exact range in the document or query refers to
	// the entity. Probability that a mention is correct corresponds to
	// confidence score roughly as follows: 0.3 -> 75% 0.5 -> 87% 0.7 -> 89%
	// 0.9 -> 94% 1.0 -> 98% However if you consider all mentions with a
	// score above 0.3, then most of these will have scores close to 1, so
	// the overall precision of these mentions is around 95%.
	ConfidenceScore float64 `json:"confidenceScore,omitempty"`

	// DebugInfo: Debug information.
	DebugInfo *RepositoryWebrefMentionDebugInfo `json:"debugInfo,omitempty"`

	// DetailedMentionScores: Additional detailed scores about this mention.
	DetailedMentionScores *RepositoryWebrefDetailedMentionScores `json:"detailedMentionScores,omitempty"`

	End int64 `json:"end,omitempty"`

	EndTokenIndex int64 `json:"endTokenIndex,omitempty"`

	// EvalInfo: Information used by the evaluation tools to mark mentions
	// annotations as correct/incorrect. This will never be annotated in
	// production (would be nice if was, though :-)).
	EvalInfo *RepositoryWebrefMentionEvalInfo `json:"evalInfo,omitempty"`

	// InterpretationNumber: DEPRECATED and not populated anymore.
	InterpretationNumber []int64 `json:"interpretationNumber,omitempty"`

	// IsImplicit: True if the entity is mentioned implicitly. Note that a
	// mention can be implicit *and* have a non-empty range, for example if
	// the entity is Sports, and this is inferred from the mention of "gym".
	IsImplicit bool `json:"isImplicit,omitempty"`

	// LexicalAnnotation: Provides a Wordgraph lexical signals for the
	// mentioned range so it can be use in LooseParsing. Please don't use
	// this field before consulting wordgraph-team.
	LexicalAnnotation *RepositoryWebrefLexicalAnnotation `json:"lexicalAnnotation,omitempty"`

	// LowConfidence: Qref & Postref only: Set to true for candidates part
	// of qref candidate output for which there was no mention in qref.
	// Internal to qref and LooseParsing. Do not use outside of these
	// systems.
	LowConfidence bool `json:"lowConfidence,omitempty"`

	// MatchingText: Refcon-only: Annotated span in Refcon-normalized
	// textual format, corresponding to the [begin end) offset interval in
	// the CDoc. It will only be populated for CDocs originated from Docjoin
	// extraction.
	MatchingText string `json:"matchingText,omitempty"`

	// NameMetadata: Metadata attatched to the name.
	NameMetadata *RepositoryWebrefConceptNameMetadata `json:"nameMetadata,omitempty"`

	// NonLocationalScore: Whether the mention is a non-locational reference
	// to a geographical entity. Ranges from 0 (locational) to 1
	// (non-locational).
	NonLocationalScore float64 `json:"nonLocationalScore,omitempty"`

	// PerMentionLightweightToken: Provides concised access to all matched
	// MatchedLightweightToken.
	PerMentionLightweightToken *RepositoryWebrefLightweightTokensPerMentionLightweightToken `json:"perMentionLightweightToken,omitempty"`

	// PersonalizationContextOutputs: Additional personalization output
	// scores about this mention.
	PersonalizationContextOutputs *RepositoryWebrefPersonalizationContextOutputs `json:"personalizationContextOutputs,omitempty"`

	// PriorProbability: The prior probability of the entity for this
	// mention.
	PriorProbability float64 `json:"priorProbability,omitempty"`

	// ReferenceScore: Whether the mention is a reference (e.g. it could be
	// resolved to an entity coming from personal data) or not, currently
	// only used for personal resolutions. Scores from 0 (not a reference)
	// to 1 (reference). Use at your own risk as they are subject to change,
	// advised to talk to refx-personal first.
	ReferenceScore float64 `json:"referenceScore,omitempty"`

	// ResolutionScore: Whether the mention is a resolution or not,
	// currently only used for personal resolutions. Scores from 0 (not a
	// resolution) to 1 (resolution). Use at your own risk as they are
	// subject to change, advised to talk to refx-personal first.
	ResolutionScore float64 `json:"resolutionScore,omitempty"`

	// Stuff: Assorted things that can be added to a Mention.
	Stuff *Proto2BridgeMessageSet `json:"stuff,omitempty"`

	// SubsegmentIndex: Identifies the sub-segment where the annotation
	// occurs. See SubSegmentIndex for details. Not present in QRef, also
	// deprecated for URL segment types.
	SubsegmentIndex *RepositoryWebrefSubSegmentIndex `json:"subsegmentIndex,omitempty"`

	// TimeOffsetConfidence: Confidence for the time_offset_ms annotation,
	// quantized to values in range 0-127 (see
	// speech::VideoASRServerUtil::ConfidenceQuantize for how the
	// quantization was done). Confidence can be empty for special
	// characters (e.g. spaces).
	TimeOffsetConfidence int64 `json:"timeOffsetConfidence,omitempty"`

	// TimeOffsetMs: Timestamp that this mention appeared in the video. The
	// field is only populated for VIDEO_TRANSCRIPT when the byte offset is
	// the same. It is extracted from
	// cdoc.doc_videos.content_based_metadata.transcript_asr.transcript.times
	// tamp.
	TimeOffsetMs int64 `json:"timeOffsetMs,omitempty"`

	// TrustedNameConfidence: Confidence that this name is a trusted name of
	// the entity. This is set only in case the confidence is higher than an
	// internal threshold (see ConceptProbability).
	TrustedNameConfidence float64 `json:"trustedNameConfidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AddedByCloseAnswers")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AddedByCloseAnswers") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMention) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefMention) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefMention
	var s1 struct {
		ConfidenceScore       gensupport.JSONFloat64 `json:"confidenceScore"`
		NonLocationalScore    gensupport.JSONFloat64 `json:"nonLocationalScore"`
		PriorProbability      gensupport.JSONFloat64 `json:"priorProbability"`
		ReferenceScore        gensupport.JSONFloat64 `json:"referenceScore"`
		ResolutionScore       gensupport.JSONFloat64 `json:"resolutionScore"`
		TrustedNameConfidence gensupport.JSONFloat64 `json:"trustedNameConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceScore = float64(s1.ConfidenceScore)
	s.NonLocationalScore = float64(s1.NonLocationalScore)
	s.PriorProbability = float64(s1.PriorProbability)
	s.ReferenceScore = float64(s1.ReferenceScore)
	s.ResolutionScore = float64(s1.ResolutionScore)
	s.TrustedNameConfidence = float64(s1.TrustedNameConfidence)
	return nil
}

// RepositoryWebrefMentionAdditionalExplainedRange: Additional ranges
// covered by the mention. Next available tag: 5
type RepositoryWebrefMentionAdditionalExplainedRange struct {
	// Begin: Like begin/end, begin_token_index/end_token_index above.
	Begin int64 `json:"begin,omitempty"`

	BeginTokenIndex int64 `json:"beginTokenIndex,omitempty"`

	End int64 `json:"end,omitempty"`

	EndTokenIndex int64 `json:"endTokenIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionAdditionalExplainedRange) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionAdditionalExplainedRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMentionComponent: Reference to a component of a
// compound mention. Next available tag: 5
type RepositoryWebrefMentionComponent struct {
	// EntityIndex: The indices to identify the entity within the
	// WebrefEntities.entities, the segment within its
	// EntityAnnotations.segment_mentions, and the mention within that
	// segment. entity_index is always guaranteed to be set, but
	// segment_mentions_index and mention_index are omitted if the component
	// reference is implicit.
	EntityIndex int64 `json:"entityIndex,omitempty"`

	// IsHeadComponent: The source of the compound has designated this
	// component as the head. Only one of the components can be a head, but
	// it's possible none are.
	IsHeadComponent bool `json:"isHeadComponent,omitempty"`

	MentionIndex int64 `json:"mentionIndex,omitempty"`

	SegmentMentionsIndex int64 `json:"segmentMentionsIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionComponent) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionComponent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMentionCompoundMention: A single compound mention.
// Next available tag: 3
type RepositoryWebrefMentionCompoundMention struct {
	// Component: References to the component mentions which the MRF needs
	// to be fully expanded. It is guaranteed that for a given set of
	// components there exists only a single CompoundMention, i.e. the
	// CompoundMentions are deduped to be unique so each set of components
	// is present only once. The ArgumentValue of the WebrefEntity.mrf refer
	// to these components via ComponentReference; it is guaranteed there
	// are as many components as the MRF expression refers to.
	Component []*RepositoryWebrefMentionComponent `json:"component,omitempty"`

	// MrfIndex: The WebrefEntity.mrf indices which this compound applies
	// to. There can be at most one CompoundMention which claims an MRF
	// index, but it is possible there are MRF expressions which are not
	// claimed by any CompoundMention.
	MrfIndex []int64 `json:"mrfIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Component") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Component") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionCompoundMention) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionCompoundMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefMentionDebugInfo struct {
	// CleanText: A clean version of text. This is mostly used for
	// compatibility with other Goldmine annotators.
	CleanText string `json:"cleanText,omitempty"`

	// InfoString: Optional debug information.
	InfoString []string `json:"infoString,omitempty"`

	// Snippet: A snippet of the parsed text (html tags removed) in the page
	// around this mention. Useful for human evaluation of the quality of
	// the annotations. Outputted by WebrefAnnotator if
	// --webref_output_mention_snippet_size is set to a value greater than
	// 0.
	Snippet string `json:"snippet,omitempty"`

	// Text: Original UTF-8 document text occurring in the range [begin,
	// end).
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CleanText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CleanText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefMentionEvalInfo struct {
	// AtmWeight: Weight of the mention used in the ATM score.
	AtmWeight float64 `json:"atmWeight,omitempty"`

	// Rating: The aggregate numerical rating of this mention. 0.0 means
	// completely incorrect, and 1.0 completely correct.
	Rating float64 `json:"rating,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AtmWeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AtmWeight") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionEvalInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionEvalInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefMentionEvalInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefMentionEvalInfo
	var s1 struct {
		AtmWeight gensupport.JSONFloat64 `json:"atmWeight"`
		Rating    gensupport.JSONFloat64 `json:"rating"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AtmWeight = float64(s1.AtmWeight)
	s.Rating = float64(s1.Rating)
	return nil
}

// RepositoryWebrefMentionRatings: Per document mention ratings. Next
// id: 10
type RepositoryWebrefMentionRatings struct {
	// Begin: Byte offsets of the mention.
	Begin int64 `json:"begin,omitempty"`

	End int64 `json:"end,omitempty"`

	// Possible values:
	//   "SUBPART"
	//   "SUPER"
	//   "EXACT"
	MentionMatch []string `json:"mentionMatch,omitempty"`

	SingleMentionRating []*RepositoryWebrefMentionRatingsSingleMentionRating `json:"singleMentionRating,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefMentionRatingsSingleMentionRating: Next available
// tag: 11
type RepositoryWebrefMentionRatingsSingleMentionRating struct {
	// IsCorrectRange: Set for mentions got from the new topicality
	// template. True if the raters checked this range as being a good range
	// for the entity. If the range is not correct we demote the mention
	// score. This field is only used in template version V1. From template
	// version V2 and forward it is now set via phrase_refer.
	IsCorrectRange bool `json:"isCorrectRange,omitempty"`

	// Possible values:
	//   "SUBPART"
	//   "SUPER"
	//   "EXACT"
	MentionMatch string `json:"mentionMatch,omitempty"`

	// Possible values:
	//   "NOT_RELEVANT"
	//   "RELEVANT"
	//   "CORRECT"
	//   "NOT_VALID" - Note that raters might give one of the above (valid)
	// ratings even if the task is not readable. However, when the task is
	// not readable, we override the EWOK rating with NOT_VALID.
	MentionRelevant string `json:"mentionRelevant,omitempty"`

	// Possible values:
	//   "PHRASE_REFER"
	//   "PHRASE_MAYBE_REFER"
	//   "PHRASE_NOT_REFER"
	PhraseRefer string `json:"phraseRefer,omitempty"`

	// RaterCanUnderstandTopic: Whether rater can understand the topic.
	RaterCanUnderstandTopic bool `json:"raterCanUnderstandTopic,omitempty"`

	// RatingSource: The source of the rating, possibly a golden set
	// external to EWOK.
	//
	// Possible values:
	//   "RATING_SOURCE_UNKNOWN"
	//   "RATING_SOURCE_EWOK"
	//   "RATING_SOURCE_SAFT_GOLDEN"
	//   "RATING_SOURCE_CROWDCOMPUTE"
	RatingSource string `json:"ratingSource,omitempty"`

	ResultCount int64 `json:"resultCount,omitempty"`

	TaskData *RepositoryWebrefTaskData `json:"taskData,omitempty"`

	// Possible values:
	//   "RESULT_MENTIONED"
	//   "RESULT_MAYBE_MENTIONED"
	//   "RESULT_NOT_MENTIONED"
	TopicMentionedInResult []string `json:"topicMentionedInResult,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsCorrectRange") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsCorrectRange") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefMentionRatingsSingleMentionRating) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefMentionRatingsSingleMentionRating
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefNameDebugInfo: Collects signals from one query used
// for prior learning.
type RepositoryWebrefNameDebugInfo struct {
	// Candidates: List of per-candidate signals derived from annotation of
	// this query.
	Candidates []*RepositoryWebrefNameDebugInfoCandidateInfo `json:"candidates,omitempty"`

	// Query: Query with region (language is set in parent NameInfo).
	Query *RepositoryWebrefLocalizedString `json:"query,omitempty"`

	// Weight: Query weight used in learning.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Candidates") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Candidates") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNameDebugInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNameDebugInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefNameDebugInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefNameDebugInfo
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

// RepositoryWebrefNameDebugInfoCandidateInfo: Collects signals from one
// query and one candidate. Next available tag: 9
type RepositoryWebrefNameDebugInfoCandidateInfo struct {
	// IsMatchlessResultContext: Whether the entity is purely from strong
	// result entities, and is matchless in query annotation.
	IsMatchlessResultContext bool `json:"isMatchlessResultContext,omitempty"`

	// Mid: Mid of the candidate entity or empty string for the full world.
	Mid string `json:"mid,omitempty"`

	// Name: Debug name of the entity (not usually populated).
	Name string `json:"name,omitempty"`

	ResultEntityScore float64 `json:"resultEntityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsMatchlessResultContext") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsMatchlessResultContext")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNameDebugInfoCandidateInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNameDebugInfoCandidateInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefNameDebugInfoCandidateInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefNameDebugInfoCandidateInfo
	var s1 struct {
		ResultEntityScore gensupport.JSONFloat64 `json:"resultEntityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ResultEntityScore = float64(s1.ResultEntityScore)
	return nil
}

// RepositoryWebrefNameInfo: Represents all information we have about a
// specific/localized name. Next available tag: 13. NOTE: If you add a
// field to the NameInfo proto and wish to retain it *after* the
// GlobalNameInfo merging steps in
// //r/w/enricher/pipeline:topic-enricher-flume-main then the
// appropriate combining logic for turning a flume stream of NameInfo
// protos into a single NameInfo must be updated with the new field in
// mind, in either or both of
// CombineContextNameInfosFn/CombineNameInfosFn. If not, the newly added
// field will be ignored during the merging steps (presumably because it
// is a transient field or a debug field that is not necessary to be
// retained).
type RepositoryWebrefNameInfo struct {
	// AggregatedScores: The score aggregated from all sources.
	AggregatedScores *RepositoryWebrefAggregatedEntityNameScores `json:"aggregatedScores,omitempty"`

	// AnnotatedCategory: Information on categories annotated on the range.
	AnnotatedCategory []*RepositoryWebrefAnnotatedCategoryInfo `json:"annotatedCategory,omitempty"`

	// DebugDetails: DEBUG ONLY: stores a list of queries with per-candidate
	// scores about signals used for prior learning.
	DebugDetails []*RepositoryWebrefNameDebugInfo `json:"debugDetails,omitempty"`

	// IncludeInModel: Field which decides if this NameInfo should be
	// included in model creation.
	IncludeInModel bool `json:"includeInModel,omitempty"`

	// Name: The specific name to which this information applies.
	Name *RepositoryWebrefLocalizedString `json:"name,omitempty"`

	// NgramData: N-gram data (e.g. n-gram IDF).
	NgramData *RepositoryWebrefUniversalNgramData `json:"ngramData,omitempty"`

	// PerNameLightweightToken: Lightweight token semantic metadata for
	// inflected name.
	PerNameLightweightToken *RepositoryWebrefLightweightTokensPerNameLightweightToken `json:"perNameLightweightToken,omitempty"`

	// Scores: The name-specific scores. These scores only depend on the
	// name and are independent of the entity.
	Scores *RepositoryWebrefNameScores `json:"scores,omitempty"`

	// Source: The per-source scores.
	Source []*RepositoryWebrefEntityNameSource `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregatedScores") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedScores") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNameInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNameInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefNameScores: Represents some name-specific scores.
// (Unlike EntityNameScore, these scores are independent of the entities
// the name is associated with). These scores are available for each
// name as well as for each name/source. Next available tag: 31.
type RepositoryWebrefNameScores struct {
	// CompleteWorldVolume: Approximates volume of this name including
	// entities we don't have in our set. This is useful to estimate the
	// size of the "open world". For example, this field can be equal to the
	// total number of clicks for the query. Note that for now, we ignore
	// the number of clicks but just use the idf if available.
	CompleteWorldVolume float64 `json:"completeWorldVolume,omitempty"`

	// ContextFringeScore: The fringe score in [0, 1] for this context name.
	// This is only populated for full-query context names.
	ContextFringeScore float64 `json:"contextFringeScore,omitempty"`

	// ContextWeight: The amount of evidence available for this context
	// name.
	ContextWeight float64 `json:"contextWeight,omitempty"`

	// IdfScore: The idf of this name.
	IdfScore float64 `json:"idfScore,omitempty"`

	// OpenWorldVolumeModifier: 'Raw' open world is computed based on ngram
	// count data. For some names however, we modify the open world based on
	// entities associated with them. This field contains the additive open
	// world modifier. open_world_volume = raw open world +
	// open_world_volume_modifier
	OpenWorldVolumeModifier float64 `json:"openWorldVolumeModifier,omitempty"`

	// TotalScore: The total score of that name/source. It describes how
	// much data we have for that name/source. It can for example be the sum
	// of all the entity scores for this name.
	TotalScore float64 `json:"totalScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CompleteWorldVolume")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompleteWorldVolume") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNameScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNameScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefNameScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefNameScores
	var s1 struct {
		CompleteWorldVolume     gensupport.JSONFloat64 `json:"completeWorldVolume"`
		ContextFringeScore      gensupport.JSONFloat64 `json:"contextFringeScore"`
		ContextWeight           gensupport.JSONFloat64 `json:"contextWeight"`
		IdfScore                gensupport.JSONFloat64 `json:"idfScore"`
		OpenWorldVolumeModifier gensupport.JSONFloat64 `json:"openWorldVolumeModifier"`
		TotalScore              gensupport.JSONFloat64 `json:"totalScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CompleteWorldVolume = float64(s1.CompleteWorldVolume)
	s.ContextFringeScore = float64(s1.ContextFringeScore)
	s.ContextWeight = float64(s1.ContextWeight)
	s.IdfScore = float64(s1.IdfScore)
	s.OpenWorldVolumeModifier = float64(s1.OpenWorldVolumeModifier)
	s.TotalScore = float64(s1.TotalScore)
	return nil
}

// RepositoryWebrefNgramContext: An N-gram context encountered on the
// document.
type RepositoryWebrefNgramContext struct {
	// Mention: The entities that were annotated on the context
	Mention []*RepositoryWebrefNgramMention `json:"mention,omitempty"`

	// Text: The context (original) text.
	Text string `json:"text,omitempty"`

	// Weight: The weight of the context on the document; depends on how
	// many times we saw the string in the document.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mention") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNgramContext) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNgramContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefNgramContext) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefNgramContext
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

// RepositoryWebrefNgramMention: A mention that has been matched in the
// context (or a substring of it).
type RepositoryWebrefNgramMention struct {
	// Mid: The entity the mention was referring to.
	Mid string `json:"mid,omitempty"`

	// Score: The average score the mention was given across all occurrences
	// of the n-gram.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefNgramMention) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefNgramMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefNgramMention) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefNgramMention
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefOysterType: Oyster type information.
type RepositoryWebrefOysterType struct {
	// FeatureType: The Oyster feature type, which provides a rough
	// categorization. This is a value of the enum
	// geostore.FeatureProto.TypeCategory.
	FeatureType int64 `json:"featureType,omitempty"`

	// Gconcepts: Geo Ontology GConcept Instances from the FeatureProto. -
	// Design doc linked off http://wiki/Main/GeoOntology - Use the accessor
	// library to read this field: geostore/base/public/gconcept_instance.h
	Gconcepts *GeostoreOntologyRawGConceptInstanceContainerProto `json:"gconcepts,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefOysterType) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefOysterType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPerDocRelevanceRating: Per document ratings relevance
// ratings. Next id: 21.
type RepositoryWebrefPerDocRelevanceRating struct {
	// Possible values:
	//   "NONE"
	//   "NOT_APPLICABLE"
	//   "NOT_RELEVANT"
	//   "BARELY_RELEVANT"
	//   "RELEVANT"
	//   "IMPORTANT"
	//   "VITAL"
	ContentRelevant string `json:"contentRelevant,omitempty"`

	// DisplayString: How this rating is displayed in the evals,
	// pre-computed from the other fields.
	DisplayString string `json:"displayString,omitempty"`

	// FurballUrl: The url of the ewok task that resulted in this rating.
	// Example:
	// https://furball.corp.google.com/project/view-item?itemId=1&projectId=2
	FurballUrl string `json:"furballUrl,omitempty"`

	ItemId uint64 `json:"itemId,omitempty,string"`

	// PageIsAboutChain: If the topic is about a business chain, whether the
	//
	// Possible values:
	//   "PAGE_IS_ABOUT_CHAIN_NONE"
	//   "NOT_SAME_CHAIN_AS_TOPIC"
	//   "ALL_LOCATIONS_OF_TOPIC_CHAIN"
	//   "SEVERAL_LOCATIONS_OF_TOPIC_CHAIN"
	//   "EXACT_LOCATION_OF_TOPIC_CHAIN"
	//   "DIFFERENT_LOCATION_OF_TOPIC_CHAIN"
	PageIsAboutChain string `json:"pageIsAboutChain,omitempty"`

	// ProjectId: Metadata for task-level ratings. Not filled for aggregated
	// doc-level ratings.
	ProjectId uint64 `json:"projectId,omitempty,string"`

	// RaterCanUnderstandTopic: Whether rater can understand the topic.
	RaterCanUnderstandTopic bool `json:"raterCanUnderstandTopic,omitempty"`

	TaskDetails *RepositoryWebrefTaskDetails `json:"taskDetails,omitempty"`

	TaskId uint64 `json:"taskId,omitempty,string"`

	// TopicIsChain: Whether the topic is about a business chain.
	//
	// Possible values:
	//   "TOPIC_IS_ABOUT_CHAIN_NONE"
	//   "CHAIN_SPECIFIC_LOCATION"
	//   "CHAIN_ENTITY"
	//   "NOT_CHAIN"
	//   "UNSURE"
	TopicIsChain string `json:"topicIsChain,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentRelevant") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentRelevant") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPerDocRelevanceRating) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPerDocRelevanceRating
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPerDocRelevanceRatings: Aggregates ratings by
// url/doc_fp.
type RepositoryWebrefPerDocRelevanceRatings struct {
	// DocFp: - In topicality ratings this is Fingerprint2011() of the
	// normalized cdoc. - In query-mention ratings this is a hash of the
	// QueryJoin. - In doc-content-mention ratings this is a hash of a
	// QueryJoin in which the mention rating task has been embedded. -
	DocFp uint64 `json:"docFp,omitempty,string"`

	EntityNameRating []*RepositoryWebrefEntityNameRatings `json:"entityNameRating,omitempty"`

	MentionRating []*RepositoryWebrefMentionRatings `json:"mentionRating,omitempty"`

	TaskLevelRating []*RepositoryWebrefPerDocRelevanceRating `json:"taskLevelRating,omitempty"`

	// Url: - In topicality ratings this is the url of the document. - In
	// query-mention ratings this is the query in format "en:US:query text".
	// - In doc-content-mention ratings this is %x:%s where %x is the hex
	// doc_fp of the cdoc (TODO(b/139799592) or sometimes the doc_fp below),
	// and %s is the text of the eval range. - In entity-name ratings this
	// is the MID of the entity.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocFp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocFp") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPerDocRelevanceRatings) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPerDocRelevanceRatings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPersonalizationContextOutput: Key-Value-like message
// to store values associated with a personalization type. Next id: 3
type RepositoryWebrefPersonalizationContextOutput struct {
	// Score: Score corresponding to some kind of biasing strength which was
	// applied. The exact semantics of this score is subject to further
	// changes. Don't make assumptions about specific values or ranges.
	// Values > 0 represents that a boost was applied. Values < 0 represents
	// that a penalty was appled.
	Score float64 `json:"score,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "USER_CORRECTIONS"
	//   "MEDIA_HISTORY"
	//   "ANIMA_ENTITY_INTERESTS"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Score") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPersonalizationContextOutput) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPersonalizationContextOutput
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefPersonalizationContextOutput) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefPersonalizationContextOutput
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefPersonalizationContextOutputs: Details about
// personalization and contextual scoring decisions from Personalized
// Query Understanding (go/pqu). This message represents information
// about what kind of biasing was applied, including what type of data
// were used and how strongly. Intended to be used by client code for
// fine-tuning necessary ranking or triggering logic if it's not
// possible to rely on the aggregated annotation confidence alone. To
// minimize unwanted dependencies and incorrect usage of the data this
// proto has restricted visibility. Please reach out to
// refx-pqu@google.com if you want to have access. Next id: 2
type RepositoryWebrefPersonalizationContextOutputs struct {
	// Outputs: Detailed output scores per personalization type.
	Outputs []*RepositoryWebrefPersonalizationContextOutput `json:"outputs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Outputs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Outputs") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPersonalizationContextOutputs) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPersonalizationContextOutputs
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPreprocessingNameEntityMetadata: Metadata about a
// name. There are two metadata protos, whose content is meant to be
// similar but their usage different: NameEntityMetadata for readability
// and ConceptNameMetadata for size / decoding speed. NameEntityMetadata
// is propagated to GlobalNameInfo and EntityJoin tables, while
// ConceptNameMetadata is propagated from EntityJoins to the name
// matching tables and later to the Webref's/QRef's output. To add a new
// metadata field in the Names pipeline, and propagate it to EntityJoins
// and Names matching tables, it is necessary to: (1) Add the field to
// NameEntityMetadata, and a corresponding data representation in
// ConceptNameMetadata. (2) Populate the field in
// NameVariantSignals.name_metadata, from any source. This can be done
// in a corresponding NameProcessor. (3) Update the library
// name-metadata.h/cc to make sure that the metadata field is: a) merged
// correctly when merging two NameSignals; and b) transformed to the
// corresponding field in ConceptNameMetadata proto. Next available tag:
// 22.
type RepositoryWebrefPreprocessingNameEntityMetadata struct {
	// IsBypassedName: There is a limit of entities per name for which we
	// can keep name signals and score. This flag is set to true for names
	// that by-passed per-name-scoring, as there were too many entities for
	// the name.
	IsBypassedName bool `json:"isBypassedName,omitempty"`

	// IsCompoundName: This name is a generated compound name to pass
	// primary pruning.
	IsCompoundName bool `json:"isCompoundName,omitempty"`

	// IsCompoundRetrievalKey: Indicates special compound retrieval keys,
	// like "Compound $mid1 $mid2"
	IsCompoundRetrievalKey bool `json:"isCompoundRetrievalKey,omitempty"`

	// IsDictionaryTerm: This is set to true if the entity corresponds to a
	// dictionary term.
	IsDictionaryTerm bool `json:"isDictionaryTerm,omitempty"`

	// IsEventRetrievalKey: If true, this name is an event retrieval key.
	IsEventRetrievalKey bool `json:"isEventRetrievalKey,omitempty"`

	// IsGeneratedName: This name is generated from other names.
	IsGeneratedName bool `json:"isGeneratedName,omitempty"`

	// IsGeneratedStreetname: This name is a generated street name.
	IsGeneratedStreetname bool `json:"isGeneratedStreetname,omitempty"`

	// IsHierarchyPropagated: This name is added by name propagation in
	// hierarchy.
	IsHierarchyPropagated bool `json:"isHierarchyPropagated,omitempty"`

	// IsIsbn: This name is an ISBN.
	IsIsbn bool `json:"isIsbn,omitempty"`

	// IsLyricsContent: This name comes from recording lyrics content.
	IsLyricsContent bool `json:"isLyricsContent,omitempty"`

	// IsPhoneNumber: This name is a phone number.
	IsPhoneNumber bool `json:"isPhoneNumber,omitempty"`

	// IsRefconName: This name is used for refcon.
	IsRefconName bool `json:"isRefconName,omitempty"`

	// IsReferenceName: This name is a reference name, only for internal
	// usage, this name should not go into matching table without support of
	// other signals.
	IsReferenceName bool `json:"isReferenceName,omitempty"`

	// IsRefpageUrl: This name is the URL of a reference page.
	IsRefpageUrl bool `json:"isRefpageUrl,omitempty"`

	// IsReverseUniquePropertyName: This name is generated from a reverse
	// unique property of the entity.
	IsReverseUniquePropertyName bool `json:"isReverseUniquePropertyName,omitempty"`

	// IsStrongIdentifier: This name is a strong identifier for this entity.
	IsStrongIdentifier bool `json:"isStrongIdentifier,omitempty"`

	// IsSynonymOrFuzzyMatch: Set if the name is coming from synonyms.
	IsSynonymOrFuzzyMatch bool `json:"isSynonymOrFuzzyMatch,omitempty"`

	// IsTrustedAllcapsName: If true, this name is a trusted name if it is
	// in ALLCAPS.
	IsTrustedAllcapsName bool `json:"isTrustedAllcapsName,omitempty"`

	// IsUnnormalizedName: If true, do not do tokenization when compute
	// fprint hash for this name.
	IsUnnormalizedName bool `json:"isUnnormalizedName,omitempty"`

	// NotGeneratedName: This name is clearly not generated(aka. at least
	// one source of this name is not generated). This field is added for
	// simplifying generated name tag while merging. Do not use this
	// metadata directly.
	NotGeneratedName bool `json:"notGeneratedName,omitempty"`

	// OriginalNames: Original versions of the name (before normalization).
	// Used as query for the entity by Explicit Entity Search.
	OriginalNames *RepositoryWebrefPreprocessingOriginalNames `json:"originalNames,omitempty"`

	// SuppressTokenization: Whether or not to suppress tokenization on this
	// name.
	SuppressTokenization bool `json:"suppressTokenization,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsBypassedName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsBypassedName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingNameEntityMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingNameEntityMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPreprocessingNameEntityScores: Abstract, source
// independent scores. Next available tag: 7
type RepositoryWebrefPreprocessingNameEntityScores struct {
	// PriorScore: An unnormalized measure of how much evidence we have that
	// this name variant refers to the key entity. Should be comparable to
	// all scores from the same source for: - other entities having the same
	// name variant - the open world score computed for this name variant
	PriorScore float64 `json:"priorScore,omitempty"`

	// VolumeBasedScore: Prior score come from source that is quantifiable.
	// artificial_score = prior_score - volume_based_score.
	VolumeBasedScore float64 `json:"volumeBasedScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PriorScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PriorScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingNameEntityScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingNameEntityScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefPreprocessingNameEntityScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefPreprocessingNameEntityScores
	var s1 struct {
		PriorScore       gensupport.JSONFloat64 `json:"priorScore"`
		VolumeBasedScore gensupport.JSONFloat64 `json:"volumeBasedScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PriorScore = float64(s1.PriorScore)
	s.VolumeBasedScore = float64(s1.VolumeBasedScore)
	return nil
}

// RepositoryWebrefPreprocessingNameVariantSignals: Next available tag:
// 33.
type RepositoryWebrefPreprocessingNameVariantSignals struct {
	// Scores: Common prior_score/trust proto This field is shared by all
	// sources providing this kind of data, the information has to be
	// considered in context with the source.
	Scores *RepositoryWebrefPreprocessingNameEntityScores `json:"scores,omitempty"`

	// Source: The source of this NameVariantSignals proto
	//
	// Possible values:
	//   "INVALID"
	//   "KG"
	//   "KG_NAME"
	//   "KG_ALIAS"
	//   "KG_ISBN13"
	//   "KG_GTIN"
	//   "KG_STOCK_TICKER"
	//   "KG_AVIATION"
	//   "KG_TRUSTED_ALIAS" - KG aliases that were manually generated, e.g.
	// SxEy names for TV episodes
	//   "KG_CHEMICAL_SYMBOL"
	//   "KG_RADIO_STATION"
	//   "KG_REVERSE_UNIQUE_PROPERTY"
	//   "KG_TRANSIT_STATION_CODE"
	//   "KG_SYMBOL"
	//   "KG_ALLCAPS_NAME"
	//   "KG_NICKNAME"
	//   "KG_WORDGRAPH_NAME"
	//   "KG_SOCIAL_PROFILE_ID"
	//   "KG_SOCIAL_PROFILE_SITECHUNK"
	//   "ENTITY_NAME_TRANSLATIONS_GENERATOR" - Translations are injected
	// into the model from a static sstable found here:
	// /namespace/webref/static-data/entity-name-translations/
	//   "MAPFACTS"
	//   "MAPFACTS_PHONENUMBER"
	//   "MAPFACTS_STREET_NAME_GENERATOR"
	//   "MAPFACTS_FUZZY_PHONENUMBER"
	//   "MAPFACTS_NAME_GENERATOR"
	//   "MAPFACTS_GEOCODES_ADDRESS_LINES"
	//   "MAPFACTS_GEOCODES_UNLINKED"
	//   "MAPFACTS_TRIMMED_POSTAL_CODE"
	//   "MAPFACTS_MERGED_POSTAL_CODE"
	//   "MAPFACTS_POSTAL_CODE_WITH_COUNTRY_CODE" - Postal codes with a
	// prefixed country code, e.g. I 39303, A 6604, CH 8005.
	//   "MAPFACTS_TRANSIT_LINE_NAME_GENERATOR"
	//   "MAPFACTS_HOUSE_ID"
	//   "CDOCS"
	//   "CDOCS_ANCHOR"
	//   "CDOCS_NAVBOOST"
	//   "CDOCS_REFERENCE_PAGE_URL"
	//   "WIKIJOINS"
	//   "WIKIDATA_AKA"
	//   "WIKIDATA_LABEL"
	//   "PRODUCT"
	//   "PRODUCT_TITLE"
	//   "PRODUCT_MANUFACTURER_PART_NUMBER"
	//   "PRODUCT_MODEL_VARIATION"
	//   "PRODUCT_COMPANY_OR_BRAND_STRIPPING"
	//   "PRODUCT_AGGRESSIVE_STRIP"
	//   "PRODUCT_AGGRESSIVE_BRAND_STRIP"
	//   "SCORER"
	//   "SCORER_CATEGORICAL_NAME_SUPPRESSOR"
	//   "SCORER_BAD_SUBNAME_DEMOTION"
	//   "SCORER_YEAR_NAME_DEMOTION" - Scorer that checks and kills
	// year-like names.
	//   "SCORER_NAME_BLACKLIST"
	//   "NAME_LEAKAGE_PREVENTION"
	//   "INCOMPATIBLE_NUMBER_DEMOTION"
	//   "BAD_STRIPPED_NAME"
	//   "BAD_FRINGE_NAME"
	//   "BAD_PERSON_NAME"
	//   "PERSON_NAME_GENERATOR"
	//   "PERSON_NAME_GENERATOR_WITH_INITIALS"
	//   "INJECTED" - This source is used for names injected in the name
	// pipeline. This injection is a shortcut to get names in the model and
	// should only be used as a temporary solution waiting to either put the
	// names in KG or mine them directly in this pipeline.
	//   "AFFIXED_NAME_GENERATOR"
	//   "BUSINESS_SUFFIX_STRIPPED_NAME"
	//   "CHAIN_NAME_GENERATOR"
	//   "LOCATION_STRIPPED_NAME"
	//   "PUNCTUATION_STRIPPED_NAME"
	//   "LEXICON_GENERATOR"
	//   "COMPOUND_NAME"
	//   "INDIC_NORMALIZER"
	//   "STRIP_FIRST_STOPWORD"
	//   "MIX_CASE_NORMALIZE"
	//   "MOVIE_YEAR"
	//   "STRIP_IMPLICATION"
	//   "MIX_STRIP"
	//   "OYSTER_NAME"
	//   "STRIP_WIKI"
	//   "CIVICS_NAME_GENERATOR"
	//   "STRIPPED_THEATER_NAME"
	//   "NUMBER_VARIANT_GENERATOR"
	//   "PERSONAL_MEDIA_NAME_GENERATOR"
	//   "MRF_INDEXING_NAME_TV_SHOWS" - Names used for entity retrieval by
	// MRF.
	//   "MATCH_WITH_MIDDLE_INITIALS" - Name is matched on middle initials.
	//   "COMBINED" - Source indicating a composition of signal sources.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Scores") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Scores") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingNameVariantSignals) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingNameVariantSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefPreprocessingOriginalNames struct {
	// Count: The total number of original names that a normalized name has
	// (all versions from all different sources).
	Count int64 `json:"count,omitempty"`

	Name []*RepositoryWebrefPreprocessingOriginalNamesOriginalName `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingOriginalNames) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingOriginalNames
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefPreprocessingOriginalNamesOriginalName struct {
	// Count: The total number of different sources from where this version
	// of the original name comes from.
	Count int64 `json:"count,omitempty"`

	// Score: Score estimating how good this original name is: - some
	// sources are considered more authoritative than others (e.g. KG) - a
	// name found in more sources is better.
	Score float64 `json:"score,omitempty"`

	// Source: The sources this name comes from.
	Source []int64 `json:"source,omitempty"`

	// Text: One original name version.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingOriginalNamesOriginalName) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingOriginalNamesOriginalName
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefPreprocessingOriginalNamesOriginalName) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefPreprocessingOriginalNamesOriginalName
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefPreprocessingUrlMatchingMetadata: Proto with metadata
// related to why a particular cdoc was selected for an entityjoin.
type RepositoryWebrefPreprocessingUrlMatchingMetadata struct {
	// Source: The sources the url was suggested by.
	Source []*RepositoryWebrefPreprocessingUrlSourceInfo `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Source") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Source") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingUrlMatchingMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingUrlMatchingMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPreprocessingUrlSourceInfo: Information about where
// the url comes from.
type RepositoryWebrefPreprocessingUrlSourceInfo struct {
	DeprecatedOldSchema *RepositoryWebrefPreprocessingUrlSourceInfoOldSchema `json:"deprecatedOldSchema,omitempty"`

	NewSchema *RepositoryWebrefPreprocessingUrlSourceInfoNewSchema `json:"newSchema,omitempty"`

	OriginalUrl string `json:"originalUrl,omitempty"`

	// Possible values:
	//   "DEPRECATED_OLD_SCHEMA"
	//   "KG"
	//   "KG_TRUSTED" - From kg topic and has trusted provenance (e.g.
	// ziki-basic, hume-curry).
	//   "WIKIJOIN"
	//   "PRODUCT_OFFER"
	//   "OYSTER_FEATURE"
	//   "EXTRACTED_REFPAGE"
	//   "EXPERIMENT"
	//   "SOURCE_PROTO" - A fake reference page based on a text extracted
	// from the source proto. For example, product clusters get such
	// refpages based on the descriptions pulled from their source protos
	// (catalog offers).
	//   "MINED_REFERENCE_PAGE" - Since cl/142284568 this field represents
	// also book reference pages.
	//   "WEBREF_YEAR" - Wikipedia URLs for webref year topic.
	//   "BOOK_REF_PAGES_MINING_PIPELINE" - Pages mined by book reference
	// pages mining pipeline.
	//   "LYRICS_REFERENCE_PAGE" - Reference pages for songs mined by
	// matching content of lyrics pages to the known lyrics of a song. NOTE:
	// The pipeline that produces these is maintained by the kg-music@.
	//   "KG_WEAK_DATA" - From kg topic and all provenances were marked as
	// go/weak-data.
	//   "RELATED_PAGE" - The URL of a webpage related to this entity. The
	// page should contain information about this entity, but this entity
	// does not need to be central to it. Examples would be news stories in
	// which this entity figures. RELATED_PAGE are provided by clients and
	// MINED_RELATED_PAGE are mined programmatically (go/related-pages).
	//   "MINED_RELATED_PAGE"
	//   "KG_SOCIAL_PROFILE" - Url to a social profile belonging to the
	// entity as read from KG.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeprecatedOldSchema")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeprecatedOldSchema") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingUrlSourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingUrlSourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPreprocessingUrlSourceInfoNewSchema: Source
// information for the new reference url Freebase schema.
type RepositoryWebrefPreprocessingUrlSourceInfoNewSchema struct {
	SourceProperty string `json:"sourceProperty,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceProperty") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceProperty") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingUrlSourceInfoNewSchema) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingUrlSourceInfoNewSchema
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefPreprocessingUrlSourceInfoOldSchema: Source
// information for the old reference url Freebase schema.
type RepositoryWebrefPreprocessingUrlSourceInfoOldSchema struct {
	IsOfficial bool `json:"isOfficial,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsOfficial") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsOfficial") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefPreprocessingUrlSourceInfoOldSchema) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefPreprocessingUrlSourceInfoOldSchema
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefProcessorCounter: A single processor counter stored
// as a pair of the counter name and the value.
type RepositoryWebrefProcessorCounter struct {
	Name string `json:"name,omitempty"`

	Value int64 `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefProcessorCounter) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefProcessorCounter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefProcessorTiming: Processor timings as produced by
// NestedPerfCounter, see
// google3/repository/webref/base/nested-perf-counter.h.
type RepositoryWebrefProcessorTiming struct {
	// CpuInstructions: Cpu instructions spent.
	CpuInstructions int64 `json:"cpuInstructions,omitempty,string"`

	// Name: A string identifying the processor timing context.
	Name string `json:"name,omitempty"`

	// ProcessorCounters: Document counters defined by processors. A
	// processor can add and increment counters with
	// NestedPerfCounter::IncrementCounterBy. See
	// go/webref-annotator-metrics.
	ProcessorCounters []*RepositoryWebrefProcessorCounter `json:"processorCounters,omitempty"`

	// ProcessorTimings: Nested measurements, see
	// NestedPerfCounter::ScopedPerfCounter.
	ProcessorTimings []*RepositoryWebrefProcessorTiming `json:"processorTimings,omitempty"`

	// WallTimeNs: Wall time (in nanoseconds).
	WallTimeNs int64 `json:"wallTimeNs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CpuInstructions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CpuInstructions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefProcessorTiming) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefProcessorTiming
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefProductMetadata: Products-specific information about
// the entity. Next available tag: 16.
type RepositoryWebrefProductMetadata struct {
	// ProductLineId: Shopping product line ids (typically moka product line
	// tag) of this entity. Represents shopping product lines, such as
	// iPhone or Canon EOS. Typically, we expect only one id. But keeping
	// repeated, in case we want to merge or aggregate product lines. Using
	// int64, as tag_id in
	// commerce/datastore/processors/moka/proto/moka_annotations.proto.
	ProductLineId googleapi.Uint64s `json:"productLineId,omitempty"`

	// ShoppingIds: All ShoppingIds for this MID that need to be copied to
	// IntentQuery (FunctionCall) if this MID is used in intent generation.
	// See go/iql-shopping-ids for details.
	ShoppingIds *KnowledgeAnswersIntentQueryShoppingIds `json:"shoppingIds,omitempty"`

	// Possible values:
	//   "CATALOG_ENTRY" - It's an entity that maps to a single product
	// catalog entry.
	//   "VARIANT_CLUSTER" - It's an entity that maps to a product variant
	// cluster.
	//   "OTHER" - Higher level product entities.
	//   "PRODUCT_LINE" - A product line entity that includes more than one
	// similar product from the same brand.
	//   "BRAND" - The entity is a product brand.
	//   "CATEGORY" - The entity is a category of products.
	//   "NOT_PRODUCT" - The entity does not have a known product type. This
	// is equivalent to not having the type field set.
	Type string `json:"type,omitempty"`

	// VariantClusterId: All unique variant cluster ids (shopping's GPCs) of
	// this entity.
	VariantClusterId googleapi.Uint64s `json:"variantClusterId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ProductLineId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProductLineId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefProductMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefProductMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefQueryIndices: Identifies a set of NavBoost queries in
// the CompositeDoc. Typically these queries were collapsed by WebRef
// into a single query and they were treated by the annotator as
// equivalent. They all contain the same mentions (at the same offsets).
type RepositoryWebrefQueryIndices struct {
	// FeaturesIndex: The set of indices in the NavBoostQuery::features()
	// array that belong to the collapsed features.
	FeaturesIndex []int64 `json:"featuresIndex,omitempty"`

	// QueriesIndex: The index of the query in NavBoostDocument::queries()
	// array.
	QueriesIndex int64 `json:"queriesIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeaturesIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeaturesIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefQueryIndices) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefQueryIndices
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRangeAnnotations: The fields hold "non-entity"
// annotations of text.
type RepositoryWebrefRangeAnnotations struct {
	// SegmentMentions: The actual mentions. Note SegmentMentions contains
	// some fields specific to entity annotation, and those are typically
	// not populated here.
	SegmentMentions []*RepositoryWebrefSegmentMentions `json:"segmentMentions,omitempty"`

	// Type: The type of ranges contained in this message.
	//
	// Possible values:
	//   "STOPWORDS" - In some annotation modes, we mark which fields are
	// considered stopwords, that is terms that do not alter the entity
	// meaning of the query.
	//   "SHOPPING_STOPWORDS" - QPrime stopwords.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SegmentMentions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SegmentMentions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRangeAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRangeAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRangeMetadata: Metadata keeper for an annotated range
// of a segment. Next available tag: 3.
type RepositoryWebrefRangeMetadata struct {
	// BeginOffset: Start index of range (within the segment) being
	// annotated.
	BeginOffset int64 `json:"beginOffset,omitempty"`

	// TokenCount: Number of tokens in the range being annotated.
	TokenCount int64 `json:"tokenCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BeginOffset") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BeginOffset") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRangeMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRangeMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRefconDocumentMentionSpans: Encapsulates the textual
// mention spans extracted from a document, split per token.
type RepositoryWebrefRefconDocumentMentionSpans struct {
	// MentionSpan: Per token mention spans.
	MentionSpan []*RepositoryWebrefRefconMentionSpans `json:"mentionSpan,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MentionSpan") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MentionSpan") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRefconDocumentMentionSpans) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRefconDocumentMentionSpans
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRefconMentionSpans: Describes a mention annotated by
// Webref in the given document.
type RepositoryWebrefRefconMentionSpans struct {
	// Segment: Segment types in which the mention appears. Now deprecated,
	// because we only care about CONTENT segments.
	//
	// Possible values:
	//   "CONTENT" - The document content (excluding the title) or the text
	// of the query.
	//   "ANCHOR" - One of the anchors of the document.
	//   "QUERY" - One of the navboost queries pointing to the document.
	//   "URL" - The document URL.
	//   "TITLE" - The title of the document.
	//   "IMAGE_QUERY" - One of the image navboost queries pointing to an
	// image in the document.
	//   "CONTEXT_ENTITY" - Contextual entity injected by an outside
	// attachment. For details, see go/webref-priors.
	//   "CONTEXT_QUERY" - Contextual query that can be provided in Qref.
	//   "SPORE_GRAPH" - Names and URLs from Spore GraphAnnotations.
	//   "META_CONTENT_TAG" - The content-value of the tags "description"
	// and "keyword".
	//   "IMG_ALT_TAG" - The content of alt text in tags.
	//   "INSTANT_QUERY" - One of the instant navboost queries of the
	// document. They can be found in
	// cdoc.doc_attachments().GetExtension(InstantNavBoostDocument::
	// message_set_extension).instant_nav_boost_document().
	//   "VIDEO_TRANSCRIPT" - The transcript of a video.
	//   "VIDEO_OCR" - The ocr text of a video.
	//   "IMAGE_OCR" - The ocr text of an image.
	//   "LENS" - Fake segment that contains all Lens entity mids in a given
	// image.
	Segment []string `json:"segment,omitempty"`

	// ShortToken: Fingerprinted tokens which form the mention span. We are
	// using 32-bit instead of usual 64bit fingerprints - this greatly
	// reduces the memory footprint while still keeping the chance of
	// collision reasonably low for our specific use case (1 in 4 billion).
	ShortToken []int64 `json:"shortToken,omitempty"`

	// Token: Fingerprinted tokens which form the mention span.
	Token googleapi.Uint64s `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Segment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Segment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRefconMentionSpans) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRefconMentionSpans
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRefconQueryStats: Contains high level search query
// statistics of the document.
type RepositoryWebrefRefconQueryStats struct {
	// AggregatedQueryCount: Total query count for the document from all the
	// query terms. Can be used to estimate the popularity of the document.
	AggregatedQueryCount float64 `json:"aggregatedQueryCount,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AggregatedQueryCount") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedQueryCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRefconQueryStats) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRefconQueryStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefRefconQueryStats) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefRefconQueryStats
	var s1 struct {
		AggregatedQueryCount gensupport.JSONFloat64 `json:"aggregatedQueryCount"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AggregatedQueryCount = float64(s1.AggregatedQueryCount)
	return nil
}

// RepositoryWebrefRefconRefconDocumentMetadata: Encapsulates additional
// CDoc metadata needed by Refcon.
type RepositoryWebrefRefconRefconDocumentMetadata struct {
	QueryStats *RepositoryWebrefRefconQueryStats `json:"queryStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "QueryStats") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QueryStats") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRefconRefconDocumentMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRefconRefconDocumentMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefRefconRefconNameInfo: Refcon name representation in
// split concepts sstable. This is a simplified version of
// repository_webref.GlobalNameInfo.
type RepositoryWebrefRefconRefconNameInfo struct {
	Confidence float64 `json:"confidence,omitempty"`

	IdfScore float64 `json:"idfScore,omitempty"`

	IsGeneratedName bool `json:"isGeneratedName,omitempty"`

	IsI18nName bool `json:"isI18nName,omitempty"`

	IsStrongIdentifier bool `json:"isStrongIdentifier,omitempty"`

	IsTranslatedName bool `json:"isTranslatedName,omitempty"`

	// Language: Languages of the name, unknown language is not kept.
	// TODO(b/145976266) Don't use the deprecated language enum.
	Language []int64 `json:"language,omitempty"`

	// NamePrior: Name prior to use. We read this from the prior for the
	// "unknown" language.
	NamePrior float64 `json:"namePrior,omitempty"`

	// NormalizedName: The normalized name.
	NormalizedName string `json:"normalizedName,omitempty"`

	// OriginalName: Filled only if different than normalized_name.
	OriginalName string `json:"originalName,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefRefconRefconNameInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefRefconRefconNameInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefRefconRefconNameInfo) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefRefconRefconNameInfo
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		IdfScore   gensupport.JSONFloat64 `json:"idfScore"`
		NamePrior  gensupport.JSONFloat64 `json:"namePrior"`
		Score      gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.IdfScore = float64(s1.IdfScore)
	s.NamePrior = float64(s1.NamePrior)
	s.Score = float64(s1.Score)
	return nil
}

// RepositoryWebrefReferencePageScores: Signals used for mining new
// reference pages, set by the reference-page-scorer processor.
type RepositoryWebrefReferencePageScores struct {
	// BookScore: Stores score for later offline voting to choose reference
	// pages. If zero, it's not a good book reference page.
	BookScore float64 `json:"bookScore,omitempty"`

	// FirstScore: The raw topicality score of the primary entity.
	FirstScore float64 `json:"firstScore,omitempty"`

	// HasSpecialLinks: Whether the primary entity has any "special" links.
	// Currently a link is considered special if it has a good implication
	// probability and has no negative disambiguation probability.
	HasSpecialLinks bool `json:"hasSpecialLinks,omitempty"`

	// MedianMentionScore: The median mentions core of the primary entity.
	MedianMentionScore float64 `json:"medianMentionScore,omitempty"`

	// NavboostCoverage: The navboost token coverage ratio. All queries are
	// taken into account.
	NavboostCoverage float64 `json:"navboostCoverage,omitempty"`

	// ReferencePageScore: Reference page score used to select the reference
	// page owner.
	ReferencePageScore float64 `json:"referencePageScore,omitempty"`

	// Selected: True if the entity is selected as the reference page owner.
	Selected bool `json:"selected,omitempty"`

	// SingleTopicness: A score in [0, 1] which indicates the single
	// topicness of the entity.
	SingleTopicness float64 `json:"singleTopicness,omitempty"`

	// SingleTopicnessV2: This should have the same semantic as
	// single_topicness, and should replace it in the long term.
	SingleTopicnessV2 float64 `json:"singleTopicnessV2,omitempty"`

	// TitleCoverage: =================================== Signals for the
	// single topicness. Only filled in for the primary (i.e., top ranked)
	// entity. The title token coverage ratio.
	TitleCoverage float64 `json:"titleCoverage,omitempty"`

	// TotalSum: The sum of raw topicality scores for all entities in this
	// page.
	TotalSum float64 `json:"totalSum,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BookScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BookScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefReferencePageScores) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefReferencePageScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefReferencePageScores) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefReferencePageScores
	var s1 struct {
		BookScore          gensupport.JSONFloat64 `json:"bookScore"`
		FirstScore         gensupport.JSONFloat64 `json:"firstScore"`
		MedianMentionScore gensupport.JSONFloat64 `json:"medianMentionScore"`
		NavboostCoverage   gensupport.JSONFloat64 `json:"navboostCoverage"`
		ReferencePageScore gensupport.JSONFloat64 `json:"referencePageScore"`
		SingleTopicness    gensupport.JSONFloat64 `json:"singleTopicness"`
		SingleTopicnessV2  gensupport.JSONFloat64 `json:"singleTopicnessV2"`
		TitleCoverage      gensupport.JSONFloat64 `json:"titleCoverage"`
		TotalSum           gensupport.JSONFloat64 `json:"totalSum"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BookScore = float64(s1.BookScore)
	s.FirstScore = float64(s1.FirstScore)
	s.MedianMentionScore = float64(s1.MedianMentionScore)
	s.NavboostCoverage = float64(s1.NavboostCoverage)
	s.ReferencePageScore = float64(s1.ReferencePageScore)
	s.SingleTopicness = float64(s1.SingleTopicness)
	s.SingleTopicnessV2 = float64(s1.SingleTopicnessV2)
	s.TitleCoverage = float64(s1.TitleCoverage)
	s.TotalSum = float64(s1.TotalSum)
	return nil
}

// RepositoryWebrefSegmentMention: A single Mention within a segment as
// defined by SegmentMentions.SegmentType
type RepositoryWebrefSegmentMention struct {
	Mention *RepositoryWebrefMention `json:"mention,omitempty"`

	// Possible values:
	//   "CONTENT" - The document content (excluding the title) or the text
	// of the query.
	//   "ANCHOR" - One of the anchors of the document.
	//   "QUERY" - One of the navboost queries pointing to the document.
	//   "URL" - The document URL.
	//   "TITLE" - The title of the document.
	//   "IMAGE_QUERY" - One of the image navboost queries pointing to an
	// image in the document.
	//   "CONTEXT_ENTITY" - Contextual entity injected by an outside
	// attachment. For details, see go/webref-priors.
	//   "CONTEXT_QUERY" - Contextual query that can be provided in Qref.
	//   "SPORE_GRAPH" - Names and URLs from Spore GraphAnnotations.
	//   "META_CONTENT_TAG" - The content-value of the tags "description"
	// and "keyword".
	//   "IMG_ALT_TAG" - The content of alt text in tags.
	//   "INSTANT_QUERY" - One of the instant navboost queries of the
	// document. They can be found in
	// cdoc.doc_attachments().GetExtension(InstantNavBoostDocument::
	// message_set_extension).instant_nav_boost_document().
	//   "VIDEO_TRANSCRIPT" - The transcript of a video.
	//   "VIDEO_OCR" - The ocr text of a video.
	//   "IMAGE_OCR" - The ocr text of an image.
	//   "LENS" - Fake segment that contains all Lens entity mids in a given
	// image.
	SegmentType string `json:"segmentType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mention") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSegmentMention) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSegmentMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefSegmentMentions: Annotations of a single docjoin
// segment. A CDoc has several distinct data types which we call
// "segments" (see SegmentType for complete list). SegmentMentions
// contains all the mentions for a given (document, segment) pair. For
// queries there is only a single CONTENT segment.
type RepositoryWebrefSegmentMentions struct {
	// Mention: A list of all the places the entity in question was
	// annotated within this segment. The (indexing.annotations.goldmine)
	// option is for Goldmine AnnotationsFinder to include Mention only when
	// segment_type="CONTENT"
	Mention []*RepositoryWebrefMention `json:"mention,omitempty"`

	// Possible values:
	//   "CONTENT" - The document content (excluding the title) or the text
	// of the query.
	//   "ANCHOR" - One of the anchors of the document.
	//   "QUERY" - One of the navboost queries pointing to the document.
	//   "URL" - The document URL.
	//   "TITLE" - The title of the document.
	//   "IMAGE_QUERY" - One of the image navboost queries pointing to an
	// image in the document.
	//   "CONTEXT_ENTITY" - Contextual entity injected by an outside
	// attachment. For details, see go/webref-priors.
	//   "CONTEXT_QUERY" - Contextual query that can be provided in Qref.
	//   "SPORE_GRAPH" - Names and URLs from Spore GraphAnnotations.
	//   "META_CONTENT_TAG" - The content-value of the tags "description"
	// and "keyword".
	//   "IMG_ALT_TAG" - The content of alt text in tags.
	//   "INSTANT_QUERY" - One of the instant navboost queries of the
	// document. They can be found in
	// cdoc.doc_attachments().GetExtension(InstantNavBoostDocument::
	// message_set_extension).instant_nav_boost_document().
	//   "VIDEO_TRANSCRIPT" - The transcript of a video.
	//   "VIDEO_OCR" - The ocr text of a video.
	//   "IMAGE_OCR" - The ocr text of an image.
	//   "LENS" - Fake segment that contains all Lens entity mids in a given
	// image.
	SegmentType string `json:"segmentType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mention") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSegmentMentions) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSegmentMentions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefSemanticDateRange: A date range for an entity. E.g.
// lifespan of a person, release date of a movie, ...
type RepositoryWebrefSemanticDateRange struct {
	// Confidence: Indicates how confident we are this extracted range is
	// relevant to a document (document to be infered from context).
	Confidence float64 `json:"confidence,omitempty"`

	// End: End date extracted from the entity along end_source_property.
	End string `json:"end,omitempty"`

	// EndSourceProperty: KG-property that links the entity to the end date.
	EndSourceProperty string `json:"endSourceProperty,omitempty"`

	// SourceEntityMid: Entity from which this range was extracted.
	SourceEntityMid string `json:"sourceEntityMid,omitempty"`

	// Start: Start date extracted from the entity along
	// start_source_property.
	Start string `json:"start,omitempty"`

	// StartSourceProperty: KG-property that links the entity to the start
	// date.
	StartSourceProperty string `json:"startSourceProperty,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSemanticDateRange) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSemanticDateRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefSemanticDateRange) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefSemanticDateRange
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// RepositoryWebrefSimplifiedAnchor: Represents a subpart of the anchor
// data of the docjoins, but is much smaller. When we build this
// SimplifiedAnchor from the anchor data of the docjoins, by specifying
// the option separate_onsite_anchors to SimplifiedAnchorsBuilder, we
// can also separate the onsite anchors from the other (offdomain)
// anchors. So onsite anchors and offdomain anchors will have their own
// count, score, normalized score, and total volume (.._offdomain and
// .._onsite fields). For example, if there are 10 onsite anchors and 20
// offdomain anchors for the anchor text "mountain view", then the
// count_from_onsite is 10, and the count_from_offdomain is 20 when we
// separate onsite anchors out. Otherwise (if we don't separate onsite
// anchors), the count is 30 (10 + 20) and we don't have values in the
// .._offdomain and .._onsite fields.
type RepositoryWebrefSimplifiedAnchor struct {
	// AnchorIndices: The set of (equivalent from WebRef point of view)
	// anchors used to produce this segment.
	AnchorIndices *RepositoryWebrefAnchorIndices `json:"anchorIndices,omitempty"`

	// AnchorText: The anchor text. Note that the normalized text is not
	// populated.
	AnchorText *RepositoryWebrefLocalizedString `json:"anchorText,omitempty"`

	// Count: The number of times we see this anchor text.
	Count uint64 `json:"count,omitempty,string"`

	// CountFromOffdomain: Count, score, normalized score, and volume of
	// offdomain anchors.
	CountFromOffdomain uint64 `json:"countFromOffdomain,omitempty,string"`

	// CountFromOnsite: Count, score, normalized score, and volume of onsite
	// anchors.
	CountFromOnsite uint64 `json:"countFromOnsite,omitempty,string"`

	// NormalizedScore: The normalized score, which is computed from the
	// score and the total_volume.
	NormalizedScore float64 `json:"normalizedScore,omitempty"`

	NormalizedScoreFromOffdomain float64 `json:"normalizedScoreFromOffdomain,omitempty"`

	NormalizedScoreFromOnsite float64 `json:"normalizedScoreFromOnsite,omitempty"`

	// Score: The sum/aggregate of the anchor scores that have the same
	// text.
	Score float64 `json:"score,omitempty"`

	// ScoreFromFragment: The sum/aggregate of the anchor scores that direct
	// to a fragment and have the same text.
	ScoreFromFragment float64 `json:"scoreFromFragment,omitempty"`

	ScoreFromOffdomain float64 `json:"scoreFromOffdomain,omitempty"`

	ScoreFromOffdomainFragment float64 `json:"scoreFromOffdomainFragment,omitempty"`

	ScoreFromOnsite float64 `json:"scoreFromOnsite,omitempty"`

	ScoreFromOnsiteFragment float64 `json:"scoreFromOnsiteFragment,omitempty"`

	// ScoreFromRedirect: The sum/aggregate of the anchor scores that direct
	// to a different wiki title and have the same text. NOTE: url direct to
	// a fragment score is not included in this value.
	ScoreFromRedirect float64 `json:"scoreFromRedirect,omitempty"`

	// TotalVolume: The total score volume used for normalization.
	TotalVolume float64 `json:"totalVolume,omitempty"`

	TotalVolumeFromOffdomain float64 `json:"totalVolumeFromOffdomain,omitempty"`

	TotalVolumeFromOnsite float64 `json:"totalVolumeFromOnsite,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorIndices") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorIndices") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSimplifiedAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSimplifiedAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefSimplifiedAnchor) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefSimplifiedAnchor
	var s1 struct {
		NormalizedScore              gensupport.JSONFloat64 `json:"normalizedScore"`
		NormalizedScoreFromOffdomain gensupport.JSONFloat64 `json:"normalizedScoreFromOffdomain"`
		NormalizedScoreFromOnsite    gensupport.JSONFloat64 `json:"normalizedScoreFromOnsite"`
		Score                        gensupport.JSONFloat64 `json:"score"`
		ScoreFromFragment            gensupport.JSONFloat64 `json:"scoreFromFragment"`
		ScoreFromOffdomain           gensupport.JSONFloat64 `json:"scoreFromOffdomain"`
		ScoreFromOffdomainFragment   gensupport.JSONFloat64 `json:"scoreFromOffdomainFragment"`
		ScoreFromOnsite              gensupport.JSONFloat64 `json:"scoreFromOnsite"`
		ScoreFromOnsiteFragment      gensupport.JSONFloat64 `json:"scoreFromOnsiteFragment"`
		ScoreFromRedirect            gensupport.JSONFloat64 `json:"scoreFromRedirect"`
		TotalVolume                  gensupport.JSONFloat64 `json:"totalVolume"`
		TotalVolumeFromOffdomain     gensupport.JSONFloat64 `json:"totalVolumeFromOffdomain"`
		TotalVolumeFromOnsite        gensupport.JSONFloat64 `json:"totalVolumeFromOnsite"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NormalizedScore = float64(s1.NormalizedScore)
	s.NormalizedScoreFromOffdomain = float64(s1.NormalizedScoreFromOffdomain)
	s.NormalizedScoreFromOnsite = float64(s1.NormalizedScoreFromOnsite)
	s.Score = float64(s1.Score)
	s.ScoreFromFragment = float64(s1.ScoreFromFragment)
	s.ScoreFromOffdomain = float64(s1.ScoreFromOffdomain)
	s.ScoreFromOffdomainFragment = float64(s1.ScoreFromOffdomainFragment)
	s.ScoreFromOnsite = float64(s1.ScoreFromOnsite)
	s.ScoreFromOnsiteFragment = float64(s1.ScoreFromOnsiteFragment)
	s.ScoreFromRedirect = float64(s1.ScoreFromRedirect)
	s.TotalVolume = float64(s1.TotalVolume)
	s.TotalVolumeFromOffdomain = float64(s1.TotalVolumeFromOffdomain)
	s.TotalVolumeFromOnsite = float64(s1.TotalVolumeFromOnsite)
	return nil
}

type RepositoryWebrefSimplifiedAnchors struct {
	Anchor []*RepositoryWebrefSimplifiedAnchor `json:"anchor,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchor") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSimplifiedAnchors) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSimplifiedAnchors
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefSimplifiedCompositeDoc: Represents an information
// which is very close to composite doc, but compresses how the anchors
// are represented to save space. Next available tag: 15.
type RepositoryWebrefSimplifiedCompositeDoc struct {
	// Anchors: The composite doc anchors trimmed and transformed in a
	// smaller data structure and aggregated (if they have the exact same
	// text).
	Anchors *RepositoryWebrefSimplifiedAnchors `json:"anchors,omitempty"`

	// CdocContainer: IMPORTANT: do not access this field directly, use the
	// simplified-cdoc-access library functions to get the composite doc out
	// of this proto.
	CdocContainer *Proto2BridgeMessageSet `json:"cdocContainer,omitempty"`

	// DocumentMentionSpans: The composite doc spans which were annotated
	// with entities by Webref.
	DocumentMentionSpans *RepositoryWebrefRefconDocumentMentionSpans `json:"documentMentionSpans,omitempty"`

	// MatchingMetadata: Metadata related to why this doc was matched to its
	// owning entity.
	MatchingMetadata *RepositoryWebrefPreprocessingUrlMatchingMetadata `json:"matchingMetadata,omitempty"`

	ObsoleteAnchorsWithoutInterwiki *RepositoryWebrefSimplifiedAnchors `json:"obsoleteAnchorsWithoutInterwiki,omitempty"`

	// RefconDocumentMetadata: Additional document metadata needed by
	// Refcon.
	RefconDocumentMetadata *RepositoryWebrefRefconRefconDocumentMetadata `json:"refconDocumentMetadata,omitempty"`

	// Possible values:
	//   "BASE" - Rank: 0 - 10B
	//   "DAILY"
	//   "ALEXANDRIA_BASE_SNAPSHOTS" - Prefer BASE instead.
	//   "UNIFIED_ZEPPELIN" - Rank: 10B - 100B
	//   "UNIFIED_ZEPPELIN_HIGH_QUALITY" - Rank: 10B - 20B
	//   "UNIFIED_ZEPPELIN_MEDIUM_QUALITY" - In the Docjoins repository
	// (go/dj2qi), we split documents ranking from 10B to 100B into two
	// corpora. UNIFIED_ZEPPELIN_MEDIUM_QUALITY is the tier that is only
	// internally used by Docjoin access API, indicating the corpus with
	// documents from 20B to 100B. Rank: 20B - 100B
	//   "UNIFIED_ZEPPELIN_LOW_QUALITY" - Rank: 100B - 140B
	//   "UNIFIED_LANDFILL" - Rank: 140B - 520B
	//   "UZLQ_AND_UL" - In the Docjoins repository (go/dj2qi), we merge
	// UZLQ and UL into one corpus. UZLQ_AND_UL tier is only interanlly used
	// by Docjoin access API, indicating the corpus with documents covering
	// UZLQ and UL. Please contact docjoin-access@ before you use it. Rank:
	// 100B - 520B
	//   "QUALITY_SWAP_BASE" - Quality docjoins in Union. Note: To perform a
	// read of the quality swap that roughly corresponds to BASE, you should
	// read both QUALITY_SWAP_BASE and QUALITY_SWAP_FRESH.
	//   "QUALITY_SWAP_UNIFIED_ZEPPELIN"
	//   "QUALITY_SWAP_UNIFIED_ZEPPELIN_HIGH_QUALITY"
	//   "QUALITY_SWAP_UNIFIED_ZEPPELIN_MEDIUM_QUALITY"
	//   "QUALITY_SWAP_UNIFIED_ZEPPELIN_LOW_QUALITY"
	//   "ADWORDS_BASE" - This is dead, but there are still several
	// references to it in google3.
	SourceSnapshotType string `json:"sourceSnapshotType,omitempty"`

	// Url: The URL, populated independently of whether we have a
	// CompositeDoc proto. If the cdoc exists, the url is the same as
	// CompositeDoc.doc.url.
	Url string `json:"url,omitempty"`

	WebrefOutlinks *Proto2BridgeMessageSet `json:"webrefOutlinks,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anchors") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anchors") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSimplifiedCompositeDoc) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSimplifiedCompositeDoc
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefSubSegmentIndex: LINT.IfChange Some document segments
// may consist of multiple sub-segments (e.g. a document might have
// multiple anchors or navboost queries). SubSegmentIndex contains all
// information needed to identify the sub-segment (e.g. specific query,
// query feature or or anchor) where the mention is located.
type RepositoryWebrefSubSegmentIndex struct {
	// AnchorIndex: Pointer to the exact set of anchors in the cdoc.
	AnchorIndex *RepositoryWebrefAnchorIndices `json:"anchorIndex,omitempty"`

	// GenericIndex: Pointer to the Webref-internal Segment indices. Can't
	// be mapped back to the CDoc.
	GenericIndex *RepositoryWebrefGenericIndices `json:"genericIndex,omitempty"`

	// ImageQueryIndex: Pointer to the exact set of image navboost queries
	// in the cdoc.
	ImageQueryIndex *RepositoryWebrefImageQueryIndices `json:"imageQueryIndex,omitempty"`

	// JgnIndex: Pointer to the proto in the cdoc and index within the proto
	// for Spore.
	JgnIndex *RepositoryWebrefJuggernautIndices `json:"jgnIndex,omitempty"`

	// QueryIndex: Pointer to the exact set of queries in the cdoc.
	QueryIndex *RepositoryWebrefQueryIndices `json:"queryIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSubSegmentIndex) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSubSegmentIndex
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefSupportTransferRule: Each SupportTransferRule proto
// represents a single STBR (go/stbr) rule. These rules are attached to
// entities (called STBR sources). Each rule attached to an STBR source
// talks about a single entity (called STBR target). If an STBR source
// gets annotated, its attached rules result in creation of annotations
// for corresponding STBR targets. An STBR source might have more than
// one STBR rule attached to it. STBR rules allow us to address cases
// where otherwise annotations for what people say do not match what
// people mean. For example, a query [france vs spain] uses names of
// countries while in sports context the query would actually be about
// national sports teams of those countries. In other words, STBR rules
// have meaning of "in this particular context (see domain +
// target_collection fields below) a mention of this particular STBR
// source (the entity this rule is attached to) actually should be
// treated as that STBR target (see the target field below)". To
// describe the meaning of STBR settings (proto fields below), we are
// going to use a hypothetical example of an STBR rule making Search
// stack treat annotations for /m/France as annotations for
// /m/Louis_XIV, since he was the one saying "I am the state". In this
// example /m/France is going to be the STBR source. NOTICE: When adding
// new fields also update
// client::support_transfer::SortDeterministically to ensure
// deterministic sorting of the SupportTransferRule objects. Next
// available tag: 11. LINT.IfChange
type RepositoryWebrefSupportTransferRule struct {
	// AllowWildcardIntents: If set to true, allow STBR targets to trigger
	// intents like ShowEntity that do not have explicit lists of allowed
	// collections, accepting entities with any collections instead. This
	// setting together with target_collection define what intents are
	// allowed to be triggered by the STBR target. Be careful with setting
	// this option to 'true', as in the case of our example the query
	// [france] would result in the knowledge panel for the monarch. Louis
	// XIV might've wanted such a behaviour, but you are probably not him.
	AllowWildcardIntents bool `json:"allowWildcardIntents,omitempty"`

	// Domain: Name of Aqua grammar domain this STBR rule is restricted to.
	// If the domain is set to anything other than "default", the STBR rule
	// is only going to result in an annotation for the STBR target inside
	// of the Aqua domain of the corresponding name. If there is no such
	// Aqua domain, the rule is going to be ignored. The default value of
	// string "default" for domain makes it possible for the STBR rule to be
	// used inside Loose Parser.
	Domain string `json:"domain,omitempty"`

	// IsReverseLink: Whether this rule points from an STBR target to its
	// STBR source. This field is an internal implementation detail that is
	// not configurable by customers. Inside QRewrite we have to keep track
	// of relations between entities. Among other things it is useful to
	// remember which STBR target a given STBR source came from. For that
	// purpose we attach an STBR proto to the STBR target, reversing the
	// rule, i.e, putting STBR source's mid as the target etc. For this
	// reversed rule we set is_reverse_link to true.
	IsReverseLink bool `json:"isReverseLink,omitempty"`

	// MentionsOnly: STBR doesn't just create annotations for STBR targets.
	// It also can modify search result support (useful in PostRef) in order
	// for web pages supporting the STBR source to also support the STBR
	// target. Otherwise in PostRef annotations for STBR targets are going
	// to be demoted, resulting in the STBR rule potentially not affecting
	// anything. Regarding treatment of this result support, STBR has 3
	// possible modes that for historical reasons are represented as 2
	// booleans - mentions_only and support_share. No more than one of these
	// bools is supposed to be set to 'true' for a rule. Setting both to
	// 'true' at once would lead to undefined behaviour. These 3 modes are:
	// 1. (default) All the support gets assigned to the STBR target. The
	// STBR source is left with no support. To be extra sure,
	// interpretations that still managed to get triggered by STBR source
	// are suppressed later unless STBR target has no interpretations of its
	// own. In other words this is "we are pretty sure that if France is
	// mentioned in a query that might be talking about a person, we want to
	// treat the query as if it is about Louis XIV". This mode would result
	// in a query [age of france] being treated as [age of louis xiv], while
	// [population of france] still being about the country unless
	// [population of louis xiv] matches some intents. For this mode both
	// mentions_only and support_share should be set to 'false'. 2. Support
	// is shared between STBR source ans STBR target. That allows both STBR
	// source and STBR target to trigger some intents with KScorer later
	// deciding which intent is better. In other words, this is "when it is
	// not clear whether a query is about France of Louis XIV, provide
	// KScorer with both options and let it decide". For this mode
	// mentions_only should be set to 'false' and support_share should be
	// set to 'true'. 3. While annotations for the STBR target are created,
	// no support is given to those annotations. This is more like "we are
	// mostly sure that a mention of France is about the country, but just
	// for a rare case it is about the monarch, we would like to have Louis
	// XIV annotated". For this mode mentions_only should be set to 'true'
	// and support_share should be set to 'false'.
	MentionsOnly bool `json:"mentionsOnly,omitempty"`

	SupportShare bool `json:"supportShare,omitempty"`

	// Target: Mid of the STBR target, e.g. "/m/04pwg" for Louis XIV.
	Target string `json:"target,omitempty"`

	// TargetCollection: Collection that is going to be assigned to the
	// target when the annotation for the target is created. This setting
	// together with allow_wildcard_intents define what intents are allowed
	// to be triggered by the STBR target. At the moment those annotations
	// get created, we can not afford to fetch information about the STBR
	// target from Topic Server, but the target mid by itself doesn't mean
	// much for the Search stack. Setting up the collection for that
	// annotated mid allows us to provide at least some information to the
	// stack on how to treat the mid. This collection together with domain
	// and allow_wildcard_intents fields (see below) defines what intents
	// can be triggered by annotations created for this STBR target. Intents
	// that accept only entities of specific collections can only be
	// triggered if the value of this field matches one of the allowed
	// collections for that intent. In our example, KGCollection.debug_id
	// might be "/collection/people" if we care about context of the monarch
	// as a person, e.g. if we would like to understand queries like [how
	// many children does france have] as [how many childred does lous xiv
	// have]. Or, if we would like to be more restrictive and to only apply
	// the rule to contexts that only make sense for monarch, e.g. [how long
	// did france reign], we might decide to use more specific
	// "/collection/monarchs" instead.
	TargetCollection *RepositoryWebrefKGCollection `json:"targetCollection,omitempty"`

	// UserCountry: The user country this rule is for. Rules only take
	// effect if the country is not set, set to an empty string or matches
	// the country that is detected for the user - like the country user
	// issued the query from. E.g. "US" for the United States.
	UserCountry string `json:"userCountry,omitempty"`

	// UserLanguage: User language this rule is for. Rules only take effect
	// if the language is not set, set to an empty string or matches the
	// language that is detected for the user's query. E.g. set it to "en"
	// if you want the STBR rule to only work for users working from
	// computers with English being set as the main language. Keep it unset
	// if you want the rule not to depend on local language settings of
	// user's computer.
	UserLanguage string `json:"userLanguage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllowWildcardIntents") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllowWildcardIntents") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefSupportTransferRule) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefSupportTransferRule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefTaskData struct {
	// IsReadable: Signals about quality of data that was shown to raters.
	// If document/query and concept description are readable.
	IsReadable bool `json:"isReadable,omitempty"`

	ItemId uint64 `json:"itemId,omitempty,string"`

	ProjectId uint64 `json:"projectId,omitempty,string"`

	TaskDetails *RepositoryWebrefTaskDetails `json:"taskDetails,omitempty"`

	TaskId uint64 `json:"taskId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "IsReadable") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsReadable") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefTaskData) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefTaskData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefTaskDetails: Information about what the raters saw,
// how the information was presented to them, or how they interacted
// with the task. Next id: 6
type RepositoryWebrefTaskDetails struct {
	// ExperimentId: The id of the experiment in case we are dealing with a
	// refx data experiment. Should only be set in case of data experiments
	// to gather topicality ratings, in order to allow separating these
	// ratings from regular ratings.
	ExperimentId string `json:"experimentId,omitempty"`

	LastSubmitTimestamp int64 `json:"lastSubmitTimestamp,omitempty,string"`

	TopicDescription string `json:"topicDescription,omitempty"`

	TopicName string `json:"topicName,omitempty"`

	TopicUrl string `json:"topicUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExperimentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExperimentId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefTaskDetails) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefTaskDetails
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefTripleAnnotation struct {
	// ConfidenceScore: Triple annotation confidence_score (value between 0
	// and 1). Higher values correspond to higher confidence.
	ConfidenceScore float64 `json:"confidenceScore,omitempty"`

	// IsImplied: The information in this triple is implied by other
	// triple(s) in the document.
	IsImplied bool `json:"isImplied,omitempty"`

	// KgVerified: Set to true if this triple is present in the webref model
	// as either a link or property value. This implies that the information
	// is in the Knowledge Graph. Note that it can happen that a triple is
	// in KG but not present in the webref model.
	KgVerified bool `json:"kgVerified,omitempty"`

	// Mentions: Occurrences of the triple on the document
	Mentions []*RepositoryWebrefTripleMention `json:"mentions,omitempty"`

	// PredMid: The mid of the predicate kg-property(-ies). In order, in the
	// case of multihop links.
	PredMid googleapi.Uint64s `json:"predMid,omitempty"`

	// Stuff: Generic container to hold additional data such as signals,
	// debug data etc. Data that can be stored in this field and their
	// TypeIds: repository_webref::evaluation::ECMDebug (TypeId 192627933),
	// defined in
	// repository/webref/evaluation/triple_annotations/triple-diff.proto
	// Debugging data to be used in WebIt's ECM report.
	Stuff *Proto2BridgeMessageSet `json:"stuff,omitempty"`

	Triple *KnowledgeGraphTriple `json:"triple,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConfidenceScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConfidenceScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefTripleAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefTripleAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefTripleAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefTripleAnnotation
	var s1 struct {
		ConfidenceScore gensupport.JSONFloat64 `json:"confidenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ConfidenceScore = float64(s1.ConfidenceScore)
	return nil
}

// RepositoryWebrefTripleAnnotations: Represents a collection of triples
// annotated by Webref/Webit. Included in WebrefEntities
type RepositoryWebrefTripleAnnotations struct {
	Annotations []*RepositoryWebrefTripleAnnotation `json:"annotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Annotations") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Annotations") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefTripleAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefTripleAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefTripleMention struct {
	// PredMention: Document mention of the predicate
	PredMention *RepositoryWebrefSegmentMention `json:"predMention,omitempty"`

	// ScopeBegin: The [begin, end) byte offset of the document scope where
	// this triple was annotated. This corresponds to a table row or a text
	// sentence where the triple was identified. The sub_mention can be
	// outside the scope when the subject is inferred from the table title.
	ScopeBegin int64 `json:"scopeBegin,omitempty"`

	ScopeEnd int64 `json:"scopeEnd,omitempty"`

	// ScopeFprint: Fingerprint2011 of space-joined SAFT tokens in the
	// scope.
	ScopeFprint uint64 `json:"scopeFprint,omitempty,string"`

	// Stuff: Generic container to hold additional data such as triple
	// scoped signals. Data that can be stored in this field and their
	// TypeIds: repository_webref::universal::webit::ScopeSignals (TypeId
	// 192754198), defined in
	// repository/webref/universal/processors/understanding/webit.proto
	Stuff *Proto2BridgeMessageSet `json:"stuff,omitempty"`

	// SubMention: Document mention of the subject
	SubMention *RepositoryWebrefSegmentMention `json:"subMention,omitempty"`

	// ValueMention: Document mention of the value
	ValueMention *RepositoryWebrefSegmentMention `json:"valueMention,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PredMention") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PredMention") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefTripleMention) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefTripleMention
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefUniversalNgramData: This proto is filled with n-gram
// data during model building.
type RepositoryWebrefUniversalNgramData struct {
	// Idf: IDF of the n-gram.
	Idf float64 `json:"idf,omitempty"`

	// PluralProb: Probability that the n-gram is a plural form of a word.
	// This information is extracted from SAFT annotations of queries. See
	// HasPluralProperty().
	PluralProb float64 `json:"pluralProb,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Idf") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Idf") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefUniversalNgramData) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefUniversalNgramData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefUniversalNgramData) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefUniversalNgramData
	var s1 struct {
		Idf        gensupport.JSONFloat64 `json:"idf"`
		PluralProb gensupport.JSONFloat64 `json:"pluralProb"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Idf = float64(s1.Idf)
	s.PluralProb = float64(s1.PluralProb)
	return nil
}

// RepositoryWebrefWebrefAnnotationStats: Detailed statistics about the
// annotations in the document. Contains, for example, the number of
// ranges with name matches, the number of entities matched, and the
// number of entities with mentions. This information can be used to
// tune some WebRef-internal scoring functions based on existing
// annotations (e.g., document-length normalization in global link
// support). Next available tag: 10.
type RepositoryWebrefWebrefAnnotationStats struct {
	// DocWeight: The relative weight of the document, used when aggregating
	// information from multiple documents.
	DocWeight float64 `json:"docWeight,omitempty"`

	// NgramContext: Extracted n-grams context scores (in cdoc language,
	// weighted by doc_weight) output if webref_populate_annotation_ngrams
	// is enabled.
	NgramContext []*RepositoryWebrefNgramContext `json:"ngramContext,omitempty"`

	// NumCandidates: The total number of candidates.
	NumCandidates int64 `json:"numCandidates,omitempty,string"`

	// NumConceptsWithCandidates: The total number of concepts with at least
	// 1 candidate.
	NumConceptsWithCandidates int64 `json:"numConceptsWithCandidates,omitempty,string"`

	// NumConceptsWithMentions: The total number of concepts with at least 1
	// mention.
	NumConceptsWithMentions int64 `json:"numConceptsWithMentions,omitempty,string"`

	// NumRangesWithCandidates: The total number of RangeData objects with
	// at least one candidate.
	NumRangesWithCandidates int64 `json:"numRangesWithCandidates,omitempty,string"`

	// StatsPerType: Statistics for each token type.
	StatsPerType []*RepositoryWebrefAnnotationStatsPerType `json:"statsPerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocWeight") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocWeight") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefAnnotationStats) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefAnnotationStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefWebrefAnnotationStats) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefWebrefAnnotationStats
	var s1 struct {
		DocWeight gensupport.JSONFloat64 `json:"docWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DocWeight = float64(s1.DocWeight)
	return nil
}

// RepositoryWebrefWebrefAttachmentMetadata: Annotation metadata for an
// individual entity.
type RepositoryWebrefWebrefAttachmentMetadata struct {
	// FeatureType: Oyster Feature Type.
	//
	// Possible values:
	//   "TYPE_ANY" - ABSTRACT
	//   "TYPE_TRANSPORTATION" - ABSTRACT
	//   "TYPE_ROUTE" - A route is any section of road (or rails, etc.) that
	// has a name. This includes city streets as well as highways. Road
	// segments can belong to multiple routes (e.g. El Camino, CA-82).
	//   "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE" - DEPRECATED
	//   "TYPE_HIGHWAY" - ABSTRACT
	//   "TYPE_HIGHWAY_1"
	//   "TYPE_HIGHWAY_2"
	//   "TYPE_HIGHWAY_3"
	//   "TYPE_HIGHWAY_4"
	//   "TYPE_HIGHWAY_5"
	//   "TYPE_HIGHWAY_6"
	//   "TYPE_HIGHWAY_7"
	//   "TYPE_HIGHWAY_8"
	//   "TYPE_HIGHWAY_9"
	//   "TYPE_BICYCLE_ROUTE" - A designated bicycle route, whose segments
	// may consist of any combination of bicycle paths, bicycle lanes, or
	// city streets.
	//   "TYPE_TRAIL" - A designated trail, which may consist of paved
	// walkways, dirt paths, fire road, streets or highways, etc.
	//   "TYPE_SEGMENT" - ABSTRACT
	//   "TYPE_ROAD"
	//   "TYPE_RAILWAY" - Railroads use several different incompatible track
	// types.
	//   "TYPE_STANDARD_TRACK"
	//   "TYPE_JR_TRACK"
	//   "TYPE_NARROW_TRACK"
	//   "TYPE_MONORAIL_TRACK"
	//   "TYPE_SUBWAY_TRACK"
	//   "TYPE_LIGHT_RAIL_TRACK"
	//   "TYPE_BROAD_TRACK"
	//   "TYPE_HIGH_SPEED_RAIL"
	//   "TYPE_TROLLEY_TRACK" - Tracks for streetcars, cable-cars, etc.
	// Ferries are services that are part of the road network but are not
	// roads. They typically involve fares and scheduled departure times.
	//   "TYPE_FERRY" - ABSTRACT
	//   "TYPE_FERRY_BOAT" - The vast majority of ferries are ferry boats.
	//   "TYPE_FERRY_TRAIN" - Also called a "car transport", a ferry train
	// is a rail service that carries passengers and their vehicles across
	// undrivable terrain. The Channel Tunnel ("Chunnel") is the most famous
	// example, but they are also common in the Alps where they connect
	// neighboring valleys otherwise separated by impassable mountains.
	//   "TYPE_VIRTUAL_SEGMENT" - Any plausible 1-dimensional path through a
	// 2+ dimensional space, for the purposes of making graph-search-based
	// routing possible. Such segments can be used to model paths through
	// parking lots, squares, floors of buildings and other areas.
	//   "TYPE_INTERSECTION" - An intersection consists of a collection of
	// segments that terminate at the same location. This is topological
	// definition: it may not match what a typical user would think of as an
	// "intersection". See TYPE_INTERSECTION_GROUP, below, for more
	// information. Each segment terminating at an intersection has an
	// "endpoint type" that specifies how that segment is terminated: stop
	// sign, yield sign, three-way light, etc.
	//   "TYPE_TRANSIT" - ABSTRACT
	//   "TYPE_TRANSIT_STATION" - DEPRECATED
	//   "TYPE_BUS_STATION" - DEPRECATED
	//   "TYPE_TRAMWAY_STATION" - DEPRECATED
	//   "TYPE_TRAIN_STATION" - DEPRECATED
	//   "TYPE_SUBWAY_STATION" - DEPRECATED
	//   "TYPE_FERRY_TERMINAL" - DEPRECATED
	//   "TYPE_AIRPORT" - DEPRECATED
	//   "TYPE_AIRPORT_CIVIL" - DEPRECATED
	//   "TYPE_AIRPORT_MILITARY" - DEPRECATED
	//   "TYPE_AIRPORT_MIXED" - DEPRECATED
	//   "TYPE_HELIPORT" - DEPRECATED
	//   "TYPE_SEAPLANE_BASE" - DEPRECATED
	//   "TYPE_AIRSTRIP" - DEPRECATED
	//   "TYPE_CABLE_CAR_STATION" - DEPRECATED
	//   "TYPE_GONDOLA_LIFT_STATION" - DEPRECATED
	//   "TYPE_FUNICULAR_STATION" - DEPRECATED
	//   "TYPE_SPECIAL_STATION" - DEPRECATED
	//   "TYPE_HORSE_CARRIAGE_STATION" - DEPRECATED
	//   "TYPE_MONORAIL_STATION" - DEPRECATED
	//   "TYPE_SEAPORT" - DEPRECATED
	//   "TYPE_TRANSIT_STOP" - DEPRECATED
	//   "TYPE_TRANSIT_TRIP" - DEPRECATED
	//   "TYPE_TRANSIT_DEPARTURE" - DEPRECATED
	//   "TYPE_TRANSIT_LEG" - DEPRECATED
	//   "TYPE_TRANSIT_LINE" - A transit line is a collection of transit
	// legs, associated with some invariant properties of the trips that run
	// over the legs. See also transitline.proto
	//   "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE" - TYPE_TRANSIT_AGENCY was
	// moved to 0xC91. This deprecated enum value still exists for debugging
	// purposes only.
	//   "TYPE_TRANSIT_TRANSFER" - DEPRECATED
	//   "TYPE_SEGMENT_PATH" - ABSTRACT
	//   "TYPE_ROAD_SIGN" - Road sign features have names, point geometry,
	// etc. They also have segment_path data (see below) which lists the
	// segments that refer to the sign. See segment.proto for the reference
	// from the segment to the road sign.
	//   "TYPE_INTERSECTION_GROUP" - Our TYPE_INTERSECTION feature, above,
	// models the point where one or more segments terminate. This is
	// topological definition: it may not match what a typical user would
	// think of as an "intersection". Consider the intersections where
	// Hayes, Market, Larkin, and 9th Street meet near (37.77765,
	// -122.41638) in San Francisco. Most people would probably consider
	// this a single feature, even though we model it as four separate
	// TYPE_INTERSECTION features. This TYPE_INTERSECTION_GROUP is used to
	// model the user's concept of a complex intersection.
	//   "TYPE_PATHWAY" - RESERVED
	//   "TYPE_RESTRICTION_GROUP" - A restriction group describes a set of
	// segment restrictions that belong together and have a name or an
	// associated event. See also restriction_group.proto
	//   "TYPE_TOLL_CLUSTER" - A toll cluster is either a single point on a
	// segment (represented as a point at the end of the segment that has
	// ENDPOINT_TOLL_BOOTH set) or a group of points on various road
	// segments in MapFacts that represents one or more lanes passing
	// through a toll fixture that all go to the same routing destination.
	// Each toll cluster should have at most a single price per payment
	// method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has
	// different prices for multiple routing destinations, drivers need to
	// be in the correct lane before passing through the toll fixture and
	// hence such a fixture is represented by multiple toll clusters. A toll
	// cluster does not necessarily represent a real-world entity, e.g. a
	// particular plaza/structure as perceived by humans. This is because a
	// plaza can be represented by more than one toll cluster. We require
	// toll clusters to have names, but they might be non-unique. For
	// example, a plaza might be represented by multiple toll clusters that
	// may have the same plaza name. For further details, please see
	// go/toll-cluster-schema.
	//   "TYPE_POLITICAL" - ABSTRACT
	//   "TYPE_COUNTRY"
	//   "TYPE_ADMINISTRATIVE_AREA" - ABSTRACT
	//   "TYPE_ADMINISTRATIVE_AREA1"
	//   "TYPE_US_STATE" - DEPRECATED
	//   "TYPE_GB_COUNTRY" - DEPRECATED
	//   "TYPE_JP_TODOUFUKEN" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA2"
	//   "TYPE_GB_FORMER_POSTAL_COUNTY" - DEPRECATED
	//   "TYPE_GB_TRADITIONAL_COUNTY" - DEPRECATED
	//   "TYPE_ADMINISTRATIVE_AREA3"
	//   "TYPE_ADMINISTRATIVE_AREA4"
	//   "TYPE_ADMINISTRATIVE_AREA5"
	//   "TYPE_ADMINISTRATIVE_AREA6"
	//   "TYPE_ADMINISTRATIVE_AREA7"
	//   "TYPE_ADMINISTRATIVE_AREA8"
	//   "TYPE_ADMINISTRATIVE_AREA9"
	//   "TYPE_COLLOQUIAL_AREA" - e.g. Silicon Valley
	//   "TYPE_RESERVATION" - A reservation is a region collectively held or
	// governed by indigenous people and officially recognized by the
	// country’s government at the federal or state level. A reservation
	// may be fully contained within an administrative feature or partially
	// contained within two or more. These regions are referred to by
	// different categorical names depending on country and even by state,
	// including but not limited to: “Indian Reservations”, “Indian
	// Reserves”, “Land Claim Settlement Lands”, “Indian Lands”,
	// “Treaty Lands”, “Indigenous Territories”, etc. A reservation
	// is not a historic indigenous territory boundary or a region which has
	// applied for land rights but has not yet received official
	// recognition.
	//   "TYPE_LOCALITY"
	//   "TYPE_GB_POST_TOWN" - DEPRECATED
	//   "TYPE_JP_GUN" - DEPRECATED
	//   "TYPE_JP_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_JP_SUB_SHIKUCHOUSON" - DEPRECATED
	//   "TYPE_COLLOQUIAL_CITY" - An entity widely considered to be a city,
	// that may itself be made up of smaller political entities, some of
	// which are cities/towns/villages themselves. For example, the
	// colloquial view of Sydney, Australia actually comprises many smaller
	// cities, but is regarded as a city itself. This type is not suitable
	// for modeling official metro-/micropolitan or other statistical areas.
	//   "TYPE_SUBLOCALITY" - ABSTRACT
	//   "TYPE_US_BOROUGH" - DEPRECATED
	//   "TYPE_GB_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_OOAZA" - DEPRECATED
	//   "TYPE_JP_KOAZA" - DEPRECATED
	//   "TYPE_JP_GAIKU" - DEPRECATED
	//   "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY" - DEPRECATED
	//   "TYPE_JP_CHIBAN" - DEPRECATED
	//   "TYPE_JP_EDABAN" - DEPRECATED
	//   "TYPE_SUBLOCALITY1"
	//   "TYPE_SUBLOCALITY2"
	//   "TYPE_SUBLOCALITY3"
	//   "TYPE_SUBLOCALITY4"
	//   "TYPE_SUBLOCALITY5"
	//   "TYPE_NEIGHBORHOOD"
	//   "TYPE_CONSTITUENCY"
	//   "TYPE_DESIGNATED_MARKET_AREA" - Designated Market Areas (or DMAs)
	// are used by marketing and ratings companies (such as the Nielsen
	// Media Research company) to describe geographical regions (such as the
	// greater New York metropolitan area) that are covered by a set of
	// television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In
	// the United States, DMAs should have a DMA numeric ID name, tagged
	// with the FLAG_DESIGNATED_MARKET_AREA_ID flag.
	//   "TYPE_SCHOOL_DISTRICT"
	//   "TYPE_LAND_PARCEL"
	//   "TYPE_DISPUTED_AREA" - Eventually we'll have more data for disputed
	// areas (e.g., who makes claims on the area, who has de facto control,
	// etc.). For the moment, we just define a type so we can simply mark
	// areas as disputed.
	//   "TYPE_POLICE_JURISDICTION" - Boundaries representing the
	// jurisdiction of a particular police station.
	//   "TYPE_STATISTICAL_AREA" - An area used for aggregating statistical
	// data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a
	// third nibble so we can add an abstract parent above it later if need
	// be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as
	// TYPE_STATISTICAL_AREA1).
	//   "TYPE_CONSTITUENCY_FUTURE" - DEPRECATED
	//   "TYPE_PARK" - DEPRECATED
	//   "TYPE_GOLF_COURSE" - DEPRECATED
	//   "TYPE_LOCAL_PARK" - DEPRECATED
	//   "TYPE_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_PARK" - DEPRECATED
	//   "TYPE_US_NATIONAL_MONUMENT" - DEPRECATED
	//   "TYPE_NATIONAL_FOREST" - DEPRECATED
	//   "TYPE_PROVINCIAL_PARK" - DEPRECATED
	//   "TYPE_PROVINCIAL_FOREST" - DEPRECATED
	//   "TYPE_CAMPGROUNDS" - DEPRECATED
	//   "TYPE_HIKING_AREA" - DEPRECATED
	//   "TYPE_BUSINESS" - DEPRECATED
	//   "TYPE_GOVERNMENT" - DEPRECATED
	//   "TYPE_BORDER_CROSSING" - DEPRECATED
	//   "TYPE_CITY_HALL" - DEPRECATED
	//   "TYPE_COURTHOUSE" - DEPRECATED
	//   "TYPE_EMBASSY" - DEPRECATED
	//   "TYPE_LIBRARY" - DEPRECATED
	//   "TYPE_SCHOOL" - DEPRECATED
	//   "TYPE_UNIVERSITY" - DEPRECATED
	//   "TYPE_EMERGENCY" - DEPRECATED
	//   "TYPE_HOSPITAL" - DEPRECATED
	//   "TYPE_PHARMACY" - DEPRECATED
	//   "TYPE_POLICE" - DEPRECATED
	//   "TYPE_FIRE" - DEPRECATED
	//   "TYPE_DOCTOR" - DEPRECATED
	//   "TYPE_DENTIST" - DEPRECATED
	//   "TYPE_VETERINARIAN" - DEPRECATED
	//   "TYPE_TRAVEL_SERVICE" - DEPRECATED
	//   "TYPE_LODGING" - DEPRECATED
	//   "TYPE_RESTAURANT" - DEPRECATED
	//   "TYPE_GAS_STATION" - DEPRECATED
	//   "TYPE_PARKING" - DEPRECATED
	//   "TYPE_POST_OFFICE" - DEPRECATED
	//   "TYPE_REST_AREA" - DEPRECATED
	//   "TYPE_CASH_MACHINE" - DEPRECATED
	//   "TYPE_CAR_RENTAL" - DEPRECATED
	//   "TYPE_CAR_REPAIR" - DEPRECATED
	//   "TYPE_SHOPPING" - DEPRECATED
	//   "TYPE_GROCERY" - DEPRECATED
	//   "TYPE_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_ECO_TOURIST_DESTINATION" - DEPRECATED
	//   "TYPE_BIRD_WATCHING" - DEPRECATED
	//   "TYPE_FISHING" - DEPRECATED
	//   "TYPE_HUNTING" - DEPRECATED
	//   "TYPE_NATURE_RESERVE" - DEPRECATED
	//   "TYPE_TEMPLE" - DEPRECATED
	//   "TYPE_CHURCH" - DEPRECATED
	//   "TYPE_GURUDWARA" - DEPRECATED
	//   "TYPE_HINDU_TEMPLE" - DEPRECATED
	//   "TYPE_MOSQUE" - DEPRECATED
	//   "TYPE_SYNAGOGUE" - DEPRECATED
	//   "TYPE_STADIUM" - DEPRECATED
	//   "TYPE_BAR" - DEPRECATED
	//   "TYPE_MOVIE_RENTAL" - DEPRECATED
	//   "TYPE_COFFEE" - DEPRECATED
	//   "TYPE_GOLF" - DEPRECATED
	//   "TYPE_BANK" - DEPRECATED
	//   "TYPE_DOODLE" - DEPRECATED
	//   "TYPE_GROUNDS" - DEPRECATED
	//   "TYPE_AIRPORT_GROUNDS" - DEPRECATED
	//   "TYPE_BUILDING_GROUNDS" - DEPRECATED
	//   "TYPE_CEMETERY" - DEPRECATED
	//   "TYPE_HOSPITAL_GROUNDS" - DEPRECATED
	//   "TYPE_INDUSTRIAL" - DEPRECATED
	//   "TYPE_MILITARY" - DEPRECATED
	//   "TYPE_SHOPPING_CENTER" - DEPRECATED
	//   "TYPE_SPORTS_COMPLEX" - DEPRECATED
	//   "TYPE_UNIVERSITY_GROUNDS" - DEPRECATED
	//   "TYPE_DEPRECATED_TARMAC" - DEPRECATED
	//   "TYPE_ENCLOSED_TRAFFIC_AREA" - DEPRECATED
	//   "TYPE_PARKING_LOT" - DEPRECATED
	//   "TYPE_PARKING_GARAGE" - DEPRECATED
	//   "TYPE_OFF_ROAD_AREA" - DEPRECATED
	//   "TYPE_BORDER" - A line representing the boundary between two
	// features. See border.proto for details.
	//   "TYPE_BUILDING" - DEPRECATED
	//   "TYPE_GEOCODED_ADDRESS" - An association of a point with an
	// address, with no other information.
	//   "TYPE_NATURAL_FEATURE" - ABSTRACT
	//   "TYPE_TERRAIN" - Expanses of land that share common surface
	// attributes. These areas would look more or less uniform from a high
	// altitude.
	//   "TYPE_SAND"
	//   "TYPE_BEACH"
	//   "TYPE_DUNE"
	//   "TYPE_ROCKY"
	//   "TYPE_ICE"
	//   "TYPE_GLACIER"
	//   "TYPE_BUILT_UP_AREA" - Terrain that looks populated.
	//   "TYPE_VEGETATION" - Terrain that is covered in vegetation.
	//   "TYPE_SHRUBBERY"
	//   "TYPE_WOODS"
	//   "TYPE_AGRICULTURAL"
	//   "TYPE_GRASSLAND"
	//   "TYPE_TUNDRA"
	//   "TYPE_DESERT"
	//   "TYPE_SALT_FLAT" - A flat expanse of salt left by the evaporation
	// of a body of salt water.
	//   "TYPE_WATER" - Features can be TYPE_WATER if we don't have enough
	// information to properly type the body of water. TYPE_WATER is also
	// used as the type for child features that compose a TYPE_RIVER
	// feature.
	//   "TYPE_OCEAN" - One of the large salt-water bodies that covers most
	// of the globe.
	//   "TYPE_BAY" - An ocean subdivision formed by a coastal indentation.
	// Includes coves and gulfs.
	//   "TYPE_BIGHT" - An open body of water formed by a slight coastal
	// indentation.
	//   "TYPE_LAGOON"
	//   "TYPE_SEA" - An ocean subdivision more or less confined by land and
	// islands.
	//   "TYPE_STRAIT" - A long narrow ocean subdivision. Includes sounds.
	//   "TYPE_INLET"
	//   "TYPE_FJORD"
	//   "TYPE_LAKE" - An inland body of standing water.
	//   "TYPE_SEASONAL_LAKE" - A lake that dries up part of the year.
	//   "TYPE_RESERVOIR" - An artificial body of water, possibly created by
	// a dam, often used for irrigation or house use.
	//   "TYPE_POND"
	//   "TYPE_RIVER" - An inland body of moving water, or parts associated
	// with it in which there is little or no current (backwater).
	//   "TYPE_RAPIDS"
	//   "TYPE_DISTRIBUTARY" - A branch which flows away from the main
	// river. Includes deltas.
	//   "TYPE_CONFLUENCE" - A place where two or more rivers join.
	//   "TYPE_WATERFALL"
	//   "TYPE_SPRING" - A place where ground water flows naturally out of
	// the ground.
	//   "TYPE_GEYSER"
	//   "TYPE_HOT_SPRING"
	//   "TYPE_SEASONAL_RIVER" - A river that dries up part of the year.
	//   "TYPE_WADI" - A dry riverbed that occasionally receives
	// flashfloods.
	//   "TYPE_ESTUARY" - A place at the end of a river where fresh and salt
	// water mix. Includes tidal creeks and limans.
	//   "TYPE_WETLAND" - Land that is usually flooded. Includes bogs,
	// marshes, flats, moors, and swamps.
	//   "TYPE_WATER_NAVIGATION"
	//   "TYPE_FORD" - A shallow place where water may be waded through.
	//   "TYPE_CANAL" - A narrow passage used by boats. Normally artificial.
	//   "TYPE_HARBOR" - A deep place near a shore where ships commonly drop
	// anchor.
	//   "TYPE_CHANNEL" - A deep part in a body of water that is suitable
	// for navigation. Includes narrows.
	//   "TYPE_REEF" - Rocks, coral, sandbars, or other features beneath the
	// surface of the water that pose a hazard to passing ships. Includes
	// shoals.
	//   "TYPE_REEF_FLAT" - A relatively shallow zone of the back reef
	// located closest to the shore, that may be exposed at low tide.
	//   "TYPE_REEF_GROWTH" - A small section of rocks, coral, sandbars, or
	// other features beneath the surface of the water that forms part of a
	// reef.
	//   "TYPE_REEF_EXTENT" - The full extent of the reef complex.
	//   "TYPE_REEF_ROCK_SUBMERGED" - A submerged rock in the water.
	//   "TYPE_IRRIGATION" - Man-made (and sometimes natural) channels used
	// to move water. This type was used for both dam structures and water
	// that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for
	// dam structures and TYPE_RESERVOIR for water.
	//   "TYPE_DAM" - DEPRECATED
	//   "TYPE_DRINKING_WATER"
	//   "TYPE_CURRENT" - Includes overfalls.
	//   "TYPE_WATERING_HOLE" - A natural depression filled with water where
	// animals come to drink.
	//   "TYPE_TECTONIC" - ABSTRACT This type is incorrectly under
	// TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now
	// fixed. See TYPE_WATERING_HOLE for the replacement.
	//   "TYPE_WATERING_HOLE_DEPRECATED" - DEPRECATED
	//   "TYPE_VOLCANO"
	//   "TYPE_LAVA_FIELD"
	//   "TYPE_FISSURE"
	//   "TYPE_FAULT"
	//   "TYPE_LAND_MASS"
	//   "TYPE_CONTINENT"
	//   "TYPE_ISLAND"
	//   "TYPE_ATOLL"
	//   "TYPE_OCEAN_ROCK_EXPOSED" - An exposed rock in the water.
	//   "TYPE_CAY" - A small, low-elevation, sandy island formed on the
	// surface of coral reefs
	//   "TYPE_PENINSULA" - A stretch of land projecting into water.
	// Includes capes and spits.
	//   "TYPE_ISTHMUS" - A strip of land connecting two larger land masses,
	// such as continents.
	//   "TYPE_ELEVATED" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_PEAK" - Elevations that have a distinctive peak.
	//   "TYPE_NUNATAK" - A peak or ridge of a mountain that extends through
	// a glacier.
	//   "TYPE_SPUR" - A subsidiary peak of a mountain.
	//   "TYPE_PASS" - A route over an otherwise difficult to traverse
	// feature. Includes saddle.
	//   "TYPE_PLATEAU" - Elevations that are flat on top. Includes mesas
	// and buttes.
	//   "TYPE_RIDGE" - A ridge is a geographical feature consisting of a
	// chain of mountains or hills that form a continuous elevated crest
	// with a single ridgeline for some distance.
	//   "TYPE_RAVINE" - Steep declines usually carved by erosion. Includes
	// valleys, canyons, ditches, and gorges.
	//   "TYPE_CRATER" - Depressions causes by impact, explosion, and
	// sometimes sink-holes.
	//   "TYPE_KARST" - Topography formed on limestone and gypsum by
	// dissolution with sinkholes, caves, etc.
	//   "TYPE_CLIFF" - A vertical or nearly vertical slope. Includes
	// escarpments.
	//   "TYPE_VISTA" - An elevated place that is notable for having a good
	// view. Raster digital elevation data. This is not a type to be used by
	// providers or consumed by clients.
	//   "TYPE_DIGITAL_ELEVATION_MODEL" - RESERVED
	//   "TYPE_UPLAND" - Land along streams higher than the alluvial plain
	// or stream terrace.
	//   "TYPE_TERRACE"
	//   "TYPE_SLOPE" - Land not so steep as a cliff, but changing
	// elevation. Includes slides.
	//   "TYPE_CONTOUR_LINE" - All the points on the polygon are at the same
	// elevation.
	//   "TYPE_PAN" - A near-level shallow, natural depression or basin,
	// usually containing an intermittent lake, pond, or pool.
	//   "TYPE_UNSTABLE_HILLSIDE"
	//   "TYPE_MOUNTAIN_RANGE" - A series of mountains or hills ranged in a
	// line and connected by high ground. Mountain ranges usually consist of
	// many smaller ridges. For example, the Himalayas, the Andes. the Alps,
	// etc.
	//   "TYPE_UNDERSEA" - Features that are notable for being high (or
	// low), or for having sudden changes in elevation. These features might
	// have an "elevation" extension to specify the actual elevation. See
	// ElevationProto for more information.
	//   "TYPE_SUBMARINE_SEAMOUNT" - includes peaks, ranges, and spurs
	//   "TYPE_SUBMARINE_RIDGE"
	//   "TYPE_SUBMARINE_GAP" - includes saddles
	//   "TYPE_SUBMARINE_PLATEAU"
	//   "TYPE_SUBMARINE_DEEP"
	//   "TYPE_SUBMARINE_VALLEY" - includes trenches and troughs
	//   "TYPE_SUBMARINE_BASIN"
	//   "TYPE_SUBMARINE_SLOPE"
	//   "TYPE_SUBMARINE_CLIFF"
	//   "TYPE_SUBMARINE_PLAIN"
	//   "TYPE_SUBMARINE_FRACTURE_ZONE"
	//   "TYPE_CAVE" - Don't use 0xA7. Use 8 bits for additional types under
	// TYPE_NATURAL_FEATURE, so we don't run out of space. The following are
	// miscellaneous natural features that don't fit any of the categories
	// above.
	//   "TYPE_ROCK"
	//   "TYPE_ARCHIPELAGO" - A feature representing a group or chain of
	// islands.
	//   "TYPE_POSTAL" - ABSTRACT
	//   "TYPE_POSTAL_CODE" - This is the type for postal codes which are
	// complete and independent enough that there should be a feature for
	// them (e.g. US 5-digit ZIP codes). For even more detailed suffixes
	// that further subdivide a postal code (such as the +4 component in US
	// ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX
	// address component. When a range or set of postal codes share the same
	// geographical area, e.g. because a precise subdivision does not exist
	// or this subdivision is unknown, this type is used for each individual
	// postal code.
	//   "TYPE_POSTAL_CODE_PREFIX" - A prefix portion of a postal code which
	// does not meet the requirements for TYPE_POSTAL_CODE, but which is
	// useful to search for, for example UK outcodes.
	//   "TYPE_PREMISE" - DEPRECATED
	//   "TYPE_SUB_PREMISE" - DEPRECATED This is deprecated and we want to
	// use TYPE_COMPOUND_SECTION instead.
	//   "TYPE_SUITE" - DEPRECATED
	//   "TYPE_POST_TOWN" - The term "post town" is used for a
	// locality-like-entity that is only used for postal addresses.
	//   "TYPE_POSTAL_ROUND" - DEPRECATED
	//   "TYPE_META_FEATURE" - ABSTRACT
	//   "TYPE_DATA_SOURCE" - Every data source used in constructing a data
	// repository has a corresponding feature that provides more information
	// about that data source. The extra information is stored in the
	// optional data_source field below.
	//   "TYPE_LOCALE" - A locale feature provides region specific
	// conventions such as preferred language and formatting details for
	// time, date, and currency values. Locales aren't necessary defined by
	// physical geographic features, so they are classified as
	// meta-features.
	//   "TYPE_TIMEZONE" - A timezone feature is used to specify the region
	// covering an international timezone. When a point is covered by
	// multiple timezone features, the most specific one can be used to
	// compute the local time at this point. Most specific implies a much
	// smaller region or the one that is closer to the center. A feature's
	// timezone can be specified in the repeated related_timezone field.
	//   "TYPE_BUSINESS_CHAIN" - A business chain feature is used to
	// represent a chain, e.g. Starbucks, McDonald's, etc. Other features
	// representing specific stores/franchises of this chain may refer to
	// one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly
	// reserved to commercial chains but can also be used to model
	// organizations such as the Red Cross or the United Nations.
	//   "TYPE_PHONE_NUMBER_PREFIX" - A phone number prefix feature is used
	// to specify the region where phone numbers (typically fixed-line
	// numbers) must begin with a certain prefix. Any phone number prefix
	// down to any level of granularity could be represented by this type.
	//   "TYPE_PHONE_NUMBER_AREA_CODE" - A phone number area code is a
	// prefix which also coincides with the area code, or national
	// destination code, of a particular region.
	//   "TYPE_BUSINESS_CORRIDOR" - A Business Corridor is a dense cluster
	// of semantically similar establishments. TYPE_BUSINESS_CORRIDOR
	// features are distinguished from TYPE_COLLOQUIAL_AREA features because
	// the corridors are not under the political hierarchy, are allowed to
	// be nameless, and may not correspond to well-known real world
	// locations. For more details, see go/geo-corridors-schema.
	//   "TYPE_ADDRESS_TEMPLATE" - An address template feature provides
	// region-specific conventions for structuring addresses. These features
	// aren't necessarily defined by physical geographic features, so they
	// are classified as meta-features.
	//   "TYPE_TRANSIT_AGENCY" - A transit agency operates a number of
	// lines, typically all in the same city, region or country. See also
	// transitagency.proto
	//   "TYPE_FUTURE_GEOMETRY" - A feature whose geometry is planned to
	// replace the geometry on another feature.
	//   "TYPE_EVENT" - DEPRECATED
	//   "TYPE_EARTHQUAKE" - DEPRECATED
	//   "TYPE_HURRICANE" - DEPRECATED
	//   "TYPE_WEATHER_CONDITION" - DEPRECATED
	//   "TYPE_TRANSIENT" - RESERVED
	//   "TYPE_ENTRANCE" - A portal of entry or exit to another feature.
	// Examples: - Subway station entrance. - Parking lot entrance.
	//   "TYPE_CARTOGRAPHIC" - Cartographic features are used to capture
	// real-world objects for which there is no current desire to model any
	// specific attributes. These are only useful to make the map tiles look
	// pretty.
	//   "TYPE_HIGH_TENSION" - DEPRECATED
	//   "TYPE_SKI_TRAIL" - Also see skitrail.proto
	//   "TYPE_SKI_LIFT" - Also see skilift.proto
	//   "TYPE_SKI_BOUNDARY" - Also see skiboundary.proto
	//   "TYPE_WATERSHED_BOUNDARY"
	//   "TYPE_TARMAC" - Starting with TYPE_TARMAC, we use longer IDs, so
	// that we can expand the number of feature types under
	// TYPE_CARTOGRAPHIC.
	//   "TYPE_WALL" - Use TYPE_COMPOUND_GROUND and appropriate gcids for
	// the next two.
	//   "TYPE_PICNIC_AREA" - DEPRECATED
	//   "TYPE_PLAY_GROUND" - DEPRECATED
	//   "TYPE_TRAIL_HEAD"
	//   "TYPE_GOLF_TEEING_GROUND" - Sub-types within a golf course.
	//   "TYPE_GOLF_PUTTING_GREEN"
	//   "TYPE_GOLF_ROUGH"
	//   "TYPE_GOLF_SAND_BUNKER"
	//   "TYPE_GOLF_FAIRWAY"
	//   "TYPE_GOLF_HOLE" - Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop
	// for golf shops instead.
	//   "TYPE_DEPRECATED_GOLF_SHOP" - DEPRECATED
	//   "TYPE_CAMPING_SITE" - DEPRECATED
	//   "TYPE_DESIGNATED_BARBECUE_PIT"
	//   "TYPE_DESIGNATED_COOKING_AREA"
	//   "TYPE_CAMPFIRE_PIT"
	//   "TYPE_WATER_FOUNTAIN"
	//   "TYPE_LITTER_RECEPTACLE"
	//   "TYPE_LOCKER_AREA"
	//   "TYPE_ANIMAL_ENCLOSURE" - Subtype within a zoo - a cage or
	// fenced-off or otherwise delineated area containing animals.
	//   "TYPE_CARTOGRAPHIC_LINE" - A line for a cartographic detail. For
	// example the international date line. Such features should have
	// polyline geometry.
	//   "TYPE_ESTABLISHMENT" - ABSTRACT This type is being replaced by
	// TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2
	//   "TYPE_ESTABLISHMENT_GROUNDS" - DEPRECATED This type has been
	// replaced by TYPE_COMPOUND_BUILDING. For further details, see
	// go/oyster-compounds
	//   "TYPE_ESTABLISHMENT_BUILDING" - DEPRECATED
	//   "TYPE_ESTABLISHMENT_POI" - An establishment which has a address
	// (a.k.a. location or storefront). Note that it *may* also have a
	// service area (e.g. a restaurant that offers both dine-in and
	// delivery). This type of business is also known as a "hybrid" Service
	// Area Business. Establishment POIs can be referenced by TYPE_COMPOUND
	// features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the
	// reciprocal relation of the RELATION_OCCUPIES.
	//   "TYPE_ESTABLISHMENT_SERVICE" - A business without a storefront,
	// e.g. a plumber. It would normally not have a place that a customer
	// could visit to receive service, but it would have an area served by
	// the business. Also known as a "pure" Service Area Business.
	// NOTE(tcain): Using value 0xD441, since we could find ourselves with a
	// need to differentiate service areas from online-only at this level in
	// the future, but still benefit from being able to group those under a
	// common parent, disjoint from TYPE_ESTABLISHMENT_POI.
	//   "TYPE_CELESTIAL" - The root of types of features that are in the
	// sky, rather than on the earth. There will eventually be a hierarchy
	// of types here.
	//   "TYPE_ROAD_MONITOR" - Features responsible for monitoring traffic
	// on roads (usually for speed). Includes cameras at particular points
	// as well as monitors that cover larger spans. Features of this type
	// should have a corresponding gcid that specifies the correct subtype
	// (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was
	// originally named as TYPE_ROAD_CAMERA.
	//   "TYPE_PUBLIC_SPACES_AND_MONUMENTS" - ABSTRACT
	//   "TYPE_STATUE" - Note that this type does not distinguish the nature
	// of the statue (religious, historical, memorial, tourist, ...).
	//   "TYPE_TOWN_SQUARE" - Open space used for events, gathering, or as
	// market-place.
	//   "TYPE_LEVEL" - A feature used to represent a logical level, e.g.
	// floor.
	//   "TYPE_COMPOUND" - ABSTRACT
	//   "TYPE_COMPOUND_GROUNDS" - e.g. campus, compound, parcel.
	//   "TYPE_COMPOUND_BUILDING" - e.g. single family dwelling, office
	// building.
	//   "TYPE_COMPOUND_SECTION" - e.g. suite, room, hallway, cubicle.
	//   "TYPE_TERMINAL_POINT" - A terminal point represents a good location
	// for a user to meet a taxi, ridesharing vehicle, or general driver.
	//   "TYPE_REGULATED_AREA" - An area controlled in some way by an
	// authoritative source, such as a government-designated COVID
	// containment zone or an area under government sanctions. Features of
	// this type should have one or more gcids corresponding to their
	// specific regulation, and client handling of these features may vary
	// based on the type of regulation.
	//   "TYPE_LOGICAL_BORDER" - A grouping of TYPE_BORDER features ("border
	// segments"), which together represent a border between two features of
	// the same type.
	//   "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES" - DEPRECATED
	//   "TYPE_UNKNOWN" - A feature of completely unknown type. This should
	// only be used when absolutely necessary. One example in which this
	// type is useful is in the Chinese importer, which must heuristically
	// segment addresses into components - it often does not know what types
	// to make those components. Please note that the Oyster address
	// formatter does not currently support address components of
	// TYPE_UNKNOWN well.
	FeatureType string `json:"featureType,omitempty"`

	// Index: Indicates which entity this message belongs to:
	// encoded_mid[index].
	Index int64 `json:"index,omitempty"`

	// LatE7: Latitude and longitude of the location. Same format as
	// geostore.PointProto.
	LatE7 int64 `json:"latE7,omitempty"`

	LngE7 int64 `json:"lngE7,omitempty"`

	// OysterId: Oyster Feature ID of the location.
	OysterId *GeostoreFeatureIdProto `json:"oysterId,omitempty"`

	// SingleTopicnessE2: This field is populated for at most one entity. If
	// it is populated, it indicates how confident we are to claim that the
	// page is only about this entity (either it's an official web presence
	// of the entity, or something like a wikipedia page about the entity).
	// For space reasons this is represented as a fixed-point integer with
	// two decimal points precision. Convert it to the interval [0,1] using
	// the following formula: float single_topicness = single_topicness_e2 /
	// 100.f
	SingleTopicnessE2 int64 `json:"singleTopicnessE2,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureType") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefAttachmentMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefAttachmentMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefDocumentInfo: All information that applies
// globally to the document. Next available tag: 11
type RepositoryWebrefWebrefDocumentInfo struct {
	// DocumentMetadata: Information about the document copied from the
	// docjoin. This will never be populated when WebrefEntities appears
	// inside a CompositeDoc, but may we used when it stands alone.
	DocumentMetadata *RepositoryWebrefDocumentMetadata `json:"documentMetadata,omitempty"`

	// Extensions: Optional extensions (e.g. taxonomic classifications).
	Extensions *Proto2BridgeMessageSet `json:"extensions,omitempty"`

	// OutlinkInfos: Information about the outlinks of this document.
	OutlinkInfos *RepositoryWebrefWebrefOutlinkInfos `json:"outlinkInfos,omitempty"`

	// WebrefParsedContentSentence: The content (CONTENT section 0) as
	// parsed by WebrefParser. Only used by
	// //r/w/postprocessing/idf/idf-pipeline for document ngram idf
	// computation. Populated when the annotator is run with
	// webref_populate_parsed_content Each webref_parsed_content_sentence
	// represents one sentence of the context where saft annotations were
	// used to determine the sentence boundaries. See
	// r/w/universal/processors/saft/saft-sentence-helper.h for details.
	WebrefParsedContentSentence []string `json:"webrefParsedContentSentence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocumentMetadata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocumentMetadata") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefDocumentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefDocumentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefEntities: Represents a collection of entities
// returned by the WebRef service. Next available tag: 14.
type RepositoryWebrefWebrefEntities struct {
	// AnnotationStats: Detailed annotation statistics that can, e.g., be
	// used to tune the WebRef scoring logic based on existing (Model-0)
	// annotations.
	AnnotationStats *RepositoryWebrefWebrefAnnotationStats `json:"annotationStats,omitempty"`

	// AnnotatorCheckpointFingerprints: Fingerprints checkpointing annotator
	// stages, can be used to track the source of diffs.
	AnnotatorCheckpointFingerprints []*RepositoryWebrefAnnotatorCheckpointFprint `json:"annotatorCheckpointFingerprints,omitempty"`

	// Category: Categories of the document or query. This replaces the
	// category_score found under EntityAnnotations.
	Category []*RepositoryWebrefCategoryAnnotation `json:"category,omitempty"`

	// DateRange: Dates ranges that are most relevant to the document. E.g.
	// on a document about Dune the 2021 movie, this might hold the release
	// date of that movie.
	DateRange []*RepositoryWebrefSemanticDateRange `json:"dateRange,omitempty"`

	// DocumentInfo: Information that applies globally to the document. The
	// exclude_field option is for Goldmine AnnotationsFinder to exclude
	// document_info from retrieving annotation entities
	DocumentInfo *RepositoryWebrefWebrefDocumentInfo `json:"documentInfo,omitempty"`

	// Entity: The annotated entities, with associated confidence scores and
	// metadata. This is the primary output of WebRef/QRef. In case of
	// Webref output, entities are sorted by decreasing topicality score.
	Entity []*RepositoryWebrefWebrefEntity `json:"entity,omitempty"`

	// RangeAnnotations: These messages contain non-entity annotations of
	// ranges in the document. This might be used to hold part-of-speech
	// annotations, stopword annotations, and other range based information.
	// The exclude_field option is for Goldmine AnnotationsFinder to exclude
	// ranged_annotations from retrieving annotation entities
	RangeAnnotations []*RepositoryWebrefRangeAnnotations `json:"rangeAnnotations,omitempty"`

	// Status: The status message returned by the annotator. Might not be
	// populated on success.
	Status *RepositoryWebrefWebrefStatus `json:"status,omitempty"`

	// Stuff: A generic container to hold extra result data.
	Stuff *Proto2BridgeMessageSet `json:"stuff,omitempty"`

	// TripleAnnotations: Triples inferred from the document When the
	// annotator recognizes phrases, lists or tables associated with a
	// property or relationship for an entity it generates triples that
	// encode that information. This generated data is only substantiated by
	// the document vs KG data which has been verified from multiple sources
	// and/or human curators.
	TripleAnnotations *RepositoryWebrefTripleAnnotations `json:"tripleAnnotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationStats") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationStats") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefEntities) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefEntities
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefEntity: All information about a single entity
// available to WebRef. Next available tag: 7
type RepositoryWebrefWebrefEntity struct {
	// AnnotatedRelationship: Information about links (e.g. implications)
	// between the annotated entities.
	AnnotatedRelationship []*RepositoryWebrefWebrefEntityRelationship `json:"annotatedRelationship,omitempty"`

	// Annotations: All annotations of this entity on the given document.
	Annotations *RepositoryWebrefEntityAnnotations `json:"annotations,omitempty"`

	// Collections: Information about the collections of this entity.
	Collections *RepositoryWebrefWebrefEntityCollections `json:"collections,omitempty"`

	// EntityJoin: Metadata and raw signals used by the annotator.
	EntityJoin *RepositoryWebrefEntityJoin `json:"entityJoin,omitempty"`

	// Id: An identifier (usually a MID) for the entity. Consider using
	// GetWebrefEntityMid() in the adjacent webref-entities-util.h to read
	// this.
	Id *RepositoryWebrefWebrefEntityId `json:"id,omitempty"`

	// Mrf: MRF equivalent representations of this entity as a compound, one
	// for each unique MRF representation. Populated for compounds. Each MRF
	// expression contains a minimum FunctionCall structure wrapped in a
	// nameless Argument without signals and range data. This is not meant
	// to be directly usable as MRF, use QueryJoinToMeaningStructConverter
	// to expand it into a usable form. References to entities are made as
	// component_reference ArgumentValue. Each compound Mention of this
	// entity (not all of its mentions need be compounds, some may be plain
	// entity mentions) have one or more compound_value fields claiming
	// these MRF expressions via their mrf_index. The compound_value has
	// nested components, one for each unique component_reference.index in
	// the MRF expression. The processing expectation is that each
	// ArgumentValue which has a component_reference has its contents
	// discarded and replaced with the MRF for the target entity and mention
	// named by the compound_value.component. If the target is not a
	// compound, the ArgumentValue becomes a simple mid value and the
	// signals are taken from the entity and the mention. If the target is a
	// compound itself, the expansion continues recursively. If the target
	// is a compound with multiple MRFs, a cartesian product of recursive
	// expansions may need to be produced. Along with the
	// component_reference we also emit an example value, but this is purely
	// for human consumption so it's easier to understand what the full
	// compound is like. The processing expectation remains that the
	// ArgumentValue containing a component_reference is completely
	// discarded and rebuilt with the reference target value. If the target
	// has more than one MRF expression, it's not specified which one will
	// be used as an example, except that the choice is guaranteed to be
	// deterministic from run to run.
	Mrf []*KnowledgeAnswersIntentQueryArgument `json:"mrf,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnnotatedRelationship") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotatedRelationship") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefEntity) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefWebrefEntityCollections struct {
	Collection []*RepositoryWebrefKGCollection `json:"collection,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Collection") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Collection") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefEntityCollections) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefEntityCollections
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefEntityId: The identifier of a WebrefEntity (see
// webref-entities.proto). IMPORTANT: Please consider reading this proto
// through GetWebrefEntityMid() in webref-entities-util.h, because this
// proto may: a) contain both freebase_mid and concept_id (this is
// frequently the case to avoid breaking downstream clients), b) only
// contain freebase_mid or only contain concept_id (as the other one is
// technically redundant), c) contain neither of them or be missing
// entirely (potentially in future).
type RepositoryWebrefWebrefEntityId struct {
	// ConceptId: The MID in integer format. Nowadays, this field contains
	// the equivalent representation of `freebase_mid`, i.e. what
	// metaweb::ParseId() returns.
	ConceptId uint64 `json:"conceptId,omitempty,string"`

	// FreebaseMid: The MID in the same format that is returned by
	// metaweb::MidToString(), e.g. "/m/02mjmr" or "/g/11b6vyscgb" or
	// "/t/24bjj59_jbj9f".
	FreebaseMid string `json:"freebaseMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ConceptId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ConceptId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefEntityId) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefEntityId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefEntityRelationship: Information regarding links
// between annotated entities. Next available tag: 5
type RepositoryWebrefWebrefEntityRelationship struct {
	// EntityIndex: The index of the entry in WebrefEntities.entity that the
	// entity carrying this field is linked to. This field must be set.
	EntityIndex int64 `json:"entityIndex,omitempty"`

	// LinkMetadata: Information about the link.
	LinkMetadata *RepositoryWebrefEntityLinkMetadata `json:"linkMetadata,omitempty"`

	// LinkWeight: The weight of the link.
	LinkWeight float64 `json:"linkWeight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityIndex") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefEntityRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefEntityRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *RepositoryWebrefWebrefEntityRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod RepositoryWebrefWebrefEntityRelationship
	var s1 struct {
		LinkWeight gensupport.JSONFloat64 `json:"linkWeight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LinkWeight = float64(s1.LinkWeight)
	return nil
}

// RepositoryWebrefWebrefMustangAttachment: *** THIS ATTACHMENT IS
// DEPRECATED, SEE go/udr/migrate-wma. ***. We still allow legacy use
// case to exist (no forced migration), but we will not accept any new
// usage of WMA, incl. from existing clients. UDR has the same features
// and can be used similarly: - To consume the topical entities
// (+properties, incl. hitcat, browsy, ...) go/udr/migrate-wma provides
// a migration with minimal changes. - To consume IQL, please consult
// go/udr/superroot#access and go/pianno team. The top-level proto used
// to store WebRef entities and IQL expressions in Mustang/TG. The proto
// uses packed repeated fields and variable-length integers in order to
// be as compact as possible. See http://b/5802389 and b/7473898 for
// details on other approaches that were considered and
// space/readability/extensibility trade-offs made. Note: It is not
// recommeded to read this proto directly. Clients of the attachment
// should use the decoder instead:
// repository/webref/tools/kc/indexing/webref-attachment-decoder.h Next
// available tag: 25
type RepositoryWebrefWebrefMustangAttachment struct {
	// CategoryConfidenceE2: The confidence of the category. In the range
	// [0, 100].
	CategoryConfidenceE2 []int64 `json:"categoryConfidenceE2,omitempty"`

	// CategoryEncodedMid: See go/category-annotations-api about the story
	// behind various types of category annotations that are provided using
	// the catmid token and category_encoded_mid fields below. Some of these
	// annotation types are experimental, so please contact
	// related-entities@ if you consider using this data. For production
	// uses, please: 1. Add your use-case to go/hits-clients. 2. Subscribe
	// to hits-users@ to receive general updates and info about
	// deprecations. To convert it to the string form use
	// metaweb::MidToString(encoded_mid) defined in metaweb/util/mid/mid.h
	// The uint64-encoded MIDs of HitCat categories. See
	// google3/repository/webref/hits/hitcat/category.textproto for the
	// complete list of HitCat categories. Should have the same number of
	// elements as the category_confidence_e2 field.
	CategoryEncodedMid googleapi.Uint64s `json:"categoryEncodedMid,omitempty"`

	// ConfidenceE2: The confidence scores of all entities in the
	// encoded_mid array. For space reasons this is also represented as a
	// fixed-point integer with two decimal precision. Convert it to
	// confidence_score using the following formula: float confidence_score
	// = confidence_e2 / 100.0f Should have the same number of elements as
	// the encoded_mid field.
	ConfidenceE2 []int64 `json:"confidenceE2,omitempty"`

	// EncodedMid: The int64-encoded MIDs of the entities in the document
	// sorted by topicality score. To convert it to the string form use
	// metaweb::MidToString(encoded_mid) defined in metaweb/util/mid/mid.h
	// Should have the same number of elements as the topicality_e2 field.
	EncodedMid googleapi.Int64s `json:"encodedMid,omitempty"`

	// EntityMetadata: Per-entity metadata. Not packed (not every entity has
	// metadata). If you'd like to add per-document metadata, see
	// document_metadata instead.
	EntityMetadata []*RepositoryWebrefWebrefAttachmentMetadata `json:"entityMetadata,omitempty"`

	// IqlAttachment: A sub-proto to encode IQL expressions. To be used by
	// Pianno page-level intents and Webref Compounds.
	IqlAttachment *KnowledgeAnswersIntentQueryIndexingIQLAttachment `json:"iqlAttachment,omitempty"`

	// IsAuthorIndex: The indices of all the reference entities in
	// encoded_mid that are authors of the page. Not packed as in most cases
	// when populated, it contains 1 element.
	IsAuthorIndex []int64 `json:"isAuthorIndex,omitempty"`

	// IsPublisherIndex: The indices of all the reference entities in
	// encoded_mid that are publishers of the page (e.g. /m/cnn on
	// "http://www.cnn.com/foo/bar"). Not packed as in most cases when
	// populated, it contains 1 element.
	IsPublisherIndex []int64 `json:"isPublisherIndex,omitempty"`

	// ReferencePageIndex: Only populated when the document is a reference
	// page for an entity. Contains the indices of all reference entities in
	// the encoded_mid and topicality_e2 arrays. Not packed as in most cases
	// when populated, it contains 1 element.
	ReferencePageIndex []int64 `json:"referencePageIndex,omitempty"`

	// TopicalityE2: The topicality scores of all entities in the
	// encoded_mid array. For space reasons this is represented as a
	// fixed-point integer with two decimal points precision. Convert it to
	// topicality_score using the following formula: float topicality_score
	// = topicality_e2 / 100.f Should have the same number of elements as
	// the encoded_mid field.
	TopicalityE2 []int64 `json:"topicalityE2,omitempty"`

	// UnboundIntentMid: The uint64-encoded MID of the unbound intents
	// generated by Pianno. An unbound intent is the annotation of an intent
	// without slots arguments (e.g. Age) declared in Intent Catalog. See
	// go/pianno-asteroid-belt-migration for details. We only keep the top
	// unbound intents with the highest orbit scores. Should have the same
	// number of elements as unbound_intent_score_e2.
	UnboundIntentMid googleapi.Uint64s `json:"unboundIntentMid,omitempty"`

	// UnboundIntentScoreE2: The confidence of the unbound intent.
	// represented as a fixed-point integer with two decimal precision. In
	// the range [0, 100]. Should have the same number of elements as
	// unbound_intent_mid.
	UnboundIntentScoreE2 []int64 `json:"unboundIntentScoreE2,omitempty"`

	// UndermergedMembers: [Experimental code. Do not use ] Entities that
	// webref identified as being the same concept (undermerged).
	UndermergedMembers []*RepositoryWebrefWebrefMustangAttachmentUndermergedMembers `json:"undermergedMembers,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CategoryConfidenceE2") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryConfidenceE2") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefMustangAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefMustangAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefWebrefMustangAttachmentUndermergedMembers struct {
	// EncodedMid: Experimental code, do not use.
	EncodedMid googleapi.Uint64s `json:"encodedMid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EncodedMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EncodedMid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefMustangAttachmentUndermergedMembers) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefMustangAttachmentUndermergedMembers
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefOutlinkInfo: Information about the outlinks for
// one specific target URL, from a given annotated document. Next
// available tag: 7
type RepositoryWebrefWebrefOutlinkInfo struct {
	// ByteLength: The length in bytes of such a link (including internal
	// spaces); e.g. if the link text is "click here" then the length is 10.
	ByteLength googleapi.Int64s `json:"byteLength,omitempty"`

	// ByteOffset: The byte offset of the start of a link with this target
	// URL, in the content of the annotated document.
	ByteOffset googleapi.Int64s `json:"byteOffset,omitempty"`

	// IsNofollow: Whether this is a nofollow link
	// (https://en.wikipedia.org/wiki/Nofollow). If the page has multiple
	// links to the same url, all of them must be nofollow to set this
	// field.
	IsNofollow bool `json:"isNofollow,omitempty"`

	// TopicalityWeight: The topicality_weight for each link with this
	// target URL.
	TopicalityWeight []float64 `json:"topicalityWeight,omitempty"`

	// Url: The target URL of the link.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ByteLength") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ByteLength") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefOutlinkInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefOutlinkInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWebrefOutlinkInfos: Information about the outlinks of
// an annotated document. Next available tag: 3
type RepositoryWebrefWebrefOutlinkInfos struct {
	// OutlinkInfo: Information about each target URL referred to in the
	// document's outlinks. If a given URL has multiple links, they are
	// grouped in a single WebrefLinkInfo.
	OutlinkInfo []*RepositoryWebrefWebrefOutlinkInfo `json:"outlinkInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OutlinkInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OutlinkInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefOutlinkInfos) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefOutlinkInfos
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RepositoryWebrefWebrefStatus struct {
	// DataEpoch: The epoch of the Webref static data (the name-filter.data
	// file). As of Dec 2020 in prod Goldmine (in
	// webref_daily_full_model_static_data) this value is over from the
	// alpha model static data, since this is where most of the parts come
	// from. I.e. the value does not correspond to the actual model being
	// used.
	DataEpoch string `json:"dataEpoch,omitempty"`

	// UtilStatus: Error that occurred during the annotation. This field is
	// only populated by QRef (i.e. under QueryJoin.status) and never by
	// WebRef (i.e. under WebrefEntities.status) anymore, which instead
	// reports errors (and soon also taints) through standard Goldmine
	// mechanisms.
	UtilStatus *UtilStatusProto `json:"utilStatus,omitempty"`

	// Version: The version number of the annotator (the cl the binary was
	// built from). Must be enabled via a command line flag. See also the
	// Goldmine's indexing::annotations::AnnotationMeta proto.
	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataEpoch") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataEpoch") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWebrefStatus) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWebrefStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWikipediaCategory: Information about a Wikipedia
// category (typically at the bottom of the page).
type RepositoryWebrefWikipediaCategory struct {
	CategoryName string `json:"categoryName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWikipediaCategory) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWikipediaCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RepositoryWebrefWikipediaGeocode: Geocodes extracted from the
// wikijoins.
type RepositoryWebrefWikipediaGeocode struct {
	// Location: The location as extracted from the wikijoins.
	Location *GeostorePointProto `json:"location,omitempty"`

	// SourceUrl: The source contains the url field from the wikijoins.
	SourceUrl string `json:"sourceUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Location") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Location") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RepositoryWebrefWikipediaGeocode) MarshalJSON() ([]byte, error) {
	type NoMethod RepositoryWebrefWikipediaGeocode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamConjunction:
// //////////////////////////////////////////////////////////////////////
// //////// Conjunction: a single AND clause that contains multiple
// disjunctions.
type ResearchScamCoscamConjunction struct {
	// DisjunctionId: disjunction_id / is_positive *MUST* have the same
	// length. They specify a set of disjunctions that make up this
	// conjunction. The conjunction will be active iff *all* of the positive
	// disjunctions are active and *all* of the negative disjunctions are
	// inactive.
	DisjunctionId googleapi.Uint64s `json:"disjunctionId,omitempty"`

	IsPositive []bool `json:"isPositive,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisjunctionId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisjunctionId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamConjunction) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamConjunction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamDisjunction:
// //////////////////////////////////////////////////////////////////////
// //////// Disjunction: a single OR clause that contains multiple
// group:token tuples.
type ResearchScamCoscamDisjunction struct {
	// Key: key - a uint64 key that uniquely identifies this disjunction.
	Key uint64 `json:"key,omitempty,string"`

	// TokenGroups: groups - the group:token tuples that make up this
	// disjunction. The disjunction will be active if *any* off the
	// group:token tuples are present in a request.
	TokenGroups []*ResearchScamCoscamTokenGroup `json:"tokenGroups,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamDisjunction) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamDisjunction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamEasyConjunction: Each EasyConjunction represents an
// AND-of-ORs block.
type ResearchScamCoscamEasyConjunction struct {
	// Disjunctions: disjunctions is the set of OR clauses that
	Disjunctions []*ResearchScamCoscamEasyDisjunction `json:"disjunctions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Disjunctions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Disjunctions") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamEasyConjunction) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamEasyConjunction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamEasyDisjunction: Each EasyDisjunction represents
// one OR clause.
type ResearchScamCoscamEasyDisjunction struct {
	// IsPositive: If is_positive is set to false, then the entire
	// disjunction is negated, and will be true only if none of its members
	// is true.
	IsPositive bool `json:"isPositive,omitempty"`

	// TokenGroups: token_groups - the group:token tuples that make up this
	// disjunction. The disjunction will be active if *any* off the
	// group:token tuples are present in a request.
	TokenGroups []*ResearchScamCoscamTokenGroup `json:"tokenGroups,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsPositive") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsPositive") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamEasyDisjunction) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamEasyDisjunction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamEasyRestrictDefinition: Each EasyRestrictDefinition
// represents an OR-of-ANDs-of-ORs block.
type ResearchScamCoscamEasyRestrictDefinition struct {
	// Conjunctions: conjunctions is the set of AND-of-ORs blocks.
	Conjunctions []*ResearchScamCoscamEasyConjunction `json:"conjunctions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Conjunctions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Conjunctions") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamEasyRestrictDefinition) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamEasyRestrictDefinition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamRestrictDefinition:
// //////////////////////////////////////////////////////////////////////
// //////// RestrictDefinition: the set of conjunctions and disjunctions
// that define a single OR-of-ANDs-of-ORs restrict definition.
type ResearchScamCoscamRestrictDefinition struct {
	// Conjunctions: conjunctions - each conjunction is an AND-of-ORs; if
	// any of these conjunctions match, then the entire restrict matches.
	Conjunctions []*ResearchScamCoscamConjunction `json:"conjunctions,omitempty"`

	// Disjunctions: disjunctions - each disjunction is an OR clause.
	Disjunctions []*ResearchScamCoscamDisjunction `json:"disjunctions,omitempty"`

	// SubsKey: subs_key - ignore. Only used for testing.
	SubsKey uint64 `json:"subsKey,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Conjunctions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Conjunctions") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamRestrictDefinition) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamRestrictDefinition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamCoscamRestrictTokensV2:
// //////////////////////////////////////////////////////////////////////
// //////// RestrictTokensV2: a set of group:token tuples, collated by
// group.
type ResearchScamCoscamRestrictTokensV2 struct {
	// TokenGroups: token_groups - group:token tuples, collated by group.
	TokenGroups []*ResearchScamCoscamTokenGroup `json:"tokenGroups,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TokenGroups") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TokenGroups") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamRestrictTokensV2) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamRestrictTokensV2
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ResearchScamCoscamTokenGroup struct {
	// DebugTokenStrings: debug_token_strings - (optional) strings that
	// should be used for human-friendly printing. NOT used by the matching
	// engine!
	DebugTokenStrings []string `json:"debugTokenStrings,omitempty"`

	// Name: name - the name of the token group.
	Name string `json:"name,omitempty"`

	// Tokens: tokens - a list of tokens, stored by their Fingerprint2011
	// hash.
	Tokens googleapi.Uint64s `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugTokenStrings")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugTokenStrings") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamCoscamTokenGroup) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamCoscamTokenGroup
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamGenericFeatureVector:
// =====================================================================
// # GenericFeatureVector Last tag used: 23
type ResearchScamGenericFeatureVector struct {
	// ClassLabel: The class label of this datapoint. This should be
	// populated if ScaM is being used for nearest-neighbor-based
	// classification.
	ClassLabel string `json:"classLabel,omitempty"`

	Crowding *ResearchScamGenericFeatureVectorCrowding `json:"crowding,omitempty"`

	// DataIdStr: Optional point id that can contain an arbitrary
	// (unrestricted in content) value except when the data is provided via
	// SSTable (sharded or not). In the case of SSTable the data_id_str must
	// be set for _all_ points in all shards or the SSTable keys will be
	// used as the values for the data_id_str of the respective points. In
	// either SSTable case--data_id_str provided explicitly or via the
	// key--the values must be unique across all shards.
	DataIdStr string `json:"dataIdStr,omitempty"`

	// ExpirationTimestamp: A timestamp after which this datapoint is
	// considered no longer valid and is eligible for deletion. The exact
	// meaning varies with application/configuration.
	ExpirationTimestamp string `json:"expirationTimestamp,omitempty"`

	// FeatureDim: DEPRECATED: - this field can safely be left unspecified.
	// For dense vectors, dimensionality is inferred from the number of
	// values specified, and must be identical to this, or unspecified. For
	// sparse vectors, the default value is correct for most users, and
	// allows use of 64-bit hash values for feature indices.
	FeatureDim uint64 `json:"featureDim,omitempty,string"`

	// FeatureIndex:  - for SPARSE vectors, specifies indices of the nonzero
	// dimensions whose values are specified by the , , or field. This field
	// is not used when specifying dense vectors.
	FeatureIndex googleapi.Uint64s `json:"featureIndex,omitempty"`

	// FeatureType: Describes the type of feature values.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "INT64"
	//   "FLOAT"
	//   "DOUBLE"
	//   "STRING"
	//   "BINARY"
	FeatureType string `json:"featureType,omitempty"`

	FeatureValueDouble []float64 `json:"featureValueDouble,omitempty"`

	// FeatureValueFloat: Actual feature vector. Only one of the following
	// should be populated. This list has to be kept in sync with
	// FeatureType enum. NOTES: Binary features are stored as ones or zeroes
	// in feature_value_int64. Floating point values (feature_value_float,
	// feature_value_double) may not be NaN.
	FeatureValueFloat []float64 `json:"featureValueFloat,omitempty"`

	FeatureValueInt64 googleapi.Int64s `json:"featureValueInt64,omitempty"`

	FeatureValueString string `json:"featureValueString,omitempty"`

	FixedPointMetadata *ResearchScamGenericFeatureVectorFixedPointMetadata `json:"fixedPointMetadata,omitempty"`

	// InternalOnlyIsSecondaryPartition: copybara:strip_begin INTERNAL USE
	// ONLY! The ScaM Team reserves the right to remove this field and reuse
	// its proto tag without notice. DO NOT USE outside of
	// build_shards_pipeline! This field is used inside
	// build_shards_pipeline to indicate whether this GFV is residing in its
	// secondary (vs. primary) partition. copybara:strip_end
	InternalOnlyIsSecondaryPartition bool `json:"internalOnlyIsSecondaryPartition,omitempty"`

	// NormType: Describes if data has been normalized and the type.
	//
	// Possible values:
	//   "NONE"
	//   "UNITL2NORM"
	//   "STDGAUSSNORM" - mean=0, population std. dev. = 1
	//   "UNITL1NORM"
	NormType string `json:"normType,omitempty"`

	// QueryMetadata: copybara:strip_begin A field that contains metadata
	// information when the datapoint is acting as a query.
	QueryMetadata *ResearchScamQueryMetadata `json:"queryMetadata,omitempty"`

	RestrictTokens *ResearchScamGenericFeatureVectorRestrictTokens `json:"restrictTokens,omitempty"`

	Tokens []int64 `json:"tokens,omitempty"`

	// Userinfo: This field allows application-specific metadata to be
	// stored in a GFV. This information may be used by custom binaries or
	// in pre- or postprocessing outside of ScaM. Use cases include but are
	// not limited to: * Dataset IDs, if multiple datasets are multiplexed
	// into one physical file or network location. * An alternative,
	// possibly more human-readable representation of the data represented
	// by this GFV, for e.g. debugging purposes. * Outputting the contents
	// of this field verbatim to the metadata field of the
	// NearestNeighbors.Neighbor proto.
	Userinfo string `json:"userinfo,omitempty"`

	// Weight: DEPRECATED fields. Ignored by ScaM binaries. Do not use.
	Weight float64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClassLabel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClassLabel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamGenericFeatureVector) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamGenericFeatureVector
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScamGenericFeatureVector) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScamGenericFeatureVector
	var s1 struct {
		Weight gensupport.JSONFloat64 `json:"weight"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Weight = float64(s1.Weight)
	return nil
}

// ResearchScamGenericFeatureVectorCrowding: This subproto contains
// configuration for crowding. Crowding is a constraint on a neighbor
// list produced by nearest neighbor search requiring that no more than
// some value k' of the k neighbors returned have the same value of
// crowding_attribute.
type ResearchScamGenericFeatureVectorCrowding struct {
	// CrowdingAttribute: The value of the crowding attribute for this
	// document. The maximum number of neighbors to return per crowding
	// attribute value (per_crowding_attribute_num_neighbors) is configured
	// per-query. This field is ignored if
	// per_crowding_attribute_num_neighbors is larger than the total number
	// of neighbors to return for a given query.
	CrowdingAttribute int64 `json:"crowdingAttribute,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CrowdingAttribute")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CrowdingAttribute") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamGenericFeatureVectorCrowding) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamGenericFeatureVectorCrowding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamGenericFeatureVectorFixedPointMetadata: Metadata that may
// be populated if this GFV was transformed into fixed-point from a
// floating-point GFV.
type ResearchScamGenericFeatureVectorFixedPointMetadata struct {
	// SquaredL2Norm: The squared L2 norm of the original (pre-fixed-point
	// transformation) GFV. Used for computing squared L2 distance.
	SquaredL2Norm float64 `json:"squaredL2Norm,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SquaredL2Norm") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SquaredL2Norm") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamGenericFeatureVectorFixedPointMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamGenericFeatureVectorFixedPointMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScamGenericFeatureVectorFixedPointMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScamGenericFeatureVectorFixedPointMetadata
	var s1 struct {
		SquaredL2Norm gensupport.JSONFloat64 `json:"squaredL2Norm"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SquaredL2Norm = float64(s1.SquaredL2Norm)
	return nil
}

// ResearchScamGenericFeatureVectorRestrictTokens: RestrictTokens - used
// to perform "restricted searches" where boolean rules are used to
// filter the subset of the database eligible for matching. We currently
// support V1 and V3 restrict systems. V3 restrict is a superset of V1
// restrict. New users are encouraged to use V3 directly for its rich
// features and cleaner semantics. See the document
// go/scam-v3-restricts, or read the comments in
// //research/scam/proto/restricts.proto for details. Nevertheless, V1
// restrict is still supported by ScaM team. There's some minor tradeoff
// of performance between V1 and V3. User may prefer V1 over V3 if
// performance is the first priority. However, the CPU cost between V1
// and V3 should be very minor.
// ----------------------------------------------------------------------
// ----- The semantics of V1 restrict is described below: V1 "forward"
// restricts: The dataset defines a many:many mapping between the
// database points and a token space. Each token names a set of tokens
// and each database point is a member of zero-to-many tokens. Queries
// specify zero-to-many whitelist and blacklist tokens that activate
// database points according to the following rules: * If
// whitelist_token is populated, the search will be restricted to points
// named by at least one whitelist token. If whitelist_token is empty,
// all points are whitelisted by default. * If blacklist_token is
// populated, it overrides the whitelist. Points named by a blacklisted
// token are *not* searched. * Note that, if neither whitelist_token nor
// blacklist_token is populated, the search remains unrestricted.
// ----------------------------------------------------------------------
// ----- V1 "reverse" restricts: Each database point is whitelisted
// and/or blacklisted for zero or more tokens, specified by
// whitelist_token and blacklist_token fields. Each query specifies zero
// or more tokens, and the same rules apply: * If a point's
// whitelist_token is populated, the point will only be searched if the
// query has at least one matching whitelist token. If whitelist_token
// is empty, the point is always whitelisted by default. * If a point's
// blacklist_token is populated, it overrides the whitelist. The point
// will be ignored for any query with a matching blacklist token. * Note
// that, if neither whitelist_token nor blacklist_token is populated,
// the point will always be searched. NEXT ID TO USE: 9
type ResearchScamGenericFeatureVectorRestrictTokens struct {
	BlacklistToken googleapi.Int64s `json:"blacklistToken,omitempty"`

	// Definition: DEPRECATED
	Definition *ResearchScamCoscamRestrictDefinition `json:"definition,omitempty"`

	// EasyDefinition: DEPRECATED
	EasyDefinition *ResearchScamCoscamEasyRestrictDefinition `json:"easyDefinition,omitempty"`

	// TokenMembership: B) Token Definitions (V1 Restricts) In "forward"
	// mode: defined on database points In "reverse" mode: defined on
	// queries
	TokenMembership googleapi.Int64s `json:"tokenMembership,omitempty"`

	// Tokens: DEPRECATED
	Tokens *ResearchScamCoscamRestrictTokensV2 `json:"tokens,omitempty"`

	// V3: Only ONE of the following sections should be used: A) V3
	// restricts. Defined in //research/scam/proto/restricts.proto
	V3 *ResearchScamV3Restrict `json:"v3,omitempty"`

	// V3CompatibleNamespace: If this field is not empty, when query is in
	// V1 restricts while database is in V3 restricts, SCaM will update V1
	// query to V3 automatically instead of sending error messages. When
	// updating query from V1 to V3, SCaM server will use this field to
	// fillin the 'namespace' field.
	V3CompatibleNamespace string `json:"v3CompatibleNamespace,omitempty"`

	// WhitelistToken: C) Whitelist / Blacklist Definitions (V1 Restricts)
	// In "forward" mode: defined on queries In "reverse" mode: defined on
	// database points
	WhitelistToken googleapi.Int64s `json:"whitelistToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlacklistToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlacklistToken") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamGenericFeatureVectorRestrictTokens) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamGenericFeatureVectorRestrictTokens
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamNearestNeighbors: All nearest neighbors for one data
// point. Last tag used: 5
type ResearchScamNearestNeighbors struct {
	// Docid: Data point for which we computed nearest neighbors. This field
	// is set based on the data_id_str field in the QueryRequest GFV (or
	// SSTable key if data_id_str is not present), and thus can be arbitrary
	// data, e.g. docid, URL, query string.
	Docid string `json:"docid,omitempty"`

	// Metadata: Metadata about the query. This field is populated if and
	// only if: 1) ScaM is running in offline query-database or online mode
	// and; 2) The metadata is directly fetched from the userinfo field
	// inside GFV and; 3) MetadataConfig.userinfo.set_user_info_for_query is
	// set to true. The field name is kept as "metadata" for consistency
	// with neighbors.
	Metadata string `json:"metadata,omitempty"`

	// Neighbor: All its neighbors.
	Neighbor []*ResearchScamNearestNeighborsNeighbor `json:"neighbor,omitempty"`

	// NeighborSelectionOverride: Propagate neighbor selection override
	// information during offline search.
	NeighborSelectionOverride *ResearchScamNeighborSelectionOverride `json:"neighborSelectionOverride,omitempty"`

	// Query: The query vector for which we computed nearest neighbors.
	Query *ResearchScamGenericFeatureVector `json:"query,omitempty"`

	// RetrievedVersion: The version ID of the server that responded to this
	// query, if one was specified. This field is not populated for offline
	// (i.e. Flume rather than RPC) search.
	RetrievedVersion string `json:"retrievedVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Docid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Docid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamNearestNeighbors) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamNearestNeighbors
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ResearchScamNearestNeighborsNeighbor struct {
	// CrowdingAttribute: If crowding is enabled, the crowding attribute of
	// this neighbor will be stored here.
	CrowdingAttribute int64 `json:"crowdingAttribute,omitempty,string"`

	// Distance: This could be exact or approximate distance.
	Distance float64 `json:"distance,omitempty"`

	// Docid: Neighbor data point. This field is set based on the
	// data_id_str field in the GFV of the data point in the database (or
	// SSTable key if data_id_str is not present), and thus can be arbitrary
	// data, e.g. docid, URL, query string.
	Docid string `json:"docid,omitempty"`

	// Metadata: Metadata about the neighbor. This is returned under some
	// configurations as a serialized proto. The specific proto depends on
	// which metadata is configured to be returned.
	Metadata string `json:"metadata,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CrowdingAttribute")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CrowdingAttribute") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamNearestNeighborsNeighbor) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamNearestNeighborsNeighbor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScamNearestNeighborsNeighbor) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScamNearestNeighborsNeighbor
	var s1 struct {
		Distance gensupport.JSONFloat64 `json:"distance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Distance = float64(s1.Distance)
	return nil
}

// ResearchScamNeighborSelectionOverride: Last used tag = 8
type ResearchScamNeighborSelectionOverride struct {
	// ApproxEpsilonDistance: The distance threshold to use for approximate
	// search before exact reordering is performed, if exact reordering is
	// performed. If this is not set and exact reordering is enabled, a
	// reasonable default value will be chosen using a heuristic specified
	// in ScamConfig.ExactReordering.NeighborSelectionOverrideHeuristics.
	// This field is ignored if exact reordering is not enabled. This value
	// must be non-NaN if set.
	ApproxEpsilonDistance float64 `json:"approxEpsilonDistance,omitempty"`

	// ApproxNumNeighbors: The number of neighbors to find via approximate
	// search before exact reordering is performed. If this is not set and
	// exact reordering is enabled, a reasonable default value will be
	// chosen using the heuristic specified in
	// ScamConfig.ExactReordering.NeighborSelectionOverrideHeuristics. This
	// field is ignored if exact reordering is not enabled. This value must
	// be > 0 if set.
	ApproxNumNeighbors int64 `json:"approxNumNeighbors,omitempty"`

	// EpsilonDistance: The maximum distance at which to return a neighbor.
	// If this proto is used, at least one of this and num_neighbors must be
	// set. The default is infinity, effectively returning num_neighbors
	// neighbors regardless of distance. This value must be non-NaN if set.
	EpsilonDistance float64 `json:"epsilonDistance,omitempty"`

	// NumNeighbors: The maximum number of neighbors to return. If this
	// proto is used, at least one of this and epsilon_distance must be set.
	// The default is the largest value representable as an int32,
	// effectively returning all neighbors within epsilon_distance. This
	// value must be > 0 if set.
	NumNeighbors int64 `json:"numNeighbors,omitempty"`

	// NumSingleShardNeighbors: If populated, this is the maximum number of
	// neighbors that may be returned from a single shard. If not populated,
	// up to num_neighbors neighbors are returned from each shard. Setting
	// this to a smaller value than num_neighbors will increase speed at the
	// expense of accuray by requiring cross-shard merging of fewer
	// neighbors. If this value is set, num_neighbors must also be set and
	// this value must be <= num_neighbors and >= num_neighbors / number of
	// shards. If set, this value must always be > 0.
	NumSingleShardNeighbors int64 `json:"numSingleShardNeighbors,omitempty"`

	// PerCrowdingAttributeNumNeighbors: The maximum number of neighbors to
	// return for a single value of the crowding attribute. The crowding
	// attribute is specified per-datapoint in the GenericFeatureVector
	// proto, or the Document proto for sparse logistic models. Crowding is
	// described more thoroughly in research/scam/utils/crowding_top_n.h.
	// NOTES: Crowding is effectivley enabled if this value is less than
	// num_neighbors.
	PerCrowdingAttributeNumNeighbors int64 `json:"perCrowdingAttributeNumNeighbors,omitempty"`

	// PerCrowdingAttributePreReorderingNumNeighbors: The maximum number of
	// neighbors to return from the approximate portion of the
	// nearest-neighbor search algorithm, within each shard, for a single
	// value of the crowding attribute, before performing exact reordering.
	// Ignored if exact reordering is disabled for this dataset.
	PerCrowdingAttributePreReorderingNumNeighbors int64 `json:"perCrowdingAttributePreReorderingNumNeighbors,omitempty"`

	// TreeXHybridLeavesSearchedOverride: Note: currently not implemented
	// for all database shard subclasses! Contact ScaM before using.
	// Overrides max_spill_centers for tree-X hybrid searchers configured
	// with FIXED_NUMBER_OF_CENTERS spilling. The max_spill_centers in the
	// ScaM config is used if this field isn't set. Only valid if: * Used on
	// a tree-X hybrid ScaM config with FIXED_NUMBER_OF_CENTERS. * Value is
	// greater than zero and at most equal to num_children.
	TreeXHybridLeavesSearchedOverride int64 `json:"treeXHybridLeavesSearchedOverride,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ApproxEpsilonDistance") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApproxEpsilonDistance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamNeighborSelectionOverride) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamNeighborSelectionOverride
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScamNeighborSelectionOverride) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScamNeighborSelectionOverride
	var s1 struct {
		ApproxEpsilonDistance gensupport.JSONFloat64 `json:"approxEpsilonDistance"`
		EpsilonDistance       gensupport.JSONFloat64 `json:"epsilonDistance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ApproxEpsilonDistance = float64(s1.ApproxEpsilonDistance)
	s.EpsilonDistance = float64(s1.EpsilonDistance)
	return nil
}

// ResearchScamOnlineSearchLatencyStats: Structure to hold the response
// time for a node. Last used: 3
type ResearchScamOnlineSearchLatencyStats struct {
	// CpuTime: An estimate of the CPU time used for this query on the
	// machine associated with task_id, from when the query was received to
	// when the response was ready to send, in seconds. Caveats: 1. Does not
	// account for CPU time spent serializing, deserializing, compressing or
	// decompressing protos within Stubby. 2. Does not account for cleanup
	// time after response has been sent.
	CpuTime float64 `json:"cpuTime,omitempty"`

	// TaskId: Task number associated with response time measurements.
	TaskId int64 `json:"taskId,omitempty"`

	// WallTime: Wall time taken on the machine associated with task_id from
	// when the query was received to when the response was ready to send,
	// in seconds. This time excludes the time spent sending the response
	// and the time to perform cleanup operations after the response is
	// sent.
	WallTime float64 `json:"wallTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CpuTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CpuTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamOnlineSearchLatencyStats) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamOnlineSearchLatencyStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScamOnlineSearchLatencyStats) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScamOnlineSearchLatencyStats
	var s1 struct {
		CpuTime  gensupport.JSONFloat64 `json:"cpuTime"`
		WallTime gensupport.JSONFloat64 `json:"wallTime"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CpuTime = float64(s1.CpuTime)
	s.WallTime = float64(s1.WallTime)
	return nil
}

// ResearchScamQueryMetadata: Metadata to encode query-specific
// information. This may include NeighborSelectionOverride, pre-computed
// query tokenization, etc..
type ResearchScamQueryMetadata struct {
	NeighborSelectionOverride *ResearchScamNeighborSelectionOverride `json:"neighborSelectionOverride,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NeighborSelectionOverride") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "NeighborSelectionOverride") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamQueryMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamQueryMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamQueryResponse: Response to a query. The main result is
// the nearest neighbor list, but we also optionally include debugging
// information if the appropriate field is set in the request. Last
// used: 8
type ResearchScamQueryResponse struct {
	// Latency: Debugging fields: The wall and CPU time used by each query
	// on each machine. For successful queries, there will be one entry here
	// for each machine that the query used if
	// QueryRequest.enable_latency_stats was enabled. For unsuccessful
	// queries, the contents of this field will be undefined. NOTE: The
	// following accounting rules apply in batched mode, assuming there are
	Latency []*ResearchScamOnlineSearchLatencyStats `json:"latency,omitempty"`

	// NumDeadlineExceededMachines: The number of non-root machines for
	// which a DEADLINE_EXCEEDED error occurred when they were contacted.
	// This value does NOT include machines for which no reply was received
	// because their parent machine timed out. Therefore, num_total_machines
	// may be larger than num_ok_machines + num_unreachable_machines +
	// num_deadline_exceeded_machines.
	NumDeadlineExceededMachines int64 `json:"numDeadlineExceededMachines,omitempty"`

	// NumOkMachines: Number of machines that contributed to the results;
	// this might be less than the total number of machines if a machine has
	// failed. The impact of a single machine failure could be larger than
	// just one machine, if it happens to be one of the machines involved in
	// distributing the query and collecting results.
	NumOkMachines int64 `json:"numOkMachines,omitempty"`

	// NumTotalMachines: The number of machines used in this service for the
	// dataset that was queried. If everything went right, this should be
	// equal to num_ok_machines. If num_ok_machines < num_total_machines,
	// some neighbors may be missing from results.
	NumTotalMachines int64 `json:"numTotalMachines,omitempty"`

	// NumUnreachableMachines: The number of non-root machines for which an
	// UNREACHABLE error occurred when they were contacted. This value does
	// NOT include machines that were implicitly unreachable because their
	// parent machine was not reachable. Therefore, num_total_machines may
	// be larger than num_ok_machines + num_unreachable_machines +
	// num_deadline_exceeded_machines.
	NumUnreachableMachines int64 `json:"numUnreachableMachines,omitempty"`

	// RestrictStats: The number of "active" datapoints for each dataset,
	// i.e. points that are whitelisted by restricts and could be returned
	// if they were close enough to the query. For successful queries, there
	// will be one entry here for each dataset queried, if
	// QueryRequest.enable_restrict_stats was true. For partially-successful
	// successful queries, this field will contain results
	RestrictStats []*ResearchScamRestrictStats `json:"restrictStats,omitempty"`

	// Results: The results for each dataset searched. If
	// per_dataset_parameters was empty in QueryRequest then this will have
	// one entry, the results for dataset 0. If per_dataset_parameters was
	// not empty in QueryRequest, this will contain the results for each
	// dataset queried, in order corresponding to the order of
	// QueryRequest.per_dataset_parameters.
	Results []*ResearchScamNearestNeighbors `json:"results,omitempty"`

	// Status: USEFUL ONLY IN CUSTOM BINARIES. In the stock ScaM server
	// binary, all errors are relayed via the RPC's status. Thus, if RPC's
	// status is ok, this field is guaranteed to be ok and if RPC's status
	// is an error, no QueryResponse will be returned. The status of this
	// query. This is useful when using a batched postprocessing lambda,
	// which may ignore erroneous subqueries, continue postprocessing the
	// valid ones and return OkStatus. In this case, this field will inform
	// the client of any invalid subqueries.
	Status *UtilStatusProto `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Latency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Latency") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamQueryResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamQueryResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScamRestrictStats: Structure to hold the number of active and
// total datapoints for a given dataset, as defined below. Last used: 2
type ResearchScamRestrictStats struct {
	// NumActiveDatapoints: The number of datapoints that are whitelisted by
	// restricts specified for this query, across all shards for which the
	// query executed successfully. In other words, this represents the
	// number of datapoints that could potentially be returned if they were
	// close enough to the query according to the selected distance measure.
	// If restricts are disabled, this will be equal to
	// num_total_datapoints.
	NumActiveDatapoints uint64 `json:"numActiveDatapoints,omitempty,string"`

	// NumTotalDatapoints: The number of total datapoints in all shards of
	// this dataset for which the query executed successfully. This is
	// returned for convenience so that a ratio can be easily computed, and
	// so that num_active_datapoints can be put in perspective for partially
	// successful queries, i.e. queries where only some shards were
	// successful.
	NumTotalDatapoints uint64 `json:"numTotalDatapoints,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "NumActiveDatapoints")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumActiveDatapoints") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamRestrictStats) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamRestrictStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ResearchScamTokenNamespace struct {
	// Namespace:
	// //////////////////////////////////////////////////////////////////////
	// ////// NAMESPACE - the string name of the namespace that this proto
	// is specifying, such as "color", "shape", "geo", or "tags". Recall
	// that your overall query is an AND across namespaces.
	Namespace string `json:"namespace,omitempty"`

	// StringBlacklistTokens:
	// //////////////////////////////////////////////////////////////////////
	// ////// BLACKLIST - Blacklisting can be used to implement more complex
	// scenarios. The blacklist fields have exactly the same format as the
	// token fields, but represents a negation. When a token is blacklisted,
	// then matches will be excluded whenever the other datapoint has that
	// token. For example, if a query specifies {color: red, blue, !purple},
	// then that query will match datapoints that are red or blue, but if
	// those points are also purple, then they will be excluded even if they
	// are red/blue. Note that, due to symmetry, if one of the database
	// points is {red, !blue}, that point will be excluded from queries that
	// specify blue. Lastly, note that namespaces with *only* blacklist
	// tokens behave similar to empty namespaces, in that {color: !purple}
	// would match blue or red datapoints, as long as those datapoints don't
	// also have the purple token.
	StringBlacklistTokens []string `json:"stringBlacklistTokens,omitempty"`

	// StringTokens:
	// //////////////////////////////////////////////////////////////////////
	// ////// TOKENS - Conceptually, each token names a set datapoints. The
	// field(s) below are for declaring the tokens that name the datapoint
	// that this TokenNamespace proto is attached to. For convenience, we
	// support either string or uint64 tokens. Internally, the restricts
	// system is based on uint64s, but for many applications, strings are
	// the more natural format, and they should be preferred whenever this
	// is the case. * When only uint64s are specified, they will be used
	// as-is. * When only strings are specified, they will be converted to
	// uint64s via Fingerprint2011. (See "Note on the safety of
	// Fingerprint2011"). * ADVANCED: When both fields are specified, the
	// uint64s are used as-is. Note that, when both fields are used, they
	// *must* have the same number of entries, and the system will assume
	// that your strings correspond 1:1 with the list of uint64 tokens. *
	// EDGE CASE: All matching is done in the uint64 space, so, I'm not sure
	// why you'd do this, but if, eg, your database uses strings, and your
	// queries specify the Fingerprint2011 hashes of those strings, matching
	// will work, and this is a specified behavior. Note on the safety of
	// Fingerprint2011: Unless you have well over 1M+ unique string tokens,
	// you can safely assume that every string will map to a unique 64-bit
	// token. Internally, both Mustang and PSI use Fingerprint2011 to hash
	// arbitrary strings into uint64 tokens, and assume, without validation,
	// that each 64-bit token is unique. And the math backs up this
	// assumption: If we are using a "perfect" hashing function (and
	// Fingerprint2011 is close-enough for our purposes), and we then hash
	// 1M unique tokens into a 64-bit space, there's still better than
	// 99.9999% odds that all tokens are collision-free, nearly as good as
	// the odds for the datacenter's continued existence. Scenarios for
	// having both the string and uint64 token forms: * Probably none that
	// matter to you. Just use the strings directly. * You could have uint64
	// enum values, yet want to include the string values for debugging
	// purposes. Note that it *is* supported to use a proprietary string =>
	// uint64 mapping, assuming that it is consistent, and that you always
	// specify the uint64 values. * The mixer-tier in a multi-shard
	// deployment might convert the strings into uint64s to avoid redundant
	// hashing overhead on the leaves, yet keep the string tokens to
	// preserve proto-level debugging. * When strings are present, I reserve
	// the right to use them for making logging "better", but, thusfar,
	// there are 0 examples of this.
	StringTokens []string `json:"stringTokens,omitempty"`

	Uint64BlacklistTokens googleapi.Uint64s `json:"uint64BlacklistTokens,omitempty"`

	Uint64Tokens googleapi.Uint64s `json:"uint64Tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Namespace") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Namespace") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamTokenNamespace) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamTokenNamespace
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ResearchScamV3Restrict struct {
	// Namespaces:
	// //////////////////////////////////////////////////////////////////////
	// ////// NAMESPACES - a repeating field, where each entry specifies the
	// set of tokens, within a single namespace, that apply to the query, or
	// database point, on which this V3Restrict proto is defined. Note that:
	// * Your overall query is an AND across namespaces. * Explicitly
	// specifying a namespace with 0 tokens is identical to omitting that
	// namespace. ie, "{ns:}" == "". * It is an error to specify the same
	// namespace more than once per instance of the V3Restrict proto.
	Namespaces []*ResearchScamTokenNamespace `json:"namespaces,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Namespaces") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Namespaces") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScamV3Restrict) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScamV3Restrict
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchCatalog: Information on the catalog that this
// dataset comes from. Next ID: 5
type ResearchScienceSearchCatalog struct {
	// Description: catalog description
	Description string `json:"description,omitempty"`

	// Mid: catalog mid
	Mid string `json:"mid,omitempty"`

	// Name: catalog name
	Name string `json:"name,omitempty"`

	// Url: catalog url
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchCatalog) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchCatalog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchCitation: Reference to the citation in Google
// scholar.
type ResearchScienceSearchCitation struct {
	Citation string `json:"citation,omitempty"`

	// SafeHtmlCitation: The citation after HTML sanitation. Used only by
	// the front-end.
	SafeHtmlCitation *WebutilHtmlTypesSafeHtmlProto `json:"safeHtmlCitation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Citation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Citation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchCitation) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchCitation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchDataDownload: The dataset in downloadable form.
// There can be multiple data download entries for different file types.
// Next ID: 6
type ResearchScienceSearchDataDownload struct {
	// ContentSize: Size of the download, as a string from the provider. May
	// include units.
	ContentSize string `json:"contentSize,omitempty"`

	// DownloadUrl: URL for downloading the data
	DownloadUrl string `json:"downloadUrl,omitempty"`

	// FileFormat: File format at the link (ASCII, CSV, etc.)
	FileFormat string `json:"fileFormat,omitempty"`

	// FileFormatClass: Pragmatic classification of file formats - for
	// filtering purposes
	//
	// Possible values:
	//   "CLASS_UNDEFINED"
	//   "CLASS_TABULAR"
	//   "CLASS_DOCUMENT"
	//   "CLASS_STRUCTURED"
	//   "CLASS_IMAGE"
	//   "CLASS_TEXT"
	//   "CLASS_ARCHIVE"
	//   "CLASS_PRESENTATION"
	//   "CLASS_VIDEO"
	//   "CLASS_AUDIO"
	//   "CLASS_GEOSPATIAL"
	//   "CLASS_MEDICAL_IMAGING"
	//   "CLASS_COMPBIO"
	//   "CLASS_OTHER" - Special class for file formats not fitting into any
	// other class
	FileFormatClass string `json:"fileFormatClass,omitempty"`

	// ParsedContentSize: Parsed content size
	ParsedContentSize *ResearchScienceSearchDataSize `json:"parsedContentSize,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContentSize") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContentSize") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchDataDownload) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchDataDownload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchDataSize: Data size information, consists of a
// numeric value and a unit. Next ID: 3
type ResearchScienceSearchDataSize struct {
	// Size: Data size value, in the provided size unit
	Size float64 `json:"size,omitempty"`

	// Unit: The data size unit
	//
	// Possible values:
	//   "UNIT_UNSPECIFIED"
	//   "BYTE"
	//   "KB" - Decimal: Enum value is 10 followed by its power
	//   "MB"
	//   "GB"
	//   "TB"
	//   "PB"
	//   "EB"
	//   "KIB" - Binary: Enum value is 2 followed by its power
	//   "MIB"
	//   "GIB"
	//   "TIB"
	//   "PIB"
	//   "EIB"
	Unit string `json:"unit,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Size") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Size") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchDataSize) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchDataSize
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScienceSearchDataSize) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScienceSearchDataSize
	var s1 struct {
		Size gensupport.JSONFloat64 `json:"size"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Size = float64(s1.Size)
	return nil
}

// ResearchScienceSearchDate: Representation of fields that contain
// dates. The formattes version, if present, contains ISO 8601 formatted
// date or range. Otherwise, it is an unformatted string. Next ID: 3
type ResearchScienceSearchDate struct {
	Formatted string `json:"formatted,omitempty"`

	Unformatted string `json:"unformatted,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Formatted") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Formatted") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchDate) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchDate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchFieldOfStudyInfo: Stores the classification info
// of each field of study label.
type ResearchScienceSearchFieldOfStudyInfo struct {
	// ClassificationSource: The classification source that determines the
	// field of study label.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "INFERENCE" - The classification result is determined by model
	// inference.
	//   "KNOWLEDGE_GRAPH" - The classification result is determined by
	// knowledge graph mids.
	ClassificationSource string `json:"classificationSource,omitempty"`

	// IsAboveThreshold: If set to true, it means that the probability is at
	// least the threshold value specified from the corresponding saved
	// model config. Thresholds for different fields may be different.
	//
	// Possible values:
	//   "BOOLEAN_WITH_UNDEFINED_UNDEFINED"
	//   "BOOLEAN_WITH_UNDEFINED_TRUE"
	//   "BOOLEAN_WITH_UNDEFINED_FALSE"
	IsAboveThreshold string `json:"isAboveThreshold,omitempty"`

	// Label: A label that represents the field of study.
	//
	// Possible values:
	//   "UNKNOWN_FIELD_OF_STUDY_LABEL"
	//   "HUMANITIES"
	//   "SOCIAL_AND_BEHAVIOURAL_SCIENCE"
	//   "BIOLOGY"
	//   "MEDICINE"
	//   "AGRICULTURE_FORESTRY_HORTICULTURE_AND_VETERINARY_MEDICINE"
	//   "CHEMISTRY"
	//   "PHYSICS"
	//   "MATHEMATICS"
	//   "GEOSCIENCES_AND_GEOGRAPHY"
	//   "MECHANICAL_AND_INDUSTRIAL_ENGINEERING"
	//   "THERMAL_ENGINEERING_AND_PROCESS_ENGINEERING"
	//   "MATERIALS_SCIENCE_AND_ENGINEERING"
	//   "COMPUTER_SCIENCE_ELECTRICAL_AND_SYSTEM_ENGINEERING"
	//   "CONSTRUCTION_ENGINEERING_AND_ARCHITECTURE"
	Label string `json:"label,omitempty"`

	// Probability: A score between [0, 1] outputted from the classifier
	// indicating the probability for being a YES instance.
	Probability float64 `json:"probability,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClassificationSource") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClassificationSource") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchFieldOfStudyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchFieldOfStudyInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScienceSearchFieldOfStudyInfo) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScienceSearchFieldOfStudyInfo
	var s1 struct {
		Probability gensupport.JSONFloat64 `json:"probability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Probability = float64(s1.Probability)
	return nil
}

// ResearchScienceSearchLicense: Distribution license information. Next
// ID: 6
type ResearchScienceSearchLicense struct {
	// Id: A fingerprint id generated based on the license_class, URL or
	// text. Since the knowledge graph requires a unique string id for the
	// license but any filed of license can be empty, a fingerprint id can
	// serve as a compact identifier representing the non-empty sub-fields.
	Id string `json:"id,omitempty"`

	// LicenseClass: A value from a controlled vocabulary that uniquely
	// identifies a license. Unless this is set to
	// LICENSE_CLASS_UNDEFINED_NO_MATCH or
	// LICENSE_CLASS_UNDEFINED_CONTRADICTING_MATCHES other fields in this
	// message should be empty.
	//
	// Possible values:
	//   "LICENSE_CLASS_UNDEFINED_NO_MATCH" - Special value for when the
	// metadata provided does not match any license class
	//   "LICENSE_CLASS_UNDEFINED_CONTRADICTING_MATCHES" - Special value for
	// when the metadata provided matches more than one license class
	//   "LICENSE_CLASS_CC0_V_1_0"
	//   "LICENSE_CLASS_PDDL_V_1_0"
	//   "LICENSE_CLASS_CC_BY_V_1_0"
	//   "LICENSE_CLASS_CC_BY_V_2_0"
	//   "LICENSE_CLASS_CC_BY_V_2_5"
	//   "LICENSE_CLASS_CC_BY_V_3_0"
	//   "LICENSE_CLASS_CC_BY_V_4_0"
	//   "LICENSE_CLASS_CC_BY_SA_V_1_0"
	//   "LICENSE_CLASS_CC_BY_SA_V_2_0"
	//   "LICENSE_CLASS_CC_BY_SA_V_2_5"
	//   "LICENSE_CLASS_CC_BY_SA_V_3_0"
	//   "LICENSE_CLASS_CC_BY_SA_V_4_0"
	//   "LICENSE_CLASS_CC_BY_NC_V_1_0"
	//   "LICENSE_CLASS_CC_BY_NC_V_2_0"
	//   "LICENSE_CLASS_CC_BY_NC_V_2_5"
	//   "LICENSE_CLASS_CC_BY_NC_V_3_0"
	//   "LICENSE_CLASS_CC_BY_NC_V_4_0"
	//   "LICENSE_CLASS_CC_BY_NC_SA_V_1_0"
	//   "LICENSE_CLASS_CC_BY_NC_SA_V_2_0"
	//   "LICENSE_CLASS_CC_BY_NC_SA_V_2_5"
	//   "LICENSE_CLASS_CC_BY_NC_SA_V_3_0"
	//   "LICENSE_CLASS_CC_BY_NC_SA_V_4_0"
	//   "LICENSE_CLASS_CC_BY_ND_V_1_0"
	//   "LICENSE_CLASS_CC_BY_ND_V_2_0"
	//   "LICENSE_CLASS_CC_BY_ND_V_2_5"
	//   "LICENSE_CLASS_CC_BY_ND_V_3_0"
	//   "LICENSE_CLASS_CC_BY_ND_V_4_0"
	//   "LICENSE_CLASS_CC_BY_ND_NC_V_1_0" - Version 1.0 has "nd" before
	// "nc"
	//   "LICENSE_CLASS_CC_BY_NC_ND_V_2_0"
	//   "LICENSE_CLASS_CC_BY_NC_ND_V_2_5"
	//   "LICENSE_CLASS_CC_BY_NC_ND_V_3_0"
	//   "LICENSE_CLASS_CC_BY_NC_ND_V_4_0"
	//   "LICENSE_CLASS_CC_PDM_V_1_0"
	//   "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_1_0"
	//   "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_2_0"
	//   "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_3_0"
	//   "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_CANADA_V_2_0"
	//   "LICENSE_CLASS_DL_DE_BY_V_1_0"
	//   "LICENSE_CLASS_DL_DE_BY_V_2_0"
	//   "LICENSE_CLASS_DL_DE_ZERO_V_2_0" - V1.0 doesn't exist
	//   "LICENSE_CLASS_LO_OL_V_1_0"
	//   "LICENSE_CLASS_LO_OL_V_2_0"
	//   "LICENSE_CLASS_US_PD_V_1_0"
	//   "LICENSE_CLASS_OCL_V_1_0"
	//   "LICENSE_CLASS_ODC_PDDL_V_1_0"
	//   "LICENSE_CLASS_ODC_BY_V_1_0"
	//   "LICENSE_CLASS_ODC_ODBL_V_1_0"
	//   "LICENSE_CLASS_MIT_V_1_0"
	//   "LICENSE_CLASS_APACHE_V_2_0"
	LicenseClass string `json:"licenseClass,omitempty"`

	// LicenseMid: mid for the license.
	LicenseMid string `json:"licenseMid,omitempty"`

	// Text: The text (usually, the name) of the distribution license.
	Text string `json:"text,omitempty"`

	// Url: The url for the distribution license.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchLicense) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchLicense
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchLocation: Describes the spatial information
// about a value in spatial-coverage definition of a dataset. Next ID: 9
type ResearchScienceSearchLocation struct {
	// BoxCoordinates: Coordinates of the corners of the polygon in the form
	// "lat1 long1 lat2 long2"
	BoxCoordinates string `json:"boxCoordinates,omitempty"`

	// CircleCoordinates: Coordinates for the circle area defined by its
	// center and radius: "lat long, radius"
	CircleCoordinates string `json:"circleCoordinates,omitempty"`

	// ContainedInMid: mids for locations that contain loctions in .
	ContainedInMid []string `json:"containedInMid,omitempty"`

	// LocationMid: mids for locations covering the dataset, contained in
	// the . A region may contain multiple locations that are identified by
	// mids.
	LocationMid []string `json:"locationMid,omitempty"`

	// LocationMidLabel: Labels (in the preferred language of the dataset)
	// for the mids in .
	LocationMidLabel []string `json:"locationMidLabel,omitempty"`

	// LocationName: The original name for the area covered by the dataset.
	LocationName string `json:"locationName,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "METADATA" - When the locationthe is specified in the raw metadata
	//   "WEBREF" - When the locationthe is not specified in the raw
	// metadata
	LocationSource string `json:"locationSource,omitempty"`

	// PointCoordinates: Latitude and longitude for a single point in the
	// form of "lat,long".
	PointCoordinates string `json:"pointCoordinates,omitempty"`

	// UnformattedCoordinates: Unformatted coordinates describing the
	// region.
	UnformattedCoordinates string `json:"unformattedCoordinates,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoxCoordinates") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoxCoordinates") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchLocation) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchNavboostQueryInfo: The information representing
// one navboost query for the dataset source_url.
type ResearchScienceSearchNavboostQueryInfo struct {
	// ImpCount: imp_count stores an estimate of the number of impressions
	// for this tuple.
	ImpCount float64 `json:"impCount,omitempty"`

	// LccCount: lcc_count stores an estimate of the number of long clicks
	// for this tuple. NOTE: It is similar to query_doc_count, but
	// calculated in different manner.
	LccCount float64 `json:"lccCount,omitempty"`

	// Query: The query string.
	Query string `json:"query,omitempty"`

	// QueryCount: The query_count stores the counts on this query.
	QueryCount float64 `json:"queryCount,omitempty"`

	// QueryDocCount: The query_doc_count stores the number of long-clicks
	// on this pair.
	QueryDocCount float64 `json:"queryDocCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImpCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImpCount") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchNavboostQueryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchNavboostQueryInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScienceSearchNavboostQueryInfo) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScienceSearchNavboostQueryInfo
	var s1 struct {
		ImpCount      gensupport.JSONFloat64 `json:"impCount"`
		LccCount      gensupport.JSONFloat64 `json:"lccCount"`
		QueryCount    gensupport.JSONFloat64 `json:"queryCount"`
		QueryDocCount gensupport.JSONFloat64 `json:"queryDocCount"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ImpCount = float64(s1.ImpCount)
	s.LccCount = float64(s1.LccCount)
	s.QueryCount = float64(s1.QueryCount)
	s.QueryDocCount = float64(s1.QueryDocCount)
	return nil
}

// ResearchScienceSearchOrganization: Organization, such as the source
// of a dataset or a funder NOTE: source_organization_mid and
// source_organization_mid_label should always have the same length: the
// mid and label correspond to each other. We don't use a map for
// consistency with Location and if we switch to map, we should switch
// to it in both. Next ID: 6
type ResearchScienceSearchOrganization struct {
	// OrganizationMid: KG mid for the organization or person.
	OrganizationMid []string `json:"organizationMid,omitempty"`

	// OrganizationMidLabel: Label (in the preferred language of the
	// dataset) for the mid.
	OrganizationMidLabel []string `json:"organizationMidLabel,omitempty"`

	// OrganizationName: Unreconciled organization name. We store it here
	// only if there are no organization_mid values present.
	OrganizationName string `json:"organizationName,omitempty"`

	// OrganizationUrl: Original organization url
	OrganizationUrl string `json:"organizationUrl,omitempty"`

	// OriginalOrganizationName: Original name before reconciliation; empty
	// if not reconciled.
	OriginalOrganizationName string `json:"originalOrganizationName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OrganizationMid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OrganizationMid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchOrganization) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchOrganization
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchReconciledMetadata: A proto for storing inferred
// and reconciled metadata for Science Search. Next available tag: 70
type ResearchScienceSearchReconciledMetadata struct {
	// AlternateName: Alternate names and acronyms for the dataset.
	AlternateName []string `json:"alternateName,omitempty"`

	// AuthorList: A string representation of the authors of the dataset,
	// collected from author and creator in raw metadata. The exact format
	// (e.g., comma-separated, etc.) is up to the extender that populates
	// this field. The assumption is that this string may appear in the UI
	// "as is".
	AuthorList string `json:"authorList,omitempty"`

	// Catalog: Catalog that this dataset is a part of.
	Catalog *ResearchScienceSearchCatalog `json:"catalog,omitempty"`

	// CompactIdentifier: Compact Identifiers (for example
	// "RRID:SCR_002088") that can be resolved by Identifiers.org or N2T.net
	// meta-resolvers.
	CompactIdentifier []string `json:"compactIdentifier,omitempty"`

	// CompactIdentifierFromCitation: Compact Identifier(s) extracted from
	// the citation field. Like in the case of DOI(s) those identify the
	// articles related to the dataset rather than the dataset itself.
	CompactIdentifierFromCitation []string `json:"compactIdentifierFromCitation,omitempty"`

	CoverageEndDate *ResearchScienceSearchDate `json:"coverageEndDate,omitempty"`

	// CoverageStartDate: The start and end date that the dataset covers. If
	// the dataset covers a single timepoint, then start and end dates are
	// the same. Use the ISO 8601 format for dates (e.g., 2006-05-23).
	CoverageStartDate *ResearchScienceSearchDate `json:"coverageStartDate,omitempty"`

	// DataDownload: The dataset in downloadable form. There can be multiple
	// data download entries for different file types.
	DataDownload []*ResearchScienceSearchDataDownload `json:"dataDownload,omitempty"`

	// DatasetClassificationFieldsHash: A hash of the raw metadata fields
	// used by the QualityExtender.
	DatasetClassificationFieldsHash uint64 `json:"datasetClassificationFieldsHash,omitempty,string"`

	// DatasetClassificationScore: Probability that the entity is in fact a
	// dataset (in contrast to spam or website labelled as dataset that does
	// not describe a dataset).
	DatasetClassificationScore float64 `json:"datasetClassificationScore,omitempty"`

	// DateCreated: The date when the dataset was created.
	DateCreated *ResearchScienceSearchDate `json:"dateCreated,omitempty"`

	// DateModified: The date when the dataset was modified.
	DateModified *ResearchScienceSearchDate `json:"dateModified,omitempty"`

	// DatePublished: The date when the dataset was published.
	DatePublished *ResearchScienceSearchDate `json:"datePublished,omitempty"`

	// DateUpdated: Most recent of the three dates (published, created,
	// modified)
	DateUpdated *ResearchScienceSearchDate `json:"dateUpdated,omitempty"`

	// Possible values:
	//   "UNKNOWN_STATUS"
	//   "FILE_NAME" - Dataset name is a file name and there are no other
	// names.
	//   "NO_DESCRIPTION" - Dataset has no description.
	//   "DENYLIST_REGEX_MATCH" - Dataset id matches a regex on the
	// denylist.
	//   "DENYLIST_NAME_MATCH" - Dataset name matches a regex on the
	// denylist.
	//   "NAME_SIZE_OUT_OF_BOUNDS" - Dataset name is too short or too long.
	//   "DESCRIPTION_TOO_SHORT" - Dataset description is too short.
	//   "NOT_IN_CATALOG_FOR_DOMAIN" - The dataset comes from a known domain
	// but is not included in the catalog for that domain.
	//   "MIRRORS_POPULAR_DATASET" - The dataset is a mirror of an
	// excessively mirrored popular dataset
	DenylistStatus []string `json:"denylistStatus,omitempty"`

	// Description: Description of the dataset.
	Description []string `json:"description,omitempty"`

	// DescriptionInHtml: Description of the dataset converted to HTML.
	DescriptionInHtml []string `json:"descriptionInHtml,omitempty"`

	// Doi: The DOI for the dataset. We assume that there is only one.
	Doi string `json:"doi,omitempty"`

	// DoiFromCitation: DOI(s) extracted from the citation field. In
	// contrast to the "doi" field these DOIs identify the articles related
	// to the dataset rather than the dataset itself.
	DoiFromCitation []string `json:"doiFromCitation,omitempty"`

	// FieldOfStudy: Field of study: a general, high-level classification of
	// the dataset. This is only populated during indexing time and it is
	// only populated if the classification_source is KNOWLEDGE_GRAPH or
	// it's above inference threshold.
	FieldOfStudy []*ResearchScienceSearchFieldOfStudyInfo `json:"fieldOfStudy,omitempty"`

	// Fingerprint: The fingerprint of basic fields from DatasetMetadata,
	// including: - name - description DEPRECATED
	Fingerprint uint64 `json:"fingerprint,omitempty,string"`

	// Funder: Funder of the dataset.
	Funder []*ResearchScienceSearchOrganization `json:"funder,omitempty"`

	// HasTableSummaries: Indicates if the dataset has table summaries. This
	// field is only populated during indexing time.
	HasTableSummaries bool `json:"hasTableSummaries,omitempty"`

	// Id: A unique id for the dataset. For the data from Spore, this is the
	// spore id, such as, for example
	// "http://accession.nodc.noaa.gov/8500223#__sid=js0" REQUIRED
	Id string `json:"id,omitempty"`

	// IdentifierFromSource: An identifier as provided by the dataset
	// itself.
	IdentifierFromSource []string `json:"identifierFromSource,omitempty"`

	// ImageUrl: The image urls provided by the dataset (e.g., for thumbnail
	// images).
	ImageUrl []string `json:"imageUrl,omitempty"`

	// IndexInCluster: Index of this dataset in its cluster of replicas.
	IndexInCluster int64 `json:"indexInCluster,omitempty"`

	// IsAccessibleForFree: Indicates if the dataset is available for free
	// or behind a paywal http://schema.org/isAccessibleForFree
	//
	// Possible values:
	//   "BOOLEAN_WITH_UNDEFINED_UNDEFINED"
	//   "BOOLEAN_WITH_UNDEFINED_TRUE"
	//   "BOOLEAN_WITH_UNDEFINED_FALSE"
	IsAccessibleForFree string `json:"isAccessibleForFree,omitempty"`

	// IsBasedOn: A resource (most likely another dataset) from which this
	// dataset is derived or from which it is a modification or adaption.
	// http://schema.org/isBasedOn
	IsBasedOn []string `json:"isBasedOn,omitempty"`

	// IsInferred: Indicates whether the metadata was inferred using an ML
	// model rather than from the schema.org fields. Use optional so that
	// explicitly setting to false will ensure the value is passed along to
	// the KG instead of being indistinguisable from being unset and thus
	// not set in the KG. This field was originally non-optional; changing
	// to optional is backwards compatible, but protos created prior to
	// being optional won't have has_is_inferred()
	// (go/proto-proposals/proto3-presence#wire-format-semantic-changes).
	IsInferred bool `json:"isInferred,omitempty"`

	// Keyword: Keywords describing the dataset.
	Keyword []string `json:"keyword,omitempty"`

	// LanguageCode: The 2-letter language code for the source page for the
	// dataset. Same as the language code in source_url_docjoin_info.
	// Populated only when generating output for indexing.
	LanguageCode string `json:"languageCode,omitempty"`

	// License: License for the dataset.
	License []*ResearchScienceSearchLicense `json:"license,omitempty"`

	// LicenseDeprecated: License for the dataset. DEPRECATED
	LicenseDeprecated []string `json:"licenseDeprecated,omitempty"`

	// MeasurementTechnique: A technique or technology used in a Dataset
	// corresponding to the method used for measuring the corresponding
	// variable(s) (described using variableMeasured).
	// http://schema.org/measurementTechnique
	MeasurementTechnique []string `json:"measurementTechnique,omitempty"`

	// MentionedUrls: Mentioned URLs in the description.
	MentionedUrls []string `json:"mentionedUrls,omitempty"`

	// Possible values:
	//   "UNKNOWN_DATASET_TYPE"
	//   "DATASET_TYPE"
	//   "TABLE_TYPE"
	//   "FIGURE_TYPE"
	MetadataType string `json:"metadataType,omitempty"`

	// Name: The names of the dataset.
	Name []string `json:"name,omitempty"`

	// NumberOfDatasetsAtSourceUrl: The number of datasets at the same
	// source url as this dataset.
	NumberOfDatasetsAtSourceUrl int64 `json:"numberOfDatasetsAtSourceUrl,omitempty"`

	// NumberOfScholarCitations: The number of articles that reference this
	// dataset.
	NumberOfScholarCitations int64 `json:"numberOfScholarCitations,omitempty"`

	Publication []*ResearchScienceSearchCitation `json:"publication,omitempty"`

	// RelatedArticleUrl: The url for the article that (likely) describes
	// this dataset.
	RelatedArticleUrl string `json:"relatedArticleUrl,omitempty"`

	// Replica: The info of replicas of this dataset.
	Replica []*ResearchScienceSearchReplica `json:"replica,omitempty"`

	// SameAs: Ids for other instances (not different versions) of this
	// dataset.
	SameAs []string `json:"sameAs,omitempty"`

	// ScholarQuery: Query string to send to Scholar to obtain the best
	// approximation of citations to the dataset.
	ScholarQuery string `json:"scholarQuery,omitempty"`

	// ScholarlyArticle: For tables and figures, contains all of the
	// metadata for a scholarly article that was the source of this table or
	// figure. This field is populated only if metadata_type is 'TABLE' or
	// 'FIGURE'.
	ScholarlyArticle *ResearchScienceSearchScholarlyArticle `json:"scholarlyArticle,omitempty"`

	// SourceOrganization: Source of the dataset: unifies provider, creator,
	// author, publisher etc.
	SourceOrganization []*ResearchScienceSearchOrganization `json:"sourceOrganization,omitempty"`

	// SourceUrl: Source url from which we gathered the metadata
	SourceUrl string `json:"sourceUrl,omitempty"`

	// SourceUrlDocjoinInfo: All the information extracted from docjoin, for
	// the source_url of this dataset, aka DatasetMetadata.source_url.
	SourceUrlDocjoinInfo *ResearchScienceSearchSourceUrlDocjoinInfo `json:"sourceUrlDocjoinInfo,omitempty"`

	// SpatialCoverage: Locations that describe spatial coverage of the
	// data. If the data covers multiple locations then each value
	// corresponds to one such location, describing its coordinates, mid,
	// etc.
	SpatialCoverage []*ResearchScienceSearchLocation `json:"spatialCoverage,omitempty"`

	// TopSalientTermLabel: Top salient term labels that describe the
	// dataset document body.
	TopSalientTermLabel []string `json:"topSalientTermLabel,omitempty"`

	// Url: urls for the dataset, including doi.
	Url []string `json:"url,omitempty"`

	// Variable: Variables that the data in the dataset captures (e.g.,
	// pressure, salinity, temperature). For now, these are just strings.
	Variable []string `json:"variable,omitempty"`

	// VersionClusterInfo: Information on the version cluster that the
	// dataset is a part of. This field is populated during the indexing
	// time; the field is populated only if the dataset is part of a version
	// cluster.
	VersionClusterInfo *ResearchScienceSearchVersionClusterInfo `json:"versionClusterInfo,omitempty"`

	// VersionEmbeddingFieldsHash: A hash of the raw metadata fields used by
	// the VersionEmbeddingExtender.
	VersionEmbeddingFieldsHash uint64 `json:"versionEmbeddingFieldsHash,omitempty,string"`

	// VersionEmbeddingVector: An embedding for the dataset to be used by
	// the VersionAggregator.
	VersionEmbeddingVector []float64 `json:"versionEmbeddingVector,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlternateName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlternateName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchReconciledMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchReconciledMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ResearchScienceSearchReconciledMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod ResearchScienceSearchReconciledMetadata
	var s1 struct {
		DatasetClassificationScore gensupport.JSONFloat64 `json:"datasetClassificationScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DatasetClassificationScore = float64(s1.DatasetClassificationScore)
	return nil
}

// ResearchScienceSearchReplica: Stores the information about a dataset
// replica. Next ID: 5
type ResearchScienceSearchReplica struct {
	// CatalogName: The name of the catalog that the replica comes from.
	CatalogName string `json:"catalogName,omitempty"`

	// CatalogUrl: The url of the catalog that the replica comes from.
	CatalogUrl string `json:"catalogUrl,omitempty"`

	// IndexInCluster: The index of this replica in a cluster of replicas.
	IndexInCluster int64 `json:"indexInCluster,omitempty"`

	// Url: Url for the replica.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CatalogName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CatalogName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchReplica) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchReplica
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchScholarlyArticle: Data and associated metadata
// for a scholarly pdf article.
type ResearchScienceSearchScholarlyArticle struct {
	// Citation: Proto containing all of the Scholar Metadata for this
	// article.
	Citation *ScienceCitation `json:"citation,omitempty"`

	// FigureOrTableImage: contains the image of the figure or table cropped
	// out of the pdf page encoded as a PNG.
	FigureOrTableImage string `json:"figureOrTableImage,omitempty"`

	// FigureOrTableOcrText: Contains the text (as detected by OCR)
	// contained inside the image of the figure or table.
	FigureOrTableOcrText string `json:"figureOrTableOcrText,omitempty"`

	// LandingPageUrl: The url of the landing page for the scholarly
	// article.
	LandingPageUrl string `json:"landingPageUrl,omitempty"`

	// PageNumber: The page number where the table and figure is located in
	// the original pdf document.
	PageNumber int64 `json:"pageNumber,omitempty"`

	// PdfDownloadUrl: The url where the pdf file is located for the
	// scholarly article.
	PdfDownloadUrl string `json:"pdfDownloadUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Citation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Citation") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchScholarlyArticle) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchScholarlyArticle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchSourceUrlDocjoinInfo: The proto containing all
// the information we extracted from docjoin, for the source_url of the
// dataset. NEXT TAG: 17
type ResearchScienceSearchSourceUrlDocjoinInfo struct {
	// Possible values:
	//   "UNKNOWN"
	//   "RAFFIA_PROXY_SERVICE" - Fetched through Raffia proxy service
	// (go/raffia-proxy).
	//   "SPORE_DUMP" - Fetched through the data dump by Spore team, aka
	// '/namespace/custom_corpus/prod/clients/tpkit/science_search/export-spo
	// re/ttl=3d/...'
	//   "INFERRED" - Inferred using ML
	DataSource string `json:"dataSource,omitempty"`

	// DisplayUrl: The url used to display in the google search results.
	DisplayUrl string `json:"displayUrl,omitempty"`

	// Docid: The docid of the document.
	Docid uint64 `json:"docid,omitempty,string"`

	// IndexTier: Index tiers (BASE, UNIFIED_ZEPPELIN, etc) that the
	// document belongs to. NOTE: Each document may belong to multiple
	// tiers. NOTE: The original data type is an enum
	// CompositeDoc::SubIndexType. However we don't want to depend on
	// segindexer/compositedoc.proto because the proto is too large.
	// Instead, we use CompositeDoc::SubIndexType_Name( subindexid) to
	// convert into a string representation. To convert string back to
	// CompositeDoc::SubIndexType, use CompositeDoc::SubIndexType_Parse.
	IndexTier []string `json:"indexTier,omitempty"`

	// LanguageCode: The language of the document in the string
	// representation of LanguageCode. Converts from Language Enum to
	// LanguageCode through i18n/identifiers/langenclanguagecodeconverter.h
	// Please use i18n/identifiers/languagecodeconverter.h for converting
	// between LanguageCode and string representation.
	LanguageCode string `json:"languageCode,omitempty"`

	// LatestPageUpdateDate: The syntactic date of a dataset document that
	// reflects the publication date of the content.
	LatestPageUpdateDate string `json:"latestPageUpdateDate,omitempty"`

	// NavboostQuery: A sequence of Navboost queries for the dataset
	// source_url.
	NavboostQuery []*ResearchScienceSearchNavboostQueryInfo `json:"navboostQuery,omitempty"`

	// Pagerank: The page rank of the document.
	Pagerank int64 `json:"pagerank,omitempty"`

	// PetacatInfo: Petacat classifications for the web document. Normally
	// the results from calling Petacat come in a PetacatResponse, which is
	// very flexible and extensible. This proto takes most of the
	// flexibility away - only rephil clusters, taxonomic classifications,
	// and binary classifications, with discretized weights.
	PetacatInfo *FatcatCompactDocClassification `json:"petacatInfo,omitempty"`

	// SalientTerms: A set of salient terms extracted fromthe document.
	// DEPRECATEAD. Moved to DatasetMetadata for performance reasons.
	SalientTerms *QualitySalientTermsSalientTermSet `json:"salientTerms,omitempty"`

	// ScholarInfo: Science per-doc data for inclusion in websearch.
	ScholarInfo *ScienceIndexSignal `json:"scholarInfo,omitempty"`

	// SporeGraphMid: A set of entities from WebRef annotations that are in
	// SPORE_GRAPH.
	SporeGraphMid []string `json:"sporeGraphMid,omitempty"`

	// Title: The title of the document.
	Title string `json:"title,omitempty"`

	// TopEntity: A set of top entities from WebrefAnnotation, top is
	// defined by topicality score, see go/topicality-score for detail.
	// DEPRECATED. See label_to_mids_map instead.
	TopEntity []*RepositoryWebrefWebrefEntity `json:"topEntity,omitempty"`

	// Url: The url of the document.
	Url string `json:"url,omitempty"`

	// WebrefEntity: A set of entities copied from WebRefEntities on cDoc.
	WebrefEntity []*ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo `json:"webrefEntity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataSource") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchSourceUrlDocjoinInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchSourceUrlDocjoinInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo: The mid
// and description of a WebRefEntity.
type ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo struct {
	// DeprecatedEntityType: DEPRECATED. See entity_type instead.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "FIELD_OF_STUDY" - /collection/field_of_studies in KG.
	//   "GEO" - /collection/geo/* in KG.
	//   "ORGANIZATION" - /collection/organization/* in KG
	DeprecatedEntityType string `json:"deprecatedEntityType,omitempty"`

	// Description: The English description of the mid from the KG.
	Description string `json:"description,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "FIELD_OF_STUDY" - /collection/field_of_studies in KG.
	//   "GEO" - /collection/geo/* in KG.
	//   "ORGANIZATION" - /collection/organization/* in KG
	EntityCollectionType []string `json:"entityCollectionType,omitempty"`

	// KgCollection: HRID of the KG collections
	KgCollection []string `json:"kgCollection,omitempty"`

	// Mid: The KG identifier of the WebrefEntity.
	Mid string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeprecatedEntityType") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeprecatedEntityType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ResearchScienceSearchVersionClusterInfo: Stores the information about
// each cluster of versions. Versions are defined in go/s2-versioning.
// Next available tag: 4
type ResearchScienceSearchVersionClusterInfo struct {
	// IndexInVersionCluster: Index of this dataset in its cluster of
	// versions.
	IndexInVersionCluster int64 `json:"indexInVersionCluster,omitempty"`

	// NumVersions: The number of versions in a Version Cluster. This is
	// equivalent to cluster size.
	NumVersions int64 `json:"numVersions,omitempty"`

	// VersionClusterId: A fingerprint id of the cluster of versions this
	// dataset belongs to. This is a hash of a dataset_id in the cluster.
	VersionClusterId uint64 `json:"versionClusterId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "IndexInVersionCluster") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IndexInVersionCluster") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ResearchScienceSearchVersionClusterInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResearchScienceSearchVersionClusterInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RichsnippetsDataObject: Next ID: 11
type RichsnippetsDataObject struct {
	AccessKey string `json:"AccessKey,omitempty"`

	Attribute []*RichsnippetsDataObjectAttribute `json:"attribute,omitempty"`

	// Possible values:
	//   "PAGEMAP"
	//   "MICROFORMAT"
	//   "RDFA"
	//   "METATAGS"
	//   "SCRAPED"
	//   "MICRODATA"
	//   "AUTO_THUMBNAIL" - This is gerenated by auto selecting a thumbnail.
	// We put the src of the image in cse_image DataObject type.
	//   "JSON_LD"
	Source string `json:"source,omitempty"`

	// Type: The object type.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessKey") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessKey") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RichsnippetsDataObject) MarshalJSON() ([]byte, error) {
	type NoMethod RichsnippetsDataObject
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RichsnippetsDataObjectAttribute: Other attributes of the object.
type RichsnippetsDataObjectAttribute struct {
	Cdata string `json:"cdata,omitempty"`

	// Idata: idata holds integer data under the attribute name, and could
	// be interpreted differently according to the attribute name. Example:
	// stores the ImadeData.docid used to generate thumbnails. idata will
	// not be automatically converted into xml (the default behavior), but
	// the behavior can be overwritten if necessary.
	Idata uint64 `json:"idata,omitempty,string"`

	Name string `json:"name,omitempty"`

	// Subobject: A data object can have other data objects nested inside
	// it. This is needed to represent Microformats and RDFa which have
	// nestings e.g., a review with a business with an address, or a review
	// with a rating object. See the Webmaster Central 2009/05 blog on
	// "Introducing Rich Snippets".
	Subobject *Proto2BridgeMessageSet `json:"subobject,omitempty"`

	// Tokenize: Whether we should tokenize the value and cdata when
	// generating restricts from this attribute.
	Tokenize bool `json:"tokenize,omitempty"`

	// Value: Either of cdata or value should be present.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Cdata") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Cdata") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RichsnippetsDataObjectAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod RichsnippetsDataObjectAttribute
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type RichsnippetsPageMap struct {
	DataObject []*RichsnippetsDataObject `json:"DataObject,omitempty"`

	// IgnoreDataObject: If ignore_data_object is set to true, pagemap
	// attachment is processed regardless of whether data object is present
	// or not.
	IgnoreDataObject bool `json:"ignoreDataObject,omitempty"`

	// Possible values:
	//   "REGULAR"
	//   "KOREA_RICH"
	Src string `json:"src,omitempty"`

	Templatetype []*RichsnippetsPageMapTemplateType `json:"templatetype,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataObject") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DataObject") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RichsnippetsPageMap) MarshalJSON() ([]byte, error) {
	type NoMethod RichsnippetsPageMap
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RichsnippetsPageMapTemplateType: Unused fields
type RichsnippetsPageMapTemplateType struct {
	Src string `json:"src,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Src") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Src") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *RichsnippetsPageMapTemplateType) MarshalJSON() ([]byte, error) {
	type NoMethod RichsnippetsPageMapTemplateType
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SafesearchInternalImageSignals: A proto that stores SafeSearch
// internal signals that are not exported to clients.
type SafesearchInternalImageSignals struct {
	ImageEntitiesViolenceScore float64 `json:"imageEntitiesViolenceScore,omitempty"`

	// StarburstPornScore: Additional SafeSearch signals that are used to
	// compute final scores.
	StarburstPornScore float64 `json:"starburstPornScore,omitempty"`

	StarburstViolenceScore float64 `json:"starburstViolenceScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ImageEntitiesViolenceScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ImageEntitiesViolenceScore") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SafesearchInternalImageSignals) MarshalJSON() ([]byte, error) {
	type NoMethod SafesearchInternalImageSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SafesearchInternalImageSignals) UnmarshalJSON(data []byte) error {
	type NoMethod SafesearchInternalImageSignals
	var s1 struct {
		ImageEntitiesViolenceScore gensupport.JSONFloat64 `json:"imageEntitiesViolenceScore"`
		StarburstPornScore         gensupport.JSONFloat64 `json:"starburstPornScore"`
		StarburstViolenceScore     gensupport.JSONFloat64 `json:"starburstViolenceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ImageEntitiesViolenceScore = float64(s1.ImageEntitiesViolenceScore)
	s.StarburstPornScore = float64(s1.StarburstPornScore)
	s.StarburstViolenceScore = float64(s1.StarburstViolenceScore)
	return nil
}

// SafesearchVideoClassifierOutput: Flexible multi-vertical
// classification output. The output for each vertical should be defined
// as a proto extension to this proto. When defining an extension for a
// new vertical please follow the format: message NewVertical { extend
// safesearch.VideoClassifierOutput { optional NewVertical
// classifier_output_extension = ; } optional
// safesearch.VideoVerticalOutput vertical_output = 1; } SafeSearch
// verticals only: Please also update this message with a new extension
// declaration. For more details on extension declaration please refer
// to http://go/proto-proposals/extension-declarations. Please refer to
// http://go/proto2-extensions for details on message extensions.
// LINT.IfChange next extension id: 5
type SafesearchVideoClassifierOutput struct {
}

// SafesearchVideoContentSignals: SafeSearch video content
// classification scores are computed based on go/golden7 video
// features. To access these scores see the library at:
// google3/quality/safesearch/video/api/video_score_info.h
type SafesearchVideoContentSignals struct {
	Scores map[string]float64 `json:"scores,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "V20220330"
	//   "V20220620"
	VersionTag string `json:"versionTag,omitempty"`

	// VideoClassifierOutput: Output of all SafeSearch video classifiers in
	// Amarna.
	VideoClassifierOutput *SafesearchVideoClassifierOutput `json:"videoClassifierOutput,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Scores") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Scores") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SafesearchVideoContentSignals) MarshalJSON() ([]byte, error) {
	type NoMethod SafesearchVideoContentSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ScienceCitation struct {
	// AbstractCitationSource: The source of abstract text that is chosen by
	// science docid assigner.
	AbstractCitationSource int64 `json:"AbstractCitationSource,omitempty"`

	// Possible values:
	//   "UNKNOWN_ABSTRACT_DISPLAY"
	//   "MAIN_ABSTRACT_DISPLAY"
	//   "GRAPHICAL_ABSTRACT_DISPLAY"
	//   "SUMMARY_ABSTRACT_DISPLAY"
	AbstractDisplay string `json:"AbstractDisplay,omitempty"`

	// AbstractHtml: Version of abstract field for display. Contains
	// unsanitized XML/HTML.
	AbstractHtml string `json:"AbstractHtml,omitempty"`

	// AbstractHtmlLeftOver: Leftovers from AbstractHtml. These are usually
	// unrecognized xml/html entities or xml/html tags
	AbstractHtmlLeftOver string `json:"AbstractHtmlLeftOver,omitempty"`

	AbstractLanguage string `json:"AbstractLanguage,omitempty"`

	// Possible values:
	//   "NO_ABSTRACT"
	//   "METADATA_ABSTRACT" - xml or html metatags
	//   "LABELED_HTML_ABSTRACT"
	//   "LABELED_PDF_ABSTRACT"
	//   "UNLABELED_HTML_ABSTRACT" - based on introduction/keywords/other
	// mark
	//   "UNLABELED_PDF_ABSTRACT"
	//   "HTML_TEXT_BLOCK" - first long block of text
	//   "PDF_TEXT_BLOCK"
	AbstractSource string `json:"AbstractSource,omitempty"`

	AbstractText string `json:"AbstractText,omitempty"`

	// AlternateVersionID: Fingerprint of the URL after applying crawl and
	// aggregate rewrites. Different citations with the same
	// AlternateVersionID must have the same VersionID, but not necessarily
	// vice versa. Omitted when identical to the VersionID.
	AlternateVersionID uint64 `json:"AlternateVersionID,omitempty,string"`

	// Anchors: All the anchor text (before, after, formal, etc) for this
	// citation in the referring page.
	Anchors []*ScienceCitationAnchor `json:"Anchors,omitempty"`

	// ArxivSection: e.g. hep-ph
	ArxivSection string `json:"ArxivSection,omitempty"`

	// AuthorListHasEtAl: whether this citation had an "et al" in the author
	// list
	AuthorListHasEtAl bool `json:"AuthorListHasEtAl,omitempty"`

	AuthorMetatagLeftOver string `json:"AuthorMetatagLeftOver,omitempty"`

	// BaseGlobalID: Global document identifier - only available when
	// building increments over a known base index. This id is from the base
	// index.
	BaseGlobalID uint64 `json:"BaseGlobalID,omitempty,string"`

	// BaseLocalID: Set when building an incremental index. Whereas
	// BaseGlobalID is the ID of the corresponding base cluster, the local
	// ID is the ID of an individual citation within that base cluster that
	// corresponds to this reparse.
	BaseLocalID uint64 `json:"BaseLocalID,omitempty,string"`

	// BorrowedAuthors: one bit per author
	BorrowedAuthors int64 `json:"BorrowedAuthors,omitempty"`

	// BorrowedFields: OR of FieldType
	BorrowedFields int64 `json:"BorrowedFields,omitempty"`

	Chapter string `json:"Chapter,omitempty"`

	// CitationSource: citation src: dblp/crossref/paper etc
	CitationSource int64 `json:"CitationSource,omitempty"`

	// CitationSourceUrl: url where record came from
	CitationSourceUrl string `json:"CitationSourceUrl,omitempty"`

	// CitationSrc: DEPRECATED: use CitationSource
	CitationSrc string `json:"CitationSrc,omitempty"`

	// Possible values:
	//   "CLEARED_REASON_NONE"
	//   "CLEARED_REASON_TOC"
	ClearedReason string `json:"ClearedReason,omitempty"`

	// ClusterDiscoveryDate: Used for logging, recommendations, and
	// sort-by-date. Contains the earliest discovery date of the cluster,
	// adjusted for earlier publication dates. Stored in Universal time
	// scale (100 ns ticks since 0001 AD) because Unix timestamp would lead
	// to negative dates for pre-1970 docs.
	ClusterDiscoveryDate int64 `json:"ClusterDiscoveryDate,omitempty,string"`

	// ConferenceId: Identifier for conference series - issn-lite
	ConferenceId string `json:"ConferenceId,omitempty"`

	// ConferenceNumber: 27 in the "27th conference on magical realism"
	ConferenceNumber int64 `json:"ConferenceNumber,omitempty"`

	// CrawledDocid: If a citation is merged from a crawled version and a
	// metadata version, keep the normal docid fp of the crawled version for
	// clustering FP of normal docid of crawl version
	CrawledDocid uint64 `json:"CrawledDocid,omitempty,string"`

	DEPRECATEDMetadataSourceFile string `json:"DEPRECATEDMetadataSourceFile,omitempty"`

	// DEPRECATEDPublisherDisplayName: these fields moved to DownloadURL
	// where they belong
	DEPRECATEDPublisherDisplayName string `json:"DEPRECATEDPublisherDisplayName,omitempty"`

	// DOI: Digital Object Identifier
	DOI string `json:"DOI,omitempty"`

	DblpId string `json:"DblpId,omitempty"`

	// DocumentID: Local document identifier - url fingerprint if we know
	// the url, or fingerprint of all fields if we don't. Different urls
	// have different local docids.
	DocumentID uint64 `json:"DocumentID,omitempty,string"`

	// DspaceID: Dspace uses handle.net handles
	DspaceID string `json:"DspaceID,omitempty"`

	Edition string `json:"Edition,omitempty"`

	Editor []string `json:"Editor,omitempty"`

	FileCreationDay int64 `json:"FileCreationDay,omitempty"`

	// FileCreationMonth: zero-indexed field
	FileCreationMonth int64 `json:"FileCreationMonth,omitempty"`

	// FileCreationYear: date of creation of the pdf/doc
	FileCreationYear int64 `json:"FileCreationYear,omitempty"`

	ISBN string `json:"ISBN,omitempty"`

	ISBNVariant []string `json:"ISBNVariant,omitempty"`

	ISSN string `json:"ISSN,omitempty"`

	ISSNVariant []string `json:"ISSNVariant,omitempty"`

	// IncrementalExpected: Is this article expected to have been indexed in
	// the incremental?
	IncrementalExpected bool `json:"IncrementalExpected,omitempty"`

	JOI string `json:"JOI,omitempty"`

	Keywords []string `json:"Keywords,omitempty"`

	// LCCN: library of congress call number
	LCCN string `json:"LCCN,omitempty"`

	Language string `json:"Language,omitempty"`

	// LegalCitation: The ScienceCitation is how metadata passes through the
	// scholar system. For legal, we use the normal ScienceCitation for the
	// metadata/citation of legal journals. For court/government documents
	// (like opinions or statues), we wrap it in the following embedded
	// message
	LegalCitation *LegalCitation `json:"LegalCitation,omitempty"`

	// LevelOfDiscussion: If this is a target reference, the level of
	// discussion of this reference.
	LevelOfDiscussion int64 `json:"LevelOfDiscussion,omitempty"`

	// Note: random string data - unparsed
	Note string `json:"Note,omitempty"`

	// NumBackwardLinks: for display in gws
	NumBackwardLinks int64 `json:"NumBackwardLinks,omitempty"`

	// NumBackwardLinksFromLegal: hack for legal rollout
	NumBackwardLinksFromLegal int64 `json:"NumBackwardLinksFromLegal,omitempty"`

	// NumBackwardLinksInWoS: numcited in WoS
	NumBackwardLinksInWoS int64 `json:"NumBackwardLinksInWoS,omitempty"`

	// NumForwardLinks: for display in gws
	NumForwardLinks int64 `json:"NumForwardLinks,omitempty"`

	// NumGoodEmbeddedRefs: good embedded refs
	NumGoodEmbeddedRefs int64 `json:"NumGoodEmbeddedRefs,omitempty"`

	// NumHostedPages: If set, then we host this many pages of this
	// citation's content. Note that this field may be set to 0, in which
	// case we should be hosting this content but have failed. DEPRECATED,
	// moved to DownloadURL
	NumHostedPages int64 `json:"NumHostedPages,omitempty"`

	// NumKeyQuotes: for display in gws
	NumKeyQuotes int64 `json:"NumKeyQuotes,omitempty"`

	// NumRelated: for display in gws
	NumRelated int64 `json:"NumRelated,omitempty"`

	// NumRelated2: for experiments
	NumRelated2 int64 `json:"NumRelated2,omitempty"`

	// NumRelated3: for experiments
	NumRelated3 int64 `json:"NumRelated3,omitempty"`

	// NumSectionRefs: refs in marked section
	NumSectionRefs int64 `json:"NumSectionRefs,omitempty"`

	// NumVersions: for display in gws
	NumVersions int64 `json:"NumVersions,omitempty"`

	// Number: can be 1-3
	Number string `json:"Number,omitempty"`

	OnlineDay int64 `json:"OnlineDay,omitempty"`

	// OnlineMonth: OnlineMonth is a zero-indexed field (0 is January).
	OnlineMonth int64 `json:"OnlineMonth,omitempty"`

	OnlineYear int64 `json:"OnlineYear,omitempty"`

	// OtherID: eg ERIC doc number or TR number
	OtherID string `json:"OtherID,omitempty"`

	PMCID string `json:"PMCID,omitempty"`

	// PMID: Pubmed ID
	PMID string `json:"PMID,omitempty"`

	// Pages: Using string to handle all kinds of page specifications.
	// Internal structure is not really needed.
	Pages string `json:"Pages,omitempty"`

	ParseSource int64 `json:"ParseSource,omitempty"`

	// PatentApplicationNumber: Note that an issued patent has a
	// PatentNumber and can also have a PatentApplicationNumber, whereas a
	// patent application has a PatentApplicationNumber and can also have a
	// PatentPublicationNumber.
	PatentApplicationNumber string `json:"PatentApplicationNumber,omitempty"`

	// PatentClassification: patent classification e.g., "B24B 3100"
	PatentClassification []string `json:"PatentClassification,omitempty"`

	// PatentCountry: 2-letter country code where patent was issued, see
	// ocean/metadata/patent_record.proto::Patent_Record::country_code for
	// EPO one patent pertains to a list of countries.
	PatentCountry []string `json:"PatentCountry,omitempty"`

	// PatentNumber: number according to USPTO/EPO/JPO scheme.
	PatentNumber string `json:"PatentNumber,omitempty"`

	// PatentOffice: one of the above
	PatentOffice int64 `json:"PatentOffice,omitempty"`

	PatentPublicationNumber string `json:"PatentPublicationNumber,omitempty"`

	// PublicationDay: for patents, publicationD/M/Y is the date of issue,
	// not application
	PublicationDay int64 `json:"PublicationDay,omitempty"`

	// PublicationMonth: month from bibtex PublicationMonth is a
	// zero-indexed field (0 is January).
	PublicationMonth int64 `json:"PublicationMonth,omitempty"`

	// PublicationVenue: where published - subsumes booktitle, howpublished
	// and journal from bibtex
	PublicationVenue string `json:"PublicationVenue,omitempty"`

	PublicationVenueVariant []string `json:"PublicationVenueVariant,omitempty"`

	// PublicationYear: year from bibtext full year
	PublicationYear int64 `json:"PublicationYear,omitempty"`

	// PublisherAddress: address from bibtex
	PublisherAddress string `json:"PublisherAddress,omitempty"`

	PublisherId string `json:"PublisherId,omitempty"`

	// PublisherOrg: subsumes organization, school and institution from
	// bibtex
	PublisherOrg string `json:"PublisherOrg,omitempty"`

	// PubvenueID: local journal number
	PubvenueID string `json:"PubvenueID,omitempty"`

	// ReviewTypeReason: bitmap of ReviewArticleTypeReasons
	ReviewTypeReason int64 `json:"ReviewTypeReason,omitempty"`

	SICI string `json:"SICI,omitempty"`

	Series string `json:"Series,omitempty"`

	Title string `json:"Title,omitempty"`

	// TitleHtml: Version of title for display. Contains unsanitized
	// HTML/XML.
	TitleHtml string `json:"TitleHtml,omitempty"`

	// TitleHtmlLeftOver: Leftovers from TitleHtml. These are usually
	// unrecognized xml/html entities or xml/html tags
	TitleHtmlLeftOver string `json:"TitleHtmlLeftOver,omitempty"`

	// TranslatedAuthorListHasEtAl: etal marker for the translated author
	// list - just in case
	TranslatedAuthorListHasEtAl bool `json:"TranslatedAuthorListHasEtAl,omitempty"`

	// Type: ArticleType
	Type int64 `json:"Type,omitempty"`

	// UnmatchedEmailAddr: Email addresses found in the document that we
	// weren't able to match
	UnmatchedEmailAddr []string `json:"UnmatchedEmailAddr,omitempty"`

	// UnmatchedInstitution: Author affiliations found in the document that
	// we weren't able to match up to specific authors.
	UnmatchedInstitution []string `json:"UnmatchedInstitution,omitempty"`

	// VersionID: Document version identifier - fingerprint of an id
	// computed from the url, or of bibliographic data from a publisher.
	// Different urls for the same article from the same source have the
	// same version id (e.g., abstract, pdf version, and html version).
	VersionID uint64 `json:"VersionID,omitempty,string"`

	Volume int64 `json:"Volume,omitempty"`

	// WOSID: Web of Science ID
	WOSID string `json:"WOSID,omitempty"`

	// WorldViewable: Is this version of the article world viewable?
	WorldViewable bool `json:"WorldViewable,omitempty"`

	Accessurl []*ScienceCitationAccessURL `json:"accessurl,omitempty"`

	Alternateabstract []*ScienceCitationAlternateAbstract `json:"alternateabstract,omitempty"`

	Alternatetitle []*ScienceCitationAlternateTitle `json:"alternatetitle,omitempty"`

	Author []*ScienceCitationAuthor `json:"author,omitempty"`

	Category []*ScienceCitationCategory `json:"category,omitempty"`

	Downloadurl []*ScienceCitationDownloadURL `json:"downloadurl,omitempty"`

	Funding []*ScienceCitationFunding `json:"funding,omitempty"`

	Referencediscussion []*ScienceCitationReferenceDiscussion `json:"referencediscussion,omitempty"`

	Subject []*ScienceCitationSubject `json:"subject,omitempty"`

	Translatedauthor []*ScienceCitationTranslatedAuthor `json:"translatedauthor,omitempty"`

	Unioncatalog []*ScienceCitationUnionCatalog `json:"unioncatalog,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AbstractCitationSource") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbstractCitationSource")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitation) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationAccessURL: User-defined URL and its last access data
// for citation manager.
type ScienceCitationAccessURL struct {
	AccessDay int64 `json:"AccessDay,omitempty"`

	// AccessMonth: AccessMonth is a zero-indexed field (0 is January).
	AccessMonth int64 `json:"AccessMonth,omitempty"`

	AccessYear int64 `json:"AccessYear,omitempty"`

	UrlStr string `json:"UrlStr,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationAccessURL) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationAccessURL
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationAlternateAbstract: There are templated functions that
// fill the abstract fields designed to take either ScienceCitation or
// ScienceCitation::AlternateAbstract, so these field names must match
// those used for the primary abstract.
type ScienceCitationAlternateAbstract struct {
	// Possible values:
	//   "UNKNOWN_ABSTRACT_DISPLAY"
	//   "MAIN_ABSTRACT_DISPLAY"
	//   "GRAPHICAL_ABSTRACT_DISPLAY"
	//   "SUMMARY_ABSTRACT_DISPLAY"
	AbstractDisplay string `json:"AbstractDisplay,omitempty"`

	// AbstractHtml: Version of abstract field for display. This may contain
	// XML/HTML tags.
	AbstractHtml string `json:"AbstractHtml,omitempty"`

	// AbstractHtmlLeftOver: Leftovers from AbstractHtml. These are usually
	// unrecognized xml/html entities or xml/html tags
	AbstractHtmlLeftOver string `json:"AbstractHtmlLeftOver,omitempty"`

	AbstractLanguage string `json:"AbstractLanguage,omitempty"`

	AbstractText string `json:"AbstractText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbstractDisplay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbstractDisplay") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationAlternateAbstract) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationAlternateAbstract
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationAlternateTitle: alternate titles (including language
// where available)
type ScienceCitationAlternateTitle struct {
	Language string `json:"Language,omitempty"`

	Title string `json:"Title,omitempty"`

	// TitleHtml: Version of title for display. Contains unsanitized
	// HTML/XML.
	TitleHtml string `json:"TitleHtml,omitempty"`

	// TitleHtmlLeftOver: Leftovers from TitleHtml. These are usually
	// unrecognized xml/html entities or xml/html tags
	TitleHtmlLeftOver string `json:"TitleHtmlLeftOver,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationAlternateTitle) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationAlternateTitle
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationAnchor: The anchor class holds content relevant to a
// citation, for example, the text before or after the citation that
// explains what the citation is about.
type ScienceCitationAnchor struct {
	// DEPRECATEDSrcFP: Fingerprint of the referral document. The
	// fingerprint should resist to small variance in the document content.
	// DO NOT USE IT!
	DEPRECATEDSrcFP uint64 `json:"DEPRECATEDSrcFP,omitempty,string"`

	// Count: Number of times this anchor text appears, only consider the
	// text itself
	Count int64 `json:"count,omitempty"`

	// Face: font face bitmask: kBold, kItalic, etc.
	Face int64 `json:"face,omitempty"`

	// Size: font size, in px
	Size int64 `json:"size,omitempty"`

	// Text: Space-delimited anchor words. Text that needs segmentation
	// (like CJK or Thai) is unsegmented. Generated by
	// ScienceParseUtils::AppendTokenSeqToString()
	Text string `json:"text,omitempty"`

	// Type: one of the "Type" value defined below.
	Type int64 `json:"type,omitempty"`

	// Weight: weight of the anchor by looking where we get this anchor
	// text. It can be PR, court level, year, or the combination of
	// differerent aspects. weights are 1 - 128 defined as "Weights"
	Weight int64 `json:"weight,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DEPRECATEDSrcFP") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDSrcFP") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationAuthor: author names should be in the order specified
// in the paper
type ScienceCitationAuthor struct {
	Comment string `json:"Comment,omitempty"`

	// Department: not in bibtex - from paper
	Department string `json:"Department,omitempty"`

	Email string `json:"Email,omitempty"`

	// GuessOrderType: Tracks the GuessNameOrder case used to parse this
	// author name, defaults to 0 simply means that GuessNameOrder wasn't
	// used.
	GuessOrderType int64 `json:"GuessOrderType,omitempty"`

	// ID: Author ID. Formatted as idtype:id
	ID []string `json:"ID,omitempty"`

	// Institution: not in bibtex - from paper
	Institution string `json:"Institution,omitempty"`

	IsCJKForeignName bool `json:"IsCJKForeignName,omitempty"`

	IsCorrespondingAuthor bool `json:"IsCorrespondingAuthor,omitempty"`

	LastName string `json:"LastName,omitempty"`

	OtherNames string `json:"OtherNames,omitempty"`

	SourceText string `json:"SourceText,omitempty"`

	// Type: Type is one of the contributors types. Writers are the default.
	Type int64 `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Comment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Comment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationAuthor) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationAuthor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ScienceCitationCategory struct {
	Name string `json:"Name,omitempty"`

	// Type: ontology/set of categories for the category
	Type string `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationCategory) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationCategory
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationDownloadURL: Download URL mentioned in citation; we
// keep up to K of them LINT.IfChange
type ScienceCitationDownloadURL struct {
	// BrokenLandingPage: set if we know the landing page is broken
	BrokenLandingPage bool `json:"BrokenLandingPage,omitempty"`

	CanonicalUrlfp uint64 `json:"CanonicalUrlfp,omitempty,string"`

	// ContentChecksum: checksum of the page
	ContentChecksum uint64 `json:"ContentChecksum,omitempty,string"`

	// ContentType: makes gws display nicer :)
	ContentType int64 `json:"ContentType,omitempty"`

	// CrawlTimestamp: seconds since the epoch
	CrawlTimestamp int64 `json:"CrawlTimestamp,omitempty,string"`

	// DMCANotice: metatag: URL; result was taken down
	DMCANotice string `json:"DMCANotice,omitempty"`

	// DisplayOrg: publisher display name
	DisplayOrg string `json:"DisplayOrg,omitempty"`

	// DisplayPriority: display preference score
	DisplayPriority int64 `json:"DisplayPriority,omitempty"`

	DownloadDay int64 `json:"DownloadDay,omitempty"`

	// DownloadMonth: DownloadMonth is a zero-indexed field (0 is January).
	DownloadMonth int64 `json:"DownloadMonth,omitempty"`

	// DownloadYear: no abbrv
	DownloadYear int64 `json:"DownloadYear,omitempty"`

	// ExcerptContent: first few lines of abstract'ish excerpt
	ExcerptContent string `json:"ExcerptContent,omitempty"`

	// ExcerptDebugLabel: label for excerpt (abstract, summary, ..)
	ExcerptDebugLabel string `json:"ExcerptDebugLabel,omitempty"`

	// FirstDiscovered: seconds since the epoch
	FirstDiscovered int64 `json:"FirstDiscovered,omitempty,string"`

	// HostedNumPages: explicit zero means hosting failed
	HostedNumPages int64 `json:"HostedNumPages,omitempty"`

	HostedStartPage int64 `json:"HostedStartPage,omitempty"`

	// HtmlTitle: html title of the page
	HtmlTitle string `json:"HtmlTitle,omitempty"`

	// InPrevIndex: is url included in a previous index
	InPrevIndex bool `json:"InPrevIndex,omitempty"`

	// IndexPriority: indexing preference score
	IndexPriority int64 `json:"IndexPriority,omitempty"`

	// LegalMustInclude: e.g., in law_articles.pat
	LegalMustInclude bool `json:"LegalMustInclude,omitempty"`

	// LikelyAheadPrint: Whether this is likely the URL for an ahead print,
	// at indexing time.
	LikelyAheadPrint bool `json:"LikelyAheadPrint,omitempty"`

	// LikelyDifferentMetricsVenue: In the context of a given venue in
	// Scholar Metrics, whether this URL likely does not link to the current
	// venue.
	LikelyDifferentMetricsVenue bool `json:"LikelyDifferentMetricsVenue,omitempty"`

	// LikelyLegalJournal: e.g., in legal_journals.pat
	LikelyLegalJournal bool `json:"LikelyLegalJournal,omitempty"`

	// LikelyNoCache: badurls_nocache at indexing time
	LikelyNoCache bool `json:"LikelyNoCache,omitempty"`

	// LikelyNoIndex: badurls_noreturngws at indexing time
	LikelyNoIndex bool `json:"LikelyNoIndex,omitempty"`

	// LikelyWorldViewable: Likely to be free-to-read for everyone, after
	// accounting for library links etc.
	LikelyWorldViewable bool `json:"LikelyWorldViewable,omitempty"`

	// LongChunkCount: number of long paragraphs
	LongChunkCount int64 `json:"LongChunkCount,omitempty"`

	// MaybeNoIndexReparse: Incremental only: mark as NoIndexed if this is a
	// reparse and the base version is NoIndexed.
	MaybeNoIndexReparse bool `json:"MaybeNoIndexReparse,omitempty"`

	// MetadataUrl: url of publisher metadata file
	MetadataUrl string `json:"MetadataUrl,omitempty"`

	// MustInclude: e.g., in science_articles.pat
	MustInclude bool `json:"MustInclude,omitempty"`

	// NoArchive: metatag: don't show cached version
	NoArchive bool `json:"NoArchive,omitempty"`

	// NoIndex: metatag: don't display this url
	NoIndex bool `json:"NoIndex,omitempty"`

	// NoSnippet: metatag: don't show snippet
	NoSnippet bool `json:"NoSnippet,omitempty"`

	// OceanView: describes whether url is viewable in ocean
	OceanView *ScienceOceanView `json:"OceanView,omitempty"`

	// OutLinkCount: number of external URLs (in PDF).
	OutLinkCount int64 `json:"OutLinkCount,omitempty"`

	// PageCount: Number of pages in the pdf2html conversion output. Only
	// set for PDFs. For a partitioned PDF, this is the page count of the
	// entire volume.
	PageCount int64 `json:"PageCount,omitempty"`

	// ReferencesInPrevIndex: were references parsed in a previous index
	ReferencesInPrevIndex bool `json:"ReferencesInPrevIndex,omitempty"`

	// Type: ArticleType for this particular url
	Type int64 `json:"Type,omitempty"`

	UrlAfterRedirects string `json:"UrlAfterRedirects,omitempty"`

	UrlStr string `json:"UrlStr,omitempty"`

	// WordCount: number of words in content/body
	WordCount int64 `json:"WordCount,omitempty"`

	// WorldViewable: metatag: is viewable by world
	WorldViewable bool `json:"WorldViewable,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrokenLandingPage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrokenLandingPage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationDownloadURL) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationDownloadURL
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ScienceCitationFunding struct {
	// Agency: values are from FundingAgency enum
	Agency int64 `json:"Agency,omitempty"`

	// AgencyName: Text name of the agency. For analysis. Plus for agencies
	// that don't have an enum.
	AgencyName string `json:"AgencyName,omitempty"`

	// DebugExtractionInfo: Funding entries for the same agency and grant
	// number can be merged during our extraction process so we maintain a
	// record of all the deduped ExtractionInfo messages within the
	// remaining entry.
	DebugExtractionInfo []*ScienceCitationFundingExtractionInfo `json:"DebugExtractionInfo,omitempty"`

	// DebugFundingTextBlock: Text block from which the funding entry was
	// extracted. Intended to be used for offline analysis. DEPRECATED
	DebugFundingTextBlock string `json:"DebugFundingTextBlock,omitempty"`

	GrantNumber string `json:"GrantNumber,omitempty"`

	// Recipient: funding recipient
	Recipient string `json:"Recipient,omitempty"`

	// SourceText: Original text for the funding acknowledgement
	SourceText string `json:"SourceText,omitempty"`

	// UrlBasedFundingSource: Whether this funding info was added because
	// this article was at the exclusive repository for this agency.
	UrlBasedFundingSource bool `json:"UrlBasedFundingSource,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Agency") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Agency") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationFunding) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationFunding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationFundingExtractionInfo: Holds information about the
// source of the funding entry.
type ScienceCitationFundingExtractionInfo struct {
	// DebugFundingTextBlock: Text block context from which the funding
	// entry was extracted. Optionally filled and intended to be used for
	// offline analysis.
	DebugFundingTextBlock string `json:"DebugFundingTextBlock,omitempty"`

	// Possible values:
	//   "UNSPECIFIED_DOC_PART"
	//   "DOC_PREFIX"
	//   "BEFORE_REFS"
	//   "AFTER_REFS"
	//   "DOC_SUFFIX"
	DocPart string `json:"DocPart,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "ACKNOWLEDGEMENT"
	//   "FOOTNOTE"
	//   "NEAR_REFS"
	//   "BODY"
	ParseSection string `json:"ParseSection,omitempty"`

	// Possible values:
	//   "UNSPECIFIED"
	//   "HTML"
	//   "HTML_METADATA"
	//   "PDF"
	//   "XML_METADATA"
	//   "XML_TEXT"
	//   "URL_BASED_FUNDING"
	Source string `json:"Source,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DebugFundingTextBlock") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugFundingTextBlock") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationFundingExtractionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationFundingExtractionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationReferenceDiscussion: If this is a source document, the
// levels of discussion of the references this document cites.
type ScienceCitationReferenceDiscussion struct {
	Level int64 `json:"Level,omitempty"`

	TargetID uint64 `json:"TargetID,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Level") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Level") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationReferenceDiscussion) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationReferenceDiscussion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationSubject: subject classification
type ScienceCitationSubject struct {
	// Name: e.g., "eng"
	Name string `json:"Name,omitempty"`

	// Probability: [0,1]
	Probability float64 `json:"Probability,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationSubject) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationSubject
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ScienceCitationSubject) UnmarshalJSON(data []byte) error {
	type NoMethod ScienceCitationSubject
	var s1 struct {
		Probability gensupport.JSONFloat64 `json:"Probability"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Probability = float64(s1.Probability)
	return nil
}

// ScienceCitationTranslatedAuthor: translated author names. we usually
// get these for non-english papers which provide english
// title/author/abstract info
type ScienceCitationTranslatedAuthor struct {
	Department string `json:"Department,omitempty"`

	Email string `json:"Email,omitempty"`

	GuessOrderType int64 `json:"GuessOrderType,omitempty"`

	Institution string `json:"Institution,omitempty"`

	Language string `json:"Language,omitempty"`

	LastName string `json:"LastName,omitempty"`

	OtherNames string `json:"OtherNames,omitempty"`

	SourceText string `json:"SourceText,omitempty"`

	Type int64 `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Department") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Department") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationTranslatedAuthor) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationTranslatedAuthor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceCitationUnionCatalog: Create UnionCatalog as a group if we
// want to later add book level informations.
type ScienceCitationUnionCatalog struct {
	CanonicalUrlfp uint64 `json:"CanonicalUrlfp,omitempty,string"`

	// MetadataUrl: url of catalog metadata file
	MetadataUrl string `json:"MetadataUrl,omitempty"`

	// NumLibraries: Information about the number of libraries the citation
	// appears. It should be useful for ranking.
	NumLibraries int64 `json:"NumLibraries,omitempty"`

	// Subject: Categories classification of the citation
	Subject []string `json:"Subject,omitempty"`

	// Url: UnionCatalog url to display to users
	Url string `json:"Url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalUrlfp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalUrlfp") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ScienceCitationUnionCatalog) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceCitationUnionCatalog
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ScienceIndexSignal struct {
	// HtmlTitleFp: Fingerprint of the html title of the page. This is
	// useful for checking if we have the same version of the page as
	// websearch.
	HtmlTitleFp int64 `json:"HtmlTitleFp,omitempty,string"`

	// IndexSelectionScore: Index selection score for websearch, bigger is
	// better: (0.5,1.0] - prefer selection into the base index, (0.0,0.5] -
	// prefer selection into the supplemental index.
	IndexSelectionScore float64 `json:"IndexSelectionScore,omitempty"`

	// NumBackwardLinks: Summary statistics.
	NumBackwardLinks int64 `json:"NumBackwardLinks,omitempty"`

	NumRelated int64 `json:"NumRelated,omitempty"`

	NumVersions int64 `json:"NumVersions,omitempty"`

	PublicationDay int64 `json:"PublicationDay,omitempty"`

	PublicationMonth int64 `json:"PublicationMonth,omitempty"`

	// PublicationYear: Publication date.
	PublicationYear int64 `json:"PublicationYear,omitempty"`

	// RemoveLink: Remove this URL from the index - error page, broken
	// landing page, etc. DEPRECATED, was never used or even filled
	// correctly.
	RemoveLink bool `json:"RemoveLink,omitempty"`

	// ScholarId: For links from websearch to scholar.
	ScholarId uint64 `json:"ScholarId,omitempty,string"`

	// Title: Title of the article. Its only filled in when the html title
	// of the page isn't good.
	Title string `json:"Title,omitempty"`

	// VisiblePrefixTerms: Length of document prefix that most users are
	// likely to see. Only filled in when we index subscription fulltext but
	// most users see abstracts. This is a conservative guesstimate - e.g.,
	// ACM shows fulltext to university/company subscribers (including
	// Google employees) based on user's IP address, but we don't know
	// subscriber IPs, so ACM's PDF pages would have ~500 in this field
	// (estimated length of abstract).
	VisiblePrefixTerms int64 `json:"VisiblePrefixTerms,omitempty"`

	Author []*ScienceIndexSignalAuthor `json:"author,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HtmlTitleFp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HtmlTitleFp") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceIndexSignal) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceIndexSignal
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ScienceIndexSignal) UnmarshalJSON(data []byte) error {
	type NoMethod ScienceIndexSignal
	var s1 struct {
		IndexSelectionScore gensupport.JSONFloat64 `json:"IndexSelectionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.IndexSelectionScore = float64(s1.IndexSelectionScore)
	return nil
}

type ScienceIndexSignalAuthor struct {
	LastName string `json:"LastName,omitempty"`

	OtherNames string `json:"OtherNames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LastName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceIndexSignalAuthor) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceIndexSignalAuthor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ScienceOceanView: Describes the viewability of ocean content.
type ScienceOceanView struct {
	Countryview []*ScienceOceanViewCountryView `json:"countryview,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Countryview") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Countryview") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceOceanView) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceOceanView
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type ScienceOceanViewCountryView struct {
	// CountryCode: No CountryCode means default viewability. two letter
	// code
	CountryCode string `json:"CountryCode,omitempty"`

	// ViewType: enum in ocean::LocaleViewability::ViewType
	ViewType int64 `json:"ViewType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ScienceOceanViewCountryView) MarshalJSON() ([]byte, error) {
	type NoMethod ScienceOceanViewCountryView
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SdrEmbedding struct {
	CompressedEmbeddings *QualityRankembedMustangMustangRankEmbedInfo `json:"compressedEmbeddings,omitempty"`

	Values []float64 `json:"values,omitempty"`

	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "CompressedEmbeddings") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CompressedEmbeddings") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SdrEmbedding) MarshalJSON() ([]byte, error) {
	type NoMethod SdrEmbedding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SdrPageAnchorsDocInfo struct {
	Articleness float64 `json:"articleness,omitempty"`

	PageAnchors []*SdrPageAnchorsSitelink `json:"pageAnchors,omitempty"`

	Qscore float64 `json:"qscore,omitempty"`

	SitelinkWrapper []*SdrPageAnchorsSitelinkWrapper `json:"sitelinkWrapper,omitempty"`

	TextRichness float64 `json:"textRichness,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Articleness") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Articleness") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SdrPageAnchorsDocInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SdrPageAnchorsDocInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SdrPageAnchorsDocInfo) UnmarshalJSON(data []byte) error {
	type NoMethod SdrPageAnchorsDocInfo
	var s1 struct {
		Articleness  gensupport.JSONFloat64 `json:"articleness"`
		Qscore       gensupport.JSONFloat64 `json:"qscore"`
		TextRichness gensupport.JSONFloat64 `json:"textRichness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Articleness = float64(s1.Articleness)
	s.Qscore = float64(s1.Qscore)
	s.TextRichness = float64(s1.TextRichness)
	return nil
}

type SdrPageAnchorsSitelink struct {
	// Embedding: Needed for relevance scoring.
	Embedding *SdrEmbedding `json:"embedding,omitempty"`

	// GeometryScore: aggregate score from Section Geometry.
	GeometryScore float64 `json:"geometryScore,omitempty"`

	// HeadingAbbrvScore: Heading Abbreviation score.
	HeadingAbbrvScore float64 `json:"headingAbbrvScore,omitempty"`

	// HpScore: Needed for heading/passage filtering.
	HpScore float64 `json:"hpScore,omitempty"`

	Level int64 `json:"level,omitempty"`

	ScrollTo *SdrScrollTo `json:"scrollTo,omitempty"`

	// SectionHeight: Needed for Geometry Scoring and backoffs. from Section
	// Geometry.
	SectionHeight int64 `json:"sectionHeight,omitempty"`

	// Text: Heading/Reformulated text is needed to display.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Embedding") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Embedding") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SdrPageAnchorsSitelink) MarshalJSON() ([]byte, error) {
	type NoMethod SdrPageAnchorsSitelink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SdrPageAnchorsSitelink) UnmarshalJSON(data []byte) error {
	type NoMethod SdrPageAnchorsSitelink
	var s1 struct {
		GeometryScore     gensupport.JSONFloat64 `json:"geometryScore"`
		HeadingAbbrvScore gensupport.JSONFloat64 `json:"headingAbbrvScore"`
		HpScore           gensupport.JSONFloat64 `json:"hpScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.GeometryScore = float64(s1.GeometryScore)
	s.HeadingAbbrvScore = float64(s1.HeadingAbbrvScore)
	s.HpScore = float64(s1.HpScore)
	return nil
}

// SdrPageAnchorsSitelinkWrapper: This wrapper is used for passing in
// additional information to generate embeddings in Goldmine.
type SdrPageAnchorsSitelinkWrapper struct {
	AbbreviatedHeadingText string `json:"abbreviatedHeadingText,omitempty"`

	AbbrvEmbedding *SdrEmbedding `json:"abbrvEmbedding,omitempty"`

	HeadingEmbedding *SdrEmbedding `json:"headingEmbedding,omitempty"`

	NormalizedHeadingText string `json:"normalizedHeadingText,omitempty"`

	PassageEmbedding *SdrEmbedding `json:"passageEmbedding,omitempty"`

	PassageText string `json:"passageText,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AbbreviatedHeadingText") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbbreviatedHeadingText")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SdrPageAnchorsSitelinkWrapper) MarshalJSON() ([]byte, error) {
	type NoMethod SdrPageAnchorsSitelinkWrapper
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SdrScrollTo: Data needed to construct a go/scroll-to text fragment.
// The url fragment is: #:~:text=[prefix-,]text_start,text_end
type SdrScrollTo struct {
	OnpageMatches *SdrScrollToOnPageMatches `json:"onpageMatches,omitempty"`

	// Prefix: Prefix to help with disambiguating between multiple text
	// matches on page. Optional.
	Prefix string `json:"prefix,omitempty"`

	// Suffix: Suffix to help with disambiguating between multiple text
	// matches on page. Optional.
	Suffix string `json:"suffix,omitempty"`

	// TextEnd: End of the text span to be highlighted. Optional.
	TextEnd string `json:"textEnd,omitempty"`

	// TextStart: Start of the text span to be highlighted.
	TextStart string `json:"textStart,omitempty"`

	// ForceSendFields is a list of field names (e.g. "OnpageMatches") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OnpageMatches") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SdrScrollTo) MarshalJSON() ([]byte, error) {
	type NoMethod SdrScrollTo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SdrScrollToOnPageMatches: Number of matches in the page when using
// text alone, prefix + text, text + suffix, and prefix + text + suffix.
// The match is case-insensitive to align with go/scroll-to behavior.
type SdrScrollToOnPageMatches struct {
	Text int64 `json:"text,omitempty"`

	TextWithPrefix int64 `json:"textWithPrefix,omitempty"`

	TextWithPrefixSuffix int64 `json:"textWithPrefixSuffix,omitempty"`

	TextWithSuffix int64 `json:"textWithSuffix,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Text") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Text") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SdrScrollToOnPageMatches) MarshalJSON() ([]byte, error) {
	type NoMethod SdrScrollToOnPageMatches
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivity: Encapsulates sensitivity mode,
// source, and other metadata, used for ranking when there are multiple
// sensitivies set by default sources (eg, followon, query
// understanding, attentional entity).
type SearchPolicyRankableSensitivity struct {
	// AccountProvenance: Propagated from
	// knowledge.answers.sensitivity.Sensitivity account_provenance. Any
	// ambiguity between the data here and dasher_user should be resolved by
	// the conversion to pToken in
	// http://source/search?q=symbol:CreatePTokenFromSensitivity
	AccountProvenance []*QualityQrewriteAccountProvenance `json:"accountProvenance,omitempty"`

	AttentionalEntity *SearchPolicyRankableSensitivityAttentionalEntity `json:"attentionalEntity,omitempty"`

	// DasherUser: True iff the query is from a Dasher user.
	DasherUser bool `json:"dasherUser,omitempty"`

	Followon *SearchPolicyRankableSensitivityFollowOn `json:"followon,omitempty"`

	Prefilter *SearchPolicyRankableSensitivityPrefilter `json:"prefilter,omitempty"`

	Qu *SearchPolicyRankableSensitivityQueryUnderstanding `json:"qu,omitempty"`

	// SensitivityMode: Key of a sensitivity.
	//
	// Possible values:
	//   "UNKNOWN" - Should only happen when the variable is uninitialized.
	//   "INIT" - Indicates that there is no sensitivity mode yet.
	//   "NONE" - Indicates that no sensitivity mode is active.
	//   "SEND_EMAIL" - Indicates that we are in send email sensitivity
	// mode.
	//   "SEARCH_EMAIL" - Indicates that we are in search email sensitivity
	// mode.
	//   "SENSITIVE_AOG_CONVERSATION" - Indicates that we are in AoG
	// conversation with sensitivity mode active. go/ael-limited-logging
	//   "SMART_HOME_PROVIDE_PIN" - Home Automation pin/paraphrase anwsering
	// query.
	//   "SEARCH_DRIVE" - The sensitivity mode for searching Google Drive
	// documents.
	//   "READ_MESSAGE" - Indicates that we are in read message sensitivity
	// mode.
	//   "SEND_MESSAGE" - Indicates that we are in send message sensitivity
	// mode.
	//   "BROADCAST" - Indicates that we are in broadcast sensitivity mode.
	//   "CALL" - Indicates that we are in call sensitivity mode.
	//   "NOTES_AND_LISTS" - Indicates that we are in Notes and Lists
	// sensitivity mode.
	//   "DEVICE_ACTIONS_AUTH" - Indicates that we are in device actions
	// auth sensitivity mode.
	//   "INTERPRETER_MODE" - Indicates that we are in Interpreter Mode
	// sensitivity mode.
	//   "VOICE_MATCH_ENROLLMENT" - Indicates the we are in voice match
	// enrollment sensitivity mode.
	//   "REMINDERS" - Indicates that we are in Reminders sensitivity mode.
	//   "DESIGNED_FOR_FAMILY" - Indicates that we are in designed for
	// family sensistivity mode (i.e. the query relates to kids content).
	//   "CALENDAR" - Indicates that we are in calendar sensitivity mode
	// (covers read & write).
	//   "HEALTH_AND_FITNESS" - Indicates that we are in health and fitness
	// sensitivity mode.
	//   "MEDIA_PROVIDER_SPOTIFY" - Indicates that we are in 3P media
	// provider Spotify sensitivity mode. This mode is set when a play-media
	// query is intended to be fulfilled by Spotify app when one of the
	// following conditions is met: 1) The query explicitly asks to play on
	// Spotify app. 2) Spotify is the preferred provider for the user. 3)
	// The query requests a Spotify exclusive content. Please see Policy
	// requirements (go/sp-policy-spotify) and design doc
	// (go/spotify-podcast-limited-logging) for reference.
	//   "APP_ACTION_HEALTH" - Indicates that we are in app action health
	// sensitivity mode.
	//   "DG_HOME_FEED" - Indicates that we are in Dragonglass home feed
	// sensitivity mode.
	//   "SEARCH_GSUITE" - Indicates that we are in searching G Suite
	// entities mode. This mode covers Drive documents search, email search,
	// and calendar search.
	//   "ASSISTANT_SURVEY" - Indicates that we are in Assistant CSAT survey
	// sensitivity mode.
	//   "ASSISTANT_MEMORY" - Indicates that we are in Assistant Memory
	// sensitivity mode. Contact: assistant-memory@google.com
	//   "DEPRECATED_SENSITIVE_HEALTH_CONVERSATION" - The following enum
	// values have been deprecated and removed. Replaced by
	// HEALTH_AND_FITNESS (b/147649824)
	//   "DEPRECATED_READ_CALENDAR" - Replaced by CALENDAR (b/144898723)
	//   "DEPRECATED_WRITE_CALENDAR"
	SensitivityMode string `json:"sensitivityMode,omitempty"`

	SyntheticIntent *SearchPolicyRankableSensitivitySyntheticIntent `json:"syntheticIntent,omitempty"`

	WinningFulfillment *SearchPolicyRankableSensitivityFulfillment `json:"winningFulfillment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountProvenance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountProvenance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SearchPolicyRankableSensitivity) MarshalJSON() ([]byte, error) {
	type NoMethod SearchPolicyRankableSensitivity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivityAttentionalEntity: Attentional
// entities (AE) can be pulled from arguments of interpretations,
// entities annotated by Aqua or QRef annotators, and entities mentioned
// in Assistant's response and annotated by the fulfillment logic (see
// https://g3doc.corp.google.com/quality/dialog_manager/attentional_entities/g3doc/overview.md#overview).
// Sensitivity of AEs can be marked by (1) feature developers in a
// Monastery frame, (2) code to infer the sensitivity from Argument
// provenance, and (3) entity annotators, such as Aqua annotator and
// QRef annotator. See go/sensitive-ae.
type SearchPolicyRankableSensitivityAttentionalEntity struct {
	// Possible values:
	//   "UNKNOWN_ORIGIN"
	//   "MONASTERY_VERTICAL_DEVELOPER"
	//   "ARGUMENT_PROVENANCE"
	AeOrigin string `json:"aeOrigin,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AeOrigin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AeOrigin") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SearchPolicyRankableSensitivityAttentionalEntity) MarshalJSON() ([]byte, error) {
	type NoMethod SearchPolicyRankableSensitivityAttentionalEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivityFollowOn: Sensitivity is marked at end
// of the last turn. See go/followon-sensitivity for more details.
type SearchPolicyRankableSensitivityFollowOn struct {
	// BlockNonV2SearchBackends: Should e2e search candidates running in
	// parallel with QU (eg. GBot) be blocked.
	BlockNonV2SearchBackends bool `json:"blockNonV2SearchBackends,omitempty"`

	// IgnoreQueryUnderstanding: Iff true this follow-on sensitivity will
	// rank above the ones determined by query understanding (QU).
	IgnoreQueryUnderstanding bool `json:"ignoreQueryUnderstanding,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BlockNonV2SearchBackends") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlockNonV2SearchBackends")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SearchPolicyRankableSensitivityFollowOn) MarshalJSON() ([]byte, error) {
	type NoMethod SearchPolicyRankableSensitivityFollowOn
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivityFulfillment: Marks that this
// sensitivity is from fulfillment.
type SearchPolicyRankableSensitivityFulfillment struct {
}

// SearchPolicyRankableSensitivityPrefilter: Deprecated, do not use.
type SearchPolicyRankableSensitivityPrefilter struct {
	PropagateOnly bool `json:"propagateOnly,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PropagateOnly") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PropagateOnly") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SearchPolicyRankableSensitivityPrefilter) MarshalJSON() ([]byte, error) {
	type NoMethod SearchPolicyRankableSensitivityPrefilter
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivityQueryUnderstanding: Sensitivity is
// produced by QU.
type SearchPolicyRankableSensitivityQueryUnderstanding struct {
	// IntentOnlyNoPii: QU dectects a sensitive intent with no sensitive
	// content (eg., [Send email]). This flag is only used to trigger a
	// sensitive feature because as a precaution all sensitive features
	// should check current sensitivity mode before triggering; but will NOT
	// block any backends, which means all other features can compete
	// fairly.
	IntentOnlyNoPii bool `json:"intentOnlyNoPii,omitempty"`

	// RewrittenQuery: The rewritten query this sensitivity is for. Note
	// different query rewrites could produce different sensitivities.
	RewrittenQuery string `json:"rewrittenQuery,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntentOnlyNoPii") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntentOnlyNoPii") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SearchPolicyRankableSensitivityQueryUnderstanding) MarshalJSON() ([]byte, error) {
	type NoMethod SearchPolicyRankableSensitivityQueryUnderstanding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SearchPolicyRankableSensitivitySyntheticIntent: Marks that this
// sensitivity is form a synthetic intent.
type SearchPolicyRankableSensitivitySyntheticIntent struct {
}

// SecurityCredentialsAllAuthenticatedUsersProto: Represents a principal
// who has authenticated as any kind of user which the application
// understands. This is typically used for "wiki-like" security, where
// anyone is allowed access so long as they can be held accountable for
// that access. Since the purpose is knowing whom to blame, it is up to
// the application to decide what kinds of users it knows how to blame.
// For example, an application might choose to include GAIA users in
// "all authenticated users", but not include MDB users. Nothing here.
type SecurityCredentialsAllAuthenticatedUsersProto struct {
}

// SecurityCredentialsCapTokenHolderProto: Represents a principal which
// possesses a particular secret string whose cryptographic hash is
// specified here. CapTokens ("Capability Tokens") are used in ACLProto.
// It's expected that ACLs with CapTokenHolders will strongly enforce
// them by Keystore-wrapping crypto keys for the corresponding
// CapTokens.
type SecurityCredentialsCapTokenHolderProto struct {
	// TokenHmacSha1Prefix: The hash of the corresponding capability token.
	// The value is defined to be identical to the one in acl.proto's
	// CapTokenMetadata: 10-byte prefix of HMAC-SHA1 of the token. The HMAC
	// key is the following fixed (non-secret) 512-bit value: 79b1c8f4
	// 82baf523 b8a9ab4a e960f438 c45be041 11f1f222 e8a3f64d aeb05e3d
	// c3576acc ec649194 aede422c 4e48e0d1 ff21234a a6ed6b49 a7fa592e
	// efd7bba3
	TokenHmacSha1Prefix string `json:"tokenHmacSha1Prefix,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TokenHmacSha1Prefix")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TokenHmacSha1Prefix") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsCapTokenHolderProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsCapTokenHolderProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsChatProto: Represents the invitees or other users
// associated with a Babel Chat (see http://goto/babel). Corresponds to
// GroupType CHAT in //social/graph/storage/proto/data.proto.
type SecurityCredentialsChatProto struct {
	// ChatId: Chat IDs consist of alphanumeric characters and colons.
	// Currently required.
	ChatId string `json:"chatId,omitempty"`

	// MemberType: The type of Chat members to consider, e.g. "all members"
	// vs. "invitee" These are defined by legacy_relation_id values in
	// social.graph.storage.EdgeTypeEnum.EdgeType enum options in
	// social/graph/storage/proto/id.proto. See chat.pb (defined in
	// production/config/cdd/socialgraph/mixer_config/prod/node_type_config)
	// for all valid edge types associated with chat. Currently required.
	MemberType int64 `json:"memberType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChatId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChatId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsChatProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsChatProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsCircleProto: Represents a Google+ Circle.
// Currently (12/2011), a Circle is identical to the ContactGroup with
// matching parameters, but Circle must only be used for true Circles
// and not other Focus groups, and should be preferred over ContactGroup
// where applicable. Soon it may become more efficient to check
// membership in a Circle than in a ContactGroup (see
// http://go/superglue). Support for this principal type is currently
// (12/2011) incomplete -- e.g., Keystore does not support it yet (see
// b/5703421).
type SecurityCredentialsCircleProto struct {
	// CircleId: Circle ID is unique only relative to the owner's Gaia ID.
	// Currently required.
	CircleId int64 `json:"circleId,omitempty,string"`

	// OwnerGaiaId: The owner of the circle. Currently required.
	OwnerGaiaId int64 `json:"ownerGaiaId,omitempty,string"`

	// RequiredConsistencyTimestampUsec: If present, then tests for
	// membership in this circle must use data known to be at least as fresh
	// as the given (FBS-assigned) timestamp. See
	// http://go/fbs-consistent-read-after-important-write Before using
	// this, be sure that any service checking authorization against this
	// circle supports checking consistency timestamps. For example, as of
	// 12/2011, Keystore only supports this for the Moonshine configuration,
	// and in others authorization checks will fail if the timestamp is
	// present.
	RequiredConsistencyTimestampUsec int64 `json:"requiredConsistencyTimestampUsec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CircleId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CircleId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsCircleProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsCircleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsCloudPrincipalProto: Principal associated with a
// Cloud Principal representing third party user.
type SecurityCredentialsCloudPrincipalProto struct {
	// Id: Format: "{identity-pool}:{subject}#" Details:
	// go/cloud-principal-identifiers
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsCloudPrincipalProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsCloudPrincipalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsContactGroupProto: A group of contacts for a given
// user, as described in
// http://cs/p#google3/focus/backend/proto/backend.proto Historically
// (and in still-existing ACLs), this was used to represent Google+
// circles as well as contact groups, but this use is now deprecated.
// New code should use the CIRCLE principal type to represent Google+
// circles.
type SecurityCredentialsContactGroupProto struct {
	// GroupId: Group ID is unique only relative to the owner's Gaia ID.
	GroupId int64 `json:"groupId,omitempty,string"`

	OwnerGaiaId int64 `json:"ownerGaiaId,omitempty,string"`

	// RequiredConsistencyTimestampUsec: If present, then tests for
	// membership in this ContactGroup must use data known to be at least as
	// fresh as the given (FBS-assigned) timestamp. See
	// http://go/fbs-consistent-read-after-important-write Before using
	// this, be sure that any service checking authorization against this
	// group supports checking consistency timestamps. For example, as of
	// 12/2011, Keystore only supports this for the Moonshine configuration,
	// and in others authorization checks will fail if the timestamp is
	// present.
	RequiredConsistencyTimestampUsec int64 `json:"requiredConsistencyTimestampUsec,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "GroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroupId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsContactGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsContactGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsEmailOwnerProto: Represents a verified owner of
// the given email address. Note that a single address may have many
// owners, and a single user may own many addresses. (All lower-case, in
// display form -- see com.google.gaia.client.GaiaEmail)
type SecurityCredentialsEmailOwnerProto struct {
	Email string `json:"email,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsEmailOwnerProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsEmailOwnerProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsEventProto: Represents the invitees or other users
// associated with a Google+ Event (see
// http://goto/events-backend-design).
type SecurityCredentialsEventProto struct {
	// EventId: Event IDs consist of alphanumeric characters and colons.
	// Currently required.
	EventId string `json:"eventId,omitempty"`

	// MemberType: The type of Event members to consider, e.g. "all members"
	// vs. "owners" vs. "admins". These are defined by legacy_relation_id
	// values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in
	// social/graph/storage/proto/id.proto. See event.pb (defined in
	// production/config/cdd/socialgraph/mixer_config/prod/node_type_config)
	// for all valid edge types associated with event. Currently required.
	MemberType int64 `json:"memberType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EventId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EventId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsEventProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsEventProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SecurityCredentialsGaiaGroupProto struct {
	GroupId int64 `json:"groupId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "GroupId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroupId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsGaiaGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsGaiaGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsGaiaUserProto: A Gaia account, which may represent
// a user, device, service account, etc. For prod (@prod.google.com)
// accounts, use MdbUserProto instead.
type SecurityCredentialsGaiaUserProto struct {
	UserId int64 `json:"userId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "UserId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UserId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsGaiaUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsGaiaUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsHostProto: Represents a single host. Optionally,
// the MDB owner of the host can be specified.
type SecurityCredentialsHostProto struct {
	// HostName: Lower-case, fully qualified hostname.
	HostName string `json:"hostName,omitempty"`

	// HostOwner: If present, then any checks that compare this Principal to
	// LOAS peer info must confirm the peer's machine owner is equal to
	// 'host_owner'. If absent, then any peer machine owner is acceptable.
	HostOwner string `json:"hostOwner,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HostName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HostName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsHostProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsHostProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SecurityCredentialsLdapGroupProto struct {
	GroupName string `json:"groupName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GroupName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroupName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsLdapGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsLdapGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SecurityCredentialsLdapUserProto struct {
	UserName string `json:"userName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "UserName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "UserName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsLdapUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsLdapUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsMdbGroupProto: An entity from the MDB namespace
// that is to be interpreted as a group. If using this for
// authorization, you should do an exact match of the peer role against
// group_name or any of the names in the Chubby expansion of the MDB
// group named group_name.
type SecurityCredentialsMdbGroupProto struct {
	GroupName string `json:"groupName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GroupName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroupName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsMdbGroupProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsMdbGroupProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsMdbUserProto: An entity from the MDB namespace
// that is to be interpreted as a user. If using this for authorization,
// you should only do an exact match on the peer role against user_name.
type SecurityCredentialsMdbUserProto struct {
	// GaiaId: Do not set this field. Contact credentials-eng@ if you
	// believe you absolutely need to use it. This is the @prod.google.com
	// Gaia ID that corresponds to the MDB user, see go/authn-merge for
	// details. This field may always be safely ignored when performing an
	// authorization check.
	GaiaId int64 `json:"gaiaId,omitempty,string"`

	UserName string `json:"userName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GaiaId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GaiaId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsMdbUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsMdbUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsOAuthConsumerProto: Represents an OAuth consumer,
// a/k/a AuthSub target. These principals are identified by domain name
// (e.g., example.com). Historically, Dasher domain GAIA group IDs have
// been used instead, but that doesn't work: http://go/tricky-gaia-ids
type SecurityCredentialsOAuthConsumerProto struct {
	Domain string `json:"domain,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Domain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Domain") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsOAuthConsumerProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsOAuthConsumerProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsPostiniUserProto: See
// http://s/?fileprint=//depot/google3/security/authentication/postini/auth_token.proto
type SecurityCredentialsPostiniUserProto struct {
	PostiniUserId int64 `json:"postiniUserId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "PostiniUserId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PostiniUserId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsPostiniUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsPostiniUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsPrincipalProto: A Principal represents something
// to which permissions are assigned, often but not always a user or
// group of some kind. It is most appropriate for use in ACLs and
// authorization checks. Callers should prefer to use the wrapper
// classes in google3/security/credentials/public/principal.h
// google3/java/com/google/security/credentials/Principal.java
// google3/security/credentials/go/principal.go unless direct proto
// access is essential. If you update this protocol buffer, please
// update the wrapper classes as well. LINT.IfChange
type SecurityCredentialsPrincipalProto struct {
	// AllAuthenticatedUsers: scope = ALL_AUTHENTICATED_USERS
	AllAuthenticatedUsers *SecurityCredentialsAllAuthenticatedUsersProto `json:"allAuthenticatedUsers,omitempty"`

	// CapTokenHolder: scope = CAP_TOKEN_HOLDER
	CapTokenHolder *SecurityCredentialsCapTokenHolderProto `json:"capTokenHolder,omitempty"`

	// Chat: scope = CHAT
	Chat *SecurityCredentialsChatProto `json:"chat,omitempty"`

	// Circle: scope = CIRCLE
	Circle *SecurityCredentialsCircleProto `json:"circle,omitempty"`

	// CloudPrincipal: scope = CLOUD_PRINCIPAL
	CloudPrincipal *SecurityCredentialsCloudPrincipalProto `json:"cloudPrincipal,omitempty"`

	// ContactGroup: scope = CONTACT_GROUP
	ContactGroup *SecurityCredentialsContactGroupProto `json:"contactGroup,omitempty"`

	// EmailOwner: scope = EMAIL_OWNER
	EmailOwner *SecurityCredentialsEmailOwnerProto `json:"emailOwner,omitempty"`

	// Event: scope = EVENT
	Event *SecurityCredentialsEventProto `json:"event,omitempty"`

	// GaiaGroup: scope = GAIA_GROUP
	GaiaGroup *SecurityCredentialsGaiaGroupProto `json:"gaiaGroup,omitempty"`

	// GaiaUser: scope = GAIA_USER
	GaiaUser *SecurityCredentialsGaiaUserProto `json:"gaiaUser,omitempty"`

	// Host: scope = HOST
	Host *SecurityCredentialsHostProto `json:"host,omitempty"`

	// LdapGroup: scope = LDAP_GROUP
	LdapGroup *SecurityCredentialsLdapGroupProto `json:"ldapGroup,omitempty"`

	// LdapUser: scope = LDAP_USER
	LdapUser *SecurityCredentialsLdapUserProto `json:"ldapUser,omitempty"`

	// MdbGroup: scope = MDB_GROUP
	MdbGroup *SecurityCredentialsMdbGroupProto `json:"mdbGroup,omitempty"`

	// MdbUser: scope = MDB_USER
	MdbUser *SecurityCredentialsMdbUserProto `json:"mdbUser,omitempty"`

	// OauthConsumer: scope = OAUTH_CONSUMER;
	OauthConsumer *SecurityCredentialsOAuthConsumerProto `json:"oauthConsumer,omitempty"`

	// PostiniUser: scope = POSTINI_USER
	PostiniUser *SecurityCredentialsPostiniUserProto `json:"postiniUser,omitempty"`

	// RbacRole: scope = RBAC_ROLE
	RbacRole *SecurityCredentialsRbacRoleProto `json:"rbacRole,omitempty"`

	// RbacSubject: scope = RBAC_SUBJECT
	RbacSubject *SecurityCredentialsRbacSubjectProto `json:"rbacSubject,omitempty"`

	// ResourceRole: scope = RESOURCE_ROLE
	ResourceRole *SecurityCredentialsResourceRoleProto `json:"resourceRole,omitempty"`

	// Scope: This is only optional because required enums cannot be
	// extended. Currently required.
	//
	// Possible values:
	//   "INVALID"
	//   "GAIA_USER"
	//   "GAIA_GROUP"
	//   "LDAP_USER"
	//   "LDAP_GROUP"
	//   "MDB_USER"
	//   "MDB_GROUP"
	//   "POSTINI_USER"
	//   "CONTACT_GROUP"
	//   "SIMPLE_SECRET_HOLDER"
	//   "SIGNING_KEY_POSSESSOR"
	//   "ALL_AUTHENTICATED_USERS"
	//   "OAUTH_CONSUMER"
	//   "HOST"
	//   "SOCIAL_GRAPH_NODE"
	//   "EMAIL_OWNER"
	//   "CAP_TOKEN_HOLDER"
	//   "CIRCLE"
	//   "SQUARE"
	//   "EVENT"
	//   "RESOURCE_ROLE"
	//   "CHAT"
	//   "YOUTUBE_USER"
	//   "UNUSED_ZWIEBACK_SESSION"
	//   "ZWIEBACK_SESSION"
	//   "RBAC_ROLE"
	//   "RBAC_SUBJECT"
	//   "CLOUD_PRINCIPAL" - next tag: 29
	Scope string `json:"scope,omitempty"`

	// SigningKeyPossessor: scope = SIGNING_KEY_POSSESSOR
	SigningKeyPossessor *SecurityCredentialsSigningKeyPossessorProto `json:"signingKeyPossessor,omitempty"`

	// SimpleSecretHolder: scope = SIMPLE_SECRET_HOLDER
	SimpleSecretHolder *SecurityCredentialsSimpleSecretHolderProto `json:"simpleSecretHolder,omitempty"`

	// SocialGraphNode: scope = SOCIAL_GRAPH_NODE
	SocialGraphNode *SecurityCredentialsSocialGraphNodeProto `json:"socialGraphNode,omitempty"`

	// Square: scope = SQUARE
	Square *SecurityCredentialsSquareProto `json:"square,omitempty"`

	// YoutubeUser: scope = YOUTUBE_USER
	YoutubeUser *SecurityCredentialsYoutubeUserProto `json:"youtubeUser,omitempty"`

	// ZwiebackSession: scope = ZWIEBACK_SESSION
	ZwiebackSession *SecurityCredentialsZwiebackSessionProto `json:"zwiebackSession,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllAuthenticatedUsers") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AllAuthenticatedUsers") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsPrincipalProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsPrincipalProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsRbacRoleProto: Principal associated with a given
// RBAC role. This principal is used by Sphinx Provisioning Service for
// RBAC provisionable (go/sphinx-rbacz).
type SecurityCredentialsRbacRoleProto struct {
	Name string `json:"name,omitempty"`

	ObjectId string `json:"objectId,omitempty"`

	// RbacNamespace: DEPRECATED as of 01.11.2019
	RbacNamespace string `json:"rbacNamespace,omitempty"`

	// RbacRoleName: Format: "role/z?" - "role" is the Sphinx globally
	// unique name of the Sphinx role that provisions the RBAC role. - "/z?"
	// suffix indicates which Zanzibar environment stores the role
	// membership data ("/zd": dev, "/zs": staging, "/zp": prod, "/zt":
	// local test instance). Example: "mysystem_myrole/zp"
	RbacRoleName string `json:"rbacRoleName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsRbacRoleProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsRbacRoleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsRbacSubjectProto: Principal associated with a
// given RBAC subject. This principal is used by Sphinx Provisioning
// Service for RBAC provisionable (go/sphinx-rbacz).
type SecurityCredentialsRbacSubjectProto struct {
	// Username: Format "username" without "@domain", e.g., "bogdand".
	Username string `json:"username,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Username") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Username") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsRbacSubjectProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsRbacSubjectProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsResourceRoleProto: A type of sharing target that
// points to some resource's ACL. Used to refer to the set of Principals
// that have the given privilege ('role_id') for the given resource
// ('application_id', 'object_id', 'object_part'). The meaning of
// 'role_id' is interpreted only by implementations of AclRpcService and
// is usually dependent on 'application_id' All fields except
// object_part are required. If present, object_part must be non-empty.
type SecurityCredentialsResourceRoleProto struct {
	ApplicationId string `json:"applicationId,omitempty"`

	ObjectId string `json:"objectId,omitempty"`

	ObjectPart string `json:"objectPart,omitempty"`

	RoleId int64 `json:"roleId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsResourceRoleProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsResourceRoleProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsSigningKeyPossessorProto: Represents a principal
// who possesses a signing key corresponding to the verification key or
// keyset described here.
type SecurityCredentialsSigningKeyPossessorProto struct {
	// KeymasterKeyType: This value must be from the KeyMetadata.Type enum
	// in keymaster.proto.
	KeymasterKeyType int64 `json:"keymasterKeyType,omitempty"`

	// SerializedVerificationKey: The actual verification key bytes
	// corresponding to the above type.
	SerializedVerificationKey string `json:"serializedVerificationKey,omitempty"`

	// SerializedVerificationKeyset: The binary serialized Keymaster
	// SerializedReader of a public keyset. The keyset must contain exactly
	// one key. N.B.: If this field is populated,
	// serialized_verification_key should be set to the empty string and
	// keymaster_key_type should be set to zero.
	SerializedVerificationKeyset string `json:"serializedVerificationKeyset,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KeymasterKeyType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KeymasterKeyType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsSigningKeyPossessorProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsSigningKeyPossessorProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsSimpleSecretHolderProto: Represents a principal
// which possesses a particular, presumably secret, string. Useful for
// things like "auth keys," used for anonymous sharing. Since
// representing this principal with the actual secret included reveals
// the secret, it's best if the requisite condition is enforced in some
// other way, for example via Keystore wrapping attributes (Keystore
// will unwrap only if the specified secret, aka "attribute", is
// presented). All that's stored here is an identifying label.
type SecurityCredentialsSimpleSecretHolderProto struct {
	// Label: A descriptive label to help identify a relevant ACL entry or
	// otherwise disambiguate this instance.
	Label *SecurityCredentialsSimpleSecretLabelProto `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Label") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Label") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsSimpleSecretHolderProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsSimpleSecretHolderProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsSimpleSecretLabelProto: SimpleSecretProto (in
// authenticator.proto) and SimpleSecretHolderProto (below) share the
// notion of a "label", which identifies a particular secret without
// (hopefully) revealing the secret. Note that a SimpleSecretLabel only
// disambiguates between secrets used to get access to some particular
// object. Two different secrets that apply to two different objects
// could have the same label. For example, in the common sharing model,
// each object has no more than one "auth key". Therefore, the label for
// an auth key simply has type = AUTH_KEY with no additional
// information. In theory, we could add some sort of resource ID to
// SimpleSecretLabel to make it more explicit. However, in practice,
// this is never really needed. A SimpleSecret for one object is never
// used to authorize a request on some other object, so there is no
// ambiguity. Also, since SimpleSecrets must obviously be unguessable,
// there is no risk that a SimpleSecret intended for one object will
// accidentally grant access to another.
type SecurityCredentialsSimpleSecretLabelProto struct {
	// CapabilityId: ***DEPRECATED (3-Oct-2011) *** This field should be
	// deleted when code stops using CAP_TOKEN labels. Used when type =
	// CAP_TOKEN. When a CAP_TOKEN label appears in a SimpleSecretHolder
	// Principal, |capability_id| must be filled in to identify one of the
	// capabilities on the ACL. When a CAP_TOKEN label appears in a
	// SimpleSecret Authenticator, it is NOT necessary to fill in
	// |capability_id| -- ACL Service will find the ID by searching all
	// capabilities on the ACL for one associated with the token given by
	// the SimpleSecret's secret data. If |capability_id| is specified,
	// though, then the Authenticator will only be accepted if it actually
	// matches that particular token ID.
	CapabilityId int64 `json:"capabilityId,omitempty"`

	// GenericLabel: Used when type = GENERIC_SECRET
	GenericLabel string `json:"genericLabel,omitempty"`

	// InviteId: Used when type == INVITE.
	InviteId int64 `json:"inviteId,omitempty,string"`

	// Type: This is optional because required enums cannot be extended.
	//
	// Possible values:
	//   "INVALID" - Used as a default value.
	//   "AUTH_KEY" - The singleton auth key for a common-sharing ACL. No
	// other fields of SimpleSecretLabelProto need to be filled in, since
	// there is only one of these per ACL. The corresponding secret is the
	// auth key encoded in 64-bit big-endian.
	//   "INVITE" - A common-sharing invite token. |invite_id| (below) must
	// be set to identify the invite. The corresponding secret is the
	// SecretMaterial, as defined by InviteToken.SecretMaterial in
	// acl.proto, encoded in 64-bit big-endian. If there is no
	// SecretMaterial, the secret should be omitted; in this case the invite
	// ID itself is the secret, which is less secure.
	//   "GENERIC_SECRET" - A generic secret value. Do not use this if any
	// more specific type is appropriate.
	//   "CAP_TOKEN" - ***DEPRECATED (3-Oct-2011)*** Use the new
	// CapTokenProto and CapTokenHolderProto instead. A capability token.
	// The corresponding secret is an arbitrary-length random byte string
	// (recommended: 128 bits). |capability_id| may be filled in (see
	// below). See CapTokenMetadata in acl.proto.
	//   "REKE" - Identifies a principal that can perform a successful REKE
	// handshake. The holder is not authenticated by presenting a
	// SimpleSecretProto, but rather by knowing either the REKE resumption
	// ticket secret or the private key corresponding to a public key
	// specified outside the PrincipalProto. For more information, see:
	// http://goto.google.com/loas2cert
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CapabilityId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CapabilityId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsSimpleSecretLabelProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsSimpleSecretLabelProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsSocialGraphNodeProto: Represents a user pseudonym.
// Pseudonyms are linked accounts on Google and third-party services
// (e.g. YouTube or Twitter) and are described by a Social Graph Node.
type SecurityCredentialsSocialGraphNodeProto struct {
	// SgnDomain: The fields from
	// ccc/socialgraph/socialgraphnode.proto:SgnNode that uniquely identify
	// a social graph node. The 'ident' field is not included here because
	// its value can be changed.
	SgnDomain string `json:"sgnDomain,omitempty"`

	SgnPk string `json:"sgnPk,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SgnDomain") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SgnDomain") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsSocialGraphNodeProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsSocialGraphNodeProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsSquareProto: Represents the set of members (of a
// given type) in a Google+ Square (see http://go/squares). A Square
// with default member_type is currently (1/2012) identical to the
// GaiaGroup with the same ID, but that is expected to change soon (see
// http://go/superglue). Support for this principal type is currently
// (1/2012) incomplete -- e.g., Keystore does not support it yet (see
// b/5703421).
type SecurityCredentialsSquareProto struct {
	// MemberType: The type of Square members to consider, e.g. "all
	// members" vs. "owners" vs. "admins". These are defined by
	// legacy_relation_id values in
	// social.graph.storage.EdgeTypeEnum.EdgeType enum options in
	// social/graph/storage/proto/id.proto. See square.pb (defined in
	// production/config/cdd/socialgraph/mixer_config/prod/node_type_config)
	// for all valid edge types associated with square. Currently required.
	MemberType int64 `json:"memberType,omitempty"`

	// SquareId: Currently required.
	SquareId int64 `json:"squareId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "MemberType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MemberType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsSquareProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsSquareProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SecurityCredentialsYoutubeUserProto struct {
	YoutubeUserId int64 `json:"youtubeUserId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "YoutubeUserId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "YoutubeUserId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsYoutubeUserProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsYoutubeUserProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SecurityCredentialsZwiebackSessionProto: See go/zwieback. New uses of
// Zwieback sessions must be approved via go/zwieback-request.
type SecurityCredentialsZwiebackSessionProto struct {
	ZwiebackSessionId uint64 `json:"zwiebackSessionId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ZwiebackSessionId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ZwiebackSessionId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SecurityCredentialsZwiebackSessionProto) MarshalJSON() ([]byte, error) {
	type NoMethod SecurityCredentialsZwiebackSessionProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SentenceBoundaryAnnotations: Sentence boundaries.
type SentenceBoundaryAnnotations struct {
	// Info: Used for application-specific information about the whole set
	// of SentenceBoundaryAnnotations. Example: SAFT Team uses this to store
	// an nlp_saft.Document proto giving any processing errors encountered.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	Instance []*SentenceBoundaryAnnotationsInstance `json:"instance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Info") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Info") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SentenceBoundaryAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod SentenceBoundaryAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SentenceBoundaryAnnotationsInstance struct {
	Begin int64 `json:"begin,omitempty"`

	// CleanText: A clean version of .text() generated by using CleanText()
	// and stripping unnecessary whitespace.
	CleanText string `json:"cleanText,omitempty"`

	// Context: Plain text context from the page within which the annotation
	// occurred.
	Context string `json:"context,omitempty"`

	// ContextBegin: Byte offsets for the clean text context above.
	ContextBegin int64 `json:"contextBegin,omitempty"`

	ContextEnd int64 `json:"contextEnd,omitempty"`

	End int64 `json:"end,omitempty"`

	// Info: Used for application-specific information about this
	// annotation.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// Text: Original UTF-8 document text occurring in the range [begin,
	// end).
	Text string `json:"text,omitempty"`

	// ToIndex: Used to mark the annotations selected to be indexed.
	ToIndex bool `json:"toIndex,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SentenceBoundaryAnnotationsInstance) MarshalJSON() ([]byte, error) {
	type NoMethod SentenceBoundaryAnnotationsInstance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SentimentSentiment: This proto contains the sentiment and emotions
// that the user is exhibiting at the time of the query. NEXT ID: 4
type SentimentSentiment struct {
	// Polarity: Polarity represents the sentiment towards the subject.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "VERY_POSITIVE"
	//   "POSITIVE"
	//   "NEUTRAL"
	//   "NEGATIVE"
	//   "VERY_NEGATIVE"
	Polarity string `json:"polarity,omitempty"`

	UserBehaviors *SentimentSentimentBehaviors `json:"userBehaviors,omitempty"`

	// UserEmotions: The emotions that the user is feeling.
	UserEmotions *SentimentSentimentEmotions `json:"userEmotions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Polarity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Polarity") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SentimentSentiment) MarshalJSON() ([]byte, error) {
	type NoMethod SentimentSentiment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SentimentSentimentBehaviors: The set of behavior signals that the
// user is expressing/demonstrating that is detected by the sentiment
// analysis. These signals are used to help assistant determine the
// proper response behavior. NEXT ID = 2
type SentimentSentimentBehaviors struct {
	// Politeness: The degree to which the user is showing politeness.
	Politeness float64 `json:"politeness,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Politeness") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Politeness") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SentimentSentimentBehaviors) MarshalJSON() ([]byte, error) {
	type NoMethod SentimentSentimentBehaviors
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SentimentSentimentBehaviors) UnmarshalJSON(data []byte) error {
	type NoMethod SentimentSentimentBehaviors
	var s1 struct {
		Politeness gensupport.JSONFloat64 `json:"politeness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Politeness = float64(s1.Politeness)
	return nil
}

// SentimentSentimentEmotions: Basic emotions. NEXT ID: 7
type SentimentSentimentEmotions struct {
	Anger int64 `json:"anger,omitempty"`

	Disgust int64 `json:"disgust,omitempty"`

	Fear int64 `json:"fear,omitempty"`

	Happiness int64 `json:"happiness,omitempty"`

	Sadness int64 `json:"sadness,omitempty"`

	Surprise int64 `json:"surprise,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Anger") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Anger") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SentimentSentimentEmotions) MarshalJSON() ([]byte, error) {
	type NoMethod SentimentSentimentEmotions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ShingleInfoPerDocData: This message represents shingle-related
// information obtained from a document.
type ShingleInfoPerDocData struct {
	// NumShingles: Total number of shingles in the document.
	NumShingles int64 `json:"numShingles,omitempty"`

	// Source: A list of all sources.
	Source []*ShingleSource `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NumShingles") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NumShingles") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ShingleInfoPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod ShingleInfoPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ShingleSource: This message represents a source of shingles. Used by
// ShingleInfoPerDocData.
type ShingleSource struct {
	// Id: Hash-value of the URL.
	Id int64 `json:"id,omitempty"`

	// NumShingles: Number of shingles originating from this source.
	NumShingles int64 `json:"numShingles,omitempty"`

	// Timestamp: First-seen timestamp of the source.
	Timestamp int64 `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ShingleSource) MarshalJSON() ([]byte, error) {
	type NoMethod ShingleSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ShoppingWebentityShoppingAnnotationInferredImage: Images inferred
// from context instead of propagated from Shopping backends. The same
// image might be inferred via different means; then it may appear
// multiple times in Offer.inferred_images list with different values of
// inferred_image_type field.
type ShoppingWebentityShoppingAnnotationInferredImage struct {
	InferredImageId uint64 `json:"inferredImageId,omitempty,string"`

	// Possible values:
	//   "INFERRED_IMAGE_TYPE_UNKNOWN"
	//   "INFERRED_IMAGE_TYPE_NEARDUP_STARBURST_V3"
	//   "INFERRED_IMAGE_TYPE_STRIDE_EXTRACTION"
	//   "INFERRED_IMAGE_TYPE_CRAWLED_OFFER_DUPLICATE"
	//   "INFERRED_IMAGE_TYPE_NEARDUP_FOR_INFERRED_IMAGES"
	//   "INFERRED_IMAGE_TYPE_OTHER_ML_MATCHED_IMAGES"
	//   "INFERRED_IMAGE_TYPE_PRODUCT_BLOCKS"
	//   "INFERRED_IMAGE_TYPE_SCHEMA_DOT_ORG"
	//   "INFERRED_IMAGE_TYPE_CRAWZALL"
	//   "INFERRED_IMAGE_TYPE_OPEN_GRAPH"
	InferredImageType string `json:"inferredImageType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InferredImageId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InferredImageId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ShoppingWebentityShoppingAnnotationInferredImage) MarshalJSON() ([]byte, error) {
	type NoMethod ShoppingWebentityShoppingAnnotationInferredImage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ShoppingWebentityShoppingAnnotationProductRating: Information about a
// rating provided for a product. This can represent an aggregated
// rating if count is set. Next Id: 7
type ShoppingWebentityShoppingAnnotationProductRating struct {
	// Count: Number of ratings/reviews aggregated to create this product
	// rating. If there are no ratings yet, this field will be explicitly
	// set to zero, so whether this field is set should be checked using
	// has_count.
	Count int64 `json:"count,omitempty,string"`

	MaxValueMillis int64 `json:"maxValueMillis,omitempty,string"`

	// MinValueMillis: The lower and upper bounds of the rating values that
	// could be submitted for the product. (Note that it is not the min/max
	// ratings submitted for the product, it is the min/max that can
	// hypothetically be submitted.)
	MinValueMillis int64 `json:"minValueMillis,omitempty,string"`

	// Possible values:
	//   "PRODUCT_RATING_SOURCE_UNKNOWN"
	//   "PRODUCT_RATING_SOURCE_CRAWLED_DATA"
	Source string `json:"source,omitempty"`

	// Value: The value of this rating normalized between 0 and 5. This will
	// not be set if count is set to 0.
	Value float64 `json:"value,omitempty"`

	// ValueMillis: The non-normalized aggregated value of the ratings for
	// this product.
	ValueMillis int64 `json:"valueMillis,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *ShoppingWebentityShoppingAnnotationProductRating) MarshalJSON() ([]byte, error) {
	type NoMethod ShoppingWebentityShoppingAnnotationProductRating
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *ShoppingWebentityShoppingAnnotationProductRating) UnmarshalJSON(data []byte) error {
	type NoMethod ShoppingWebentityShoppingAnnotationProductRating
	var s1 struct {
		Value gensupport.JSONFloat64 `json:"value"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Value = float64(s1.Value)
	return nil
}

// ShoppingWebentityShoppingAnnotationSoriVersionId: Versioning
// Information used for Logging Purposes. See go/sori-logjoining.
type ShoppingWebentityShoppingAnnotationSoriVersionId struct {
	F1CommitTimestampMicros int64 `json:"f1CommitTimestampMicros,omitempty,string"`

	OpaqueSoriId *AdsShoppingReportingOffersSerializedSoriId `json:"opaqueSoriId,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "F1CommitTimestampMicros") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "F1CommitTimestampMicros")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ShoppingWebentityShoppingAnnotationSoriVersionId) MarshalJSON() ([]byte, error) {
	type NoMethod ShoppingWebentityShoppingAnnotationSoriVersionId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// Sitemap: Note: If you are going to populate any new field in this
// proto, you probably need to go through the go/dj-new-field and
// go/index-changes process.
type Sitemap struct {
	// DEPRECATEDSourceTitle: DEPRECATED DEPRECATED DEPRECATED In case you
	// didn't realize, these fields are (and have been for some time)
	// deprecated. We'll stop pushing their data to production soon
	// (probably Feb/09) and after a few weeks we'll probably remove them.
	DEPRECATEDSourceTitle string `json:"DEPRECATEDSourceTitle,omitempty"`

	// TargetGroups: One Sitemap can contain multiple TargetGroups, but only
	// one of them will be displayed to the user - this decision will be
	// made at displaying time and can take into account various factors,
	// such as the users' language and country, currently running
	// experiments, etc.
	TargetGroups []*QualitySitemapTargetGroup `json:"TargetGroups,omitempty"`

	DeprecatedTarget []*SitemapDEPRECATEDTarget `json:"deprecatedTarget,omitempty"`

	// PageAnchorsDocInfo: This field is populated in the Sitemap MDU
	// subpopulator from cdoc data. This is used to store page anchors
	// information for TopicTagsScrolltoFlow.
	PageAnchorsDocInfo *SdrPageAnchorsDocInfo `json:"pageAnchorsDocInfo,omitempty"`

	// SearchInSite: Enable site search.
	SearchInSite bool `json:"searchInSite,omitempty"`

	// Possible values:
	//   "ORIGINAL"
	//   "EXPANDED"
	//   "TABLE_OF_CONTENTS"
	//   "WEBANSWER"
	SitemapType string `json:"sitemapType,omitempty"`

	// SourceOrgfp: prevents cross-domain forwarding
	SourceOrgfp uint64 `json:"sourceOrgfp,omitempty,string"`

	SourceUrl string `json:"sourceUrl,omitempty"`

	// SubresultList: This field is populated in the Sitemap MDU
	// subpopulator from cdoc data. It's not set in the cdoc Sitemap.
	SubresultList *QualitySitemapSubresultList `json:"subresultList,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDSourceTitle") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDSourceTitle") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *Sitemap) MarshalJSON() ([]byte, error) {
	type NoMethod Sitemap
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SitemapDEPRECATEDTarget struct {
	DEPRECATEDAnchor string `json:"DEPRECATEDAnchor,omitempty"`

	DEPRECATEDRunningAnchor bool `json:"DEPRECATEDRunningAnchor,omitempty"`

	DEPRECATEDTitle string `json:"DEPRECATEDTitle,omitempty"`

	Displaytitle string `json:"displaytitle,omitempty"`

	// Score: optional, exclude to save space
	Score int64 `json:"score,omitempty"`

	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DEPRECATEDAnchor") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DEPRECATEDAnchor") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SitemapDEPRECATEDTarget) MarshalJSON() ([]byte, error) {
	type NoMethod SitemapDEPRECATEDTarget
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SmartphonePerDocData: This message is used for storing smartphone
// related information. Note: MobilePerDocData is a similar message, but
// it's for lowend mobile.
type SmartphonePerDocData struct {
	// DEPRECATEDDesktopCanonicalDocid: If set, this page is a smartphone
	// dup, a page serving equivalent contents as another URL (desktop
	// canonical), but in smartphone-optimized style. This field holds the
	// docid of the desktop canonical.
	DEPRECATEDDesktopCanonicalDocid uint64 `json:"DEPRECATEDDesktopCanonicalDocid,omitempty,string"`

	// DEPRECATEDMobileHomepageDocid: Mobile URL for homepages, predicted by
	// the URL rewrite rules. See go/mobile-homepage-prediction.
	DEPRECATEDMobileHomepageDocid uint64 `json:"DEPRECATEDMobileHomepageDocid,omitempty,string"`

	// AdsDensityInterstitialViolationStrength: Indicates if the page is
	// violating mobile ads density interstitial policy and the voilation
	// strength. See go/interstitials-for-ads and http://ariane/268642 for
	// details. To save indexing space, we convert the double values in
	// [0.0, 1.0] to intergers in range [0, 1000] by using floor(value *
	// 1000).
	AdsDensityInterstitialViolationStrength int64 `json:"adsDensityInterstitialViolationStrength,omitempty"`

	// IsErrorPage: Indicates if the page serves error to smartphone
	// crawler. go/ramsey-sp404demotion
	IsErrorPage bool `json:"isErrorPage,omitempty"`

	// IsN1Redirect: Indicates if the page has mobile N-1 redirection.
	// go/ramsey-n1demotion
	IsN1Redirect bool `json:"isN1Redirect,omitempty"`

	// IsSmartphoneOptimized: Indicates if the page is rendered in a
	// friendly manner on smartphones. We use this field as tri-state:
	// "unset" means the rendering result classification is not available,
	// and "set as false" means that the page is rendered in unfriendly
	// manner on smartphones. See also go/modena-ranking.
	IsSmartphoneOptimized bool `json:"isSmartphoneOptimized,omitempty"`

	// IsWebErrorMobileContent: Indicates if the current URL serves error
	// page to desktop crawler and non error page to smartphone crawler.
	IsWebErrorMobileContent bool `json:"isWebErrorMobileContent,omitempty"`

	// MaximumFlashRatio: The ratio of the area of the largest Flash to the
	// render area.
	MaximumFlashRatio float64 `json:"maximumFlashRatio,omitempty"`

	// MobileFriendlyScore: Mobile friendliness score in the range of [0,
	// 100]. See go/modena-ranking.
	MobileFriendlyScore int64 `json:"mobileFriendlyScore,omitempty"`

	// ViolatesMobileInterstitialPolicy: Indicates if the page is violating
	// mobile interstitial policy and should be demoted. See
	// go/interstitials-ranking-dd for details.
	ViolatesMobileInterstitialPolicy bool `json:"violatesMobileInterstitialPolicy,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DEPRECATEDDesktopCanonicalDocid") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DEPRECATEDDesktopCanonicalDocid") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SmartphonePerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod SmartphonePerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SmartphonePerDocData) UnmarshalJSON(data []byte) error {
	type NoMethod SmartphonePerDocData
	var s1 struct {
		MaximumFlashRatio gensupport.JSONFloat64 `json:"maximumFlashRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaximumFlashRatio = float64(s1.MaximumFlashRatio)
	return nil
}

// SmearedWebLandingPageEntry: For legacy purposes, cdocs contain a
// repeated list of *Entry, whereas it's more convenient elsewhere to
// contain this information within its own protocol buffer.
type SmearedWebLandingPageEntry struct {
	// ImagesearchDocid: Source imagesearch docid
	ImagesearchDocid uint64 `json:"imagesearchDocid,omitempty,string"`

	// WebDocid: Docid of web landing page
	WebDocid uint64 `json:"webDocid,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ImagesearchDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImagesearchDocid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SmearedWebLandingPageEntry) MarshalJSON() ([]byte, error) {
	type NoMethod SmearedWebLandingPageEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SnapshotBox: A simple 2D box represented by an (x, y) co-ordinate,
// width and height. Copied from
// htmlrender_webkit_headless_proto.Document to avoid additional
// dependency.
type SnapshotBox struct {
	Height int64 `json:"height,omitempty"`

	Width int64 `json:"width,omitempty"`

	X int64 `json:"x,omitempty"`

	Y int64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnapshotBox) MarshalJSON() ([]byte, error) {
	type NoMethod SnapshotBox
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SnapshotImageNode struct {
	BoundingBox *SnapshotBox `json:"boundingBox,omitempty"`

	// IsExternal: An image is considered external iff both: 1. The image
	// appears in a link that is not in the same org as the document, or the
	// target URL is in a different org. 2. The image src is not in the same
	// org as the document.
	IsExternal bool `json:"isExternal,omitempty"`

	// Url: The absolute url of the image as present in the page.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnapshotImageNode) MarshalJSON() ([]byte, error) {
	type NoMethod SnapshotImageNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SnapshotSnapshotDocument struct {
	ImageNode []*SnapshotImageNode `json:"imageNode,omitempty"`

	MetaNoPreview bool `json:"metaNoPreview,omitempty"`

	// MetaNoSnippet: These are set from tags in the web page:
	MetaNoSnippet bool `json:"metaNoSnippet,omitempty"`

	// Teradoc: If this is present it supercedes all the above data.
	Teradoc *TeragoogleDocumentInfo `json:"teradoc,omitempty"`

	TextNode []*SnapshotTextNode `json:"textNode,omitempty"`

	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageNode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageNode") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnapshotSnapshotDocument) MarshalJSON() ([]byte, error) {
	type NoMethod SnapshotSnapshotDocument
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SnapshotSnapshotMetadata struct {
	// CountDistinctResources: The number of distinct resources fetched to
	// render the content. This may aid the calculation of total page load
	// time for user experience. For example, if total_content_length is
	// only a few dozen kilobytes, but that is from fetching 100 distinct
	// resources, total page load time might be much higher than the
	// total_content_length would otherwise infer.
	CountDistinctResources int64 `json:"countDistinctResources,omitempty"`

	// CrawlTimestamp: The time at which the main resource of the Snapshot
	// was fetched, in seconds since epoch. Note that the various page
	// dependencies may have been fetched at much earlier points in time
	// (hours, maybe days) and that this could be off from the actual
	// rendering time.
	CrawlTimestamp uint64 `json:"crawlTimestamp,omitempty,string"`

	SnapshotDocument *SnapshotSnapshotDocument `json:"snapshotDocument,omitempty"`

	// SnapshotQualityScore: The score here corresponds to the score in
	// Snapshot, a number between 0.0 and 1.0 (higher the better).
	SnapshotQualityScore float64 `json:"snapshotQualityScore,omitempty"`

	// TotalContentSize: Number of bytes fetched to render the content. For
	// example, to render a web page, this value would include the HTML,
	// stylesheets, images, and all other dependencies. This can be used to
	// calculate a coarse estimate of the total page load time a user might
	// experience.
	TotalContentSize uint64 `json:"totalContentSize,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "CountDistinctResources") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountDistinctResources")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SnapshotSnapshotMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SnapshotSnapshotMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SnapshotSnapshotMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod SnapshotSnapshotMetadata
	var s1 struct {
		SnapshotQualityScore gensupport.JSONFloat64 `json:"snapshotQualityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SnapshotQualityScore = float64(s1.SnapshotQualityScore)
	return nil
}

// SnapshotTextNode: The SnapshotDocument contains a list of TextNode's.
// Each node contains a string of text of the webpage, its bounding box
// in the agove snapshot image, and its font size (in number of pixels
// in the snapshot, which could be a fraction number since the snapshot
// image is typically shrinked). This list of text nodes are extracted
// from the output from the rendering service:
// htmlrender_webkit_headless_proto.Document The extraction is done by
// TrimDocument defined in ./shared/doctrimmer.cc
type SnapshotTextNode struct {
	BoundingBox *SnapshotBox `json:"boundingBox,omitempty"`

	FontSize float64 `json:"fontSize,omitempty"`

	// InLink: One if the current text node is within a link; otherwise
	// zero/not present.
	InLink int64 `json:"inLink,omitempty"`

	// MaxSplit: A value in the range [0,7] (zero if not present) indicating
	// the most "powerful" splitting tag since the last text node. See "enum
	// Category" in mustang/snippets/taginfo.h.
	MaxSplit int64 `json:"maxSplit,omitempty"`

	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoundingBox") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoundingBox") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnapshotTextNode) MarshalJSON() ([]byte, error) {
	type NoMethod SnapshotTextNode
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SnapshotTextNode) UnmarshalJSON(data []byte) error {
	type NoMethod SnapshotTextNode
	var s1 struct {
		FontSize gensupport.JSONFloat64 `json:"fontSize"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FontSize = float64(s1.FontSize)
	return nil
}

type SnippetExtraInfo struct {
	// CandidateInfo: Candidates are ordered by their id.
	CandidateInfo []*SnippetExtraInfoSnippetCandidateInfo `json:"candidateInfo,omitempty"`

	// ContainUserQuotes: Indicates that the snippet candidates all contain
	// uesr quotes.
	ContainUserQuotes bool `json:"containUserQuotes,omitempty"`

	// ContainVulgarCandidates: Indicates if there are any vulgar snippet
	// candidates.
	ContainVulgarCandidates bool `json:"containVulgarCandidates,omitempty"`

	// DisableQueryFeatures: Indicates whether the query relevance features
	// is disabled or not in Muppet scoring.
	DisableQueryFeatures bool `json:"disableQueryFeatures,omitempty"`

	// SnippetBrainSelectedCandidateIndex: Snippet candidate index selected
	// by snippet brain model. This field will get populated in SnippetFlow
	// in superroot. go/snippets-brain
	SnippetBrainSelectedCandidateIndex int64 `json:"snippetBrainSelectedCandidateIndex,omitempty"`

	// SnippetsbrainModelInfo: SnippetsBrain model information for snippets
	// popup debug.
	SnippetsbrainModelInfo *SnippetExtraInfoSnippetsBrainModelInfo `json:"snippetsbrainModelInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CandidateInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CandidateInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetExtraInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetExtraInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SnippetExtraInfoSnippetCandidateInfo: Next ID: 14
type SnippetExtraInfoSnippetCandidateInfo struct {
	// BoldedRanges: Bolded ranges in the printed snippet lines.
	BoldedRanges []*QualitySnippetsTruncationSnippetBoldedRange `json:"boldedRanges,omitempty"`

	// Id: Candidate identifier number, unique among all snippet candidates
	// under each document in each request. What does this number mean: -
	// Muppet candidates: This equals to the candidate's rank by Muppet
	// snippets scorer. - Superroot candidates: No specific meaning, this
	// number should be larger than that of Muppet candidates. This field is
	// used to: - Verify whether snippet brain chooses a different snippet
	// from Muppet (the one chosen by Muppet is always in id 0). - Print
	// debugging information and sort candidates in debug output.
	Id int64 `json:"id,omitempty"`

	// IsMuppetSelectedSnippet: If this snippet is chosen by Muppet.
	IsMuppetSelectedSnippet bool `json:"isMuppetSelectedSnippet,omitempty"`

	// IsSnippetBrainBoldingTriggered: If SnippetsBrain bolding model
	// triggered and a bolding span is generated.
	IsSnippetBrainBoldingTriggered bool `json:"isSnippetBrainBoldingTriggered,omitempty"`

	// ListInfo: List information for this candidate, only populated for
	// RADISH_LIST snippets.
	ListInfo *MustangReposWwwSnippetsOrganicListSnippetResponse `json:"listInfo,omitempty"`

	ScoringInfo *SnippetExtraInfoSnippetScoringInfo `json:"scoringInfo,omitempty"`

	// SentenceStarts: Sentence starting positions in the printed snippet
	// lines.
	SentenceStarts []*QualitySnippetsTruncationSnippetBoldedRangePosition `json:"sentenceStarts,omitempty"`

	// Snippet: Muppet fills snippet lines in `snippet` field.
	Snippet []string `json:"snippet,omitempty"`

	// SnippetText: `snippet_text` will be filled by snippet brain flow in
	// SR for model scoring and debugging purpose.
	SnippetText string `json:"snippetText,omitempty"`

	// Possible values:
	//   "SNIPPET_TYPE_UNSPECIFIED" - For historical reason, this
	// `SNIPPET_TYPE_UNSPECIFIED` type is defined as value 15 instead of 0.
	//   "SEQUENCE" - A sequence snippet is generated from query term
	// matches (from meta and body sections) and typically consists of
	// multiple tidbits. Currently we only keep one single best combination
	// of the retrieved tidbits.
	//   "SEQUENCE_V2"
	//   "FULL" - A full snippet is also generated from query term matches.
	// Unlike the sequence snippet, this only consists of one expanded
	// tidbit that are scored as the best single tidbit among the retrieved
	// tidbits.
	//   "FULL_V2"
	//   "META" - This is a leading text of meta description.
	//   "LEADING_TEXT" - This is a leading text of main body text (skipping
	// headers), and its starting position is typically identified in the
	// indexing phase.
	//   "SAFT_SENTENCE" - saft sentences.
	//   "RADISH_SENTENCE" - Candidates created from radish attachment.
	//   "RADISH_LIST"
	//   "RADISH_TABLE"
	//   "ANNOTATED_FULL" - Candidates from
	// quality_snippets.SnippetSpansInfo.
	//   "PEREGRINE" - Candidates generated by SnippetFlow in SR.
	SnippetType string `json:"snippetType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoldedRanges") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoldedRanges") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetExtraInfoSnippetCandidateInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetExtraInfoSnippetCandidateInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SnippetExtraInfoSnippetScoringInfo: Next ID: 9
type SnippetExtraInfoSnippetScoringInfo struct {
	BrainNg3Score float64 `json:"brainNg3Score,omitempty"`

	// BrainScore: The below fields are populated by SnippetFlow in
	// superroot. Score generated from snippet brain model.
	// go/snippets-brain
	BrainScore float64 `json:"brainScore,omitempty"`

	// Features: Snippets ranklab features generated by scorer V2.
	Features *QualityPreviewRanklabSnippet `json:"features,omitempty"`

	// FinalScore: Final snippet score by chooser.
	FinalScore float64 `json:"finalScore,omitempty"`

	// RankBySnippetFlow: Final rank given by SnippetFlow.
	RankBySnippetFlow int64 `json:"rankBySnippetFlow,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BrainNg3Score") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BrainNg3Score") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetExtraInfoSnippetScoringInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetExtraInfoSnippetScoringInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SnippetExtraInfoSnippetScoringInfo) UnmarshalJSON(data []byte) error {
	type NoMethod SnippetExtraInfoSnippetScoringInfo
	var s1 struct {
		BrainNg3Score gensupport.JSONFloat64 `json:"brainNg3Score"`
		BrainScore    gensupport.JSONFloat64 `json:"brainScore"`
		FinalScore    gensupport.JSONFloat64 `json:"finalScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BrainNg3Score = float64(s1.BrainNg3Score)
	s.BrainScore = float64(s1.BrainScore)
	s.FinalScore = float64(s1.FinalScore)
	return nil
}

// SnippetExtraInfoSnippetsBrainModelInfo: Log model name, partition and
// input processor used to generate SnippetsBrain scores, if
// SnippetsBrain debugging is enabled.
type SnippetExtraInfoSnippetsBrainModelInfo struct {
	Ng3ModelName string `json:"ng3ModelName,omitempty"`

	// SnippetsbrainModelName: The below fields are populated by SnippetFlow
	// in superroot.
	SnippetsbrainModelName string `json:"snippetsbrainModelName,omitempty"`

	SnippetsbrainModelPartition string `json:"snippetsbrainModelPartition,omitempty"`

	SnippetsbrainTokenizerType string `json:"snippetsbrainTokenizerType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Ng3ModelName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Ng3ModelName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetExtraInfoSnippetsBrainModelInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetExtraInfoSnippetsBrainModelInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SnippetsLeadingtextLeadingTextAnnotation: Leading text which may
// consist of multiple pieces.
type SnippetsLeadingtextLeadingTextAnnotation struct {
	Piece []*SnippetsLeadingtextLeadingTextAnnotationPiece `json:"piece,omitempty"`

	// Possible values:
	//   "SEPARATED" - Two pieces are separated.
	//   "JOINED" - Two pieces should be joined together.
	PieceType string `json:"pieceType,omitempty"`

	// Type: Type of this leading text. Should be an enum of
	// LeadingTextInfo.LeadingTextType
	Type int64 `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Piece") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Piece") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetsLeadingtextLeadingTextAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetsLeadingtextLeadingTextAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SnippetsLeadingtextLeadingTextAnnotationPiece struct {
	// Begin: A piece of leading text is text within [begin, end). For
	// example, a document is "ABCDEF". If we want to set leading text as
	// 'CD', the value of begin is byte offset of 'C', the value of end is
	// byte offset of 'E'. end == -1 means to the end of document.
	Begin int64 `json:"begin,omitempty"`

	// BeginText: UTF8 text, for alignment when using reusableinfo. Those
	// text are not available in docjoins.
	BeginText string `json:"beginText,omitempty"`

	End int64 `json:"end,omitempty"`

	EndText string `json:"endText,omitempty"`

	// MatchedPattern: Matched dom path string for debugging.
	MatchedPattern string `json:"matchedPattern,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Begin") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Begin") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetsLeadingtextLeadingTextAnnotationPiece) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetsLeadingtextLeadingTextAnnotationPiece
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SnippetsLeadingtextLeadingTextInfo struct {
	// BeginPos: Leading text start position, byte offset of page content.
	// The offset is got in ParseMaster. So it is the offset after the
	// content is converted to UTF8.
	BeginPos int64 `json:"beginPos,omitempty"`

	// Leadingtext: Note: You can also use it to save multiple leading text
	// candidates.
	Leadingtext []*SnippetsLeadingtextLeadingTextAnnotation `json:"leadingtext,omitempty"`

	// Text: UTF8 text, for alignment when using reusableinfo. The text is
	// not available in docjoins.
	Text string `json:"text,omitempty"`

	// Type: Type of leading text which is optimized for this type of
	// document.
	//
	// Possible values:
	//   "INVALID"
	//   "NORMAL" - Default leading text type.
	//   "HOMEPAGE" - Leading text for home page.
	//   "DICTIONARY" - Leading text for dictionary page.
	//   "WIKI" - Leading text for wiki page.
	//   "SECTION_BOOST" - Leading text which gets section boost bonus.
	//   "IN_LIST" - Leading text inside a list.
	//   "LOW" - Leading text has very low geometric altitude.
	//   "SALIENT_NUGGET" - Salient leading text that matches a salient
	// nugget pattern. Leading text offsets will be stored in
	// LeadingTextAnnotation::Piece, with PieceType SEPARATED.
	//   "SCHEMA_ORG_DESC" - Leading text from schema.org description.
	//   "SCHEMA_ORG_ANSWER" - Leading text from schema.org answer.
	//   "PDF" - Leading text for PDF document.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BeginPos") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BeginPos") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SnippetsLeadingtextLeadingTextInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SnippetsLeadingtextLeadingTextInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonAttachmentAttachment: An Attachment represents a linked
// entity associated with a piece of social content. This may be a
// 1st-party or 3rd-party entity. In the Papyrus context, an Attachment
// is part of a Cent, and sits alongside the main content of the cent,
// which is represented as a sequence of Segments. Right now an
// Attachment is just a wrapper around an Embed, but we provide the
// extra layer of abstraction since, as Embeds move to separate storage
// in Briefcase, we may want to add additional fields that are not part
// of the Embed proper, but that (for example) relate to the usage of
// the linked content within the particular post/cent.
type SocialCommonAttachmentAttachment struct {
	// EmbedItem: An embed represents an external entity. See go/es-embeds.
	EmbedItem *EmbedsEmbedClientItem `json:"embedItem,omitempty"`

	// Id: An id to uniquely identify an attachment when several attachments
	// are in a collection.
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EmbedItem") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EmbedItem") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonAttachmentAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonAttachmentAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonFormatting: Formatting information for a segment.
type SocialCommonFormatting struct {
	Bold bool `json:"bold,omitempty"`

	// Highlight: This indicates that the segment should be rendered as
	// highlighted or visually emphasized.
	Highlight bool `json:"highlight,omitempty"`

	Italics bool `json:"italics,omitempty"`

	Strikethrough bool `json:"strikethrough,omitempty"`

	// Style: If set, this indicates that the segment should be rendered
	// with the specified style. The absence of an explicit style represents
	// "no style", i.e. the segment can be rendered with the default style
	// chosen by the application.
	//
	// Possible values:
	//   "UNKNOWN_STYLE" - This represents a style that is unknown (e.g. a
	// new style was introduced but not supported by older mobile app
	// versions) and should generally not be used as a value in a proto. If
	// the segment does not need to be rendered with a special style, the
	// 'style' field should simply be left unset. A reasonable fallback for
	// an unknown style is to render the segment in the default style.
	//   "HEADING_1" - The most important heading to the least important
	// heading.
	//   "HEADING_2"
	//   "HEADING_3"
	//   "HEADING_4"
	Style string `json:"style,omitempty"`

	Underline bool `json:"underline,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bold") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bold") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonFormatting) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonFormatting
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonHashtagData: Hashtag metadata, for HASHTAG segments. For
// a hashtag, the "text" field should contain the display text, and the
// search_text field should represent the topic being referenced,
// without the hash symbol; for example, we might have: text = "#Google"
// hashtag_data.search_text = "Google" Another example: text =
// "#pikachu" hashtag_data.search_text = "Pokemon" Both strings should
// be considered part of the searchable text. In go/sbe, both are
// indexed and searchable.
type SocialCommonHashtagData struct {
	SearchText string `json:"searchText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SearchText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SearchText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonHashtagData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonHashtagData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonLinkData: Link metadata, for LINK segments. Anchor text
// should be stored in the "text" field of the Segment, which can also
// serve as a fallback.
type SocialCommonLinkData struct {
	// Attachment: An Attachment represents the structured entity to which
	// we are linking. It contains an Embed
	// (apps/tacotown/proto/embeds/embed_client.proto) with fields specific
	// to the appropriate type of linked entity. For example, if we are
	// linking to a photo album, the Embed may include the album ID and gaia
	// ID of the creator. Clients that understand the Embed type within the
	// Attachment may construct and/or decorate their link appropriately
	// e.g. to make use of type-specific functionality or first-party
	// integrations. The link_target and (if appropriate) display_url fields
	// must still be set even when an Attachment is present, so that clients
	// who do not know how to interpret the Attachment can fall back to
	// those fields, and render the Segment as an ordinary web link. N.B.
	// Even when an Attachment is present, the intention of a "LINK" Segment
	// is for the Segment to be presented inline with the rest of the text
	// of a post or comment, with a clickable link or other UI suitable for
	// inlining (though the client may modify the UI based on Attachment
	// data, e.g. to add appropriate hovers, icons, etc.). When an entity is
	// intended to be rendered separately from the main body of the
	// post/comment, a separate Attachment proto can be added outside the
	// set of Segments. N.B. Within the Attachment, fields of
	// EmbedClientItem have their own visibility annotations, which should
	// be enforced separately from Segment visibility annotations. See:
	// apps/tacotown/proto/embeds/embed_annotations.proto
	Attachment *SocialCommonAttachmentAttachment `json:"attachment,omitempty"`

	// AttachmentRenderHint: The hint to use when rendering the associated
	// attachment. Ignored if there is no associated attachment.
	//
	// Possible values:
	//   "ATTACHMENT_RENDER_HINT_UNKNOWN" - No rendering hint; should not be
	// used (equivalent to having no hint)
	//   "ATTACHMENT_RENDER_HINT_AFTER" - Render any associated attachment
	// at the end of the block, after all sibling Segments. Leave the link
	// in place in the text and render it normally as well.
	//   "ATTACHMENT_RENDER_HINT_INTERLEAVED" - Render any associated
	// attachment inline in the text in place of the link text, forcing a
	// line break before and after the attachment so the text and the
	// attachment are "interleaved". If this is not possible, render as if
	// AFTER.
	AttachmentRenderHint string `json:"attachmentRenderHint,omitempty"`

	// DisplayUrl: If we wish to show the user a different (e.g. shortened)
	// version of the URL for display purposes, then that version should be
	// set here. If this field isn't set, link_target will be used for both
	// purposes.
	DisplayUrl string `json:"displayUrl,omitempty"`

	// LinkTarget: link_target is the URL to navigate to when clicked. This
	// could be the original URL, or a URL signed by the GWS URL signing
	// service.
	LinkTarget string `json:"linkTarget,omitempty"`

	// LinkType: LinkType is an optional field that provides additional
	// information regarding link target. For example, link type can be
	// identified as the SELF_LINK when the request was executed from the
	// same link as the link target.
	//
	// Possible values:
	//   "UNKNOWN_LINK_TYPE" - No link type specified.
	//   "SELF_LINK" - This indicates that the link target points to the
	// same object related to this segment. Example: A YouTube link with
	// text="0.07" and link_target:
	// "https://www.youtube.com/watch?v=leHVmSqd4_w&t=0m07s" points to the
	// same YouTube video where this segment appears. See
	// http://go/ignore-badwords-filtering-for-selflink for adding link_type
	// design document.
	LinkType string `json:"linkType,omitempty"`

	// Title: Title is an optional field that provides a short string that
	// describes the link or its destination. User interfaces often use
	// title as a tooltip or for accessibility purposes. However, they are
	// of course free to present this data in any form. This field is plain
	// text.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attachment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attachment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonLinkData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonLinkData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialCommonSegment struct {
	// Formatting: Formatting to be applied when rendering the Segment. For
	// all segment types, this is the standard way of representing that the
	// Segment should be rendered in bold, italics, etc.
	Formatting *SocialCommonFormatting `json:"formatting,omitempty"`

	// HashtagData: For HASHTAG type:
	HashtagData *SocialCommonHashtagData `json:"hashtagData,omitempty"`

	// LinkData: Type-specific metadata. At most one of these should be
	// populated, and the one that is populated should correspond to the
	// type of the Segment. For LINK type:
	LinkData *SocialCommonLinkData `json:"linkData,omitempty"`

	// Text: Text content of the Segment. As a general rule, this field
	// should contain the actual text that should be rendered in the UI.
	// Thus, for a hashtag, it should be "#Foo", and for a link, it should
	// be the display text. Clients that do not understand a particular
	// segment type may use this text, along with the Formatting info below,
	// as a fallback for display. The field is not required -- if all
	// relevant information is carried in other metadata fields and there is
	// no need for a fallback, or it is not practical for a fallback to be
	// provided for any other reason, the field may be left blank. A
	// standard example would be a user reference being transmitted between
	// server layers, where a gaia-ID representation may be sufficient and
	// there is no need for a textual fallback. In such a case, it would be
	// valid and useful - though not required - for servers to compute and
	// populate a fallback on the serving path.
	Text string `json:"text,omitempty"`

	// Type: Type of Segment.
	//
	// Possible values:
	//   "TEXT" - A TEXT segment represents plain-text subject to particular
	// formatting constraints (as represented in the "formatting" field of
	// the Segment).
	//   "LINE_BREAK" - A LINE_BREAK segment is simply a placeholder to
	// represent a line break between other segments. The "text" variable
	// may be set to a newline as a fallback, but clients that understand
	// this segment type should simply insert a line break without needing
	// to reference any fields.
	//   "LINK" - A LINK segment represents a link to a web entity. The
	// "text" field should be used for anchor text. Additional link data
	// should be put in the link_data protobuf.
	//   "USER_MENTION" - A USER_MENTION segment represents a reference to a
	// (possibly non-Gaia, possibly off-network) user. The "text" field may
	// be populated as a fallback, but information identifying the user
	// should be contained in the user_mention_data protobuf. (The set of
	// fields that are populated in user_mention_data may differ depending
	// on the context in which the segment is viewed, but the interpretation
	// of the fields is uniform. See comments over UserMentionData).
	//   "ALL_USER_MENTION" - An ALL_USER_MENTION segment represents a
	// reference to all users in the context, that is, the conversation,
	// discussion, or other context containing the segment. For example, an
	// ALL_USER_MENTION segment ("@all") can be useful to ping all
	// participants in a conversation if the notification setting of the
	// conversation is not set to ping on normal messages. An
	// ALL_USER_MENTION should be treated as a USER_MENTION for all users
	// who receives the segment.
	//   "HASHTAG" - A HASHTAG segment represents a structured reference to
	// a topic. The "text" field should represent display text (e.g.
	// "#Google"), and additional metadata should be put in the Segment's
	// hashtag_data field.
	Type string `json:"type,omitempty"`

	// UserMentionData: For USER_MENTION type:
	UserMentionData *SocialCommonUserMentionData `json:"userMentionData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Formatting") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Formatting") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonSegment) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonSegment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonSegments: Segments (go/social-segments) represent
// structured social content, e.g. the contents of a G+ stream post or
// chat message. A single post or message may consist of a sequence of
// segments, each representing a type of content, e.g. plain text, hash
// tag, mention, etc. Segments correspond approximately to units of
// content delimited by HTML tags, so that a piece of bolded text would
// be a distinct Segment, a link would be a distinct Segment, and so
// forth. A single Segment may have multiple such qualifiers; e.g. it
// may be a bold link; in this case, information about all such
// qualifiers will be encoded in the Segment proto.
type SocialCommonSegments struct {
	Segments []*SocialCommonSegment `json:"segments,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Segments") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Segments") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonSegments) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonSegments
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialCommonUserMentionData: Person metadata, for USER_MENTION
// segments. Should always contain at least one of user_gaia_id,
// user_id, email or user. The exact set of populated fields may differ
// depending on the context and the level in the serving stack; for
// example, emails will be elided on the viewing path. But as a general
// rule, a proto having any one of the four is valid, subject to the
// standard constraints of the applied annotations -- that is,
// communication between servers and clients will ignore jspb.ignore
// fields, and communication between servers and other servers (or
// between servers and storage) will ignore client_only fields. For more
// on the annotations, see the comments in
// social/common/segment_annotations.proto
type SocialCommonUserMentionData struct {
	Email string `json:"email,omitempty"`

	// User: If the principal is backed by a gaia id, DO NOT use this field.
	// Use user_gaia_id/user_id fields instead.
	User *SecurityCredentialsPrincipalProto `json:"user,omitempty"`

	// UserGaiaId: An unobfuscated gaia ID:
	UserGaiaId int64 `json:"userGaiaId,omitempty,string"`

	// UserId: An obfuscated gaia ID:
	UserId string `json:"userId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialCommonUserMentionData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialCommonUserMentionData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialDiscoveryExternalEntityKey: An entity key with an obfuscated
// gaia id that can be used externally.
type SocialDiscoveryExternalEntityKey struct {
	Email string `json:"email,omitempty"`

	Phone string `json:"phone,omitempty"`

	// ProfileId: Obfuscated GAIA id.
	ProfileId string `json:"profileId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Email") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialDiscoveryExternalEntityKey) MarshalJSON() ([]byte, error) {
	type NoMethod SocialDiscoveryExternalEntityKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiAppContactData: Contains a mimetype supported by a
// third-party app together with additional ids and other data that the
// apps use to complete the action for the given mimetype. For example,
// an app_specific_endpoint_id that corresponds to a WhatsApp Profile.
// Full Design: go/3p-contact-upload LINT.IfChange
type SocialGraphApiAppContactData struct {
	// Data: Set of column-name and value for the given mimetype. The
	// semantic meaning of the column values is mime-type specific. For
	// example they may contain app_specific_endpoint_ids for WhatsApp. This
	// is uploaded from CP2 http://go/cp2-data1 through
	// http://go/cp2-data14.
	Data []*SocialGraphApiDataColumn `json:"data,omitempty"`

	// Mimetype: The mimetype of the action defined by the third-party app.
	//
	// Possible values:
	//   "UNKNOWN_MIMETYPE"
	//   "WHATSAPP_PROFILE" -
	// vnd.android.cursor.item/vnd.com.whatsapp.profile
	//   "WHATSAPP_VOIP_CALL" -
	// vnd.android.cursor.item/vnd.com.whatsapp.voip.call
	//   "WHATSAPP_VIDEO_CALL" -
	// vnd.android.cursor.item/vnd.com.whatsapp.video.call
	//   "LINE_PROFILE" -
	// vnd.android.cursor.item/vnd.jp.naver.line.android.profile
	//   "LINE_VOICE" -
	// vnd.android.cursor.item/vnd.jp.naver.line.android.call.voice
	//   "LINE_VIDEO" -
	// vnd.android.cursor.item/vnd.jp.naver.line.android.call.video
	//   "HIKE_MESSAGE" -
	// vnd.android.cursor.item/com.hike.chat.stickers.message
	//   "HIKE_MESSAGE_ASSISTANT" -
	// vnd.android.cursor.item/com.hike.chat.stickers.message.gassistant
	//   "HIKE_VOICE_CALL" -
	// vnd.android.cursor.item/com.hike.chat.stickers.voice_call
	//   "HIKE_VIDEO_CALL" -
	// vnd.android.cursor.item/com.hike.chat.stickers.video_call
	//   "TELEGRAM_ANDROID_PROFILE" -
	// vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile
	//   "THREEMA_PROFILE" -
	// vnd.android.cursor.item/vnd.ch.threema.app.profile
	//   "VIBER_OUT_CALL_NONE" -
	// vnd.android.cursor.item/vnd.com.viber.voip.viber_out_call_none_viber
	//   "VIBER_NUMBER_CALL" -
	// vnd.android.cursor.item/vnd.com.viber.voip.viber_number_call
	//   "VIBER_NUMBER_MESSAGE" -
	// vnd.android.cursor.item/vnd.com.viber.voip.viber_number_message
	//   "VIBER_OUT_CALL" -
	// vnd.android.cursor.item/vnd.com.viber.voip.viber_out_call_viber
	//   "VIBER_GOOGLE_VOICE_MESSAGE" -
	// vnd.android.cursor.item/vnd.com.viber.voip.google_voice_message
	//   "WECHAT_VOICEACTION" -
	// vnd.android.cursor.item/vnd.com.tencent.mm.chatting.voiceaction
	//   "LINKEDIN_ANDROID_MESSAGING" -
	// vnd.android.cursor.item/vnd.com.linkedin.android.messaging
	//   "VK_SENDMSG" -
	// vnd.android.cursor.item/vnd.com.vkontakte.android.assistant.sendmsg
	//   "TACHYON_PHONE_AUDIO" -
	// vnd.android.cursor.item/com.google.android.apps.tachyon.phone.audio
	//   "TACHYON_PHONE" -
	// vnd.android.cursor.item/com.google.android.apps.tachyon.phone
	Mimetype string `json:"mimetype,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiAppContactData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiAppContactData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiDataColumn: LINT.IfChange
type SocialGraphApiDataColumn struct {
	// ColumnName: The name of the column in CP2 for raw_contact_data.
	//
	// Possible values:
	//   "UNKNOWN_COLUMN"
	//   "DATA1"
	//   "DATA2"
	//   "DATA3"
	//   "DATA4"
	//   "DATA5"
	//   "DATA6"
	//   "DATA7"
	//   "DATA8"
	//   "DATA9"
	//   "DATA10"
	//   "DATA11"
	//   "DATA12"
	//   "DATA13"
	//   "DATA14" - DATA15 is not included since it is a BLOB.
	ColumnName string `json:"columnName,omitempty"`

	// Value: The value of the data inside column.
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ColumnName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ColumnName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiDataColumn) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiDataColumn
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoAndroidDeviceInfo struct {
	// Id: This string will represent either the device make and model in
	// the case of FSA2, or the device model in the case of FSA1.
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoAndroidDeviceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoAndroidDeviceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoBirthdayDecoration struct {
	// Possible values:
	//   "BIRTHDAY_DECORATION_VISIBILITY_UNSPECIFIED"
	//   "BIRTHDAY_DECORATION_VISIBILITY_NONE"
	//   "BIRTHDAY_DECORATION_VISIBILITY_SAME_AS_BIRTHDAY_VISIBILITY"
	BirthdayDecorationVisibility string `json:"birthdayDecorationVisibility,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BirthdayDecorationVisibility") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "BirthdayDecorationVisibility") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoBirthdayDecoration) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoBirthdayDecoration
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoContactCreateContext: The ContactEditContext
// message is a wrapper around the generic ContactMutationContext data
// to represent when and where a contact create was performed.
type SocialGraphApiProtoContactCreateContext struct {
	MutationContext *SocialGraphApiProtoContactMutationContext `json:"mutationContext,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MutationContext") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MutationContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactCreateContext) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactCreateContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoContactDeletionContext: The ContactDeletionContext
// message is a wrapper around the generic ContactMutationContext data,
// and will include any needed delete specific data. NOTE: Before using
// this message please review go/people-api-contact-deletion-context
type SocialGraphApiProtoContactDeletionContext struct {
	// MutationContext: The general mutation context data
	MutationContext *SocialGraphApiProtoContactMutationContext `json:"mutationContext,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MutationContext") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MutationContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactDeletionContext) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactDeletionContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoContactEditContext: The ContactEditContext message
// is a wrapper around the generic ContactMutationContext data to
// represent when and where a contact edit was performed.
type SocialGraphApiProtoContactEditContext struct {
	MutationContext *SocialGraphApiProtoContactMutationContext `json:"mutationContext,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MutationContext") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MutationContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactEditContext) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactEditContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoContactMutationContext: This message is the
// generic mutation message which will encapsulate the fields which are
// shared between the create, update, and delete actions, including
// source of change, timestamp, and metadata messages passed in from the
// source for any source specific data (such as phone name/model from
// FSA).
type SocialGraphApiProtoContactMutationContext struct {
	// AndroidDeviceInfo: Android device info should always be set when
	// using either ANDROID_FSA1 or ANDROID_FSA2 as the source of the
	// delete.
	AndroidDeviceInfo *SocialGraphApiProtoAndroidDeviceInfo `json:"androidDeviceInfo,omitempty"`

	// HostAppInfo: Host app info should always be set when using
	// CONTACTS_COMPANION as the source.
	HostAppInfo *SocialGraphApiProtoHostAppInfo `json:"hostAppInfo,omitempty"`

	// Source: The source of a mutate should provide all needed information
	// a user should know, and should be enough information for the front
	// end to generate a proper human readable string to describe the mutate
	// to the user.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE" - Writes should never set UNKNOWN explicitly. This
	// field shall be used implicitly for writes while clients are still
	// being converted over, but once all clients have been updated to
	// properly write source values this will be enforced by a validator.
	// This value may be set on reads for any contacts which do not have a
	// proper source set.
	//   "CONTACT_MERGE" - Contact merge is for deletes and mutates which
	// are caused by the contact merge action, either through an accepted
	// suggestion or a manual merge by the user. more info: go/contact-merge
	// owner: contacts-plus-be-eng@google.com
	//   "WEB_CONTACTS" - Web contacts refers to contacts.google.com ui
	// contact manager. owner: people-web@google.com
	//   "CONTACTS_COMPANION" - Refers to the Contacts Companion sidebar
	// found on many Google applications (Gmail, docs, etc) more info:
	// go/companiondelete owner: contactsplus-eng@google.com
	//   "HEALER_DUPLICATES" - Automated healer which deletes exact
	// duplicates of contacts. owner: focus-backend-eng@google.com
	//   "HEALER_OTHER_CONTACT" - Generic enum for all healers which only
	// delete other contacts (Automatically created contacts, which have no
	// group labels). As they should never be seen by users, they do not
	// need unique strings. owner: focus-backend-eng@google.com
	//   "HEALER_CONTACT_LIMIT" - HEALER_CONTACT_LIMIT source is used for
	// deleting contacts that cause a domain to exceed safe domain shared
	// contact limits. owner: people-directory-dev-team@google.com
	//   "THIRD_PARTY" - The THIRD_PARTY source provides a general bucket
	// for third party application contact mutates, which are generally
	// handled by contact APIs exposed to third-party apps, like People API
	// 3P, GData or CardDAV. If this source is chosen you may also set a
	// client name in the third_party_info message to have the front end
	// display the name of the client. As this will be seen by the user the
	// client name should not be provided unless it is safe and human
	// readable. If a client name is not sent, a default place holder
	// "Deleted/modified by a third party application" or equivalent will be
	// used instead. owner: people-api@google
	//   "ANDROID_FSA1" - Android FSA1 mutates are a two way sync action
	// with older android devices. These mutates pass back a phone model
	// string (e.g. SG1014) for denoting what type of phone the mutate came
	// from. When this value is chosen, the phone model should be set in the
	// PhoneInfo message whenever possible. owner: people-api@google
	//   "ANDROID_FSA2" - FSA2 based mutates are handled by internal people
	// API calls. When this value is set, the PhoneInfo message should also
	// be set, and the string value for phone identification should be set
	// to the device name, which will be passed back from FSA2. owner:
	// people-api@google
	//   "GMAIL_WEB_CONTACTS" - HTML Gmail ui (moose) has a contact manager
	// built in which users can use to manage their contacts. url:
	// https://mail.google.com/mail/u/2/h/ owner: gmail-fe-eng@google.com
	//   "CARBON_IMPORT_CONTACTS" - This action handles importing IOS device
	// backups from drive into an Android device. more info:
	// http://sites/prod/google.com/carbon/home and go/drive-ios-migration
	// owner: apps-backup-eng@google.com
	//   "IOS" - 9 through 12 are only to be used for carddav default client
	// project lookups and will be removed following the completion of
	// go/carddav-default-project-number. b/145776595 owner:
	// people-api@google.com
	//   "MAC_OS_X"
	//   "WINDOWS_PC"
	//   "WINDOWS_PHONE"
	//   "JUNK_EMAIL_CLEANUP" - Junk email contact clean up actions is for
	// contacts which are deleted via contacts assistant suggested junk
	// email contact clean up assistant. This action is served through
	// google web contacts and the android contacts app. more info:
	// go/assistants-junk-contacts owner: contacts-plus-be-eng@google.com
	//   "INTERNAL_TESTING" - This option is a generic value to be used for
	// internal Google tests.
	//   "ONE_PICK" - "OnePick is a consistent, centralized Google solution
	// connecting applications (e.g., G Suite) to data sources (e.g., Drive,
	// Contacts, Photos, Calendar) on the web." This supports an iframe on
	// gmail to edit contactgroups (including deleting the contained
	// contacts) inside of the compose email dialog. more info: go/onepick
	// owner: onepick-eng@google.com
	//   "ASSISTANT_SMART_DEVICE_MANAGEMENT_API" - Assistant Settings will
	// delete contacts and relationships + guests for Assistant Hospitality
	// devices. Initially, this will be used to manage the contacts for
	// go/merrill-prd, go/merrill-console-ux-prd. Screenshot:
	// http://screen/ufej8N9aOMw owner: assistant-hospitality@,
	// assistant-communication@
	Source string `json:"source,omitempty"`

	// ThirdPartyInfo: Third party info should always be set when using
	// THIRD_PARTY as the source.
	ThirdPartyInfo *SocialGraphApiProtoThirdPartyInfo `json:"thirdPartyInfo,omitempty"`

	// Timestamp: Timestamp representing when the contact was mutated. This
	// should not be set on write, as it is the job of focus backend to
	// determine this timestamp. This field will be populated on read with
	// the data written by FBS.
	Timestamp string `json:"timestamp,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AndroidDeviceInfo")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AndroidDeviceInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactMutationContext) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactMutationContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoContactPromptSettings struct {
	// ContactActiveState: Indicates if any reminders are active for entire
	// contact. This will affect both connection reminders and date
	// reminders such as birthday reminders. This is required.
	//
	// Possible values:
	//   "UNKNOWN_ACTIVE_STATE"
	//   "ACTIVE"
	//   "DISABLED"
	ContactActiveState string `json:"contactActiveState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactActiveState")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactActiveState") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactPromptSettings) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactPromptSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoContactState: Contact state and related metadata.
// See go/fbs-contacts-trash.
type SocialGraphApiProtoContactState struct {
	// DeletionContext: A trashed contact may have deletion context set,
	// which indicates where and when the contact was trashed. Deletion
	// context is cleared when the contact is untrashed.
	DeletionContext *SocialGraphApiProtoContactDeletionContext `json:"deletionContext,omitempty"`

	// Possible values:
	//   "DEFAULT" - Contacts which don't fall into any other state.
	//   "TRASHED" - Contacts are trashed. Trashed contacts are retained for
	// 30 days to allow users to review and recover them, after which they
	// are automatically wiped out. Trashed contacts are not returned on
	// reads unless explicitly requested.
	DeletionState string `json:"deletionState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeletionContext") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeletionContext") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoContactState) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoContactState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoDailyRecurrence: Pattern for a DAILY (or every N
// day) recurrence. Time of the day that the notification will occur is
// taken from the Prompt that owns this recurrence. Used in PeopleAPI
// layers + FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoDailyRecurrence struct {
}

// SocialGraphApiProtoDecorationOverlay: Settings that control how a
// SIBS decoration overlay is displayed.
type SocialGraphApiProtoDecorationOverlay struct {
	// Overlay: Settings that describe how the decoration should be overlaid
	// on the photo.
	Overlay *SocialGraphApiProtoPhotoOverlay `json:"overlay,omitempty"`

	// SibsId: SIBS ID of the decoration that is overlaid on the photo.
	SibsId string `json:"sibsId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Overlay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Overlay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoDecorationOverlay) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoDecorationOverlay
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoDelegatedGroupId: Represents a delegated group id,
// delegated groups refer to groups that are owned by another gaiaId,
// but this user has access to.
type SocialGraphApiProtoDelegatedGroupId struct {
	// Id: Required. The id for a delegated group.
	Id string `json:"id,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoDelegatedGroupId) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoDelegatedGroupId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoDisplayNameSource struct {
	// Possible values:
	//   "DISPLAY_NAME_SOURCE_UNSPECIFIED"
	//   "LIMITED_PROFILE" - DEPRECATED(b/248135053): in favor of
	// `LIMITED_PROFILE_FULL_NAME`, and `LIMITED_PROFILE_SHORTENED_NAME`
	//   "LIMITED_PROFILE_FULL_NAME" - The source is the limited profile,
	// and the full name is visible.
	//   "LIMITED_PROFILE_SHORTENED_NAME" - The source is the limited
	// profile, and it's a shortened name.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Source") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Source") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoDisplayNameSource) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoDisplayNameSource
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoHostAppInfo struct {
	// HostAppName: This string will represent the info for the host app to
	// the Companion sidebar
	HostAppName string `json:"hostAppName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HostAppName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HostAppName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoHostAppInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoHostAppInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoImageReference: A reference to a photo in either
// Photos Backend or SGI storage. This message should be treated as an
// opaque blob to avoid a dependency on a specific storage backend.
type SocialGraphApiProtoImageReference struct {
	// MediaId: Unique identifier for the photo. For now, this will always
	// be a Photos Backend media key.
	MediaId string `json:"mediaId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MediaId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MediaId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoImageReference) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoImageReference
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoLimitedProfileNameSettings struct {
	// PartialNameOptions: Required. Describes which shortening option the
	// user implicitly chose for their limited profile. E.g., if 'John Doe'
	// chose 'John D.', they implicitly chose: partial_name_options {
	// given_name_spec { show_all: true } family_name_spec: { show_initial:
	// true truncation_indicator: PERIOD } } While we'll in all cases serve
	// the actual name chosen by the user for limited profiles (stored
	// below), we'll use this information to recompute the default limited
	// profile to be rendered to users when they change their core name.
	PartialNameOptions *SocialGraphApiProtoPartialNameOptions `json:"partialNameOptions,omitempty"`

	// VerbatimFullName: The actual textual name that was chosen by the user
	// in the UI. E.g., if 'John Doe' chose 'John D.', this holds 'John D.'.
	// While `partial_name_options` allows the limited profile name to be
	// computed from the core name, the resulting shortened name might
	// change across different versions of the name shortening logic, and we
	// want to preserve the user's choice verbatim whenever possible. This
	// field will be cleared when the two conditions below are met: (1) A
	// successful core name change is not accompanied by a limited profile
	// settings update and (2) The shortened name computed from
	// `partial_name_options` yields a different result than what is
	// originally stored in `verbatim_full_name`. When this happens, the
	// limited profile is effectively *disabled*. E.g., if 'John Doe' from
	// the example above changes their name to 'Jane Doe' and no
	// LimitedProfileSettings are provided, `Jane D.` is the resulting
	// shortened name. Therefore `verbatim_full_name` will be cleared and
	// the limited profile settings will be disabled. On the other hand, if
	// they change their name to `John Dõe`, the resulting shortened name
	// remains `John D.`, and `verbatim_full_name` is kept as is.
	VerbatimFullName string `json:"verbatimFullName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PartialNameOptions")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PartialNameOptions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoLimitedProfileNameSettings) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoLimitedProfileNameSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoLimitedProfilePictureSettings struct {
	// Possible values:
	//   "PROFILE_PICTURE_OPTION_UNSPECIFIED"
	//   "STANDARD_PROFILE_PICTURE" - Display the same picture used in the
	// core profile. If there is no picture in the core profile, it will
	// fallback to the `MONOGRAM` option below, so as to avoid revealing
	// more initials than the limited profile does.
	//   "MONOGRAM" - Display a monogram photo. The monogram will be
	// computed from the short name, as to not leak information from the
	// core name. E.g., if the core name is `John Doe` and the limited
	// profile name is `Doe`, the monogram will show `D` (versus `J` that
	// would be shown for `John Doe`).
	ProfilePictureOption string `json:"profilePictureOption,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ProfilePictureOption") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProfilePictureOption") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoLimitedProfilePictureSettings) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoLimitedProfilePictureSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoLimitedProfileSettings: Next ID: 9
type SocialGraphApiProtoLimitedProfileSettings struct {
	// DisableReason: Indicates why the limited profile has been disabled.
	// Will be set iff the limited profile is disabled. Note: When mutating
	// limited profiles, in order to disable them,
	// MutateDataRequest.DisableLimitedProfile must be true. Currently,
	// disables are only performed server-side, so this is read-only for
	// clients.
	//
	// Possible values:
	//   "DISABLE_REASON_UNSPECIFIED"
	//   "INCOMPATIBLE_NAME_ONLY_MUTATION" - This means that a core name
	// mutation was performed with no mutation to LimitedProfileSettings and
	// the limited profile name recomputed from the existing `name_settings`
	// was different from the one previously chosen by the user (stored in
	// `verbatim_name`).
	//   "NAME_ABUSE_VIOLATION" - The Limited Profile name violates some
	// Google policy. Note: regular checks for name violation are performed
	// in FBS when the LimitedProfileSettings are created and prevent the
	// mutation from succeeding (i.e., we DO NOT store LP settings with
	// `NAME_ABUSE_VIOLATION` as disable reason in this case). This disable
	// reason exists instead so that we can respond manually to any abuse
	// escalation involving LP names.
	DisableReason string `json:"disableReason,omitempty"`

	// GpayOobe: Created with user input in GPay OOBE.
	GpayOobe bool `json:"gpayOobe,omitempty"`

	// LastUpdateTime: Timestamp indicating when the settings were last
	// stored. Read-only field.
	LastUpdateTime string `json:"lastUpdateTime,omitempty"`

	// LegacyDiscoverability: A user who had legacy discoverability had a
	// Limited Profile autogenerated for them, either through a healer or in
	// the live path in FBS.
	//
	// Possible values:
	//   "AUTOGEN_STATUS_UNSPECIFIED"
	//   "AUTOGEN_UNCONFIRMED" - The LP was autogenerated and not yet
	// surfaced and acted on by the user. LPs in this state are subject to
	// disabling in certain conditions.
	//   "AUTOGEN_CONFIRMED" - The autogenerated LP ws surfaced to the user
	// and they performed some action on it. E.g. it was displayed in
	// Whitepages UI and the user disabled discoverability.
	LegacyDiscoverability string `json:"legacyDiscoverability,omitempty"`

	// MyAccount: Created with user input in MyAccount UI.
	MyAccount bool `json:"myAccount,omitempty"`

	// NameSettings: Required. Defines how the name should be formatted in
	// the limited profile.
	NameSettings *SocialGraphApiProtoLimitedProfileNameSettings `json:"nameSettings,omitempty"`

	// ProfilePictureSettings: DEPRECATED. Profile picture choices are
	// controlled through the ACL of the Photo field.
	ProfilePictureSettings *SocialGraphApiProtoLimitedProfilePictureSettings `json:"profilePictureSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisableReason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisableReason") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoLimitedProfileSettings) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoLimitedProfileSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoMonthlyDayRecurrence: Pattern for a MONTHLY
// recurrence. This Monthly reccurence supports: 1. Absolute days of the
// month (i.e. the 1st and 15th) 2. Relative day from the end of the
// month (i.e. -1 for last day, -2 for second-to-last day). Used in
// PeopleAPI layers + FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoMonthlyDayRecurrence struct {
	// MonthDay: Absolute day of the month (if positive) or relative day
	// from the end of the month (if negative). Example: 2nd and 20th of the
	// month [2, 20]. Example: Last day of the month [-1]. Positive values
	// should correspond to actual calendar day number (indexing starts at
	// 1).
	MonthDay []int64 `json:"monthDay,omitempty"`

	// UseLastDayIfMonthDayPastEnd: If true, month_day beyond the end of
	// month (i.e. month_day=31 in February) will default to the last day of
	// the month.
	UseLastDayIfMonthDayPastEnd bool `json:"useLastDayIfMonthDayPastEnd,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MonthDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MonthDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoMonthlyDayRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoMonthlyDayRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoMonthlyRecurrence: A MONTHLY recurrence can be one
// of a MonthlyDayRecurrence or MonthlyWeekdayRecurrence but not both.
// Used in PeopleAPI layers + FBS/ContactsService (not in
// ProfileService)
type SocialGraphApiProtoMonthlyRecurrence struct {
	MonthlyDayRecurrence *SocialGraphApiProtoMonthlyDayRecurrence `json:"monthlyDayRecurrence,omitempty"`

	MonthlyWeekdayRecurrence *SocialGraphApiProtoMonthlyWeekdayRecurrence `json:"monthlyWeekdayRecurrence,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MonthlyDayRecurrence") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MonthlyDayRecurrence") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoMonthlyRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoMonthlyRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoMonthlyWeekdayRecurrence: Pattern for a MONTHLY
// recurrence. This Monthly reccurence supports: 1. The nth specific
// weekday of the month. For example, the 3rd Wednesday of the month.
// This represents the 3rd instance of a Wednesday of the month,
// regardless of what weekday the month started on. It does not
// necessarily mean the Wednesday on the 3rd week of the month. Used in
// PeopleAPI layers + FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoMonthlyWeekdayRecurrence struct {
	// WeekDay: The nth occurrence of week_day to match. I.e. For 3rd
	// Wednesday of the month, week_day = WEDNESDAY and week_day_number = 3.
	// Values beyond the end of the month are skipped.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	WeekDay string `json:"weekDay,omitempty"`

	WeekDayNumber int64 `json:"weekDayNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "WeekDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WeekDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoMonthlyWeekdayRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoMonthlyWeekdayRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoNamePronunciationAudioMetadata: Metadata for a
// user's name pronunciation audio. Proto message is shared between
// merged_person and FBS.
type SocialGraphApiProtoNamePronunciationAudioMetadata struct {
	// AudioSource: Stored. Updated on pronunciation creates and updates.
	//
	// Possible values:
	//   "SOURCE_UNSPECIFIED"
	//   "USER_GENERATED"
	AudioSource string `json:"audioSource,omitempty"`

	// AudioState: Stored.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED"
	//   "ENABLED"
	//   "DISABLED_FOR_NAME_CHANGE"
	AudioState string `json:"audioState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioSource") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioSource") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoNamePronunciationAudioMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoNamePronunciationAudioMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoNotificationTrigger: Used in PeopleAPI layers +
// FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoNotificationTrigger struct {
	// DaysBeforeActiveDate: Positive number of days before active date. The
	// value 0 will denote a notification on the same day.
	DaysBeforeActiveDate int64 `json:"daysBeforeActiveDate,omitempty"`

	// NotificationTimeOfDay: Time of day that notification is sent to user.
	// This is local to the user's device.
	NotificationTimeOfDay *GoogleTypeTimeOfDay `json:"notificationTimeOfDay,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DaysBeforeActiveDate") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DaysBeforeActiveDate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoNotificationTrigger) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoNotificationTrigger
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoPartialNameOptions struct {
	// Language: IETF BCP-47 language code that should be used for
	// localizing the name computation (go/bcp-47). If not provided, we'll
	// use the name origin detector to infer it. If unable to detect, "en"
	// will be assumed.
	Language string `json:"language,omitempty"`

	ParsedDisplayNameSpec *SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec `json:"parsedDisplayNameSpec,omitempty"`

	TwoPartNameSpec *SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec `json:"twoPartNameSpec,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPartialNameOptions) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPartialNameOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPartialNameOptionsNamePartSpec: Specifies how each
// piece of the name should be handled. Names are structured into given
// name and family name and this allows an independent specification for
// each of these pieces. Very limited preprocessing is done for this
// option (leading whitespace trimming mostly). Composed names are
// treated as a single unit and are not broken down.
type SocialGraphApiProtoPartialNameOptionsNamePartSpec struct {
	// HideAll: Completely omit that part of the name.
	HideAll bool `json:"hideAll,omitempty"`

	// ShowAll: Show the complete name. Note that this does not express the
	// same semantics as show_first_n_chars=length_of_name, because when
	// regenerating a shortened name the new name could have more
	// characters, thus yielding a different result.
	ShowAll bool `json:"showAll,omitempty"`

	// ShowFirstNChars: Show first `n` characters. Same note about
	// characters referring to "grapheme_clusters" applies.
	ShowFirstNChars int64 `json:"showFirstNChars,omitempty"`

	// ShowInitial: Show only the initial, i.e., a single character. Note
	// that "character" refers to "user-perceived" characters, aka a
	// "grapheme cluster". See go/morphology for more details.
	ShowInitial bool `json:"showInitial,omitempty"`

	// TruncationIndicator: Which truncation indicator to use after the
	// shortened piece of the name. Will be ignored for the `hide_all` or
	// `show_all` options.
	//
	// Possible values:
	//   "TRUNCATION_INDICATOR_UNSPECIFIED"
	//   "ELLIPSIS" - Add an ellipsis after a partial name, e.g., `Joh…
	// Do…`. The actual character(s) that will be used for the ellipsis
	// are locale-aware and will vary according to the provided/inferred
	// language.
	//   "PERIOD" - Add a period after a partial name, e.g. `J. D.`
	TruncationIndicator string `json:"truncationIndicator,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HideAll") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HideAll") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPartialNameOptionsNamePartSpec) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPartialNameOptionsNamePartSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec: These
// options use more sophisticated logic from a location-aware name
// detector to parse the full name of a user into structured parts and
// operate on those parts. For more information on how names are parsed,
// see the NameOccurrence proto definition:
// http://google3/quality/peoplesearch/namedetector/detector/proto/name_occurrence.proto?l=50&rcl=334484707
// In general, when parsing display names the following rules will apply
// to *all* specs: - Hyphenated names are broken down: "Angelina
// Jollie-Pit" is pre-processed as "Angelina Jollie Pitt"; - Prefixes
// are ignored: "Prof. Albus Dumbledore" is pre-processed as "Albus
// Dumbledore"; - Auxiliaries are ignored: "Luís de Camões" is
// pre-processed as "Luís Camões". Next ID: 8
type SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec struct {
	// AllInitialsFromParsedName: Extract an initial from each parsed name.
	// For example, "Niels Henrik David Bohr" yields "N. H. D. B.". Other
	// special cases are treated as follows:
	AllInitialsFromParsedName bool `json:"allInitialsFromParsedName,omitempty"`

	// FirstInitialAndFirstLastName: Show the initial of the very first name
	// and the first last name, e.g. "Hugo Daniel Hernandez Garcia" yields
	// "H. Hernandez".
	FirstInitialAndFirstLastName bool `json:"firstInitialAndFirstLastName,omitempty"`

	// FirstInitialAndVeryLastName: Show the initial of the very first name
	// and the very last name, e.g. "Ana Maria Silva" yields "A. Silva".
	FirstInitialAndVeryLastName bool `json:"firstInitialAndVeryLastName,omitempty"`

	// KnowledgeGraphNameShortening: Shorten the display name using the
	// Knowledge Graph name shortener (go/short-names).
	KnowledgeGraphNameShortening bool `json:"knowledgeGraphNameShortening,omitempty"`

	// TruncationIndicator: Which truncation indicator to use after each
	// shortened part of the name. Will be ignored for the
	// `knowledge_graph_name_shortening` option.
	//
	// Possible values:
	//   "TRUNCATION_INDICATOR_UNSPECIFIED"
	//   "ELLIPSIS" - Add an ellipsis after a partial name, e.g., `Joh…
	// Do…`. The actual character(s) that will be used for the ellipsis
	// are locale-aware and will vary according to the provided/inferred
	// language.
	//   "PERIOD" - Add a period after a partial name, e.g. `J. D.`
	TruncationIndicator string `json:"truncationIndicator,omitempty"`

	// VeryFirstNameAndAllInitials: Show the full very first name and all
	// the other initials, e.g. "Ana Maria Silva" yields "Ana M. S.".
	VeryFirstNameAndAllInitials bool `json:"veryFirstNameAndAllInitials,omitempty"`

	// VeryFirstNameOnly: Show the very first name only, e.g. "Ana Maria
	// Silva" yields "Ana".
	VeryFirstNameOnly bool `json:"veryFirstNameOnly,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AllInitialsFromParsedName") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AllInitialsFromParsedName") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec: Holds the name
// specs for the two parts of a name, as they are structured in storage
// (given and family).
type SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec struct {
	FamilyNameSpec *SocialGraphApiProtoPartialNameOptionsNamePartSpec `json:"familyNameSpec,omitempty"`

	GivenNameSpec *SocialGraphApiProtoPartialNameOptionsNamePartSpec `json:"givenNameSpec,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FamilyNameSpec") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FamilyNameSpec") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPhotoOverlay: Settings that control how a photo
// overlay is displayed.
type SocialGraphApiProtoPhotoOverlay struct {
	// RelativePosition: Top left position of the overlay relative to the
	// user's avatar.
	RelativePosition *SocialGraphApiProtoRelativePosition `json:"relativePosition,omitempty"`

	// RelativeScale: Scale of the overlay relative to the user's avatar.
	RelativeScale *SocialGraphApiProtoRelativeScale `json:"relativeScale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "RelativePosition") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "RelativePosition") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPhotoOverlay) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPhotoOverlay
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPrompt: Used in PeopleAPI layers +
// FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoPrompt struct {
	// ActiveState: Indicates if this prompt is active regardless of its
	// reccurrence date, dismiss date or notification triggers. This is
	// required.
	//
	// Possible values:
	//   "UNKNOWN_ACTIVE_STATE"
	//   "ACTIVE"
	//   "DISABLED"
	ActiveState string `json:"activeState,omitempty"`

	Content *SocialGraphApiProtoPromptContent `json:"content,omitempty"`

	// LastDismissDate: The most recent day the user dismissed this prompt.
	// Empty means the user has never dismissed the prompt.
	LastDismissDate *GoogleTypeDate `json:"lastDismissDate,omitempty"`

	// NotificationTriggers: If this is empty, only the "Prompt Spark" will
	// be displayed (in the time-range read from per type config), no push
	// notifications will be shown. If push notification are configured with
	// this field, the "Prompt Spark" time-range will be determined by
	// earliest notification value here.
	NotificationTriggers []*SocialGraphApiProtoNotificationTrigger `json:"notificationTriggers,omitempty"`

	// Purpose: Read-only. This is derived from the containing field value.
	//
	// Possible values:
	//   "UNKNOWN_PURPOSE"
	//   "BIRTHDAY"
	//   "ANNIVERSARY"
	//   "SIGNIFICANT_DATE"
	//   "CONNECTION_FREQUENCY"
	Purpose string `json:"purpose,omitempty"`

	// Recurrence: How frequently will this prompt occur and how many times.
	Recurrence *SocialGraphApiProtoRecurrence `json:"recurrence,omitempty"`

	// UniquePromptId: Prompt ID is generated by server on initial mutate.
	UniquePromptId string `json:"uniquePromptId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActiveState") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActiveState") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPrompt) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPrompt
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPromptContent: Used in PeopleAPI layers +
// FBS/ContactsService (not in ProfileService) and in Custard response
// to client apps that read Prompts.
type SocialGraphApiProtoPromptContent struct {
	// Title: Title of prompt/spark being sent.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Title") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Title") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPromptContent) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPromptContent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPronounData: Design doc: go/pronouns-backend
// Represents a user's preferred pronouns.
type SocialGraphApiProtoPronounData struct {
	PronounEntry []*SocialGraphApiProtoPronounEntry `json:"pronounEntry,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PronounEntry") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PronounEntry") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPronounData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPronounData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoPronounEntry struct {
	// LanguageCode: Locale option in which the pronouns were set, in the
	// BCP-47 format. Set by the client at write time.
	LanguageCode string `json:"languageCode,omitempty"`

	// PronounType: The pronoun entry type that the user has selected. This
	// indicates which locale-independent classification of pronoun was
	// selected (or optionally, if it is a custom field).
	//
	// Possible values:
	//   "UNKNOWN" - Unknown pronoun type
	//   "CUSTOM" - User has defined their own pronouns using custom field
	// entry, available in the "value" field.
	//   "FEMININE" - go/keep-sorted start User has selected a feminine
	// pronoun (she/her in English)
	//   "MASCULINE" - User has selected a masculine pronoun (he/him in
	// English)
	//   "NEUTRAL" - User has selected a neutral pronoun (they/them in
	// English) go/keep-sorted end
	PronounType string `json:"pronounType,omitempty"`

	// Value: The user's preferred pronouns. Eg. "they / them". This is a
	// human-readable string to be displayed as the user's pronoun. Set at
	// write-time, regardless of pronoun-type. Value is returned as it was
	// set (no localization).
	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LanguageCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LanguageCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPronounEntry) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPronounEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPronunciation: Stores the pronunciation as phoneme
// for the given word/text. Next ID: 8
type SocialGraphApiProtoPronunciation struct {
	// LearningSessionId: All pronunciations with the same
	// learning_session_id were learnt in the same learning flow, e.g.
	// multiple name segments learnt simultaneously from a recording in the
	// Your People UI.
	LearningSessionId string `json:"learningSessionId,omitempty"`

	// Possible values:
	//   "LEARNING_SOURCE_UNKNOWN"
	//   "EXPLICIT_YOUR_PEOPLE_UI"
	//   "INFERRED_COMMS_DIALOG"
	LearningSource string `json:"learningSource,omitempty"`

	// Locale: The locale used when learning the pronunciation. BCP-47
	// language code, e.g. "en-US".
	Locale string `json:"locale,omitempty"`

	// Phonemes: Phoneme sequence representing how the user pronounces
	// |token|. Format is specified by the phonology_type type field, e.g.
	// go/psampa is the preferred phonology type used by the TTS team.
	Phonemes string `json:"phonemes,omitempty"`

	// Possible values:
	//   "PHONOLOGY_TYPE_UNKNOWN"
	//   "PSAMPA" - Used in PronBuffet. Preferred phonology type to pass to
	// TTS.
	PhonologyType string `json:"phonologyType,omitempty"`

	// SpellingHint: An optional user-specified spelling of this token, to
	// improve pronunciation learning success rate. E.g. the token may be
	// "Jana" and the spelling hint "jah-nah".
	SpellingHint string `json:"spellingHint,omitempty"`

	// Token: Corresponds to a word segment of the contact name. E.g. for a
	// contact with given name "John Doe", last name "Smith" and nickname
	// "Best Dad", |token| can be any of {John, Doe, Smith, Best, Dad}.
	Token string `json:"token,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LearningSessionId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LearningSessionId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPronunciation) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPronunciation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoPronunciations: Container proto for repeated
// pronunciation objects. For example, a set of pronunciations that can
// be added to a single name field.
type SocialGraphApiProtoPronunciations struct {
	Pronunciation []*SocialGraphApiProtoPronunciation `json:"pronunciation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Pronunciation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Pronunciation") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoPronunciations) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoPronunciations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoRecurrence: Flexible Recurrence proto to be used
// with People Prompts. Examples: Single recurrence that occurs on a
// specific date: single_recurrence { date { year: 2022 month: 11 day:
// 17 } } Yearly recurrence such as a birthday or anniversary:
// yearly_recurrence { monthly_pattern { monthly_day_recurrence {
// month_day: 17 } } months: JULY } Weekly reccurrence such as: every
// two weeks on Monday: every: 2 weekly_recurrence { week_day: MONDAY }
// Monthly recurrence such as: third Thursday of every month:
// monthly_recurrence { monthly_weekday_recurrence { week_day: THURSDAY
// week_day_number: 3 } } Used in PeopleAPI layers + FBS/ContactsService
// (not in ProfileService) The canonical recurrence validation function
// is located here:
// http://google3/java/com/google/social/people/prompts/util/PromptValidators.java?q=func:%5CbvalidateRecurrence%5Cb
type SocialGraphApiProtoRecurrence struct {
	DailyRecurrence *SocialGraphApiProtoDailyRecurrence `json:"dailyRecurrence,omitempty"`

	// Every: Multiplier on the frequency of the recurrence. Use this to
	// specify patterns that recur every X days, months, years, etc. Must be
	// a positive int. Example: [remind me to call mom every 2nd week]. If
	// this field isn't set, it will default to 1 (every day,every week,
	// etc). This field is ignored when recurrence_data is a
	// SingleRecurrence. Optional.
	Every int64 `json:"every,omitempty"`

	MonthlyRecurrence *SocialGraphApiProtoMonthlyRecurrence `json:"monthlyRecurrence,omitempty"`

	// RecurrenceEndDate: Ends at abstract DateTime. (inclusive)
	RecurrenceEndDate *GoogleTypeDateTime `json:"recurrenceEndDate,omitempty"`

	// RecurrenceStart: The start of the recurrence can be represented as a
	// DateTime. This field is ignored when recurrence_data is a
	// SingleRecurrence.
	RecurrenceStart *GoogleTypeDateTime `json:"recurrenceStart,omitempty"`

	// RepeatCount: Will repeat only a finite number of times. This is the
	// original number of times the recurrence will repeat and not how many
	// times are left for it to repeat. This end type is not currently
	// supported.
	RepeatCount int64 `json:"repeatCount,omitempty"`

	// RepeatForever: Will continue to repeat until prompt is deleted.
	RepeatForever *SocialGraphApiProtoRecurrenceRepeatForever `json:"repeatForever,omitempty"`

	SingleRecurrence *SocialGraphApiProtoSingleRecurrence `json:"singleRecurrence,omitempty"`

	WeeklyRecurrence *SocialGraphApiProtoWeeklyRecurrence `json:"weeklyRecurrence,omitempty"`

	YearlyRecurrence *SocialGraphApiProtoYearlyRecurrence `json:"yearlyRecurrence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DailyRecurrence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DailyRecurrence") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoRecurrenceRepeatForever: An internal message to
// signal that this recurrence has no end date.
type SocialGraphApiProtoRecurrenceRepeatForever struct {
}

// SocialGraphApiProtoRelativePosition: Position relative to the user's
// avatar. 0 = top/left, 1 = bottom/right.
type SocialGraphApiProtoRelativePosition struct {
	X float64 `json:"x,omitempty"`

	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoRelativePosition) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoRelativePosition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialGraphApiProtoRelativePosition) UnmarshalJSON(data []byte) error {
	type NoMethod SocialGraphApiProtoRelativePosition
	var s1 struct {
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// SocialGraphApiProtoRelativeScale: Scale relative to the user's
// avatar. x and y range from 0 (exclusive) to 1 (inclusive).
type SocialGraphApiProtoRelativeScale struct {
	X float64 `json:"x,omitempty"`

	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoRelativeScale) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoRelativeScale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialGraphApiProtoRelativeScale) UnmarshalJSON(data []byte) error {
	type NoMethod SocialGraphApiProtoRelativeScale
	var s1 struct {
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// SocialGraphApiProtoSearchProfileData: Data contained in every search
// profile. go/janata-profile-in-sgbe.
type SocialGraphApiProtoSearchProfileData struct {
	// Description: A free-text summary that the user inputs. E.g. "Coder by
	// day, jazz guitarist by night."
	Description string `json:"description,omitempty"`

	Education []*SocialGraphApiProtoSearchProfileEducation `json:"education,omitempty"`

	Interest []*SocialGraphApiProtoSearchProfileEntity `json:"interest,omitempty"`

	// Language: Indicates the language of this search profile. Use ISO-639
	// 2-letter language code to specifying the language that this profile
	// is created in.
	Language string `json:"language,omitempty"`

	Location []*SocialGraphApiProtoSearchProfileLocation `json:"location,omitempty"`

	Metadata *SocialGraphApiProtoSearchProfileMetadata `json:"metadata,omitempty"`

	Occupation []*SocialGraphApiProtoSearchProfileEntity `json:"occupation,omitempty"`

	// PublicEmail: This is the email that the user has chosen to display on
	// their "SearchCard" publicly.
	PublicEmail []string `json:"publicEmail,omitempty"`

	// PublicPhoneNumber: This is the phone number that the user has chosen
	// to display on their "SearchCard" publicly.
	PublicPhoneNumber []string `json:"publicPhoneNumber,omitempty"`

	SocialLink []*SocialGraphApiProtoSearchProfileSocialLink `json:"socialLink,omitempty"`

	Website []string `json:"website,omitempty"`

	Workplace []*SocialGraphApiProtoSearchProfileWorkplace `json:"workplace,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSearchProfileEducation: Wraps information about a
// user's eductational background.
type SocialGraphApiProtoSearchProfileEducation struct {
	EndTime *GoogleTypeDate `json:"endTime,omitempty"`

	FieldOfStudy []*SocialGraphApiProtoSearchProfileEntity `json:"fieldOfStudy,omitempty"`

	Institution *SocialGraphApiProtoSearchProfileEntity `json:"institution,omitempty"`

	StartTime *GoogleTypeDate `json:"startTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileEducation) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileEducation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSearchProfileEntity: This proto represents either
// a KG-entity, as represented by it's MID, or free-string text.
type SocialGraphApiProtoSearchProfileEntity struct {
	// CountryCode: Corresponding country code. Refer to
	// go/people-search-dashboard for code list.
	CountryCode string `json:"countryCode,omitempty"`

	// Entity: Corresponding mid in KG.
	Entity string `json:"entity,omitempty"`

	// Name: Custom name of entity if there is no corresponding place/entity
	// in KG (mid)
	Name []string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CountryCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileEntity) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSearchProfileLocation: Wraps information about a
// user's location, if they have chosen to share it on their SearchCard.
type SocialGraphApiProtoSearchProfileLocation struct {
	EndTime *GoogleTypeDate `json:"endTime,omitempty"`

	LengthOfStay string `json:"lengthOfStay,omitempty"`

	Place *SocialGraphApiProtoSearchProfileEntity `json:"place,omitempty"`

	Point *SocialGraphApiProtoSearchProfileLocationInfo `json:"point,omitempty"`

	StartTime *GoogleTypeDate `json:"startTime,omitempty"`

	// Possible values:
	//   "LOCATION_TYPE_UNKNOWN"
	//   "HOMETOWN"
	//   "CURRENT"
	//   "PAST"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileLocation) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoSearchProfileLocationInfo struct {
	// Lat: Degrees [-90 .. 90]
	Lat float64 `json:"lat,omitempty"`

	// Lon: Degrees [-180 .. 180]
	Lon float64 `json:"lon,omitempty"`

	// Radius: Meters
	Radius float64 `json:"radius,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Lat") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Lat") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileLocationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileLocationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialGraphApiProtoSearchProfileLocationInfo) UnmarshalJSON(data []byte) error {
	type NoMethod SocialGraphApiProtoSearchProfileLocationInfo
	var s1 struct {
		Lat    gensupport.JSONFloat64 `json:"lat"`
		Lon    gensupport.JSONFloat64 `json:"lon"`
		Radius gensupport.JSONFloat64 `json:"radius"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Lat = float64(s1.Lat)
	s.Lon = float64(s1.Lon)
	s.Radius = float64(s1.Radius)
	return nil
}

// SocialGraphApiProtoSearchProfileMetadata: This proto represents
// metadata of the users SearchProfile like profile state, GOG account
// id etc.,
type SocialGraphApiProtoSearchProfileMetadata struct {
	// AccountId: Unique contributor account id allocated by presence/janata
	// infrastructure. This will be used in the frontend for various actions
	// like reporting errors, photo uploads etc., go/boba-janata,
	// go/cleanup-contributor-creation
	AccountId string `json:"accountId,omitempty"`

	// AccountMid: Account KG entity mid assigned to this user required by
	// old janata serving stack. This is not required anymore for serving.
	// But might need it for historical purposes. See
	// https://hume.google.com/edit/g/11gg6cyvch for more details.
	AccountMid string `json:"accountMid,omitempty"`

	// AresId: Ares id used for tracking the auto moderation.
	AresId string `json:"aresId,omitempty"`

	// State: Current state of the Search Profile.
	State []*SocialGraphApiProtoSearchProfileState `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSearchProfileSocialLink: Wraps social profile
// information about the user.
type SocialGraphApiProtoSearchProfileSocialLink struct {
	Link string `json:"link,omitempty"`

	// Possible values:
	//   "SOCIAL_LINK_TYPE_UNKNOWN"
	//   "FACEBOOK"
	//   "INSTAGRAM"
	//   "LINKEDIN"
	//   "PINTERIST" - DEPRECATED(b/158738685): Misspelling, use PINTEREST
	// below instead.
	//   "SOUNDCLOUD"
	//   "TWITTER"
	//   "YOUTUBE"
	//   "PINTEREST"
	//   "JUMPROPE" - go/3rd-profile-sgbe-cc-sync
	//   "TIKTOK"
	//   "WORDPRESS"
	//   "FIREWORK"
	//   "SNAPCHAT"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Link") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Link") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileSocialLink) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileSocialLink
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoSearchProfileState struct {
	// ChangeTimestamp: Timestamp of when the state was changed.
	ChangeTimestamp string `json:"changeTimestamp,omitempty"`

	// DisplayTimestamp: This will be used to display status to the user at
	// a set time. If set to a value after `change_timestamp`, the change
	// will not be 'reflected' until this time.
	DisplayTimestamp string `json:"displayTimestamp,omitempty"`

	// Type: State that the UserProfile was changed to.
	//
	// Possible values:
	//   "UNKNOWN_PROFILE_STATE"
	//   "STATE_DRAFT"
	//   "STATE_FAILED_PHONE_VERIFICATION"
	//   "STATE_FAILED_ID_VERIFICATION"
	//   "STATE_FAILED_CONTENT_VERIFICATION"
	//   "STATE_NEEDS_MANUAL_REVIEW"
	//   "STATE_PUBLIC"
	//   "STATE_DELETED"
	//   "STATE_CONTENT_VERIFICATION_REQUIRED"
	//   "STATE_REJECTED_FOR_IMPERSONATION"
	//   "STATE_REQUIRES_ID_VERIFICATION"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChangeTimestamp") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChangeTimestamp") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileState) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileState
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSearchProfileWorkplace: Wraps information about a
// user working at a specific place.
type SocialGraphApiProtoSearchProfileWorkplace struct {
	Company *SocialGraphApiProtoSearchProfileEntity `json:"company,omitempty"`

	EndTime *GoogleTypeDate `json:"endTime,omitempty"`

	StartTime *GoogleTypeDate `json:"startTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Company") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Company") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSearchProfileWorkplace) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSearchProfileWorkplace
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSingleRecurrence: This prompt will occur one time
// only. Could be a single event such as a graduation or a single
// connection reminder e.g. remind me to call X on 2022/03/19. Used in
// PeopleAPI layers + FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoSingleRecurrence struct {
	Date *GoogleTypeDate `json:"date,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Date") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Date") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSingleRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSingleRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoSyncInfo: LINT.IfChange
type SocialGraphApiProtoSyncInfo struct {
	// SourceId: CP2 sourceid column.
	SourceId string `json:"sourceId,omitempty"`

	// Sync1: CP2 sync1 column.
	Sync1 string `json:"sync1,omitempty"`

	// Sync2: CP2 sync2 column.
	Sync2 string `json:"sync2,omitempty"`

	// Sync3: CP2 sync3 column.
	Sync3 string `json:"sync3,omitempty"`

	// Sync4: CP2 sync4 column.
	Sync4 string `json:"sync4,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SourceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SourceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoSyncInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoSyncInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphApiProtoThirdPartyInfo struct {
	// ClientName: Not to be used. We have since moved to a lookup string at
	// read time approach as opposed to storing data at write time.
	// b/146072927
	ClientName string `json:"clientName,omitempty"`

	// ProjectNumber: Project number of the third party application
	// performing the delete to be looked up via ClientAuthConfig during
	// display time for users to know the current name of an application
	// which has deleted contact data.
	ProjectNumber int64 `json:"projectNumber,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ClientName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoThirdPartyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoThirdPartyInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoUsageInfo: Usage information. This is currently
// used for device contacts. Next ID: 3
type SocialGraphApiProtoUsageInfo struct {
	// LastTimeContacted: Last time a contact was contacted.
	LastTimeContacted string `json:"lastTimeContacted,omitempty"`

	// TimesContacted: Number of times a contact was contacted.
	TimesContacted uint64 `json:"timesContacted,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "LastTimeContacted")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LastTimeContacted") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoUsageInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoUsageInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoWeeklyRecurrence: Pattern for a WEEKLY recurrence.
// You must specify at least one week_day. Used in PeopleAPI layers +
// FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoWeeklyRecurrence struct {
	// WeekDay: Set of weekdays the recurrence applies to.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	WeekDay []string `json:"weekDay,omitempty"`

	// ForceSendFields is a list of field names (e.g. "WeekDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WeekDay") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoWeeklyRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoWeeklyRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphApiProtoYearlyRecurrence: Pattern for a YEARLY recurrence.
// A YEARLY recurrence is specified using a monthly pattern and a set of
// months the pattern applies to. Some examples: "Every January 16" :
// monthly_pattern { monthly_day_recurrence { month_day: 16 } } months:
// JANUARY "Fourth Thursday of November and December" : monthly_pattern
// { monthly_weekday_recurrence { week_day: THURSDAY week_day_number: 4
// } } months: NOVEMBER months: DECEMBER Used in PeopleAPI layers +
// FBS/ContactsService (not in ProfileService)
type SocialGraphApiProtoYearlyRecurrence struct {
	// MonthlyPattern: The monthly pattern to recur.
	MonthlyPattern *SocialGraphApiProtoMonthlyRecurrence `json:"monthlyPattern,omitempty"`

	// Months: The months of the year to apply the pattern.
	//
	// Possible values:
	//   "MONTH_UNSPECIFIED" - The unspecified month.
	//   "JANUARY" - The month of January.
	//   "FEBRUARY" - The month of February.
	//   "MARCH" - The month of March.
	//   "APRIL" - The month of April.
	//   "MAY" - The month of May.
	//   "JUNE" - The month of June.
	//   "JULY" - The month of July.
	//   "AUGUST" - The month of August.
	//   "SEPTEMBER" - The month of September.
	//   "OCTOBER" - The month of October.
	//   "NOVEMBER" - The month of November.
	//   "DECEMBER" - The month of December.
	Months []string `json:"months,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MonthlyPattern") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MonthlyPattern") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphApiProtoYearlyRecurrence) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphApiProtoYearlyRecurrence
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphWireProtoPeopleapiAffinityMetadata: Extra ranking info
// returned with affinity data. This info is returned by DAS and passed
// to PAPI clients (Yenta), where it is used for ranking and filtering
// device and server suggestions together.
type SocialGraphWireProtoPeopleapiAffinityMetadata struct {
	// ClientInteractionInfo: Information regarding client interactions.
	ClientInteractionInfo *SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo `json:"clientInteractionInfo,omitempty"`

	// CloudDeviceDataInfo: Device information about the candidate available
	// in the cloud.
	CloudDeviceDataInfo *SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo `json:"cloudDeviceDataInfo,omitempty"`

	// CloudScore: Affinity score for the cloud contact.
	CloudScore float64 `json:"cloudScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClientInteractionInfo") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientInteractionInfo") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiAffinityMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiAffinityMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialGraphWireProtoPeopleapiAffinityMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod SocialGraphWireProtoPeopleapiAffinityMetadata
	var s1 struct {
		CloudScore gensupport.JSONFloat64 `json:"cloudScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CloudScore = float64(s1.CloudScore)
	return nil
}

type SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo struct {
	// IsDirectClientInteraction: Whether this suggestion is an edge
	// directly from the client. E.g., a suggestion with which the user
	// shared a photo on photos app.
	IsDirectClientInteraction bool `json:"isDirectClientInteraction,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "IsDirectClientInteraction") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "IsDirectClientInteraction") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo struct {
	// DeviceScore: The partial affinity score only counting device
	// features.
	DeviceScore float64 `json:"deviceScore,omitempty"`

	// IsDeviceDataKnown: Whether device data about this candidate were
	// available in the cloud.
	IsDeviceDataKnown bool `json:"isDeviceDataKnown,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DeviceScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo) UnmarshalJSON(data []byte) error {
	type NoMethod SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo
	var s1 struct {
		DeviceScore gensupport.JSONFloat64 `json:"deviceScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DeviceScore = float64(s1.DeviceScore)
	return nil
}

// SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData:
// Waldo-related extension data.
type SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData struct {
	Availabilities *GoogleInternalAppsWaldoV1alphaUserAvailabilities `json:"availabilities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Availabilities") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Availabilities") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData:
// Dynamite-related extension data.
type SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData struct {
	// AvatarUrl: Avatar image URL for a Google Group, based on the member
	// count.
	AvatarUrl string `json:"avatarUrl,omitempty"`

	// Description: Short description of this bot. Only set if EntityType ==
	// BOT.
	Description string `json:"description,omitempty"`

	// DeveloperName: Display name of bot developer. Only set if EntityType
	// == BOT.
	DeveloperName string `json:"developerName,omitempty"`

	// Possible values:
	//   "UNKNOWN_DND_STATE"
	//   "AVAILABLE"
	//   "DND"
	DndState string `json:"dndState,omitempty"`

	// Possible values:
	//   "UNKNOWN_ENTITY_TYPE"
	//   "PERSON" - Regular user.
	//   "GOOGLE_GROUP" - Google Group.
	//   "BOT" - Dynamite bot.
	EntityType string `json:"entityType,omitempty"`

	// MemberCount: Number of members (direct or indirect) in a Google
	// Group. Only an estimate for large groups (currently > 1K direct /
	// indirect members).
	MemberCount int64 `json:"memberCount,omitempty,string"`

	// OrganizationInfo: NEXT TAG: 9
	OrganizationInfo *AppsDynamiteSharedOrganizationInfo `json:"organizationInfo,omitempty"`

	// Possible values:
	//   "UNDEFINED_PRESENCE"
	//   "ACTIVE"
	//   "INACTIVE"
	//   "UNKNOWN" - Not a Dynamite user, or if the user has been invited
	// but never logged into Dynamite ever before.
	//   "SHARING_DISABLED" - The user has disabled presence sharing. This
	// is currently only possible via the Classic setting to disable sharing
	// your last active time (see external docs here:
	// https://support.google.com/hangouts/answer/6083257?hl=en).
	Presence string `json:"presence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvatarUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvatarUrl") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData: Next tag
// number: 3
type SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData struct {
	// ActorId: Actor ID of the person, if available (if the person has used
	// the Paisa app).
	ActorId string `json:"actorId,omitempty"`

	// Subtitle: Display subtitle, which may be used in
	// suggestion/autocompletion results. Generally, this will be the
	// Actor's registered Paisa phone number, in unmasked or masked form
	// (e.g. +1 ***-***-1234) depending on visibility rules.
	Subtitle string `json:"subtitle,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActorId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActorId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData struct {
	// FamilyStatus: Whether the person is in the same family as the
	// requesting user. Family here refers to
	// https://families.google.com/families. This information is read from
	// SuperGlue, and can be consumed by clients, e.g. Assistant and Photos.
	// If this field is not set, the person is not in the user's family.
	//
	// Possible values:
	//   "FAMILY_STATUS_UNSPECIFIED"
	//   "FAMILY_MEMBER"
	FamilyStatus string `json:"familyStatus,omitempty"`

	// HiddenKeys: The full list of hidden keys associated with this person.
	// These are the external equivalent to the keys stored by the
	// ConnectionLabelService, and they can be passed to the
	// MutateConnectionLabel endpoint to unhide this person. This field will
	// only be set if hide_type is HIDDEN.
	HiddenKeys []*SocialDiscoveryExternalEntityKey `json:"hiddenKeys,omitempty"`

	// HideType: If this field is not set, the person is visible (implicit).
	//
	// Possible values:
	//   "HIDE_TYPE_UNSPECIFIED"
	//   "HIDDEN"
	HideType string `json:"hideType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FamilyStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FamilyStatus") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData:
// NEXT_ID: 5
type SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData struct {
	// BirthdayStatus: Whether the person has birthday field populated.
	//
	// Possible values:
	//   "BIRTHDAY_STATUS_UNSPECIFIED"
	//   "HAS_BIRTHDAY"
	BirthdayStatus string `json:"birthdayStatus,omitempty"`

	// FamilyStatus: Whether the person is in the same family as the
	// requesting user. Family here refers to
	// https://families.google.com/families. This information is read from
	// SuperGlue, and can be consumed by clients, e.g. Assistant and Photos.
	// If this field is not set, the person is not in the user's family.
	//
	// Possible values:
	//   "FAMILY_STATUS_UNSPECIFIED"
	//   "FAMILY_MEMBER"
	FamilyStatus string `json:"familyStatus,omitempty"`

	// HiddenKeys: The full list of hidden keys associated with this person.
	// These are the external equivalent to the keys stored by the
	// ConnectionLabelService, and they can be passed to the
	// MutateConnectionLabel endpoint to unhide this person. This field will
	// only be set if hide_type is HIDDEN.
	HiddenKeys []*SocialDiscoveryExternalEntityKey `json:"hiddenKeys,omitempty"`

	// HideType: If this field is not set, the person is visible (implicit).
	//
	// Possible values:
	//   "HIDE_TYPE_UNSPECIFIED"
	//   "HIDDEN"
	HideType string `json:"hideType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BirthdayStatus") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BirthdayStatus") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData) MarshalJSON() ([]byte, error) {
	type NoMethod SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SocialPersonalizationKnexAnnotation struct {
	Item []*SocialPersonalizationKnexAnnotationItem `json:"item,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Item") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Item") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialPersonalizationKnexAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod SocialPersonalizationKnexAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialPersonalizationKnexAnnotationItem: Next Tag: 8
type SocialPersonalizationKnexAnnotationItem struct {
	Confidence float64 `json:"confidence,omitempty"`

	// Description: Description of the item for debugging. Note that this
	// field is populated only in a few select places.
	Description string `json:"description,omitempty"`

	// EquivalentMid: If this field exists, then there exists a commonly
	// used MID (typically a public MID, i.e., one in /m/) that approximates
	// the meaning for this particular k'nex topic. For example, the value
	// of this field for k'nex topic Tennis (/t/236) is /m/07bs0. The
	// difference between k'nex /m/07bs0 and webref /m/07bs0 is as follows.
	// If a content is annotated with webref /m/07bs0, then the content has
	// to explicitly mention "Tennis" in some way, whereas if a content is
	// annotated with k'nex /m/07bs0, then the content simply needs to talk
	// about stuff related to tennis. Note that this field is not populated
	// for all queries. For example, the compound concept "Tennis in
	// California" does not have an associated mid. This field is intended
	// to help external clients transit to k'nex.
	EquivalentMid uint64 `json:"equivalentMid,omitempty,string"`

	// Generality: A score that measures how broad / narrow a topic is,
	// independent of the document and/or user profile. This is an
	// experimental score and is not populated by default. Currently, it is
	// in the range of [0, 1], where the higher the score is, the more
	// general a topic is. Please talk to sherlock-dev@ before using this
	// score. Populated when debug_level > 0.
	Generality float64 `json:"generality,omitempty"`

	// Mid: This is an MID in the /t/ namespace. We will migrate them to /g/
	// in Q3'15.
	Mid uint64 `json:"mid,omitempty,string"`

	RelatedEntity []*SocialPersonalizationKnexAnnotationItemTopic `json:"relatedEntity,omitempty"`

	Topicality float64 `json:"topicality,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialPersonalizationKnexAnnotationItem) MarshalJSON() ([]byte, error) {
	type NoMethod SocialPersonalizationKnexAnnotationItem
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialPersonalizationKnexAnnotationItem) UnmarshalJSON(data []byte) error {
	type NoMethod SocialPersonalizationKnexAnnotationItem
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		Generality gensupport.JSONFloat64 `json:"generality"`
		Topicality gensupport.JSONFloat64 `json:"topicality"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.Generality = float64(s1.Generality)
	s.Topicality = float64(s1.Topicality)
	return nil
}

type SocialPersonalizationKnexAnnotationItemTopic struct {
	Mid uint64 `json:"mid,omitempty,string"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Mid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Mid") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialPersonalizationKnexAnnotationItemTopic) MarshalJSON() ([]byte, error) {
	type NoMethod SocialPersonalizationKnexAnnotationItemTopic
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SocialPersonalizationKnexAnnotationItemTopic) UnmarshalJSON(data []byte) error {
	type NoMethod SocialPersonalizationKnexAnnotationItemTopic
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// SocialStanzaDeliveryRestriction: Restrictions that affect the
// delivery of the stanza. By default, Stanzas are publishable, which
// means that they are eligible for indexing, aggregation, and other
// delivery options (Goops, Moonshine, notifications). A stanza can be
// created in a "do not publish" state; the stanza will not be published
// anywhere. The restriction can subsequently be removed with an
// UpdateStanza call, at which point the post will be treated as if it
// were newly created. A few notes/limitations about this option: 1.
// Client should keep a stanza unpublishable for a small period of time
// (if possible to) so that our ranking system does not consider this as
// a stale post (thus downranking the post). 2. Client should keep the
// number of unpublishable stanzas to a minimum, to reduce
// under-serving. 3. Updating a stanza from publishable to unpublishable
// after creation is not supported 4. At this time, publishing options
// are only supported on root stanzas; let us know if you require this
// for child stanzas. 5. Similarly, this is only supported as a global
// restriction. It may not be set as a per-destination-stream
// restriction.
type SocialStanzaDeliveryRestriction struct {
	DoNotPublish bool `json:"doNotPublish,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DoNotPublish") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DoNotPublish") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialStanzaDeliveryRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod SocialStanzaDeliveryRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialStanzaModerationInfo: ModerationInfo stores the information of
// moderation for a stanza in a specific destination stream. Including
// who moderated and why.
type SocialStanzaModerationInfo struct {
	// ModerationReason: The reason why this stanza was moderated provided
	// by client.
	ModerationReason string `json:"moderationReason,omitempty"`

	Moderator *SecurityCredentialsPrincipalProto `json:"moderator,omitempty"`

	// ModeratorType: Type of moderation. Semantically REQUIRED,
	// http://go/required At write time, only ModeratorType.AUTO_MODERATOR
	// is allowed. For all other cases, this information is inferred from
	// the request at write time.
	//
	// Possible values:
	//   "MODERATOR_TYPE_UNKNOWN"
	//   "SYSTEM" - Moderated by system - premod channel, preapproved/banned
	// users etc.
	//   "MODERATOR" - Moderated by the Channel moderator.
	//   "SYSTEM_BADWORD_BLACKLIST" - Moderated by system - didn't pass bad
	// words filtering.
	//   "AUTO_MODERATOR" - Automatic moderation triggered on behalf of the
	// moderator
	ModeratorType string `json:"moderatorType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ModerationReason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ModerationReason") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SocialStanzaModerationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SocialStanzaModerationInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SocialStanzaStanzaRestriction: Contains various restriction
// information about a stanza, derived from properties of the stanza,
// the viewer and the creator. Restrictions stored in this message are
// not related to direct/indirect relationship between the viewer and
// the creator of stanza. Some examples are: - Abusive - Legal - Racy -
// Content not suitable for age - Porn - Blocked by country/geo of
// viewer. - Restricted by stanza creator (not the user specific block).
// - etc... Please see go/stanza-abuse-flow for more details.
type SocialStanzaStanzaRestriction struct {
	// AbuseTypes: The abuses.
	AbuseTypes []*AbuseiamAbuseType `json:"abuseTypes,omitempty"`

	// AppealState: The appeal state.
	//
	// Possible values:
	//   "UNKNOWN_APPEAL_STATE" - Unknown appeal state.
	//   "APPEALED" - The user has appealed and is waiting for review.
	//   "APPEAL_REJECTED" - The user appeal has been rejected by G+ admin.
	//   "APPEAL_APPROVED" - The user appeal has been approved by G+ admin.
	AppealState string `json:"appealState,omitempty"`

	// ContentRestriction: Field to explain various restrictions of the
	// Stanza. Some examples of restrictions are: - Not permitted because of
	// legal restrictions of geography/country of viewer or creator. -
	// Content not suitable for current viewer i.e. porn, abusive, racy. -
	// Creator restricted the content to an age group. - etc...
	ContentRestriction *AbuseiamContentRestriction `json:"contentRestriction,omitempty"`

	// DeleteReason: Delete reasons. This is a repeated field because an
	// stanza can be deleted multiple times due to different reasons such as
	// user_delete, admin_delete.
	//
	// Possible values:
	//   "UNKNOWN_DELETE_REASON"
	//   "USER_ACCOUNT_DELETE" - Deletion due to users deleting or
	// downgrading their account. May not be a permanent delete. Maps to
	// Reason.USER_ACCOUNT_DELETE. This is not supported when
	// DeleteOperation type is UNDO_DELETE.
	//   "OWNER_DELETE" - Deletion due to stanza owners deleting their
	// stanzas. Maps to Reason.ACTIVITY_OWNER_DELETE, Reason.USER_DELETE
	//   "SPAM_ADMIN_DELETE" - Deletion due to AIA DELETE verdicts on
	// abusive stanzas. Maps to Reason.ACTIVITY_OWNER_MARKED_COMMENT_SPAM,
	// Reason.ACTIVITY_SPAM_ADMIN_DELETE, Reason.COMMENT_SPAM_ADMIN_DELETE,
	// Reason.SQUARE_ADMIN_MARKED_COMMENT_SPAM This is not supported when
	// DeleteOperation type is UNDO_DELETE.
	//   "SPAM_ADMIN_DELETE_CHILD_PORN" - Deletion due to AIA DELETE
	// verdicts on items categorized as child porn. A separate delete reason
	// is needed for this due to the extra sensitive content, for which
	// extra care must be taken when requested. Maps to Reason.CHILD_PORN
	// This is not supported when DeleteOperation type is UNDO_DELETE.
	//   "SYSTEM_DELETE" - Deletion from an offline job. The precise reason
	// is not reflected here Maps to Reason.SYSTEM_DELETE. May only be sent
	// in deletion (or undeletion) requests that include a SuperDAT with the
	// "stanza.delete" permission. (See
	// go/sbe-policies#authority-selector-policies for more information.)
	//   "USER_ACCOUNT_DISABLE" - Deletion due to users account being
	// disabled, likely by system for abuse. User can still access their own
	// content. Maps to Reason.GAIA_DISABLE_USER
	//   "DESTINATION_STREAM_OWNER_DELETE" - Deletion due to destination
	// stream owner of the stanza destination stream deleting the stanza
	// (go/delete_stream).
	//   "SBE_ADMIN_TAKEDOWN" - Deleting due to emergency take down to
	// mitigate production breakage. This can only be used as big red button
	// under emergency, please read and follow the procedure in go/sbe-brb
	// before using.
	//   "CLIENT_ADMIN_TAKEDOWN" - Used by clients to allow non-owner admins
	// to take down stanzas. Not purgeable and stanza remains visible to
	// owner. Maps to Reason.CLIENT_ADMIN_TAKEDOWN.
	//   "SPAM_ADMIN_SUSPEND" - Deletion due to SUSPEND verdicts on abusive
	// stanzas. Stanza will be purged after 120 days. Maps to
	// Reason.SPAM_ADMIN_SUSPEND This is not supported when DeleteOperation
	// type is UNDO_DELETE.
	//   "ANCESTOR_DELETE" - Deletion due to ancestor owner deleting a
	// child. This operation can be undone within 30 days. Maps to
	// Reason.ACTIVITY_OWNER_MARKED_COMMENT_SPAM.
	//   "USER_PRODUCT_DOWNGRADE" - Deleted because the user is no longer
	// registered for the product/service. Maps to
	// Reason.USER_SERVICE_DOWNGRADE
	//   "USER_PRODUCT_SUSPENDED" - Deleted because the user is suspended
	// for the product/service. Maps to Reason.USER_SERVICE_SUSPENDED. See
	// go/gaia/serviceid#service-flag
	//   "ENTITY_STATE_CHANGE" - Deletions due to the state of the entity.
	// For example, private YT video is not allowed to have stanzas. Maps to
	// Reason.ENTITY_STATE_CHANGE
	//   "ENTITY_ADMIN_DELETED" - Deletions due to the entity that the
	// stanza is attached is soft deleted by actions carried out internally.
	// For example, YT video is not allowed to have stanzas if it has flag
	// marked comments_disabled_internally.
	//   "ENTITY_DELETED_DUE_TO_CLASSIFICATION" - Deletion due to automatic
	// classification of the associated client entity. For example, YT video
	// is not allowed to have stanzas if it is marked as crosswalk (i.e
	// video is classified as kids friendly and thus comments are disabled).
	//   "ENTITY_PURGED" - Deleted because some upstream process has purged
	// the entity that this stanza is attached to. For example, if YT purges
	// a video or channel from their system, and thus the stanza should be
	// marked for deletion. Semantically this delete reason should have a
	// short retention period if it is used, because presumably the upstream
	// process expects the entity is gone.
	//   "USER_UNDERAGE" - Deleted because the user was underage. This is
	// typically used to delete stanzas for underage users that were
	// converted to Griffin (supervised).
	//   "YOUTUBE_CHANNEL_HIDDEN" - Deleted because the YouTube user has
	// hidden their channel. This reason may only be used by channel hide
	// flow.
	//   "YOUTUBE_SERVICE_REMOVED" - Deleted because the YouTube user has
	// gone through service removal. This reason may only be used by service
	// removal flow.
	//   "YOUTUBE_LIGHTWEIGHT_DELETED" - Deleted because the YouTube user's
	// account was converted to Lightweight and should be considered
	// deleted. This currently includes lightweight conversion through
	// Escape Hatch or during channel transfer. This operation is not
	// reversible and data is purged after 30 days.
	//   "YOUTUBE_LIGHTWEIGHT_HIDDEN" - Deleted because the YouTube user's
	// account was converted to Lightweight and should be considered hidden.
	// This currently includes Griffin U13 conversions. This operation is
	// reversible and data is retained for 7 years since the user can
	// restore their account after graduation from Griffin.
	DeleteReason []string `json:"deleteReason,omitempty"`

	// DeliveryRestriction: Delivery restrictions, if present.
	DeliveryRestriction *SocialStanzaDeliveryRestriction `json:"deliveryRestriction,omitempty"`

	DestinationStream *AppsPeopleActivityBackendDestinationStream `json:"destinationStream,omitempty"`

	// ModerationInfo: The moderation info. At write time, this field is
	// only allowed to be set when moderator_type is AUTO_MODERATOR. For
	// other moderator types, moderation_reason is the only field that can
	// be set by clients.
	ModerationInfo *SocialStanzaModerationInfo `json:"moderationInfo,omitempty"`

	// ModerationState: The moderation state.
	//
	// Possible values:
	//   "UNKNOWN_MODERATION_STATE" - Unknown moderation state.
	//   "NEW" - Default state for a new message which has not been
	// otherwise tagged. Such content will be displayed (in the associated
	// destination stream) unless marked as abusive.
	//   "APPROVED" - Explicitly approved for display by the
	// owner/moderator. Such content will be displayed (in the associated
	// destination stream) even if marked as abusive, and should therefore
	// only be used when such abuse states should be overridden.
	//   "REJECTED" - Explicitly rejected for display by the
	// owner/moderator. Such content will be displayed to no one in the
	// associated destination stream except the content's author.
	//   "HOLD" - Held for the owner/moderator for review. Such content will
	// be displayed (in the default stream view) only to its author.
	ModerationState string `json:"moderationState,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AbuseTypes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AbuseTypes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SocialStanzaStanzaRestriction) MarshalJSON() ([]byte, error) {
	type NoMethod SocialStanzaStanzaRestriction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SpamBrainData: This holds SpamBrain values which will be populated to
// docjoins & muppet. Proto is copied from spam_brain::SpamBrainData and
// populated at sitechunked site level (as opposed to the spambrain page
// classifier score).
type SpamBrainData struct {
	// Site: Sitechunker site granularity for this result
	Site string `json:"site,omitempty"`

	// VersionedData: Versioned scores of SB classifiers
	VersionedData []*SpamBrainScore `json:"versionedData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Site") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Site") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SpamBrainData) MarshalJSON() ([]byte, error) {
	type NoMethod SpamBrainData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SpamBrainScore: Message representing versioned scores
type SpamBrainScore struct {
	// SbScore: The value corresponding to this version.
	SbScore float64 `json:"sbScore,omitempty"`

	// VersionId: The version id.
	VersionId int64 `json:"versionId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SbScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SbScore") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SpamBrainScore) MarshalJSON() ([]byte, error) {
	type NoMethod SpamBrainScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SpamBrainScore) UnmarshalJSON(data []byte) error {
	type NoMethod SpamBrainScore
	var s1 struct {
		SbScore gensupport.JSONFloat64 `json:"sbScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SbScore = float64(s1.SbScore)
	return nil
}

// SpamCookbookAction: This protocol buffer indicates actions that we
// take based on Cookbook recipes (see http://cookbook/) matching a
// particular document.
type SpamCookbookAction struct {
	DropInServing bool `json:"dropInServing,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DropInServing") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DropInServing") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SpamCookbookAction) MarshalJSON() ([]byte, error) {
	type NoMethod SpamCookbookAction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SpamMuppetjoinsMuppetSignals struct {
	HackedDateNautilus int64 `json:"hackedDateNautilus,omitempty"`

	HackedDateRaiden int64 `json:"hackedDateRaiden,omitempty"`

	RaidenScore float64 `json:"raidenScore,omitempty"`

	Site string `json:"site,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HackedDateNautilus")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HackedDateNautilus") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *SpamMuppetjoinsMuppetSignals) MarshalJSON() ([]byte, error) {
	type NoMethod SpamMuppetjoinsMuppetSignals
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SpamMuppetjoinsMuppetSignals) UnmarshalJSON(data []byte) error {
	type NoMethod SpamMuppetjoinsMuppetSignals
	var s1 struct {
		RaidenScore gensupport.JSONFloat64 `json:"raidenScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RaidenScore = float64(s1.RaidenScore)
	return nil
}

// SpeechS3LanguageIdentificationResult: Response proto for the LangId
// service running on a Greco server in prod. Next Tag: 6
type SpeechS3LanguageIdentificationResult struct {
	// EndTimeUsec: The end time of the input audio that this result refers
	// to. This value should increase across LanguageIdentificationResult
	// emitted by the Greco server running LangId, and reflects the server
	// having processed more of the input audio.
	EndTimeUsec int64 `json:"endTimeUsec,omitempty,string"`

	// RankedTopSupportedLanguages: Ranked list of top-N language codes.
	// Ranking is based on ConfidenceIntervals of supported languages, and N
	// is defined in the LanguageIdentificationConfig.
	RankedTopSupportedLanguages []*SpeechS3Locale `json:"rankedTopSupportedLanguages,omitempty"`

	// StartTimeUsec: Global start time. This value should be fixed across
	// all LanguageIdentificationResults for a given utterance.
	StartTimeUsec int64 `json:"startTimeUsec,omitempty,string"`

	// TopLanguageConfidence: Confidence interval of the top recognized
	// language.
	//
	// Possible values:
	//   "UNKNOWN_CONFIDENCE"
	//   "NOT_CONFIDENT"
	//   "CONFIDENT"
	//   "HIGHLY_CONFIDENT"
	TopLanguageConfidence string `json:"topLanguageConfidence,omitempty"`

	// VoicedUtterance: Identifies when the provided audio sample does or
	// doesn't contain voiced samples. E.g. an unvoice utterance happens
	// when the EOS signal is received before any frame because all frames
	// were filtered by the endpointer. For events where voiced_utterance is
	// false, ranked_top_supported_languages is defined but scores are not
	// to be trusted. All LanguageIdentificationResults contains a valid
	// value of voiced_utterance.
	VoicedUtterance bool `json:"voicedUtterance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTimeUsec") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTimeUsec") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SpeechS3LanguageIdentificationResult) MarshalJSON() ([]byte, error) {
	type NoMethod SpeechS3LanguageIdentificationResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type SpeechS3Locale struct {
	// Format: The format of the string in "locale". Should be one of
	// LocaleFormat.
	Format int64 `json:"format,omitempty"`

	Locale string `json:"locale,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Format") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Format") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SpeechS3Locale) MarshalJSON() ([]byte, error) {
	type NoMethod SpeechS3Locale
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgAuthorityFeedbackMetadata: go/entity-authority NB:
// currently all facts associated with Authority Feedback are externally
// traceable to the requests from which they originate.
type StorageGraphBfgAuthorityFeedbackMetadata struct {
}

type StorageGraphBfgLegalRequestMetadata struct {
	// BugId: The buganizer ID associated with this legal request. This is
	// required.
	BugId uint64 `json:"bugId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "BugId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BugId") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgLegalRequestMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgLegalRequestMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgLivegraphProvenanceMetadata: Metadata on source
// assertions that isn't part of the user-visible Triple payload, and
// that doesn't really represent data provenance, but that's used to
// affect the way Livegraph and possibly other horizontal KG infra
// systems *process* the triple. Read: fields below really shouldn't be
// part of the cross-system Triple proto at all. But because Triple is
// used both as an internal and an external KG API, we at least want to
// "hide" those fields that ought to be purely part of the internal
// source <-> LG contract. Next id: 5
type StorageGraphBfgLivegraphProvenanceMetadata struct {
	// LgInternalWriterId: Identifies the LG internal writers that asserted
	// the triple. This is the same as 'origin_id' in LG. This will only be
	// populated by the LG writers to FactStore
	LgInternalWriterId uint64 `json:"lgInternalWriterId,omitempty,string"`

	// ProvenanceOnlyAddition: Whether this provenance is a provenance only
	// addition or not. A provenance is considered an "addition" if it
	// belongs to a triple that we expect FactStore to contain on its own
	// (i.e through some inference), and thus we will *not* attempt to write
	// it explicitly. This is a composer only populated field. Clients are
	// not expected to populate this field.
	ProvenanceOnlyAddition bool `json:"provenanceOnlyAddition,omitempty"`

	// TriangulationKey: Triples typically have a single triangulation key.
	// This field supports > 1 keys to allow staged transition to a
	// different key scheme. To successfully triangulate in the Livegraph
	// Composer, the triple must have >=3 instances and each triple instance
	// having a pairwise disjoint set of triangulation keys. The
	// triangulation keys supplied for a single input triple are treated
	// part of the same set, so a single triple cannot self-triangulate,
	// regardless of how many triangulation keys it has. Note2: If a triple
	// has multiple provenances, each one is expected to set the same
	// triangulation_keys.
	TriangulationKey []string `json:"triangulationKey,omitempty"`

	// WeakData: WARNING! The feature is still under active development and
	// the exact semantics may be subject to change pending KE Design
	// Review. Data marked as weak will be less preferred to regular data
	// which does not have the marker. This allows ingesting data with a
	// lower chance of negatively affecting existing features and products,
	// at the cost of potentially not showing the data when competing data
	// is available. Specifically, weak data is less preferred by conflict
	// resolution inside of Livegraph composition. Additionally, RefX
	// triggering will prefer to trigger based on signals computed from
	// regular data. Aside from data providers choosing to mark their data
	// as weak, Livegraph and RefX are the only horizontal systems expected
	// to use this information. Please contact livegraph-team@ if you see a
	// need for this to change. See go/weak-data for more information.
	WeakData bool `json:"weakData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LgInternalWriterId")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LgInternalWriterId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgLivegraphProvenanceMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgLivegraphProvenanceMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgLmsPolicyMetadata: Metadata fields for LMS. See
// go/lms-online-restrictions for details.
type StorageGraphBfgLmsPolicyMetadata struct {
	ClientIdsAllowed []string `json:"clientIdsAllowed,omitempty"`

	IsEditorial bool `json:"isEditorial,omitempty"`

	// ModificationsAllowed: Int values corresponds to the values of
	// image_repository.licensed.api.restrictions.Modification enum.
	ModificationsAllowed googleapi.Int64s `json:"modificationsAllowed,omitempty"`

	RegionsAllowed *KeGovernanceTypedRegions `json:"regionsAllowed,omitempty"`

	RegionsDisallowed *KeGovernanceTypedRegions `json:"regionsDisallowed,omitempty"`

	RequiresAttribution bool `json:"requiresAttribution,omitempty"`

	RequiresFirstPartyOnly bool `json:"requiresFirstPartyOnly,omitempty"`

	RequiresLinkback bool `json:"requiresLinkback,omitempty"`

	RequiresShareAlike bool `json:"requiresShareAlike,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientIdsAllowed") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientIdsAllowed") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgLmsPolicyMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgLmsPolicyMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgPolicyMetadata: Metadata about data governance
// policies. For more context, see go/ke-triple-dg-policy-and-metadata.
// If any attribute is not set, then there's no specific restrictions
// associated with the missing attribute. For example, if
// `availability_start_timestamp` is not set, the data won't be
// embargoed automatically; if `availability_end_timestamp` is not set,
// they won't expire automatically. LINT.IfChange
type StorageGraphBfgPolicyMetadata struct {
	// AvailabilityEndTimestamp: Timestamp after which data with this policy
	// cannot be used. This value must be strictly larger/later than
	// availability_start_time, if both are set.
	AvailabilityEndTimestamp string `json:"availabilityEndTimestamp,omitempty"`

	// AvailabilityStartTimestamp: Timestamp before which data with this
	// policy cannot be used. This value must be strictly smaller/earlier
	// than availability_end_time, if both are set.
	AvailabilityStartTimestamp string `json:"availabilityStartTimestamp,omitempty"`

	// LegalAllowedRegions: List of regions in which the data with this
	// policy is allowed to be used, while the data need to be removed in
	// all regions outside this list according to legal request. This field
	// should be used when the data is only allowed in a few regions and it
	// is inconvenient to enumerate all of the regions in
	// `legal_removal_regions` field. `legal_allowed_regions` and
	// `legal_removal_region` together should include all possible regions,
	// setting one field implies the other. Please set only one of them so
	// the other field's values are implied. See details:
	// http://go/ke-allowed-countries-policy-1p WARNING: This field is for
	// legal purposes only. Please do not populate it without consulting
	// ke-data-governance@.
	LegalAllowedRegions []*KeGovernanceTypedRegions `json:"legalAllowedRegions,omitempty"`

	// LegalRemovalRegions: List of regions in which the data with this
	// policy need to be removed according to legal request. WARNING: This
	// field is for legal purposes only. Please do not populate it without
	// consulting ke-data-governance@.
	LegalRemovalRegions []*KeGovernanceTypedRegions `json:"legalRemovalRegions,omitempty"`

	// LmsPolicyMetadata: Policy metadata fields for LMS data. Only expected
	// to be used by LMS providers -- please consult ke-data-governance@
	// before populating this field.
	LmsPolicyMetadata *StorageGraphBfgLmsPolicyMetadata `json:"lmsPolicyMetadata,omitempty"`

	// PolicySourceType: Policy metadata are VERTICAL by default. Vertical
	// policy makers / providers does not need to set this field explicitly.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "VERTICAL" - A vertical policy metadata describes data usage
	// requirements for data provided by a vertical. When there are multiple
	// vertical policies, usually as a result of vertical sources providing
	// the same data, the policies are evaluated disjunctively.
	//   "HORIZONTAL" - A horizontal policy metadata describes requirements
	// to be applied horizontally. Typical horizontal policies are
	// legal-related, such that data usage restrictions must be respected at
	// all times. When there are multiple horizontal policies, they are
	// evaluated conjunctively. When both horizontal and vertical policy
	// metadata are present, their evaluation results are connecteted
	// conjunctively, e.g. Evaluate(..., horizontal_metadata_1..) AND
	// Evaluate(..., horizontal_metadata_2..) AND Evaluate(...,
	// horizontal_metadata_3..) … AND (Evaluate(...,
	// vertical_metadata_1..) OR Evaluate(..., vertical_metadata_2..) OR
	// Evaluate(..., vertical_metadata_3..) …)
	PolicySourceType string `json:"policySourceType,omitempty"`

	// UmpPolicyMetadata: Policy metadata fields for UMP data. Only expected
	// to be used by UMP providers -- please consult ke-data-governance@
	// before populating this field.
	UmpPolicyMetadata *StorageGraphBfgUmpPolicyMetadata `json:"umpPolicyMetadata,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AvailabilityEndTimestamp") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailabilityEndTimestamp")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgPolicyMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgPolicyMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type StorageGraphBfgPublicInformationMetadata struct {
	// AttributionUrl: Publicly-visible URLs claiming this fact. Can not be
	// empty -- at least one URL must be provided.
	AttributionUrl []string `json:"attributionUrl,omitempty"`

	// LastVerifiedDate: Most recent date at which 'attribution_url's were
	// verified, as UNIX epoch time in milliseconds. This is required.
	LastVerifiedDate int64 `json:"lastVerifiedDate,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AttributionUrl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AttributionUrl") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgPublicInformationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgPublicInformationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgSpiiCertification: A fact about potentially sensitive
// personal info (http://what/SPII) can be "certified" iff it meets
// specific requirements. See go/kg-spii-certification for details.
type StorageGraphBfgSpiiCertification struct {
	// AuthorityFeedback: This fact was provided via KGO / Entity Authority.
	AuthorityFeedback *StorageGraphBfgAuthorityFeedbackMetadata `json:"authorityFeedback,omitempty"`

	// LegalRequest: This fact was provided via a legal request.
	LegalRequest *StorageGraphBfgLegalRequestMetadata `json:"legalRequest,omitempty"`

	// PublicInformation: This fact is public information. (See
	// go/kg-spii-certification for a description of what qualifies as
	// public information -- simply finding a fact online is not sufficient
	// to certify a fact as public.)
	PublicInformation *StorageGraphBfgPublicInformationMetadata `json:"publicInformation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AuthorityFeedback")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AuthorityFeedback") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgSpiiCertification) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgSpiiCertification
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgTripleProvenance: a message containing information
// about the source of this triple. Note for freebase data: that this is
// an unpacking of the creator/attribution chain. The creator below is
// the actual creator of the attribution node, and the rest of the
// attribution data sits along side. Next id: 22
type StorageGraphBfgTripleProvenance struct {
	// AccessRequired: Data providers shall use this to specify access
	// requirement.
	//
	// Possible values:
	//   "ACCESS_REQUIREMENT_UNSPECIFIED"
	//   "LEGACY_RESTRICTION" - A legacy restriction that hasn't been
	// migrated to AccessRequirement applies to the corresponding Triple.
	// This value is invalid on data being ingested by KG, except in the
	// cases where the data is provided by an allowed data provider. Subject
	// to renaming as usage becomes clearer.
	//   "LEGAL_UNSERVABLE_UNTIL_FURTHER_REVIEW" - WARNING! Legally or
	// contractually sensitive data that has not been cleared for *any*
	// product use cases. Data tagged here may be used for specific learning
	// models (e.g., RefX systems), but can never be served. All data parked
	// here are expected to either lose their AccessRequirement tags, or be
	// given more appropriate (possibly new) ones. YOU MUST NEVER serve this
	// data. If there is data parked here that you believe requires serving,
	// YOU MUST CONTACT kg-legal@ to figure out the team responsible for
	// that data and go through a new legal-onboarding review.
	//   "CONTRACTUAL_PRERELEASE_MUSIC_DATA" - WARNING! Sensitive data under
	// strict contractual usage agreements. DO NOT use without permission
	// and understanding of usage constraints. Pre-release music album data
	// from YouTube Music Label deals. YOU MUST CONTACT abobb@ before
	// reading or writing this data.
	//   "CONTRACTUAL_PRERELEASE_MUSIC_DATA_GPM" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. Pre-release music
	// album data from Metajam Embargoed data. YOU MUST CONTACT abobb@
	// before reading or writing this data.
	//   "CONTRACTUAL_STATS_LLC_DATA" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints. Stats LLC's data is subject to
	// simba/deal.do?cmd=view&id=189236. YOU MUST CONTACT kg-legal@ before
	// reading or writing this data. Tags: Sports, Golf, Basketball,
	// Baseball, Football, Hockey, Soccer
	//   "LEGAL_PUBLIC_DOMAIN_US" - WARNING! Data subject to nuanced legal
	// rules. DO NOT use without permission and understanding of usage
	// constraints. This data is subject to public-domain restrictions
	// particular to the United States. YOU MUST CONTACT kg-legal@ before
	// reading or writing this data.
	//   "LEGAL_GEO_NOT_SERVABLE_IN_CHINA" - DEPRECATED! Not set anymore,
	// see b/129694010 for some details. If you encounter code that looks at
	// this access requirement, please consider cleaning it up. As of
	// 2019-06-18, there is no triple in Livegraph with this restriction set
	// anymore. WARNING! Legally sensitive Geo data. Data tagged with this
	// value MUST not be served in China. Context:
	// https://goto.google.com/geo-china-policy
	// https://goto.google.com/kg-geo-china-policy YOU MUST CONTACT yegor@
	// or wafarris@ before reading or writing this data.
	//   "ACCESS_REQUIREMENT_OUT_OF_RANGE" - Represents an out-of-range
	// value. This may be returned by a server in situations where it's not
	// feasible to round-trip an unknown enum value. It should generally not
	// be specified as a requested access, since behavior is undefined in
	// that case.
	//   "SPII_SEARCH_PUBLIC_INTEREST" - WARNING! These properties are
	// classified as Sensitive Personal Data under GDPR
	// (go/gdpr-spii-kg-announce). Do not use this data without review from
	// counsel. Search has vetted this SPII, but you need to check that you
	// are in Search PA and your product's use of the data is consistent
	// with PA-specific limitations. See go/gdpr-kg-diagram for an overview
	// of what data may be covered by this restriction. No one should write
	// data with this AccessRequirement; it is asserted programmatically in
	// Livegraph at composition time using a policy-based classifier. YOU
	// MUST CONTACT kg-legal@ before reading data with this acl.
	//   "SPII_KGO" - WARNING! These properties are classified as Sensitive
	// Personal Data under GDPR (go/gdpr-spii-kg-announce). Do not use this
	// data without review from counsel. This data is included in KG with
	// Search-specific user consent. Product counsel must determine whether
	// the scope of the consent is consistent with use in a product. See
	// go/gdpr-kg-diagram for an overview of what data may be covered by
	// this restriction. No one should write data with this
	// AccessRequirement; it is asserted programmatically in Livegraph at
	// composition time using a policy-based classifier. YOU MUST CONTACT
	// kg-legal@ before reading data with this acl.
	//   "SPII_WALDREF" - WARNING! These properties may contain data
	// classified as Sensitive Personal Data under GDPR
	// (go/gdpr-spii-kg-announce). Do not use this data without review from
	// counsel. YOU MUST CONTACT kg-legal@ before reading data with this
	// acl.
	//   "CONTRACTUAL_OPTA_DATA_MIGRATION" - Access controls for the
	// migration of OPTA->STATS data. These tags are transient, and all
	// evidence of their existence will be destroyed after
	// go/opta-data-rollout completes. YOU MUST CONTACT yonatans@ before
	// reading or writing this data.
	//   "CONTRACTUAL_STATS_DATA_MIGRATION"
	//   "TECHNICAL_DEBT_SIRIUS_MIGRATION" - DEPRECATED! Not set anymore.
	// Used to be set on triples from the "geo" process feeding into
	// Livegraph for the Sirius project (forward geocoding in TopicServer)
	// prior to full launch.
	//   "TECHNICAL_IN_DEVELOPMENT_GEO_KG_UGC" - Access controls for data
	// being injected by Geo's KG UGC pipe while it is being fleshed out
	// (allow Geo to onboard his data to Livegraph but filtering which
	// clients can fetch it from TopicServer). This is an access restriction
	// we use while developing or QAing the Events UGC flow end-to-end. Only
	// maps will fetch the data through TopicServer, and we will not allow
	// this data to enter RefX, nor will it be shown to users. When prod
	// experiments exist, we will migrate to that instead. YOU MUST CONTACT
	// poucet@ before reading or writing this data.
	//   "MOMA_RESTRICTED_TVC" - Access requirement for Moma. Moma triples
	// is only internally available. More details about Moma data access is
	// here: go/moma-tvc-access YOU MUST CONTACT moma-kg-eng@ before reading
	// or writing this data. Available for restricted TVCs.
	//   "MOMA_UNRESTRICTED_TVC" - Available for unrestricted TVCs.
	//   "MOMA_FTE" - Available for FTE.
	//   "AOG_TEST_DATA" - Access Requirement for AoG Test data. AoG test
	// data is only available to developers who sign up for AoG previews.
	// More details at - go/feeds-tod. This is a short-term solution until
	// Topic Server supports experiments in prod. YOU MUST CONTACT
	// se-catalog-feeds@ before reading or writing this data.
	//   "CONTRACTUAL_NETFLIX_DATA" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints. In order to handle such data,
	// see: go/ma-access-controls-prd Netflix data is subject to SIMBA
	// 400184 and 355494. YOU MUST CONTACT nebiat@ before reading or writing
	// this data.
	//   "CONTRACTUAL_NETFLIX_GRACENOTE" - This is an access restriction to
	// avoid any usage of Netflix deeplinks from data aggregator Gracenote
	// (TMS) accidentally without knowing the context. YOU MUST CONTACT
	// ump-data-team@ before reading or using this data.
	//   "CONTRACTUAL_SPOTIFY_PODCAST_DATA" - This is an access restriction
	// requirement for the licensed Spotify podcast data. The license
	// requires that the Spotify feed data cannot be used to promote other
	// providers. YOU MUST CONTACT ke-media-actions@ before reading or using
	// this data.
	//   "CONTRACTUAL_IPG_DATA" - This is an access restriction to avoid any
	// usage of media data from a special TV aggregator IPG without knowing
	// the context. YOU MUST CONTACT go/ump before reading or writing this
	// data.
	//   "CONTRACTUAL_YOUVIEW_DATA" - This is an access restriction to avoid
	// any usage of media data from a special LiveTV data provider Youview
	// without knowing the context. YOU MUST CONTACT go/ump before reading
	// or writing this data.
	//   "CONTRACTUAL_YOUTUBE_ALC_DATA" - This is an access restriction to
	// avoid any leakage of data for the testing and dogfooding of Youtube
	// ALC data. YOU MUST CONTACT go/ump before reading or writing this
	// data.
	//   "CREATOR_PRESENCE_DATA" - DEPRECATED! Not set anymore. Deprecated
	// in favor of ISOLATION_S3_CREATOR_PRESENCE.
	//   "TECHNICAL_UNRECONCILED_MEDIA_ACTION" - Access controls for data
	// being injected by the Media Actions team without being reconciled
	// against existing entities. This is an access restriction we use to
	// insert triples into KG that improves Media Actions triggering on the
	// Assistant, but that would otherwise cause quality issues on Search
	// (due to the lack of proper reconciliation). While triples tagged with
	// this access restriction will typically only be used on the Assistant,
	// this access restriction should not be used for contractually
	// sensitive data. In order to handle such data, see:
	// go/ma-access-controls-prd See go/ma-launch-small-providers and
	// go/ma-acl for context. YOU MUST CONTACT ke-media-actions@ before
	// reading or writing this data.
	//   "CONTRACTUAL_AUDIBLE_DATA" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints. Audible's data is subject to
	// simba/deal.do?cmd=view&id=417794. YOU MUST CONTACT kg-legal@ before
	// reading or writing this data.
	//   "CONTRACTUAL_SEARCH_NETFLIX_DATA" - WARNING! Sensitive data under
	// strict contractual usage agreements. DO NOT use without permission
	// and understanding of usage constraints. Netflix for search data is
	// subject to simba//#documents/list/dealId=500038. YOU MUST CONTACT
	// knowledge-legal@ before reading or writing this data.
	//   "CONTRACTUAL_ASSISTANT_MEDIA_ACTIONS" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. YOU MUST CONTACT
	// ke-media-actions@ before reading or writing this data.
	//   "CONTRACTUAL_ANDROID_TV_NETFLIX_DATA" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. YOU MUST CONTACT
	// kennethchiu@ before reading or writing this data.
	//   "CONTRACTUAL_GOOGLE_PLAY_MOVIES_DATA" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. This is an access
	// restriction we add Google Play Movies metadata into KG. For now it
	// should be used ONLY for Android TV/Amati/Sabrina. In order to handle
	// such data, see: b/34183296 Since it is google internal data, it
	// doesn't have SIMBA DEAL ID. YOU MUST CONTACT ke-media-actions@ before
	// reading or writing this data.
	//   "CONTRACTUAL_RANKING_PROVIDER_POPULARITY_DATA" - WARNING! Sensitive
	// data under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. This is an access
	// restriction to access provider provided popularity score to rank
	// entities within a provider's catalog. go/ps-to-kg , b/154547652 YOU
	// MUST CONTACT ke-media-actions@ before reading or writing this data.
	//   "CONTRACTUAL_CARBON_INDEX_DATA" - Data ingested by Carbon Index for
	// internal processing and aggregation, not fit for display on any
	// surface irrespective of attribution. YOU MUST CONTACT
	// area120-carbonindex-eng@ before reading this data.
	//   "CONTRACTUAL_CARBON_INDEX_APP" - Data fit for display on the Carbon
	// Index frontend to trusted testers, with proper attribution and
	// controls. YOU MUST CONTACT area120-carbonindex-eng@ before reading
	// this data.
	//   "TRAVEL_ACTIVITY_DATA" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints. YOU MUST CONTACT
	// travel-ttd-ecosystem-team@ before reading or writing this data.
	//   "CONTRACTUAL_AOG_FOOD_ORDERING_DATA" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. YOU MUST CONTACT
	// fo-partner-eng@ before reading or writing this data.
	//   "CONTRACTUAL_YETI_DATA" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints. This is an access restriction for
	// accessing Yeti publisher image data in KG. For now it should be used
	// ONLY for Yeti. YOU MUST CONTACT stadia-knowledge-eng@ before reading
	// or writing this data.
	//   "CONTRACTUAL_BBC_PROVIDER_METADATA" - In order to test BBC metadata
	// before serving code populates them to the public
	//   "JANATA_USER_GENERATED_DATA" - WARNING! User generated data. DO NOT
	// use without permission and understanding of usage constraints. This
	// data is from the Janata feature and contains information that a user
	// chose to disclose as pubilc about themselves. YOU MUST CONTACT
	// npp-lr@ before reading or writing data with this acl.
	//   "TRIANGULATION_LOSERS_FOR_REFX" - WARNING! DO NOT use without
	// permission and understanding of usage constraints. This is data that
	// needed to be triangulated but lacked support from three different
	// data sources. The purpose of this ACL is to allow RefX to access even
	// the data that lacks triangulation. More background on this can be
	// found at go/baike-triangulation. YOU MUST CONTACT lg-composition@
	// before reading or writing data with this acl.
	//   "CONTRACTUAL_PRERELEASE_YT_SHOWS" - WARNING! Sensitive data under
	// strict contractual usage agreements. DO NOT use without permission
	// and understanding of usage constraints. YouTube Red Original
	// prerealeased shows, seasons and episodes. YOU MUST CONTACT ajithm@
	// before reading or writing data with this acl.
	//   "SPII_LOSERS_FOR_REFX" - WARNING! DO NOT use without permission and
	// understanding of usage constraints. This is for facts deemed
	// Sensitive Personal Data (SPII) which have been removed from the
	// graph. The purpose of this ACL is to allow RefX to access this data
	// for proper query attribution & reconciliation decisions, even though
	// it's not part of KG. YOU MUST CONTACT kg-legal@ before reading data
	// with this acl.
	//   "SHOPPING_PRODUCT_IMAGE" - WARNING! Use of Shopping product images
	// can carry unique legal risks. DO NOT use without permission and
	// understanding of usage constraints. Before reading or writing this
	// data, you MUST follow the Shopping Commerce data access request
	// process by completing the questionnaire at
	// go/shopping-commerce-data-access-request.
	//   "SHOPPING_PRODUCT_DESCRIPTION" - WARNING! Use of Shopping product
	// descriptions can carry unique legal risks. DO NOT use without
	// permission and understanding of usage constraints. Before reading or
	// writing this data, you MUST follow the Shopping Commerce data access
	// request process by completing the questionnaire at
	// go/shopping-commerce-data-access-request.
	//   "SHOPPING_PRODUCT_ATTRIBUTE" - WARNING! Some Shopping product
	// attributes are provided under license from Gladson or Multi-Ad and
	// cannot be modified without written notice to the licensor. DO NOT
	// modify without permission and understanding of usage constraints. If
	// you plan to modify this data, you MUST follow the Shopping Commerce
	// data access request process by completing the questionnaire at
	// go/shopping-commerce-data-access-request.
	//   "SHOPPING_ON_DOT_COM_ONLY"
	//   "SHOPPING_ORGANIC_ONLY" - WARNING! These Shopping entities may only
	// appear in organic experiences on any surface. DO NOT use without
	// permission and understanding of the unique legal risks and usage
	// constraints. Before reading or writing this data, you MUST follow the
	// Shopping Commerce data access request process by completing the
	// questionnaire at go/shopping-commerce-data-access-request.
	//   "SHOPPING_ORGANIC_ON_DOT_COM_ONLY" - WARNING! These Shopping
	// entities may only appear in organic experiences on Google.com and the
	// Google Search App. DO NOT use without permission and understanding of
	// the unique legal risks and usage constraints. Before reading or
	// writing this data, you MUST follow the Shopping Commerce data access
	// request process by completing the questionnaire at
	// go/shopping-commerce-data-access-request.
	//   "SHOPPING_PRE_RELEASE_PRODUCT" - WARNING! These data are extracted
	// from extremely high-traffic product announcements and can only be
	// used in specifically-designed features. DO NOT use with permission
	// and understanding of the usage constraints. YOU MUST CONTACT
	// product-data-everywhere-eng@ before reading or writing this data.
	//   "SHOPPING_DO_NOT_PUBLISH_TO_TOPIC_SERVER" - This special access
	// requirement is temporarily used to block shopping data from
	// publishing to the topic server. This access requirement can be
	// removed after the launch of the entity based filtering (in
	// Polygraph). See this email thread for more context:
	// http://g/livegraph-team/oaqrGm9Mabs/iMlGY7D_BgAJ YOU MUST CONTACT
	// product-data-everywhere-eng@ before writing the data.
	//   "LMS_POLICY_ACKED_ONLY" - WARNING! Sensitive data under strict
	// contractual usage agreements. DO NOT use without permission and
	// understanding of usage constraints found at go/lms-access-policy and
	// communicating your use case at go/lms-onboarding. YOU MUST CONTACT
	// lms-legal@ and licensed-media-service-team@ before reading or writing
	// this data.
	//   "MINED_PEOPLE" - WARNING! Data about people which was
	// algorithmically mined from web documents - do not use this data
	// without review from counsel and without first consulting with
	// entwild-eng@. No one besides Entwild (go/entwild) should be writing
	// triples with this AccessRequirement. YOU MUST CONTACT kg-legal@, as
	// well as entwild-eng@ before reading data with this acl.
	//   "LIMITED_FOR_SEMANTIC_UNDERSTANDING" - WARNING! Legally or
	// contractually sensitive data that has not been cleared for *any*
	// product use cases. Data tagged here may be used only for specific
	// learning models (e.g., RefX systems), and may be served for such
	// purposes in Topic Server, but should never be displayed to external
	// users. YOU MUST NEVER surface this data in a user-visible product.
	// YOU MUST CONTACT kg-legal@ before reading or writing this data.
	//   "ISOLATION_S3_MEDIA_ACTION" - Access requirements for the verticals
	// using S-Cubed. YOU MUST CONTACT scubed-team@ before reading or
	// writing this data.
	//   "ISOLATION_S3_REAL_ESTATE"
	//   "ISOLATION_S3_AUTOS"
	//   "ISOLATION_S3_NLWEB"
	//   "ISOLATION_S3_RECOMEDIA"
	//   "ISOLATION_S3_GEO_CARS"
	//   "ISOLATION_YOUTUBE_OTT" - The following group of access
	// requirements are for Onramp data from YouTube systems that is only
	// meant to be served back to YouTube via the YouTube Knowledge Service.
	// YOU MUST NOT use these AR unless you are go/ytks. Please contact
	// yt-knowledge-service@ and yt-aperture@ for questions. YouTube OTT
	// (go/ott-platform)
	//   "ISOLATION_YOUTUBE_MUSIC_BASS_ENTITIES" - YouTube Music Bass
	// Entities (go/bass-entities)
	//   "ISOLATION_FINANCIAL_DATA" - Access control for the Financial data
	// that uses custom schema which is used mainly by the Google Finance
	// team for gradually ingesting data. Reach out to fgc-be@ if you have
	// any questions.
	//   "ISOLATION_MEDICAL" - For Medical KG (go/med-kg) isolated data.
	// Data stored under this AR is licensed and should be used only after
	// pcounsel review. Contact: medical-nlp@.
	//   "ISOLATION_G4C" - Deprecated: use ISOLATION_MEDICAL instead.
	//   "ISOLATION_EXPERIMENT_ONLY" - Using gradual integration
	// (go/gradual-integration) requires setting up an AccessRequirement.
	// This value can be used for experimentation before the CL to add the
	// new value has been submitted. See
	// go/gradual-integration#accessrequirement for how to add a new value.
	// WARNING: should NOT be used in production.
	//   "ISOLATION_KE_INTERNAL" - **DO NOT USE** This is an access
	// restriction to be used by KE internally to specially treat OnRamp
	// client's access requirements. It is asserted programmatically in
	// Livegraph at accept record time. Clients should NOT assert this on
	// their input triples; nor should they use this to query TopicServer or
	// in KG batch pathquery.
	//   "ISOLATION_WEB_CHANNELS" - Access controls for web channels
	// entities. go/webchannels-infra-prd. See go/webchannels-kg-integration
	// for details. Please contact web-channels-infra@ before reading or
	// writing this data.
	//   "ISOLATION_ONRAMP_DICTIONARY_EXPERIMENT" - WARNING! Sensitive data
	// under strict contractual usage agreements. DO NOT use without
	// permission and understanding of usage constraints. Access controls
	// for dictionary entities. Design proposal:go/word-osrp-proposal,
	// schema details:go/kg-dict-schema Please contact dictionary-lr@ before
	// reading or writing this data.
	//   "ISOLATION_PKG_ANDROID_AUTO_EMBEDDED_SIGNED_IN" - Access controls
	// for Personal KG data source isolation. The ISOLATION_PKG data sources
	// *DO NOT* flow through LiveGraph and must be written or read by
	// Personal KG only. Please keep the list sorted. PKG ARs should be in
	// the range [15001, 20000]. Next id: 15042 YOU MUST CONTACT
	// pkg-service-team@ before using these ARs.
	//   "ISOLATION_PKG_ANDROID_AUTO_EMBEDDED_SIGNED_OUT"
	//   "ISOLATION_PKG_APP_NAMES"
	//   "ISOLATION_PKG_ASSISTANT_CONTACT_AFFINITY_WITH_METADATA"
	//   "ISOLATION_PKG_ASSISTANT_DEVICE_SETTINGS"
	//   "ISOLATION_PKG_ASSISTANT_LIST_NAMES_FOR_SPEECH_BIASING" - For data
	// from user's lists e.g. list name.
	//   "ISOLATION_PKG_ASSISTANT_SETTINGS_FOOTPRINTS"
	//   "ISOLATION_PKG_ASSISTANT_SETTINGS_NICKNAME"
	//   "ISOLATION_PKG_CALENDAR_EVENTS_FOR_QUERY_ANNOTATION"
	//   "ISOLATION_PKG_CALENDAR_EVENTS_FOR_SPEECH_BIASING"
	//   "ISOLATION_PKG_CALENDARS_FOR_QUERY_ANNOTATION" - For data from
	// user's calendars e.g. calendar name.
	//   "ISOLATION_PKG_CALENDARS_FOR_SPEECH_BIASING"
	//   "PKG_ASSISTANT_CONTACT_AFFINITY_FOOTPRINTS" - PWG approval for
	// client use cases for contact affinity footprints must include
	// explicit call outs and approval for type of traffic. Currently this
	// is NOT allowed for non-Assistant traffic.
	//   "ISOLATION_PKG_CONTACT_AGGREGATED_SIGNALS"
	//   "ISOLATION_PKG_CONTENT_INTERESTS"
	//   "ISOLATION_PKG_DEVICE_INSTALLED_APPS"
	//   "ISOLATION_PKG_DISCOVER_SMART_HOME_DEVICES"
	//   "ISOLATION_PKG_DYNAMIC_ENTITIES"
	//   "ISOLATION_PKG_FLIGHT_LEG_RESERVATIONS"
	//   "ISOLATION_PKG_FOCUS_OWNER_PROFILE"
	//   "ISOLATION_PKG_FORMATTED_ADDRESS"
	//   "ISOLATION_PKG_GAIA"
	//   "ISOLATION_PKG_GELLER_ANSWERS"
	//   "ISOLATION_PKG_GMAIL_BILLS"
	//   "ISOLATION_PKG_GMAIL_ORDERS"
	//   "ISOLATION_PKG_HABITS"
	//   "ISOLATION_PKG_HANDBAG_ENTITIES"
	//   "ISOLATION_PKG_HERON_INTENTS_AND_TYPES"
	//   "ISOLATION_PKG_HOTEL_RESERVATIONS"
	//   "ISOLATION_PKG_HOUSEHOLD"
	//   "ISOLATION_PKG_LAMS_PREFERENCES"
	//   "ISOLATION_PKG_LOCATION_SHARING_CONTACTS"
	//   "ISOLATION_PKG_MAPS_ALIAS_FOOTPRINTS"
	//   "ISOLATION_PKG_MAPS_SEARCH_LOCATIONS"
	//   "ISOLATION_PKG_LOCAL_LEAF_PAGE_VIEW_LOCATIONS"
	//   "ISOLATION_PKG_MEDIA_HABITUAL_CACHE"
	//   "ISOLATION_PKG_MEDIA_LIBRARY"
	//   "ISOLATION_PKG_MEDIA_USER_CONTEXT_INFO"
	//   "ISOLATION_PKG_MEDIA_USER_ENTITIES"
	//   "ISOLATION_PKG_PARKING_LOCATIONS"
	//   "ISOLATION_PKG_PEOPLE_API"
	//   "ISOLATION_PKG_PEOPLE_API_CONTACT_ANNOTATIONS"
	//   "ISOLATION_PKG_PEOPLE_API_GET_PEOPLE_BY_IDS"
	//   "ISOLATION_PKG_PERSONAL_CONTACT_ANNOTATIONS" - For
	// PersonalContactAnnotations from FocusNameServlet. For personal
	// contacts that are not visible to guest.
	//   "ISOLATION_PKG_PERSONAL_PLACES"
	//   "ISOLATION_PKG_PERSONAL_SHARED_CONTACT_ANNOTATIONS" - For "visible
	// to guest" contact vertical.
	//   "ISOLATION_PKG_PERSONALIZED_PRONUNCIATIONS"
	//   "ISOLATION_PKG_PLAY_AUDIO_BOOKS"
	//   "ISOLATION_PKG_PWS_ASSISTANT_CONTACTS_FOOTPRINTS"
	//   "ISOLATION_PKG_ASSISTANT_UPP_PERSONAL_TOP_ENTITIES" - For personal
	// top entities generated by Assistant user profile platform.
	//   "PKG_RESERVATION_DATA" - PWG approval for client use cases for
	// reservation data must include explicit approval for this type of
	// traffic. Note: Prefer to use the ISOLATION_PKG_GI_*_RESERVATION_DATA
	// value below for the specific reservation type needed, rather than
	// this value, since those trigger individual Gmail Intelligence
	// fetchers rather than all of them.
	//   "ISOLATION_PKG_GI_HOTEL_RESERVATION_DATA" - PWG approval for client
	// use cases for reservation data must include explicit approval for
	// this type of traffic.
	//   "ISOLATION_PKG_GI_FLIGHT_RESERVATION_DATA" - PWG approval for
	// client use cases for reservation data must include explicit approval
	// for this type of traffic.
	//   "ISOLATION_PKG_GI_CAR_RENTAL_RESERVATION_DATA" - PWG approval for
	// client use cases for reservation data must include explicit approval
	// for this type of traffic.
	//   "ISOLATION_PKG_GI_TRANSPORTATION_RESERVATION_DATA" - PWG approval
	// for client use cases for reservation data must include explicit
	// approval for this type of traffic.
	//   "ISOLATION_PKG_GI_RESTAURANT_RESERVATION_DATA" - PWG approval for
	// client use cases for reservation data must include explicit approval
	// for this type of traffic.
	//   "ISOLATION_PKG_RESTAURANT_RESERVATIONS"
	//   "ISOLATION_PKG_SELF_ENTITIES"
	//   "ISOLATION_PKG_SOCIAL_EVENT_RESERVATIONS"
	//   "ISOLATION_PKG_SOCIAL_GRAPH_PEOPLE_API"
	//   "ISOLATION_PKG_STADIA_CONTACTS"
	//   "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP"
	//   "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP_CONSISTENT"
	//   "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP_CONSISTENT_CONTACTS"
	//   "ISOLATION_PKG_STARLIGHT_COMPOSITE"
	//   "ISOLATION_PKG_STARLIGHT_COMPOSITE_FACE_LABELS"
	//   "ISOLATION_PKG_STARLIGHT_FACE_LABELS"
	//   "ISOLATION_PKG_STARLIGHT_QUERY"
	//   "ISOLATION_PKG_STARLIGHT_TOP_CONTACTS"
	//   "ISOLATION_PKG_STARLIGHT_VISIBLE_TO_GUESTS"
	//   "ISOLATION_PKG_STRUCTURED_MEMORY_FOOTPRINTS"
	//   "ISOLATION_PKG_TEACH_AND_LEARN_ENTITIES"
	//   "ISOLATION_PKG_ASSISTANT_ROUTINES"
	//   "ISOLATION_PKG_VANITY_COLLECTIONS"
	//   "ISOLATION_PKG_WEBSEARCH"
	//   "ISOLATION_PKG_WHITEPAGES_PHONE_NUMBER"
	//   "ISOLATION_PKG_VOICE_PROFILE"
	//   "ISOLATION_PKG_YOUTUBE_ASSISTANT_CONTEXT"
	//   "ISOLATION_PKG_YOUTUBE_ASSISTANT_XWALKSAFE_CONTEXT"
	//   "ISOLATION_PKG_YOUTUBE_MUSIC_LOCKER" - PWG-YouTube approval
	// required for all use cases involving this data.
	//   "ISOLATION_PKG_YOUTUBE_PLAYLISTS" - For personal playlists from
	// YouTube's PlaylistService that have public visibility, PWG-YouTube
	// approval required for all usecases involving this data.
	//   "ISOLATION_PKG_YOUTUBE_PLAYLIST_SEARCH" - For personal playlists
	// from YouTube's PlaylistService "Search" endpoint. PWG-YouTube
	// approval required for all usecases involving this data.
	//   "ISOLATION_PKG_YOUTUBE_PRIVATE_PLAYLISTS" - For personal playlists
	// from YouTube's PlaylistService that have private visibility.
	// PWG-YouTube approval required for all usecases involving this data.
	//   "ISOLATION_PKG_YOUTUBE_PUBLIC_AND_PRIVATE_PLAYLISTS" - For data
	// from YouTube's PlaylistService that has either public or private
	// visibility (i.e. the combination of ISOLATION_PKG_YOUTUBE_PLAYLISTS
	// and ISOLATION_PKG_YOUTUBE_PRIVATE_PLAYLISTS). PWG-YouTube approval
	// required for all usecases involving this data.
	//   "ISOLATION_S3_CREATOR_PRESENCE" - Access controls for Creator
	// Channel's S-Cubed corpus data. See more in go/uro-access-required.
	// YOU MUST CONTACT milk-tea@ before reading or writing this data
	//   "ISOLATION_S12Y_RECIPE_INGREDIENT_INSIGHTS" - For Search
	// sustainability's food choice feature, Recipe Ingredient Insights.
	// Assign existing KG entities feature types to classify triggering
	// behavior and insights. Owned by salehh@ and s12y-eng@ See
	// go/rii-kg-triggering-migration for more information.
	//   "UMP_TESTING_ONLY" - This access control is used to guard data used
	// by the Unified Media Platform team (ke-media-actions-serving@) for
	// testing new features. It should never be used for purposes other than
	// testing. More context at go/fake-media-provider.
	//   "INTENTJOINS_NB_SIGNALS" - Access controls for the IntentJoins
	// Navboost data. YOU MUST CONTACT intentjoins-eng@ before reading or
	// writing this data.
	//   "ADS_INTEGRITY_ANNOTATION" - Access controls for Ads Integrity
	// annotation data. Ads Integrity annotations are only available for Ads
	// Integrity policy enforcement. See go/ai-political-km for more
	// details. YOU MUST CONTACT ai-pacg@ before reading or writing this
	// data.
	//   "COVID_MAPS_SENSITIVE" - Access controls for statistical
	// information related to COVID-19 that can only be displayed in certain
	// products. YOU MUST CONTACT talcohen@ before reading or writing this
	// data.
	//   "KE_TRUST" - Access control for KE Trust related scores. YOU MUST
	// CONTACT ke-trust-team@ before reading this data. AND YOU SHOULD NOT
	// write to it.
	//   "SENSITIVE_ENTITIES_CLASSIFICATION" - Access control for Sensitive
	// Entities Database predicates See go/sed-prd for details YOU MUST
	// CONTACT sensitive-entities-team@ before reading this data. SHOULD NOT
	// write to it.
	//   "ISOLATION_S3_DATASEARCH" - Access controls for the S-Cubed Data
	// Search. See more in go/uro-access-required. YOU MUST CONTACT
	// scubed-team@ before reading or writing this data
	//   "VIRTUALCARE_US" - Access controls for VirtualCare provider data
	// bound by contractual agreements. The data can only be used in US and
	// currently only VirtualCare product is authorized to use the data. YOU
	// MUST CONTACT virtualcare-eng@ and kg-legal@ before reading this data.
	// AND YOU SHOULD NOT WRITE TO IT
	//   "NETFLIX_AVAILABILITY_MEDIA_ACTION" - This is an access restriction
	// to avoid any usage of a special virtual media action provider
	// NETFLIX_AVAILABILITY accidentally without knowing the context. see:
	// go/nflx-availability-acl for context YOU MUST CONTACT ke-wedia@
	// before reading or writing this data.
	//   "ACCC_RISKY_DATA" - DEPRECATED in favor of
	// AU_ACCC_RISKY_FOR_DISPLAY
	//   "AU_ACCC_RISKY_FOR_DISPLAY" - Triples labeled with this
	// AccessRequirement may be risky to be displayed in Australia. YOU MUST
	// CONTACT richardfang@, mattmaly@, shutongyu@ before reading this data.
	// **AND YOU SHOULD NOT WRITE TO IT**
	//   "GEO_FEATURE_RESTRICTION" - Maps data that should not be displayed
	// under specific circumstances. YOU MUST CONTACT geo-irt@ before
	// reading this data.
	//   "RIGHTS_MANAGEMENT_100" - Access controls for rights management
	// policies. See http://go/ke-rights-management-pilot for more context.
	// YOU MUST CONTACT ke-data-governance@google.com before writing this
	// data, and the RIGHTS_MANAGEMENT_* ARs should NOT be specified
	// explicitly for reading. Corresponding to policy id = 100.
	//   "RIGHTS_MANAGEMENT_101" - Corresponding to policy id = 101.
	//   "RIGHTS_MANAGEMENT_102" - Corresponding to policy id = 102.
	//   "DICTIONARY_DATA_OXFORD"
	//   "DICTIONARY_DATA_LE_ROBERT"
	//   "ENTITY_TEXT_FEATURES" - Access controls for EntityTextFeatures
	// computed by the Enricher. YOU MUST CONTACT deepkg-infra-dev@ before
	// reading or writing data with this ACL.
	//   "AR_ONBOARDING_TEST" - This AccessRequirement is used for testing
	// purpose only. Please do not use it on data.
	//   "AR_ONBOARDING_TEST_2"
	//   "MATERIALIZED_ENRICHER_INTERNAL" - Data materialized by PQM13n for
	// Enricher. Design proposal: go/enricher-m13n-ar. YOU MUST CONTACT
	// ke-data-platform-access@ before reading or writing data with this
	// acl.
	//   "MATERIALIZED_SCUBED_INTERNAL" - Data materialized by PQM13n for
	// Scubed. Design proposal: go/scubed-m13n-ar. YOU MUST CONTACT
	// ke-data-platform-access@ before reading or writing data with this
	// acl.
	AccessRequired string `json:"accessRequired,omitempty"`

	// AccessRequiredInt: For KE internal use only. Data providers shall
	// *not* set this. At ingress, LG Record service will read
	// access_required and properly translate it to access_required_int. KE
	// horizontal systems shall use this field instead of access_required;
	// so that binaries would not depend on the release of a newly
	// introduced AccessRequirement enum. (go/easy-ar-onboarding)
	AccessRequiredInt int64 `json:"accessRequiredInt,omitempty"`

	AuthoringTimestamp int64 `json:"authoringTimestamp,omitempty,string"`

	// Creator: Freebase: the freebase user id in the form '/user/userid'
	// KG: the Google LDAP of the developer or MDB group that set up the
	// triplification and import pipeline for this data source.
	Creator string `json:"creator,omitempty"`

	// Dataset: Freebase & KG: the dataset the assertion was loaded from
	Dataset string `json:"dataset,omitempty"`

	ExtractionPattern string `json:"extractionPattern,omitempty"`

	ExtractionTimestamp int64 `json:"extractionTimestamp,omitempty,string"`

	// FreebaseAttribution: Below are deprecated Provenance fields. They are
	// not indexed or served in KE infrastructure (they are stripped at
	// ingress in Livegraph).
	FreebaseAttribution string `json:"freebaseAttribution,omitempty"`

	// IsSupportingData: Indicates that the corresponding data is supporting
	// evidence for reconciliation only, and is *not* an assertion that
	// should be visible to other systems or to external users. Note that
	// this also means that no provenances indicating supporting data will
	// be visible in the composed graph. Please see
	// go/supporting-kg-triples-design-doc for additional details and
	// background. If a triple is sent to Livegraph with multiple
	// provenances each of them must have is_supporting_data bit set for it
	// to be considered valid supporting evidence triple.
	IsSupportingData bool `json:"isSupportingData,omitempty"`

	// LgMetadata: Internal metadata used by Livegraph and possibly other
	// horizontal KG infra systems. This is not part of the logical triple
	// or its provenance, and contents may not be visible downstream of LG.
	LgMetadata *StorageGraphBfgLivegraphProvenanceMetadata `json:"lgMetadata,omitempty"`

	// PolicyMetadata: Metadata specifying data governance policies. This
	// information will be processed and enforced in KE systems. For more
	// context, see go/ke-triple-dg-policy-and-metadata. WARNING: This field
	// is WIP and please do not populate it without consulting
	// ke-data-governance@.
	PolicyMetadata *StorageGraphBfgPolicyMetadata `json:"policyMetadata,omitempty"`

	// Process: Used to uniquely identify data sources. Freebase: the OAuth
	// application KG: the name of the source directory the triple was
	// loaded from (eg, "amg", "tms ", "collections"). KV: identifier of an
	// extraction system, e.g., SAFT or Tractzor.
	Process string `json:"process,omitempty"`

	ProvenanceExtension *Proto2BridgeMessageSet `json:"provenanceExtension,omitempty"`

	// RankingToken: 'ranking_token' (which must be accompanied by the
	// 'process' field above or will be ignored) is used to distinguish
	// subsets of data within a single process, solely for the purposes of
	// composition in Livegraph. This field is useful when partitioning of
	// data is needed, but using a separate process is intractable due to
	// organizational or infrastructure limitations. For example, if a
	// process such as "geo" wishes to distinguish some of their
	// /type/object/name triples as higher priority in Composer's conflict
	// resolution rules, then they can add a config entry with a dedicated
	// ranking_token and tag the relevant triples with that ranking_token.
	// This field should only be used in conjunction with a Composer-side
	// configuration to use it for value selection. It is not appropriate to
	// use this field as free-form metadata. This value must match
	// [[:alnum:]][[:alnum:]_-]{0,127} (i.e., [a-zA-Z0-9]+[a-zA-Z0-9_-]* and
	// must be less than 128 characters in length) , or else its containing
	// triple will be considered malformed and will be rejected by Livegraph
	// at ingress. As of 2018-02-14, this field is used within Livegraph's
	// Composer and is exposed in Livegraph's Lookup APIs to aid debugging,
	// but it is not indexed or served by TopicServer.
	RankingToken string `json:"rankingToken,omitempty"`

	// RequiresTriangulation: When specified as part of triples input to
	// Livegraph (go/livegraph), this indicates that the triple needs to be
	// triangulated by 3 different sources before it can be served in
	// production. A triple's source is identified by its
	// URL(provenance.source).host(). Please see go/baike-triangulation for
	// more background on this. WARNING: If you're a new client trying to
	// enable triangulation for your feed, please contact
	// lg-composition@/kashk@ before using this feature.
	RequiresTriangulation bool `json:"requiresTriangulation,omitempty"`

	// Possible values:
	//   "REQUIRES_CITATION"
	//   "REQUIRES_PCOUNSEL_REVIEW"
	//   "REQUIRES_ACCESS_CONTROL" - not used in KE infra
	//   "UNRESTRICTED_WITHIN_GOOGLE_NO_3P_USE"
	Restrictions []string `json:"restrictions,omitempty"`

	// Source: Freebase & KG: if the triples were extracted from the web,
	// the source URL where the assertion was found. (generally empty in
	// freebase-sourced triples) TopicServer will serve/populate/retain if
	// REQUIRES_CITATION is also set, or if the process is explicitly
	// allowed. http://g/topic-server/vn9PBWtVKqI/arQEDqKTAgAJ
	Source string `json:"source,omitempty"`

	// Possible values:
	//   "THIRD_PARTY"
	//   "CURATION"
	//   "PARTNER_FEED"
	//   "EXTRACTION"
	SourceCategory []string `json:"sourceCategory,omitempty"`

	SourceDocId googleapi.Int64s `json:"sourceDocId,omitempty"`

	SpiiCertification *StorageGraphBfgSpiiCertification `json:"spiiCertification,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccessRequired") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccessRequired") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgTripleProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgTripleProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// StorageGraphBfgUmpPolicyMetadata: Metadata fields for UMP. A piece of
// data satisfies UMP policy if: (data access region is in the
// `regions_allowed` list) AND (data access time >=
// availability_start_timestamp) AND (data access time <
// availability_end_timestamp)
type StorageGraphBfgUmpPolicyMetadata struct {
	// AvailabilityEnds: Timestamp after which data with this policy cannot
	// be used.
	AvailabilityEnds string `json:"availabilityEnds,omitempty"`

	// AvailabilityStarts: Timestamp before which data with this policy
	// cannot be used.
	AvailabilityStarts string `json:"availabilityStarts,omitempty"`

	RegionsAllowed *KeGovernanceTypedRegions `json:"regionsAllowed,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AvailabilityEnds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AvailabilityEnds") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *StorageGraphBfgUmpPolicyMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod StorageGraphBfgUmpPolicyMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// SuperrootPodcastsRecommendationsPodcastRecsFeatures: LINT.IfChange
// Next ID: 101
type SuperrootPodcastsRecommendationsPodcastRecsFeatures struct {
	// AverageDurationSecondsEpisode: Average duration listened per episode.
	// Ignores duration < 10s. Computed offline
	AverageDurationSecondsEpisode int64 `json:"averageDurationSecondsEpisode,omitempty,string"`

	// AverageDurationSecondsShow: Average duration listened per show.
	// Ignores duration < 10s. Computed offline
	AverageDurationSecondsShow int64 `json:"averageDurationSecondsShow,omitempty,string"`

	// AverageFractionEpisode: Average fraction of podcast listened per
	// episode. Ignores duration < 10s. Computed offline
	AverageFractionEpisode float64 `json:"averageFractionEpisode,omitempty"`

	// AverageFractionShow: Average fraction of podcast listened per show.
	// Ignores duration < 10s. Computed offline
	AverageFractionShow float64 `json:"averageFractionShow,omitempty"`

	// BalancedLift: Per cluster lift where the lift_squashing_factor is set
	// to 0.4
	BalancedLift float64 `json:"balancedLift,omitempty"`

	// CategoryMatch: category_match is a 0 to 1 score depicting how much of
	// the user's listening history matches the categories of this podcast
	// recommendation.
	CategoryMatch float64 `json:"categoryMatch,omitempty"`

	// ClusterFeedMinutes: The total minutes listened to this podcast show
	// by users in this cluster
	ClusterFeedMinutes int64 `json:"clusterFeedMinutes,omitempty,string"`

	// ColistenedShowColistenAffinity: This captures the probability that
	// this show could have been listened by the user in lieu of what they
	// have subscribed or listened to.
	ColistenedShowColistenAffinity float64 `json:"colistenedShowColistenAffinity,omitempty"`

	// ColistenedShowLevelRank: This captures the rank of the podcast show
	// in the colisten candidate generator.
	ColistenedShowLevelRank int64 `json:"colistenedShowLevelRank,omitempty,string"`

	ConvAiToxicitySevereScore float64 `json:"convAiToxicitySevereScore,omitempty"`

	// CsaiScore: Score of csai safe search score go/safesearch
	CsaiScore float64 `json:"csaiScore,omitempty"`

	// DnnShowLevelRank: Ordinal rank features like this have been found to
	// be useful in Hermione Recipes, where the top ranked items from a
	// candidate generator is always retained. Ranks are integral values
	// starting with 1 for the highest affinity show.
	DnnShowLevelRank int64 `json:"dnnShowLevelRank,omitempty,string"`

	// DnnV2aScore: Dot product of user embedding and podcast show embedding
	// from the two tower model v2a
	DnnV2aScore float64 `json:"dnnV2aScore,omitempty"`

	// DnnV2aScoreSigmoid: Sigmoid of the score obtained by dot product of
	// user embedding and show embedding. See
	// https://b.corp.google.com/issues/158602034#comment2 for intuition.
	DnnV2aScoreSigmoid float64 `json:"dnnV2aScoreSigmoid,omitempty"`

	// DurationTotalSecondsEpisode: Total duration listened for this episode
	// by all users. Ignores duration < 10s. Computed offline
	DurationTotalSecondsEpisode int64 `json:"durationTotalSecondsEpisode,omitempty,string"`

	// DurationTotalSecondsShow: Total duration listened for this show by
	// all users. Ignores duration < 10s. Computed offline
	DurationTotalSecondsShow int64 `json:"durationTotalSecondsShow,omitempty,string"`

	// EpisodeDurationSec: The duration of a single episode, in seconds. -
	// For show documents, this is a duration of a typical recent episode,
	// or an approximation thereof. - For episode documents, this is the
	// duration of the episode itself.
	EpisodeDurationSec int64 `json:"episodeDurationSec,omitempty,string"`

	// EpisodeImpressions: Number of all episode impressions.
	EpisodeImpressions int64 `json:"episodeImpressions,omitempty,string"`

	// EpisodeImpressionsPastWeek: Number of episode impressions during the
	// past week.
	EpisodeImpressionsPastWeek int64 `json:"episodeImpressionsPastWeek,omitempty,string"`

	// EpisodesPublishedPerMonth: How frequently are podcasts published by
	// this show. To see publishing frequency calculation go here:
	// http://shortn/_6zzfyEpBRq
	EpisodesPublishedPerMonth int64 `json:"episodesPublishedPerMonth,omitempty,string"`

	// ExplicitShow: Whether the show is marked as explicit by the authors
	//
	// Possible values:
	//   "EXPLICIT_NO" - Show/episode without explicit content. The default.
	//   "EXPLICIT_YES" - Show/episode with explicit content.
	//   "EXPLICIT_CLEAN" - "Clean" version of an otherwise explicit
	// show/episode.
	ExplicitShow string `json:"explicitShow,omitempty"`

	// FeedPagerank: Scaled pagerank score for the feed url in [0..1]. Not
	// to be confused with pagerank above, which measures the pagerank for
	// the feed's homepage.
	FeedPagerank float64 `json:"feedPagerank,omitempty"`

	// FinalReactionBoostScore: final reaction boost score computed from
	// positive_reaction_boost_score and negative_reaction_boost_score. The
	// score will be applied as a multiplier on the ranking score to adjust
	// the ranking.
	FinalReactionBoostScore float64 `json:"finalReactionBoostScore,omitempty"`

	// FractionTotalEpisode: Some of all fraction of this listened by users.
	// Ignores duration < 10s. Computed offline
	FractionTotalEpisode float64 `json:"fractionTotalEpisode,omitempty"`

	// FractionTotalShow: Some of all fraction of this show listened by
	// users. Ignores duration < 10s. Computed offline
	FractionTotalShow float64 `json:"fractionTotalShow,omitempty"`

	// FringeScore: Score of fringe safe search score go/safesearch
	FringeScore float64 `json:"fringeScore,omitempty"`

	// GlobalProb: Probability of a random user listening to this podcast
	// randomly
	GlobalProb float64 `json:"globalProb,omitempty"`

	// InClusterProb: Probability of a random user from this cluster
	// listening to this podcast randomly (K-means specific feature)
	InClusterProb float64 `json:"inClusterProb,omitempty"`

	// IsCanonical: A binary value based on whether this is a canonical
	// source for a cluster.
	IsCanonical bool `json:"isCanonical,omitempty"`

	// KmeansShowLevelRank: Ranks are integral values starting with 1 for
	// the highest affinity show.
	KmeansShowLevelRank int64 `json:"kmeansShowLevelRank,omitempty,string"`

	// LanguageMatch: How much of user listening history match the language
	// of this episode
	LanguageMatch float64 `json:"languageMatch,omitempty"`

	// LinkOwnershipVerified: Ownership verification status for the episode
	// page URL.
	LinkOwnershipVerified bool `json:"linkOwnershipVerified,omitempty"`

	// ListenTimeMin: Number of minutes of podcasts listened by the user
	ListenTimeMin int64 `json:"listenTimeMin,omitempty"`

	// ListenedShowLevelRank: The rank of the show in the top listened shows
	// candidate generator. Ranks are integral values starting with 1 for
	// the highest affinity show.
	ListenedShowLevelRank int64 `json:"listenedShowLevelRank,omitempty,string"`

	// ListenedShowListeningAffinity: This captures the fraction of total
	// listening time accounted for by this show.
	ListenedShowListeningAffinity float64 `json:"listenedShowListeningAffinity,omitempty"`

	// LocationFeatureId: Feature ID of a location. For more info, see
	// go/feature-id.
	LocationFeatureId string `json:"locationFeatureId,omitempty"`

	// LongUserListeningWebrefSimilarity: Match score between user listening
	// mids and episode webref entities, where the listening can have
	// happened at any time in the past. Values are in a 0.0 to 1.0 range.
	LongUserListeningWebrefSimilarity float64 `json:"longUserListeningWebrefSimilarity,omitempty"`

	// MedicalScore: Score of medical safe search score go/safesearch
	MedicalScore float64 `json:"medicalScore,omitempty"`

	// MediumUserListeningWebrefSimilarity: Match score between user
	// listening mids and episode webref entities, where the listening is
	// limited to last two mohths activity. Values are in a 0.0 to 1.0
	// range.
	MediumUserListeningWebrefSimilarity float64 `json:"mediumUserListeningWebrefSimilarity,omitempty"`

	// NegativeReactionBoostScore: boost score from the similarity between
	// the candidate and the shows with user negative feedback, currently
	// the score will be applied directly to the final ranking score:
	// go/podcast-reaction-reranking-v1, but can be used as reranker model
	// feature in the future.
	NegativeReactionBoostScore float64 `json:"negativeReactionBoostScore,omitempty"`

	// NicheLift: Per cluster lift where the lift_squashing_factor is set to
	// +2
	NicheLift float64 `json:"nicheLift,omitempty"`

	// NumListenersInKmeansCluster: The number of users in this k-means
	// cluster.
	NumListenersInKmeansCluster int64 `json:"numListenersInKmeansCluster,omitempty,string"`

	// NumListenersToShowInKmeansCluster: The number of users in the k-means
	// cluster who have listened to this feed.
	NumListenersToShowInKmeansCluster int64 `json:"numListenersToShowInKmeansCluster,omitempty,string"`

	// NumListens: Number of podcasts listened by the user
	NumListens int64 `json:"numListens,omitempty"`

	// NumSubscribersShow: From: indexing/speech/proto/colisten-matrix.proto
	// The number of subscribers for this podcast series.
	NumSubscribersShow int64 `json:"numSubscribersShow,omitempty,string"`

	// NumUniqueListenersShow: From:
	// indexing/speech/proto/colisten-matrix.proto Absolute number of unique
	// listeners during the past month.
	NumUniqueListenersShow int64 `json:"numUniqueListenersShow,omitempty,string"`

	// OffensiveScore: Score of offensive safe search score go/safesearch
	OffensiveScore float64 `json:"offensiveScore,omitempty"`

	PeDurationScoreEpisode float64 `json:"peDurationScoreEpisode,omitempty"`

	PeDurationScoreShow float64 `json:"peDurationScoreShow,omitempty"`

	PeDurationTotalScoreEpisode float64 `json:"peDurationTotalScoreEpisode,omitempty"`

	PeDurationTotalScoreShow float64 `json:"peDurationTotalScoreShow,omitempty"`

	PeFractionScoreEpisode float64 `json:"peFractionScoreEpisode,omitempty"`

	PeFractionScoreShow float64 `json:"peFractionScoreShow,omitempty"`

	PeFractionTotalScoreEpisode float64 `json:"peFractionTotalScoreEpisode,omitempty"`

	PeFractionTotalScoreShow float64 `json:"peFractionTotalScoreShow,omitempty"`

	PeListenScoreEpisode float64 `json:"peListenScoreEpisode,omitempty"`

	// PeListenScoreShow: Anima User Embedding based features. Dot product
	// of Anima User Embedding and podcast embeddings from
	// UserEmbeddingBasedSignals
	// (podcasts/quality/proto/ranking_signals.proto)
	PeListenScoreShow float64 `json:"peListenScoreShow,omitempty"`

	PeListenTotalScoreEpisode float64 `json:"peListenTotalScoreEpisode,omitempty"`

	PeListenTotalScoreShow float64 `json:"peListenTotalScoreShow,omitempty"`

	// PopularLift: Per cluster lift where the lift_squashing_factor is set
	// to -3
	PopularLift float64 `json:"popularLift,omitempty"`

	// PornScore: Score of porn safe search score go/safesearch
	PornScore float64 `json:"pornScore,omitempty"`

	// PositiveReactionBoostScore: boost score from the similarity between
	// the candidate and the shows with user positive feedback, currently
	// the score will be applied directly to the final ranking score:
	// go/podcast-reaction-reranking-v1, but can be used as reranker model
	// feature in the future.
	PositiveReactionBoostScore float64 `json:"positiveReactionBoostScore,omitempty"`

	// QueryLanguage: This is the language extracted from the
	// query_language.
	QueryLanguage string `json:"queryLanguage,omitempty"`

	// Rank: The index in the list of most popular podcasts.
	Rank int64 `json:"rank,omitempty,string"`

	// RankPercentContrib: rank_percent_contrib = 100 / ( 1 + rank_percent )
	// Here rank_percent was derived from show level data in Wernicke corpus
	// So if rank_percent of a feed was 3, then the feature value would be:
	// 100 / (1 + 3) = 25. This indicator falls off quickly from 100 to
	// almost 1 as we go from rank_percent 0 to 100.
	RankPercentContrib float64 `json:"rankPercentContrib,omitempty"`

	// RecentUserListeningWebrefSimilarity: Match score between user
	// listening mids and episode webref entities, where the listening is
	// limited to recent activity. Values are in a 0.0 to 1.0 range.
	RecentUserListeningWebrefSimilarity float64 `json:"recentUserListeningWebrefSimilarity,omitempty"`

	// SecondsSincePublication: A reranking feature showing the age of the
	// episode that is being recommended. This is computed as (current time
	// - publication_time) publication_time of the episode is defined:
	// (http://shortn/_S46Ouk5ZWW) publication_time is specified as seconds
	// since Unix Epoch.
	SecondsSincePublication int64 `json:"secondsSincePublication,omitempty,string"`

	// ShowBaseQuality: Base quality of the document, used as a multiplier
	// for the query-specific score. Should be in [0, 1] range. See:
	// http://g3doc/indexing/moonshine/generic/g3doc/doc/scoring
	ShowBaseQuality float64 `json:"showBaseQuality,omitempty"`

	// ShowImpressions: Number of show episode impressions.
	ShowImpressions int64 `json:"showImpressions,omitempty,string"`

	// ShowImpressionsPastWeek: Number of show impressions during the past
	// week.
	ShowImpressionsPastWeek int64 `json:"showImpressionsPastWeek,omitempty,string"`

	// ShowLanguage: Language of the show from show data.
	ShowLanguage string `json:"showLanguage,omitempty"`

	// ShowOnlyImpressions: Show only impressions. Doesn't include shows of
	// episode impressions.
	ShowOnlyImpressions int64 `json:"showOnlyImpressions,omitempty,string"`

	ShowOnlyImpressionsPastWeek int64 `json:"showOnlyImpressionsPastWeek,omitempty,string"`

	// ShowPopularRank: Expresses the absolute popularity rank within all
	// documents.
	ShowPopularRank int64 `json:"showPopularRank,omitempty,string"`

	// SpoofScore: Score of spoof safe search score go/safesearch
	SpoofScore float64 `json:"spoofScore,omitempty"`

	// SubscribedShowListeningAffinity: This captures the fraction of total
	// listening time accounted for by this subscribed show.
	SubscribedShowListeningAffinity float64 `json:"subscribedShowListeningAffinity,omitempty"`

	// SubscriptionShowLevelRank: The rank of the show in the subscription
	// candidate generator. Ranks are integral values starting with 1 for
	// the highest subscribed affinity show.
	SubscriptionShowLevelRank int64 `json:"subscriptionShowLevelRank,omitempty,string"`

	Surface string `json:"surface,omitempty"`

	// TrendingScorePercent: Show level trending score percent from Wernicke
	// corpus.
	TrendingScorePercent int64 `json:"trendingScorePercent,omitempty,string"`

	// UlpLanguage: Inferred language preferences of the user with their
	// probabilities.
	UlpLanguage []*SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage `json:"ulpLanguage,omitempty"`

	// UlpLanguageMatch: How much of ulp match the language of this episode
	UlpLanguageMatch float64 `json:"ulpLanguageMatch,omitempty"`

	// UserClusterDistance: The distance between user's Anima embedding and
	// the centroid of the cluster in k-means.
	UserClusterDistance float64 `json:"userClusterDistance,omitempty"`

	// UserInterestsSalientSimilarity: Match score between user interest
	// mids and episode salient entities. in a 0.0 to 1.0 range.
	UserInterestsSalientSimilarity float64 `json:"userInterestsSalientSimilarity,omitempty"`

	// UserInterestsWebrefSimilarity: Match score between user interest mids
	// and episode webref entities. in a 0.0 to 1.0 range.
	UserInterestsWebrefSimilarity float64 `json:"userInterestsWebrefSimilarity,omitempty"`

	// UserLanguage: Language of shows in user history and how much they
	// listened to each.
	UserLanguage []*SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage `json:"userLanguage,omitempty"`

	// ViolenceScore: Score of violence safe search score go/safesearch
	ViolenceScore float64 `json:"violenceScore,omitempty"`

	// VulgarScore: Score of vulgar safe search score go/safesearch
	VulgarScore float64 `json:"vulgarScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AverageDurationSecondsEpisode") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AverageDurationSecondsEpisode") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SuperrootPodcastsRecommendationsPodcastRecsFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod SuperrootPodcastsRecommendationsPodcastRecsFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SuperrootPodcastsRecommendationsPodcastRecsFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod SuperrootPodcastsRecommendationsPodcastRecsFeatures
	var s1 struct {
		AverageFractionEpisode              gensupport.JSONFloat64 `json:"averageFractionEpisode"`
		AverageFractionShow                 gensupport.JSONFloat64 `json:"averageFractionShow"`
		BalancedLift                        gensupport.JSONFloat64 `json:"balancedLift"`
		CategoryMatch                       gensupport.JSONFloat64 `json:"categoryMatch"`
		ColistenedShowColistenAffinity      gensupport.JSONFloat64 `json:"colistenedShowColistenAffinity"`
		ConvAiToxicitySevereScore           gensupport.JSONFloat64 `json:"convAiToxicitySevereScore"`
		CsaiScore                           gensupport.JSONFloat64 `json:"csaiScore"`
		DnnV2aScore                         gensupport.JSONFloat64 `json:"dnnV2aScore"`
		DnnV2aScoreSigmoid                  gensupport.JSONFloat64 `json:"dnnV2aScoreSigmoid"`
		FeedPagerank                        gensupport.JSONFloat64 `json:"feedPagerank"`
		FinalReactionBoostScore             gensupport.JSONFloat64 `json:"finalReactionBoostScore"`
		FractionTotalEpisode                gensupport.JSONFloat64 `json:"fractionTotalEpisode"`
		FractionTotalShow                   gensupport.JSONFloat64 `json:"fractionTotalShow"`
		FringeScore                         gensupport.JSONFloat64 `json:"fringeScore"`
		GlobalProb                          gensupport.JSONFloat64 `json:"globalProb"`
		InClusterProb                       gensupport.JSONFloat64 `json:"inClusterProb"`
		LanguageMatch                       gensupport.JSONFloat64 `json:"languageMatch"`
		ListenedShowListeningAffinity       gensupport.JSONFloat64 `json:"listenedShowListeningAffinity"`
		LongUserListeningWebrefSimilarity   gensupport.JSONFloat64 `json:"longUserListeningWebrefSimilarity"`
		MedicalScore                        gensupport.JSONFloat64 `json:"medicalScore"`
		MediumUserListeningWebrefSimilarity gensupport.JSONFloat64 `json:"mediumUserListeningWebrefSimilarity"`
		NegativeReactionBoostScore          gensupport.JSONFloat64 `json:"negativeReactionBoostScore"`
		NicheLift                           gensupport.JSONFloat64 `json:"nicheLift"`
		OffensiveScore                      gensupport.JSONFloat64 `json:"offensiveScore"`
		PeDurationScoreEpisode              gensupport.JSONFloat64 `json:"peDurationScoreEpisode"`
		PeDurationScoreShow                 gensupport.JSONFloat64 `json:"peDurationScoreShow"`
		PeDurationTotalScoreEpisode         gensupport.JSONFloat64 `json:"peDurationTotalScoreEpisode"`
		PeDurationTotalScoreShow            gensupport.JSONFloat64 `json:"peDurationTotalScoreShow"`
		PeFractionScoreEpisode              gensupport.JSONFloat64 `json:"peFractionScoreEpisode"`
		PeFractionScoreShow                 gensupport.JSONFloat64 `json:"peFractionScoreShow"`
		PeFractionTotalScoreEpisode         gensupport.JSONFloat64 `json:"peFractionTotalScoreEpisode"`
		PeFractionTotalScoreShow            gensupport.JSONFloat64 `json:"peFractionTotalScoreShow"`
		PeListenScoreEpisode                gensupport.JSONFloat64 `json:"peListenScoreEpisode"`
		PeListenScoreShow                   gensupport.JSONFloat64 `json:"peListenScoreShow"`
		PeListenTotalScoreEpisode           gensupport.JSONFloat64 `json:"peListenTotalScoreEpisode"`
		PeListenTotalScoreShow              gensupport.JSONFloat64 `json:"peListenTotalScoreShow"`
		PopularLift                         gensupport.JSONFloat64 `json:"popularLift"`
		PornScore                           gensupport.JSONFloat64 `json:"pornScore"`
		PositiveReactionBoostScore          gensupport.JSONFloat64 `json:"positiveReactionBoostScore"`
		RankPercentContrib                  gensupport.JSONFloat64 `json:"rankPercentContrib"`
		RecentUserListeningWebrefSimilarity gensupport.JSONFloat64 `json:"recentUserListeningWebrefSimilarity"`
		ShowBaseQuality                     gensupport.JSONFloat64 `json:"showBaseQuality"`
		SpoofScore                          gensupport.JSONFloat64 `json:"spoofScore"`
		SubscribedShowListeningAffinity     gensupport.JSONFloat64 `json:"subscribedShowListeningAffinity"`
		UlpLanguageMatch                    gensupport.JSONFloat64 `json:"ulpLanguageMatch"`
		UserClusterDistance                 gensupport.JSONFloat64 `json:"userClusterDistance"`
		UserInterestsSalientSimilarity      gensupport.JSONFloat64 `json:"userInterestsSalientSimilarity"`
		UserInterestsWebrefSimilarity       gensupport.JSONFloat64 `json:"userInterestsWebrefSimilarity"`
		ViolenceScore                       gensupport.JSONFloat64 `json:"violenceScore"`
		VulgarScore                         gensupport.JSONFloat64 `json:"vulgarScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageFractionEpisode = float64(s1.AverageFractionEpisode)
	s.AverageFractionShow = float64(s1.AverageFractionShow)
	s.BalancedLift = float64(s1.BalancedLift)
	s.CategoryMatch = float64(s1.CategoryMatch)
	s.ColistenedShowColistenAffinity = float64(s1.ColistenedShowColistenAffinity)
	s.ConvAiToxicitySevereScore = float64(s1.ConvAiToxicitySevereScore)
	s.CsaiScore = float64(s1.CsaiScore)
	s.DnnV2aScore = float64(s1.DnnV2aScore)
	s.DnnV2aScoreSigmoid = float64(s1.DnnV2aScoreSigmoid)
	s.FeedPagerank = float64(s1.FeedPagerank)
	s.FinalReactionBoostScore = float64(s1.FinalReactionBoostScore)
	s.FractionTotalEpisode = float64(s1.FractionTotalEpisode)
	s.FractionTotalShow = float64(s1.FractionTotalShow)
	s.FringeScore = float64(s1.FringeScore)
	s.GlobalProb = float64(s1.GlobalProb)
	s.InClusterProb = float64(s1.InClusterProb)
	s.LanguageMatch = float64(s1.LanguageMatch)
	s.ListenedShowListeningAffinity = float64(s1.ListenedShowListeningAffinity)
	s.LongUserListeningWebrefSimilarity = float64(s1.LongUserListeningWebrefSimilarity)
	s.MedicalScore = float64(s1.MedicalScore)
	s.MediumUserListeningWebrefSimilarity = float64(s1.MediumUserListeningWebrefSimilarity)
	s.NegativeReactionBoostScore = float64(s1.NegativeReactionBoostScore)
	s.NicheLift = float64(s1.NicheLift)
	s.OffensiveScore = float64(s1.OffensiveScore)
	s.PeDurationScoreEpisode = float64(s1.PeDurationScoreEpisode)
	s.PeDurationScoreShow = float64(s1.PeDurationScoreShow)
	s.PeDurationTotalScoreEpisode = float64(s1.PeDurationTotalScoreEpisode)
	s.PeDurationTotalScoreShow = float64(s1.PeDurationTotalScoreShow)
	s.PeFractionScoreEpisode = float64(s1.PeFractionScoreEpisode)
	s.PeFractionScoreShow = float64(s1.PeFractionScoreShow)
	s.PeFractionTotalScoreEpisode = float64(s1.PeFractionTotalScoreEpisode)
	s.PeFractionTotalScoreShow = float64(s1.PeFractionTotalScoreShow)
	s.PeListenScoreEpisode = float64(s1.PeListenScoreEpisode)
	s.PeListenScoreShow = float64(s1.PeListenScoreShow)
	s.PeListenTotalScoreEpisode = float64(s1.PeListenTotalScoreEpisode)
	s.PeListenTotalScoreShow = float64(s1.PeListenTotalScoreShow)
	s.PopularLift = float64(s1.PopularLift)
	s.PornScore = float64(s1.PornScore)
	s.PositiveReactionBoostScore = float64(s1.PositiveReactionBoostScore)
	s.RankPercentContrib = float64(s1.RankPercentContrib)
	s.RecentUserListeningWebrefSimilarity = float64(s1.RecentUserListeningWebrefSimilarity)
	s.ShowBaseQuality = float64(s1.ShowBaseQuality)
	s.SpoofScore = float64(s1.SpoofScore)
	s.SubscribedShowListeningAffinity = float64(s1.SubscribedShowListeningAffinity)
	s.UlpLanguageMatch = float64(s1.UlpLanguageMatch)
	s.UserClusterDistance = float64(s1.UserClusterDistance)
	s.UserInterestsSalientSimilarity = float64(s1.UserInterestsSalientSimilarity)
	s.UserInterestsWebrefSimilarity = float64(s1.UserInterestsWebrefSimilarity)
	s.ViolenceScore = float64(s1.ViolenceScore)
	s.VulgarScore = float64(s1.VulgarScore)
	return nil
}

type SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage struct {
	Lang string `json:"lang,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Lang") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Lang") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage) MarshalJSON() ([]byte, error) {
	type NoMethod SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage) UnmarshalJSON(data []byte) error {
	type NoMethod SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type TelephoneNumber struct {
	// AreaCode: The local "area code", if there is such a concept.
	AreaCode string `json:"areaCode,omitempty"`

	// CountryCode: The international direct dialing code for the country,
	// as per ITU E.164:
	// http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_763.html
	CountryCode int64 `json:"countryCode,omitempty"`

	// Extension: Extension (to be dialed after connection).
	Extension string `json:"extension,omitempty"`

	// NationalPrefix: To call this number from within the same country, the
	// national call prefix may be necessary. This is 1 in the US, 0 in the
	// UK, etc. In the US, it's reasonable to omit the leading 1 when
	// writing the number, but in other countries it is less optional.
	NationalPrefix string `json:"nationalPrefix,omitempty"`

	// Number: The actual number, broken down into sections as per local
	// convention. Note that the actual formatting of these sections (hyphen
	// vs space, usage of parentheses) will vary according to local custom.
	Number []string `json:"number,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AreaCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AreaCode") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TelephoneNumber) MarshalJSON() ([]byte, error) {
	type NoMethod TelephoneNumber
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TeragoogleDocumentInfo: The docshards are a FlatSSTable from (64-bit)
// urlfp to data containing the information found in this protocol
// buffer. (It's not actually one of these PBs for various performance
// reasons; instead, the DocumentFormat class handles serialization and
// deserialization in our own way) Next available ID: 37
type TeragoogleDocumentInfo struct {
	Attachment []*TeragoogleDocumentInfoAttachment `json:"attachment,omitempty"`

	// AverageTermWeight: The average weight of terms in the document. If
	// not available, there will be no term weight averaging: font sizes
	// will be taken literally from the document HTML.
	AverageTermWeight int64 `json:"averageTermWeight,omitempty"`

	// Doc: The document itself. If present, the docservers parse the
	// contents to create a mustang repository.
	Doc *GDocumentBase `json:"doc,omitempty"`

	// ExtendedDocid: The serialized ExtendedDocId, needed to construct a
	// proper docinfo response if the docinfo request is missing it and it's
	// present.
	ExtendedDocid string `json:"extendedDocid,omitempty"`

	// GlobalDocid: the global docid, we need it in the docservers
	// (Continuum mode) to construct proper docinfo response when the
	// docinfo request does not contain a valid global docid
	GlobalDocid uint64 `json:"globalDocid,omitempty,string"`

	// OriginalEncoding: If the original encoding isn't UTF8
	OriginalEncoding int64 `json:"originalEncoding,omitempty"`

	Section []*TeragoogleDocumentInfoSection `json:"section,omitempty"`

	// SectionType: Indicates format of 'tokens' field in all Section
	// entries.
	//
	// Possible values:
	//   "MDU"
	//   "TOKENSPACE"
	//   "TERADOC"
	SectionType string `json:"sectionType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Attachment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Attachment") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TeragoogleDocumentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TeragoogleDocumentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TeragoogleDocumentInfoAttachment: Misc. attachments to be added to
// the dynamic repository the docservers build. These override any
// attachments created by parsing the GDocumentBase.
type TeragoogleDocumentInfoAttachment struct {
	Name string `json:"name,omitempty"`

	Options *TeragoogleRepositoryAttachmentOptions `json:"options,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TeragoogleDocumentInfoAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod TeragoogleDocumentInfoAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TeragoogleDocumentInfoSection: Sections to be added to the dynamic
// repository the docservers build. 'tokens' is either a sequence of
// tokens encoded using the TokenSequenceEncoder (MDU), or a
// TokenspaceRepository (depends on what's set in section_type. If 'doc'
// is present, then the contents of these sections override what was
// created by parsing 'doc'.
type TeragoogleDocumentInfoSection struct {
	// FieldName: List of field repository (subsection) names within the
	// section.
	FieldName []string `json:"fieldName,omitempty"`

	Name string `json:"name,omitempty"`

	Tokens string `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FieldName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FieldName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TeragoogleDocumentInfoSection) MarshalJSON() ([]byte, error) {
	type NoMethod TeragoogleDocumentInfoSection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TeragoogleRepositoryAttachmentOptions: Compression type to be applied
// to section/attachment.
type TeragoogleRepositoryAttachmentOptions struct {
	// Possible values:
	//   "COMPRESSION_NONE"
	//   "COMPRESSION_ZIPPY"
	Compression string `json:"compression,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Compression") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Compression") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TeragoogleRepositoryAttachmentOptions) MarshalJSON() ([]byte, error) {
	type NoMethod TeragoogleRepositoryAttachmentOptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TitleSizeParams: Data related to title sizing calculations in Muppet.
type TitleSizeParams struct {
	// MuppetTitleLengthInDeciems: Total max length of title in deciems
	MuppetTitleLengthInDeciems int64 `json:"muppetTitleLengthInDeciems,omitempty"`

	// MuppetTitleNumLines: Number of lines for title
	MuppetTitleNumLines int64 `json:"muppetTitleNumLines,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MuppetTitleLengthInDeciems") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "MuppetTitleLengthInDeciems") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TitleSizeParams) MarshalJSON() ([]byte, error) {
	type NoMethod TitleSizeParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ToolBarPerDocData: DO NOT USE THIS FOR ANYTHING LIVE WITHOUT
// PERMISSION! If you want to use this for anything user-facing file a
// logs-access ticket describing what you want to do. This data is
// currently only available in the freshdocs pipeline, so it will only
// be present in instant mustang and certain librarian shards. Email
// freshdocs-indexing with questions.
type ToolBarPerDocData struct {
	// VisitorsPastDay: Indicates how many distinct toolbar visitors this
	// page had in the past day. Will only be present if the number is
	// reasonably large.
	VisitorsPastDay int64 `json:"VisitorsPastDay,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VisitorsPastDay") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VisitorsPastDay") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *ToolBarPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod ToolBarPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TravelFlightsAirlineConfig: Next ID: 27
type TravelFlightsAirlineConfig struct {
	// AdwordsCid: Populated using airlines_company_ids.csv for AdWords
	// company map
	AdwordsCid int64 `json:"adwordsCid,omitempty"`

	// Alliance: STAR_ALLIANCE
	//
	// Possible values:
	//   "UNKNOWN"
	//   "AIRUNION"
	//   "ARAB_AIR_CARRIERS_ORGANIZATION"
	//   "ARABESK_AIRLINE_ALLIANCE"
	//   "CENTRAL_MOUNTAIN_AIR"
	//   "CONTINENTAL_AIRLINES"
	//   "EAGLE_AIR"
	//   "FEDEX_EXPRESS"
	//   "GRUPO_TACA"
	//   "JAT_AIRWAYS"
	//   "LUFTHANSA_REGIONAL"
	//   "ONEWORLD"
	//   "QUALIFLYER"
	//   "SIX" - Also noted as '6'
	//   "SKYTEAM"
	//   "SKYTEAM_CARGO"
	//   "STAR_ALLIANCE"
	//   "TUI_AIRLINES"
	//   "WOW_ALLIANCE"
	Alliance string `json:"alliance,omitempty"`

	// BaggageCarryonLimitationsUrls: Default url for baggage fee
	// information.
	BaggageCarryonLimitationsUrls *TravelFlightsNameCatalogProto `json:"baggageCarryonLimitationsUrls,omitempty"`

	// BaggageFeeUrls: Default url for baggage fee information.
	BaggageFeeUrls *TravelFlightsNameCatalogProto `json:"baggageFeeUrls,omitempty"`

	// CountryCode: ISO 3166-1 alpha-2 country code in which this airline is
	// domestic.
	CountryCode string `json:"countryCode,omitempty"`

	// CountryContactInfo: LocalizedContactInfo allows localization by
	// country and language. Once the data is ready, we will start filling
	// both fields. After that the old field will be deprecated and deleted
	// at some point.
	CountryContactInfo []*TravelFlightsAirlineConfigCountryContactInfo `json:"countryContactInfo,omitempty"`

	// DupFlag: true, if this carrier's IATA code is a "controlled
	// duplicate" (goto/controlled-duplicate).
	DupFlag bool `json:"dupFlag,omitempty"`

	FareFamilyUrls *TravelFlightsNameCatalogProto `json:"fareFamilyUrls,omitempty"`

	// FqtvPartnerCode: IATA codes of airlines who this airline's travel can
	// be credited to for mileage accrual.
	FqtvPartnerCode []string `json:"fqtvPartnerCode,omitempty"`

	// IataCode: Note that some iata_codes are reused (`dup_flag` field).
	// For details, including how to resolve collisions for airlines shown
	// in Google Flights, see: go/controlled-duplicate
	// go/flights-data/airlines#resolving-iata-code-collisions
	// cs/go/controlled-duplicate U2 - some have no IATA code
	IataCode string `json:"iataCode,omitempty"`

	// IcaoCode: EZY - some have no ICAO code
	IcaoCode string `json:"icaoCode,omitempty"`

	// InnovataCode: U2! - with optional dedup sign ('!')
	InnovataCode string `json:"innovataCode,omitempty"`

	LocalizedContactInfo []*TravelFlightsAirlineConfigLocalizedContactInfo `json:"localizedContactInfo,omitempty"`

	// Mid: Note: fields #16 and #17 are ununused. The identifier of the
	// airline, e.g. /m/07y2s for United Populated using airlines_mids.csv.
	Mid string `json:"mid,omitempty"`

	// Names: EasyJet/イージージェット
	Names *TravelFlightsNameCatalogProto `json:"names,omitempty"`

	// PassengerAssistanceUrls: Default url for passenger assistance
	// information.
	PassengerAssistanceUrls *TravelFlightsNameCatalogProto `json:"passengerAssistanceUrls,omitempty"`

	// Popularity: Number of flights with this airline over the next 180
	// days.
	Popularity int64 `json:"popularity,omitempty"`

	// ShortNames: KLM - instead of 'KLM Royal Dutch Airlines'
	ShortNames *TravelFlightsNameCatalogProto `json:"shortNames,omitempty"`

	// Possible values:
	//   "SCHEDULED_PASSENGER" - A
	//   "NON_SCHEDULED_PASSENGER" - B
	//   "SCHEDULED_CARGO" - C
	//   "NON_SCHEDULED_CARGO" - D
	//   "NON_AIRLINE_LOAD_DEVICE" - G
	//   "CRS" - H
	//   "SCHEDULED_PASSENGER_CARGO" - I
	//   "NON_SCHEDULED_PASSENGER_CARGO" - J
	//   "RAILWAY" - K
	//   "AIRLINE_PREFIX" - O
	//   "UNRECOGNIZED" - next id: 12
	Type string `json:"type,omitempty"`

	// Urls: http://www.airfrance.us/
	Urls *TravelFlightsNameCatalogProto `json:"urls,omitempty"`

	// WaiverSummaryUrls: Default url for waiver information.
	WaiverSummaryUrls *TravelFlightsNameCatalogProto `json:"waiverSummaryUrls,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AdwordsCid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AdwordsCid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsAirlineConfig) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsAirlineConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TravelFlightsAirlineConfigContactInfo struct {
	// Data: Typically, formatted phone number.
	Data string `json:"data,omitempty"`

	// Possible values:
	//   "PHONE_PRIMARY" - Primary phone number.
	//   "PHONE_TTY" - TTY(Teletype) number for hearing/speech impaired
	// users.
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsAirlineConfigContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsAirlineConfigContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TravelFlightsAirlineConfigCountryContactInfo: Airline contact info
// grouped by country.
type TravelFlightsAirlineConfigCountryContactInfo struct {
	ContactInfo []*TravelFlightsAirlineConfigContactInfo `json:"contactInfo,omitempty"`

	// CountryCode: Two char country code, e.g. "US"
	CountryCode string `json:"countryCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsAirlineConfigCountryContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsAirlineConfigCountryContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TravelFlightsAirlineConfigLocalizedContactInfo: Airline contact info
// grouped by language. The language locale subcode will determine the
// country.
type TravelFlightsAirlineConfigLocalizedContactInfo struct {
	ContactInfo []*TravelFlightsAirlineConfigContactInfo `json:"contactInfo,omitempty"`

	// Language: IETF BCP-47, e.g. "en" or "zh-HK-Hant"
	Language string `json:"language,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContactInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContactInfo") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsAirlineConfigLocalizedContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsAirlineConfigLocalizedContactInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TravelFlightsNameCatalogEntry struct {
	Language string `json:"language,omitempty"`

	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Language") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Language") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsNameCatalogEntry) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsNameCatalogEntry
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TravelFlightsNameCatalogProto struct {
	Name []*TravelFlightsNameCatalogEntry `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TravelFlightsNameCatalogProto) MarshalJSON() ([]byte, error) {
	type NoMethod TravelFlightsNameCatalogProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerClientServiceInfo: ClientServiceInfo is meant for
// trawler/harpoon clients which are in turn services to store some data
// specific to their clients. E.g., Kodachrome may serve multiple other
// clients. In this case they can store their client name here.
// Webmirror may also store the feed name here even though a feed is
// technically not a service client. ClientServiceInfo is in nature
// similar to ClientInfo, except it's stored in FetchReplyData (i.e.,
// trawler logs), whereas ClientInfo is copied to FetchReply (outside
// FetchReplyData), thus it's not stored in trawler logs.
type TrawlerClientServiceInfo struct {
	// DelegatedProjectName: Project delegation name to support bandwidth
	// enforcement. Harpoon will call SetDelegatedUser() with the specified
	// DelegatedProjectName and a domain associated with the RequestorID
	// provided in the client capatibility file.
	DelegatedProjectName string `json:"DelegatedProjectName,omitempty"`

	ServiceClientID string `json:"ServiceClientID,omitempty"`

	ClientLabels []*TrawlerClientServiceInfoClientLabels `json:"clientLabels,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DelegatedProjectName") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DelegatedProjectName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerClientServiceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerClientServiceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerClientServiceInfoClientLabels: ClientLabels contains
// client-specified key/value pairs, used to annotate individual
// FetchRequests and FetchReplies. This is primarily useful when the
// Multiverse Nexus performs postprocessing of fetchreplies.
// ClientLabels essentially allow clients to use the Nexus UI to slice
// statistics computed on fetchreplies by the specified key/value pairs.
// Note: we don't use "map" type here delibrately in order to avoid the
// non-deterministric serialization of the "map" field. See b/69064361
// for more details.
type TrawlerClientServiceInfoClientLabels struct {
	// LabelsDeprecated: ======================== End of Deprecated Part
	// ========================
	LabelsDeprecated map[string]TrawlerClientServiceInfoClientLabelsClientLabelValues `json:"labelsDeprecated,omitempty"`

	Name string `json:"name,omitempty"`

	Values []string `json:"values,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LabelsDeprecated") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LabelsDeprecated") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerClientServiceInfoClientLabels) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerClientServiceInfoClientLabels
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerClientServiceInfoClientLabelsClientLabelValues:
// ===================== Beginning of Deprecated Part
// ======================
type TrawlerClientServiceInfoClientLabelsClientLabelValues struct {
	Value []string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Value") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Value") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerClientServiceInfoClientLabelsClientLabelValues) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerClientServiceInfoClientLabelsClientLabelValues
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerContentRangeInfo: Parsed version of a Content-Range field,
// which in http might look like: Content-Range: bytes 500-999/3156
type TrawlerContentRangeInfo struct {
	EndPos int64 `json:"EndPos,omitempty,string"`

	// StartPos: In ContentRange, the first byte is 0 (rather than 1), and
	// the positions are inclusive. Thus, length is EndPos+1-StartPos
	StartPos int64 `json:"StartPos,omitempty,string"`

	TotalLength int64 `json:"TotalLength,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndPos") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndPos") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerContentRangeInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerContentRangeInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerCrawlTimes: This is similar to CrawlDates group in
// FetchReplyData, except that 1) it's a message; 2) it's filled in each
// Redirects hop; and 3) the timestamps are in ms rather than seconds
// since Unix Epoch.
type TrawlerCrawlTimes struct {
	// NotChangedTimeMs: fetched from the web. Time when the page was last
	NotChangedTimeMs int64 `json:"NotChangedTimeMs,omitempty,string"`

	// OriginalCrawlTimeMs: Time when the page was
	OriginalCrawlTimeMs int64 `json:"OriginalCrawlTimeMs,omitempty,string"`

	// ReuseTimeMs: checked but found to be the same as before. If set,
	// timestamp to indicate
	ReuseTimeMs int64 `json:"ReuseTimeMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "NotChangedTimeMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NotChangedTimeMs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerCrawlTimes) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerCrawlTimes
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerEvent: Event is for logging interesting events that happen
// during a url fetch. Interesting events include "fetch start", "url
// rejected", etc. The events are written to binary logs together with
// the request and reply messages. If the same event occurs multiple
// times consecutively, We record the time of the first three instances
// in EarliestTimeStamp but omit the rest. We keep track the total
// number of occurrences in NumOccurrences and the timestamp of the last
// occurrence is kept in TimeStamp field.
type TrawlerEvent struct {
	ID uint64 `json:"ID,omitempty,string"`

	Msg string `json:"Msg,omitempty"`

	NumOccurrences int64 `json:"NumOccurrences,omitempty"`

	// OldestTimeStampInUS: Limited to 3.
	OldestTimeStampInUS googleapi.Int64s `json:"OldestTimeStampInUS,omitempty"`

	TimeStampInUS int64 `json:"TimeStampInUS,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ID") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ID") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerEvent) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerEvent
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TrawlerFetchBodyData struct {
	// Possible values:
	//   "NO_COMPRESSION"
	//   "ZLIB_COMPRESSION" - RFC 1950
	//   "HTML_DICTIONARY_COMPRESSION" - RFC 1950 with html-dictionary
	Compression string `json:"compression,omitempty"`

	Content string `json:"content,omitempty"`

	// UncompressedSize: Size hint. Set if compression != NO_COMPRESSION
	UncompressedSize int64 `json:"uncompressedSize,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Compression") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Compression") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchBodyData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchBodyData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyData: Fetcher -> FetchClient FetchReplyData is the
// metadata for a reply from a FetchRequest. For metadata + document
// body, FetchReply is further below. NOTE: FetchReplyData (and
// FetchReply) is the output interface from Multiverse. Teams outside
// Multiverse/Trawler should not create fake FetchReplies. Trawler: When
// adding new fields here, it is recommended that at least the following
// be rebuilt and pushed: - cron_fetcher_index mapreduces: so that
// UrlReplyIndex, etc. retain the new fields - tlookup, tlookup_server:
// want to be able to return the new fields - logviewer, fetchutil:
// annoying to get back 'tag88:' in results --------------------------
// Next Tag: 124 -----------------------
type TrawlerFetchReplyData struct {
	// BadSSLCertificate: This field, if non-empty, contains the SSL
	// certificate chain from the server. The filed should be serialized
	// SSLCertificateInfo protobuf, although it used to be text format.
	// Hence, one should ideally use trawler::CertificateUtil to check this
	// field and understand in more detail. This field is populated in two
	// cases: (1) something is wrong with the server certificate and we
	// cannot verify the server's identity. In this case the URL most likely
	// won't display in a browser; (2) if you turned on
	// WantSSLCertificateChain in the FetchRequest. In this case the server
	// certificate may be perfectly fine (despite the field name). This is
	// for the initial hop; additional hops are in Redirects group.
	BadSSLCertificate string `json:"BadSSLCertificate,omitempty"`

	// ClientServiceInfo: Some client specific data that's set by client in
	// the FetchRequest, and we just copy it here verbatim. This is similar
	// to ClientInfo that we copy from FetchRequest to FetchReply, but this
	// is copied to FetchReplyData, thus stored in trawler logs so can be
	// useful for debugging cases.
	ClientServiceInfo *TrawlerClientServiceInfo `json:"ClientServiceInfo,omitempty"`

	// CompressedBody: Is the associated body compressed ?
	CompressedBody bool `json:"CompressedBody,omitempty"`

	CrawlTimes *TrawlerCrawlTimes `json:"CrawlTimes,omitempty"`

	// DNSHost: Sometimes the hostid and destination IP in the
	// FetchReplyData are not for the hostname in the url. If that's the
	// case DNSHost will be the host that we have used when resolving hostid
	// and DNS. Right now there are two cases: (1) malware team provides a
	// proxy IP:Port to us, so DNSHost will be the proxy IP; and (2) PSS
	// team provides a reference DNS host; so DNSHost will be the reference
	// DNS host.
	DNSHost string `json:"DNSHost,omitempty"`

	// DownloadTime: The download time for this fetch (ms). This is the RTT
	// time between fetcher and HOPE, note it does not include time from
	// redirects, just initial hop. If you want the sum of the DownloadTime
	// values for all fetches in the redirect chain, then use the
	// DownLoadTime value in the FetchStats.
	DownloadTime int64 `json:"DownloadTime,omitempty"`

	// EgressRegion: If present, the edge region that we have used.
	EgressRegion string `json:"EgressRegion,omitempty"`

	// EligibleGeoCrawlEgressRegion: If present, it means this host might be
	// eligible for geo crawl. However, this does not mean we enable
	// geo-crawl for this request. Check "GeoCrawlEgressRegion" instead to
	// see if this fetch is conducted via geo crawl.
	EligibleGeoCrawlEgressRegion string `json:"EligibleGeoCrawlEgressRegion,omitempty"`

	// Endpoints: ------- If fetched, the IP from which we fetched, as well
	// as source IP and ports. It is recommended to use
	// trawler::DestinationIP()/HasDestinationIP() accessors, which return a
	// proper IPAddress.
	Endpoints *TrawlerTCPIPInfo `json:"Endpoints,omitempty"`

	Events []*TrawlerEvent `json:"Events,omitempty"`

	// FetchPatternFp: With the introduction of fetch pattern based hostload
	// exceptions, one hostid may have multiple hostload buckets, each with
	// its own hostload. In this case, FetchPatternFp will be set to
	// identify the hostload bucket within the hostid. Note this field is
	// only meaningful for the HostBucketData which is recorded only when
	// the client requests to have as part of reply. However, this field is
	// useful for certain stats gathering, so we choose to always record it
	// if its value is available during the fetch.
	FetchPatternFp uint64 `json:"FetchPatternFp,omitempty,string"`

	// FlooEgressRegion: If present, fetch was conducted using floonet and
	// this is the location of floonet egress point we used.
	FlooEgressRegion string `json:"FlooEgressRegion,omitempty"`

	// GeoCrawlEgressRegion: If present, the last hop of the fetch was
	// conducted using floonet and this is the location of floonet egress
	// point. It is different from EgressRegion and FlooEgressREgion because
	// it is a Trawler transparent routing configured in the geo crawl
	// rules(go/da-geo-crawl).
	GeoCrawlEgressRegion string `json:"GeoCrawlEgressRegion,omitempty"`

	// GeoCrawlFallback: Whether we fallback from geo crawl to local crawl
	// during fetch. The fallback could happen in any hops and there can be
	// at most one fallback because once fallback happens, we will not try
	// geo-crawl anymore.
	GeoCrawlFallback bool `json:"GeoCrawlFallback,omitempty"`

	// GeoCrawlLocationAttempted: Set only when GeoCrawlFallback is true.
	// Logs the geo crawl location we attempted but failed for this request.
	GeoCrawlLocationAttempted string `json:"GeoCrawlLocationAttempted,omitempty"`

	// HSTSInfo: Set to: o HSTS_STATUS_NONE if there was no HSTS policy
	// match for the URL's host. o HSTS_STATUS_AVAILABLE if there was an
	// HSTS policy, but the URL was not rewritten from HTTP to HTTPS because
	// enable_hsts was not set in client capability config. o
	// HSTS_STATUS_REWRITTEN if the HSTS policy was followed and url was
	// rewritten from HTTP to HTTPS. This field only pertains to the current
	// URL fetch and does not explain a redirect's HSTS status. However,
	// FetchReplyData.Redirects have their own HSTSInfo.
	//
	// Possible values:
	//   "HSTS_STATUS_NONE" - No HSTS policy available for this fetch.
	//   "HSTS_STATUS_AVAILABLE" - There is an HSTS policy for this fetch
	// but the fetch URL was not applied.
	//   "HSTS_STATUS_REWRITTEN" - There is an HSTS policy for this fetch
	// and the URL was rewritten from HTTP -> HTTPS.
	HSTSInfo string `json:"HSTSInfo,omitempty"`

	// HTTPTrailers: The received HTTP trailers if available.
	HTTPTrailers []*TrawlerFetchReplyDataHTTPHeader `json:"HTTPTrailers,omitempty"`

	// HopCacheKeyForLookup: Returns the cache key used when doing cache
	// lookup/update, on a per-hop basis (initial hop) Note this field will
	// not be set if cache lookup/update is disabled/skipped.
	HopCacheKeyForLookup uint64 `json:"HopCacheKeyForLookup,omitempty,string"`

	HopCacheKeyForUpdate uint64 `json:"HopCacheKeyForUpdate,omitempty,string"`

	// HopReuseInfo: Returns trawler::ReuseInfo with status of IMS/IMF/cache
	// query, on a per-hop basis (initial hop) For example, if the URL
	// redirect chain is [URL A] --> [URL B] --> [URL C], this field stores
	// the reuse info of [URL A].
	//
	// Possible values:
	//   "RUI_NONE" - Neither IMS or IMF were enabled
	//   "RUI_IMS_CACHE_CURRENT" - IMS Had IMS enabled; but had cache hit;
	//   "RUI_IMS_NOT_MODIFIED" - so didn't need to do the fetch Did IMS and
	// got back 304
	//   "RUI_IMS_CHANGED" - Did IMS and got back non-304
	//   "RUI_IMF_NOCACHE" - IMF - UseBigTableIMF set IMF enabled; but
	// result wasn't in the cache
	//   "RUI_IMF_CACHE_CURRENT" - IMF enabled; but cached copy was current
	//   "RUI_IMF_HIT" - IMF enabled; had older cached copy;
	//   "RUI_IMF_CHANGED" - but got back 304; returned content IMF enabled;
	// had older cached copy;
	//   "RUI_IMF_POST_HIT_ERROR" - got back non-304; indicating change Got
	// back 304 on IMF; but cached copy failed;
	//   "RUI_CACHE_CURRENT" - ACCEPTABLE AGE; no IMF Cache hit
	//   "RUI_CACHE_EXPIRED" - Had content; but older than max
	//   "RUI_CACHE_NOCACHE" - No content in cache
	//   "RUI_CACHE_UNUSABLE" - Cache entry; but not usable
	//   "RUI_IMF_UNUSABLE" - Cache entry for IMF; but not usable
	//   "NUM_REUSE_INFO_VALS" - *** don't forget to update.
	HopReuseInfo string `json:"HopReuseInfo,omitempty"`

	// HopRobotsInfo: Extra information in robots.txt for this page
	// (integer: or'ed together of type trawler::RobotsInfo) on a per-hop
	// basis (initial hop)
	HopRobotsInfo int64 `json:"HopRobotsInfo,omitempty"`

	// HostBucketData: Data about the host bucket this request is in (if
	// desired) Please talk with Trawler team before considering using this,
	// since what we fill in here is subject to change.
	HostBucketData *TrawlerHostBucketData `json:"HostBucketData,omitempty"`

	// HostId: If known, the trawler::HostId that identifies the host
	// (initial hop).
	HostId uint64 `json:"HostId,omitempty,string"`

	// HttpProtocol: The http protocol we send to fetch this URL. This will
	// only be set if the request is using http
	//
	// Possible values:
	//   "PROTO_GET"
	//   "PROTO_POST"
	//   "PROTO_HEAD"
	//   "PROTO_PUT"
	//   "PROTO_DELETE"
	//   "PROTO_PATCH"
	//   "PROTO_OPTIONS"
	//   "FIRST_PROTO" - We list this after PROTO_* values to make sure
	//   "NUM_PROTOS" - HTTPProtocolType_Name(0) returns the correct string.
	HttpProtocol string `json:"HttpProtocol,omitempty"`

	// HttpRequestHeaders: The HTTP headers we sent to fetch this URL
	// (initial hop). Not normally filled in, unless
	// FetchParams.WantSentHeaders is set.
	HttpRequestHeaders string `json:"HttpRequestHeaders,omitempty"`

	// HttpResponseHeaders: HTTP headers from the response (initial hop).
	// Trawler does not fill this in; this is intended as a placeholder for
	// crawls like webmirror that fill in and want to track this across
	// redirect hops.
	HttpResponseHeaders string `json:"HttpResponseHeaders,omitempty"`

	// HttpVersion: Stores the HTTP version we used in the final hop.
	//
	// Possible values:
	//   "HTTP_11"
	//   "HTTP_10"
	//   "HTTP_09" - ??? do we want this ???
	//   "HTTP_2" - EXPERIMENTAL, DO NOT USE unless you have talked to
	//   "HTTP_AUTO" - trawler-dev@. Allow fetcher to automatically select
	// HTTP protocol
	//   "FIRST_VERSION" - version. The selection is based on prior
	// knowledge and dynamic server response. Basically, if the client and
	// the host is configured to allow HTTP/2 traffic, we will select HTTP/2
	// and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found
	// the server does not support HTTP/2 through ALPN. HTTP Version
	// selection will be applied to each redirect hop. More details about
	// HTTP/2 traffic configuration can be found in:
	// googledata/googlebot/http2_traffic_control_file. We list this after
	// HTTP_* values to make sure
	//   "NUM_VERSIONS" - HTTPVersion_Name(0) returns the correct string.
	HttpVersion string `json:"HttpVersion,omitempty"`

	// ID: Same as the ID of the matching request (used for matching
	// internal fetchclient data in request/reply)
	ID uint64 `json:"ID,omitempty,string"`

	// LastUrlStatus: Crawl status of the last url on chain
	LastUrlStatus *TrawlerFetchStatus `json:"LastUrlStatus,omitempty"`

	// PolicyData: Trawler can optionally add a policy label to a
	// FetchReply. Some uses: - "spam" label via trawler_site_info -
	// "roboted:googlebot" label as a signal to crawls supporting multiple
	// useragents that it's not safe to share the fetch replies with
	// googlebot crawls.
	PolicyData []*TrawlerPolicyData `json:"PolicyData,omitempty"`

	// PostData: If the fetch uses HTTP POST, PUT, or PATCH protocol, and
	// WantPostData is true, the POST data will be copied here. This is only
	// for initial hop. If there are redirects, HTTP POST will be changed to
	// GET on subsequent hops, and the PostData will be cleared. There is
	// only one exception, if the HTTP response code to the POST request is
	// 307 (a new code introduced in RFC7321, sec. 6.4.7), we will preserve
	// the request method and the PostData for the next hop.
	PostData string `json:"PostData,omitempty"`

	// PredictedDownloadTimeMs: This is available only if a fetch results in
	// TIMEOUT_WEB, and we were able to predict, based on content length and
	// bandwidth we were using, how much time (in ms) would be needed to
	// download the entire content.
	PredictedDownloadTimeMs int64 `json:"PredictedDownloadTimeMs,omitempty"`

	// ProtocolVersionFallback: Whether we fallback from HTTP/2 to HTTP/1.1
	// during fetch. The fallback could happen in any hops and there can be
	// at most one fallback because once fallback happens, we will not try
	// HTTP/2 anymore.
	ProtocolVersionFallback bool `json:"ProtocolVersionFallback,omitempty"`

	// RedirectSourceFetchId: If this fetch was a result of a redirect, we
	// populate the parent ID here.
	RedirectSourceFetchId uint64 `json:"RedirectSourceFetchId,omitempty,string"`

	// RequestorID: RequestorId is the same on as in the request that
	// triggers this reply -- mainly for diagnostics purpose
	RequestorID string `json:"RequestorID,omitempty"`

	// RequestorIPAddressPacked: Machine that sent Trawler this request, for
	// logging. An IPAddress object, packed as a string.
	RequestorIPAddressPacked string `json:"RequestorIPAddressPacked,omitempty"`

	// ReuseInfo: -------- Returns trawler::ReuseInfo with status of
	// IMS/IMF/cache query. Consider using HopReuseInfo instead, which has
	// per-redirect hop detail. If there's URL redirection, this field
	// stores the reuse info of the last hop. For example, if the and URL
	// redirect chain is [URL A] --> [URL B] --> [URL C], this field stores
	// the reuse info of [URL C].
	//
	// Possible values:
	//   "RUI_NONE" - Neither IMS or IMF were enabled
	//   "RUI_IMS_CACHE_CURRENT" - IMS Had IMS enabled; but had cache hit;
	//   "RUI_IMS_NOT_MODIFIED" - so didn't need to do the fetch Did IMS and
	// got back 304
	//   "RUI_IMS_CHANGED" - Did IMS and got back non-304
	//   "RUI_IMF_NOCACHE" - IMF - UseBigTableIMF set IMF enabled; but
	// result wasn't in the cache
	//   "RUI_IMF_CACHE_CURRENT" - IMF enabled; but cached copy was current
	//   "RUI_IMF_HIT" - IMF enabled; had older cached copy;
	//   "RUI_IMF_CHANGED" - but got back 304; returned content IMF enabled;
	// had older cached copy;
	//   "RUI_IMF_POST_HIT_ERROR" - got back non-304; indicating change Got
	// back 304 on IMF; but cached copy failed;
	//   "RUI_CACHE_CURRENT" - ACCEPTABLE AGE; no IMF Cache hit
	//   "RUI_CACHE_EXPIRED" - Had content; but older than max
	//   "RUI_CACHE_NOCACHE" - No content in cache
	//   "RUI_CACHE_UNUSABLE" - Cache entry; but not usable
	//   "RUI_IMF_UNUSABLE" - Cache entry for IMF; but not usable
	//   "NUM_REUSE_INFO_VALS" - *** don't forget to update.
	ReuseInfo string `json:"ReuseInfo,omitempty"`

	// RobotsInfo: Extra information in robots.txt for this page (ORed
	// together bits from trawler::RobotsInfo). e.g. nosnippet vs. noarchive
	// vs nofollow vs noindex vs disallow Consider using HopRobotsInfo
	// instead, which has per-redirect hop detail.
	RobotsInfo int64 `json:"RobotsInfo,omitempty"`

	// RobotsStatus: Status of the robots.txt fetch. Currently, this is
	// present if: - Certain robots error cases, such as
	// URL_TIMEOUT-TIMEOUT_ROBOTS or
	// URL_UNREACHABLE-UNREACHABLE_ROBOTS_ERROR. - If WantRobotsBody is set
	// in the FetchParams.
	RobotsStatus *TrawlerFetchStatus `json:"RobotsStatus,omitempty"`

	// RobotsTxt: The robots.txt we used for this URL (initial hop). Not
	// normally filled in unless WantRobotsBody is set. This is mostly for
	// debugging purposes and should not be used for large volumes of
	// traffic.
	RobotsTxt string `json:"RobotsTxt,omitempty"`

	// Status: Status of the fetch - refers to the final status at the end
	// of the redirect chain.
	Status *TrawlerFetchStatus `json:"Status,omitempty"`

	// ThrottleClient: If present, Client API will enforce the contained
	// constraints
	ThrottleClient *TrawlerThrottleClientData `json:"ThrottleClient,omitempty"`

	// ThrownAwayBytes: Sometimes we throw away content because we cannot
	// store it in the internal buffers. These is how many bytes we have
	// thrown away for this factor.
	ThrownAwayBytes int64 `json:"ThrownAwayBytes,omitempty,string"`

	// TimestampInMS: When this reply came back from fetcher NOTE:
	// TimestampInMS is used for internal debugging. To see when a document
	// was crawled, check CrawlDates.
	TimestampInMS int64 `json:"TimestampInMS,omitempty,string"`

	// TotalFetchedSize: How many raw bytes we read from the connection to
	// the server when we fetched the page. Includes everything: HTTP
	// headers, overhead for HTTP chunked encoding, whatever
	// compressed/uncompressed form (i.e. gzip/deflate accept-encoding) the
	// content was sent in, etc. This is NOT the same as the size of the
	// uncompressed FetchReply::Body - if the webserver used gzip encoding,
	// this value might be much smaller, since it only counts the compressed
	// wire size. To illustrate, think of 3 sizes: 1) TotalFetchedSize -
	// amount Trawler read over the wire from the server. If they used
	// gzip/deflate, this might be 4-5x smaller than the body. 2)
	// UnTruncatedSize/CutoffSize - how big is the full document, after
	// uncompressing any gzip/deflate encoding? If truncated, this is
	// reflected in CutoffSize. 3) FetchReply::Body size - most crawls
	// enable Trawler compression to save storage space (gzip + a google
	// html dictionary). The body size that the end Trawler client sees is
	// post-compression.
	TotalFetchedSize int64 `json:"TotalFetchedSize,omitempty,string"`

	// TransparentRewrites: If the url got rewriten by transparent rewrites,
	// here it is the series of rewrites it got through. The fetched one is
	// the last
	TransparentRewrites []string `json:"TransparentRewrites,omitempty"`

	// TrawlerPrivate: For logging only; not present in the actual fetcher
	// response
	TrawlerPrivate *TrawlerTrawlerPrivateFetchReplyData `json:"TrawlerPrivate,omitempty"`

	// Url: The original url in the request we are answering. Even though
	// "optional," url must be filled in on all well-formed replies. Trawler
	// guarantees that it is filled in, and basically every client expects
	// it (CHECKs in some cases). -> Not filling this field in is a bug, if
	// you share this data with other crawls/pipelines. You should expect
	// everybody else to require a url.
	Url string `json:"Url,omitempty"`

	// UrlEncoding: Encoding info for the original url itself. Bitfield
	// encoding; see UrlEncoding::{Set,Get}Value in webutil/urlencoding.
	UrlEncoding int64 `json:"UrlEncoding,omitempty"`

	// UseHtmlCompressDictionary: Use the special compression dictionary for
	// uncompressing this. (trawler::kHtmlCompressionDict. Use
	// trawler::FetchReplyUncompressor to uncompress;
	// crawler/trawler/public/fetchreply-util.h)
	UseHtmlCompressDictionary bool `json:"UseHtmlCompressDictionary,omitempty"`

	Crawldates *TrawlerFetchReplyDataCrawlDates `json:"crawldates,omitempty"`

	// DeliveryReport: Transfer operation detailed report.
	DeliveryReport *TrawlerFetchReplyDataDeliveryReport `json:"deliveryReport,omitempty"`

	Fetchstats *TrawlerFetchReplyDataFetchStats `json:"fetchstats,omitempty"`

	// OriginalProtocolUrl: If the input url in FetchRequest is Amazon S3
	// protocol or Apple Itunes protocol, we will translate it into https
	// url and log it as https url. In the meantime we will store the
	// original s3/itunes url in this field. Before sending back to client,
	// the Url will be translated back to s3 and this field will be cleard.
	OriginalProtocolUrl string `json:"originalProtocolUrl,omitempty"`

	Partialresponse *TrawlerFetchReplyDataPartialResponse `json:"partialresponse,omitempty"`

	Protocolresponse *TrawlerFetchReplyDataProtocolResponse `json:"protocolresponse,omitempty"`

	Redirects []*TrawlerFetchReplyDataRedirects `json:"redirects,omitempty"`

	// TrafficType: Traffic type of this fetch.
	//
	// Possible values:
	//   "TRAFFIC_TYPE_UNSPECIFIED"
	//   "TRAFFIC_TYPE_NO_FETCH" - Not fetch traffic is consisted of
	// requests that we schedule it as notification for clients, but not
	// need to actually fetch.
	//   "TRAFFIC_TYPE_ONEOFF_CRAWL" - As the name suggests, oneoff crawl
	// means client just needs to crawl the URLs once.
	//   "TRAFFIC_TYPE_DISCOVERY" - Discovery traffic is consisted of the
	// new URLs discovered by Multiverse, that we have never seen in the
	// crawl history.
	//   "TRAFFIC_TYPE_REFRESH" - The context of refresh crawl is that
	// client needs to check the content of some URLs periodically, so they
	// refresh those URLs regularly.
	TrafficType string `json:"trafficType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BadSSLCertificate")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BadSSLCertificate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataCrawlDates: Reuse information returned if
// UrlState == CRAWLED, specifying when we may have reused from cache.
// See also ReuseInfo below. NOTE: Please use the CrawlTimes below.
// CrawlDates is deprecated. use CrawlTimes instead!
type TrawlerFetchReplyDataCrawlDates struct {
	// NotChangedDate: fetched from the web. Timestamp indicates when
	NotChangedDate int64 `json:"NotChangedDate,omitempty"`

	// OriginalCrawlDate: Timestamp when the page was
	OriginalCrawlDate int64 `json:"OriginalCrawlDate,omitempty"`

	// ReuseDate: the page was last checked but found to be the same as
	// before. If set, timestamp to indicate
	ReuseDate int64 `json:"ReuseDate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NotChangedDate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NotChangedDate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataCrawlDates) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataCrawlDates
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataDeliveryReport: Depending on which Data
// Acquisition API the client uses, the fetched content can be delivered
// to the client in the RPC, via Goops, or copied to the client's
// storage system (possibly after transformation). In the latter case,
// DeliveryReport will contain info about the delivery status, such as
// whether we have permission error, whether the destination storage is
// out of quota, etc).
type TrawlerFetchReplyDataDeliveryReport struct {
	// Events: The events store the detail of messages (usually error).
	Events []*TrawlerEvent `json:"events,omitempty"`

	// FilePath: The complete path (include the file name) of the file
	// downloaded. For requests that require delivery, this path will be the
	// user specified location. For requests that use Multiverse default
	// storage, this path will be the managed by Multiverse.
	FilePath string `json:"filePath,omitempty"`

	// Status: Status of the transfer action.
	//
	// Possible values:
	//   "TRANSFER_UNSPECIFIED"
	//   "TRANSFER_OK" - Everything looks good!
	//   "TRANSFER_UNAVAILABLE" - The service is currently unavailable. This
	// is most likely a transient condition, which can be corrected by
	// retrying with a backoff. Note that it is not always safe to retry
	// non-idempotent operations.
	//   "TRANSFER_INTERNAL" - Internal errors. This means that some
	// invariants expected by the underlying system have been broken.
	//   "TRANSFER_INVALID_DESTINATION" - File can't be moved to the
	// specified destination. Most likely due to an invalid destination or
	// invalid destination configuration.
	//   "TRANSFER_PERMISSION_DENIED" - The request does not have valid
	// authentication credentials for the operation.
	//   "TRANSFER_RESOURCE_EXHAUSTED" - Some resource has been exhausted,
	// perhaps a per-user quota, or perhaps the entire file system is out of
	// space.
	//   "TRANSFER_NOT_ATTEMPTED" - The transfer did not start, typically
	// because of the fetch failure.
	Status string `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Events") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Events") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataDeliveryReport) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataDeliveryReport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataFetchStats: The fetcher keeps track of various
// time intervals spent in the states of the fetcher url control flow.
// Sometimes flows branch out into more than one flow (next flow), and
// we aggregate all the time intervals spent in a specific state for all
// the flows to get the time interval for the state. The time interval
// for a state is therefore not the time interval of an individual flow,
// if the WaitNextFlow time is non zero. The WaitNextFlow interval
// included here is the time spent by one flow waiting for another flow.
// Although the WaitNextFlow time is the time spent by a flow in the
// WaitNextFlow state, its also equivalent to the entire timeline of
// another flow. It is the time spent in the various states of another
// flow. In computing the total time spent in the primary flow, one must
// omit the WaitNextFlow time, since it is already included in the form
// of slices of individual state time intervals in the aggregated time
// intervals for other states, and will result in double counting.
type TrawlerFetchReplyDataFetchStats struct {
	// BotOverheadMS: Overhead spent RPCing with the Bot/proxy.
	BotOverheadMS int64 `json:"BotOverheadMS,omitempty"`

	ClientControlflowStats *TrawlerFetchReplyDataFetchStatsClientStateStats `json:"ClientControlflowStats,omitempty"`

	// ConnectTimeMs: Report only with first request on connection, so that
	// we keep track of the connect time with a host. Sometimes a connection
	// is initiated by a prior request that times out before the connection
	// is established. Another request can get scheduled on a connection
	// that is already in the process of being established but has no
	// request scheduled onto it. We want to keep track of the entire
	// connect time even if a request didn't need to wait for the entire
	// connection establishment time. Sometimes a connection may get
	// established before the first request uses it. We tag along the
	// connect time with the first request using the connection.
	// ConnectTimeMs also includes SSL negotiation time.
	ConnectTimeMs int64 `json:"ConnectTimeMs,omitempty"`

	ControlflowStats *TrawlerFetchReplyDataFetchStatsStateStats `json:"ControlflowStats,omitempty"`

	// DownLoadTime: DownLoadTime = Share of connect time +
	// ServerResponseTimeMs + TransferTimeMs (see below) in ms
	DownLoadTime int64 `json:"DownLoadTime,omitempty"`

	// EdgeEgressOverheadMs: Overhead spent routing the request from HOPE to
	// edge egress nodes, which open connection to webservers. This is only
	// set for edge fetches (e.g., through Floonet egress nodes).
	EdgeEgressOverheadMs int64 `json:"EdgeEgressOverheadMs,omitempty"`

	// SSLConnectTimeMs: ConnectTimeMs includes TCP connect time + SSL time,
	// whereas SSLConnectTimeMs includes only the latter.
	SSLConnectTimeMs int64 `json:"SSLConnectTimeMs,omitempty"`

	// ServerResponseTimeMs: Time between the request send and the receipt
	// of the first fragment of the response. For HTTP responses the first
	// fragment is the first fragment of the response payload (the headers
	// are ignored).
	ServerResponseTimeMs int64 `json:"ServerResponseTimeMs,omitempty"`

	// TransferTimeMs: Time to receive the entire response payload starting
	// the clock on receiving the first fragment.
	TransferTimeMs int64 `json:"TransferTimeMs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BotOverheadMS") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BotOverheadMS") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataFetchStats) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataFetchStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataFetchStatsClientStateStats: Records stats about
// state changes on the client side if there're any. For example,
// there's a state of cache lookup when using private-cache client
// library.
type TrawlerFetchReplyDataFetchStatsClientStateStats struct {
	WaitContentCacheUsec int64 `json:"WaitContentCacheUsec,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "WaitContentCacheUsec") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WaitContentCacheUsec") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataFetchStatsClientStateStats) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataFetchStatsClientStateStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataFetchStatsStateStats: The following are only
// populated if Params.WantStateStats is true.
type TrawlerFetchReplyDataFetchStatsStateStats struct {
	EndTrackingTimeUsec int64 `json:"EndTrackingTimeUsec,omitempty,string"`

	// StartTrackingTimeUsec: Start and end timestamp tracking the delays
	// for this request.
	StartTrackingTimeUsec int64 `json:"StartTrackingTimeUsec,omitempty,string"`

	WaitCompressTimeUsec int64 `json:"WaitCompressTimeUsec,omitempty"`

	WaitContentCacheUsec int64 `json:"WaitContentCacheUsec,omitempty"`

	WaitCredentialTimeUsec int64 `json:"WaitCredentialTimeUsec,omitempty"`

	WaitDNSTimeUsec int64 `json:"WaitDNSTimeUsec,omitempty"`

	WaitFetchClientUsec int64 `json:"WaitFetchClientUsec,omitempty"`

	WaitForCachedContentStreamingUsec int64 `json:"WaitForCachedContentStreamingUsec,omitempty"`

	WaitForFetchUsec int64 `json:"WaitForFetchUsec,omitempty"`

	WaitHostIdTimeUsec int64 `json:"WaitHostIdTimeUsec,omitempty"`

	WaitNextFlowUsec int64 `json:"WaitNextFlowUsec,omitempty"`

	// WaitRobotsCacheTimeUsec: obsolete. Not set.
	WaitRobotsCacheTimeUsec int64 `json:"WaitRobotsCacheTimeUsec,omitempty"`

	// WaitRobotsFetchTimeUsec: obsolete. Not set.
	WaitRobotsFetchTimeUsec int64 `json:"WaitRobotsFetchTimeUsec,omitempty"`

	WaitRobotsTimeUsec int64 `json:"WaitRobotsTimeUsec,omitempty"`

	WaitScheduleTimeUsec int64 `json:"WaitScheduleTimeUsec,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTrackingTimeUsec")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTrackingTimeUsec") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataFetchStatsStateStats) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataFetchStatsStateStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataHTTPHeader: header : value
type TrawlerFetchReplyDataHTTPHeader struct {
	Key string `json:"key,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataHTTPHeader) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataHTTPHeader
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataPartialResponse:
// ----------------------------------------------------------------------
//
//	PartialResponse is used with streaming responses in
//
// LargeFileFetchAdapter. Rather than fitting entirely in a single
// FetchReply, there is a series of FetchReplies until IsFinalResponse.
// Each group of responses will have a unique FetchID to link them.
type TrawlerFetchReplyDataPartialResponse struct {
	// BodyLocation: If set, indicates where the fetched body is, e.g. a CNS
	// file path. FetchReply.Body should be empty in this case. In the case
	// where client does not support streaming but the content is too large
	// to be accumulated in memory, we keep writing the streaming chunks to
	// some storage unit and notify client when it is done.
	BodyLocation string `json:"BodyLocation,omitempty"`

	// ChunkNumber: Fetch number in this series of fetches
	ChunkNumber int64 `json:"ChunkNumber,omitempty"`

	// ContentRange: If there is a Content-Range header, the ranges in it
	ContentRange *TrawlerContentRangeInfo `json:"ContentRange,omitempty"`

	// ETag: Any ETag seen in the headers
	ETag string `json:"ETag,omitempty"`

	// FetchID: ID which links all partial fetches for this url
	FetchID uint64 `json:"FetchID,omitempty,string"`

	// IsFinalResponse: Is this the final response for this fetch?
	IsFinalResponse bool `json:"IsFinalResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BodyLocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BodyLocation") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataPartialResponse) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataPartialResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataProtocolResponse: Group with protocol specific
// response (determined by the protocol of the url that generated the
// content we return).
type TrawlerFetchReplyDataProtocolResponse struct {
	// Code: Response code. We emulate the HTTP response codes for all
	// protocols that we know. -- HTTP: response code for the downloaded
	// page. -- FTP: similar with HTTP: 200 - OK, 40X - errors (not found,
	// etc), 500 - server unavailable
	Code int64 `json:"Code,omitempty"`

	// ContentType: Content type as inferred by the fetcher
	// (webutil/http/content-type.proto)
	//
	// Possible values:
	//   "CONTENT_FIRST_TYPE"
	//   "CONTENT_GOOGLE_ERROR" - Initialization value, never used
	//   "CONTENT_GOOGLE_EMPTY" - empty page
	//   "CONTENT_GOOGLE_OTHER" - none of the types below, unknown
	//   "CONTENT_TEXT_HTML"
	//   "CONTENT_TEXT_PLAIN"
	//   "CONTENT_APPLICATION_POSTSCRIPT"
	//   "CONTENT_APPLICATION_PDF"
	//   "CONTENT_TEXT_WML"
	//   "CONTENT_GOOGLE_WHITEPAGE"
	//   "CONTENT_TEXT_HDML"
	//   "CONTENT_TEXT_PDF" - PDF converted to HTML
	//   "CONTENT_GOOGLE_USENET"
	//   "CONTENT_IMAGE" - image, not one of the image types
	//   "CONTENT_IMAGE_THUMBNAIL" - below
	//   "CONTENT_AUDIO_MP3"
	//   "CONTENT_TEXT_POSTSCRIPT" - POSTSCRIPT converted to HTML
	//   "CONTENT_APPLICATION_MSWORD"
	//   "CONTENT_TEXT_MSWORD" - MSWORD converted to HTML
	//   "CONTENT_APPLICATION_MS_POWERPOINT"
	//   "CONTENT_TEXT_MS_POWERPOINT" - POWERPOINT converted to HTML
	//   "CONTENT_APPLICATION_RTF"
	//   "CONTENT_TEXT_RTF" - RTF converted to HTML
	//   "CONTENT_APPLICATION_MS_EXCEL"
	//   "CONTENT_TEXT_MS_EXCEL" - EXCEL converted to HTML
	//   "CONTENT_TEXT_OTHER" - unknown content type converted to HTML
	//   "CONTENT_APPLICATION_XSHOCKWAVEFLASH"
	//   "CONTENT_TEXT_XSHOCKWAVEFLASH" - SWF converted to HTML
	//   "CONTENT_APPLICATION_XGZIP"
	//   "CONTENT_IMAGE_JPEG"
	//   "CONTENT_IMAGE_XDJVU"
	//   "CONTENT_SCAN_ATTR"
	//   "CONTENT_SCAN_FAKE_HTML"
	//   "CONTENT_GOOGLE_QECONOMY"
	//   "CONTENT_GOOGLE_FROOGLE_OFFER"
	//   "CONTENT_GOOGLE_DPL"
	//   "CONTENT_GOOGLE_YP"
	//   "CONTENT_APPLICATION_XML"
	//   "CONTENT_GOOGLE_OCEAN_METADATA"
	//   "CONTENT_GOOGLE_LOCALSEARCH"
	//   "CONTENT_BINARY_OTHER"
	//   "CONTENT_APPLICATION_ATOM_XML"
	//   "CONTENT_APPLICATION_RDF_XML"
	//   "CONTENT_APPLICATION_RSS_XML"
	//   "CONTENT_APPLICATION_XHTML_XML"
	//   "CONTENT_APPLICATION_OCTET_STREAM"
	//   "CONTENT_TEXT_XML"
	//   "CONTENT_GOOGLE_OCEAN_DOC"
	//   "CONTENT_IMAGE_PNG"
	//   "CONTENT_IMAGE_GIF"
	//   "CONTENT_IMAGE_TIFF"
	//   "CONTENT_APPLICATION_ZIP_ARCHIVE"
	//   "CONTENT_TEXT_ZIP_ARCHIVE" - ZIP_ARCHIVE converted to HTML
	//   "CONTENT_APPLICATION_XGZIP_ARCHIVE"
	//   "CONTENT_TEXT_XGZIP_ARCHIVE" - XGZIP_ARCHIVE converted to HTML
	//   "CONTENT_APPLICATION_XTAR_ARCHIVE"
	//   "CONTENT_TEXT_XTAR_ARCHIVE" - XTAR_ARCHIVE converted to HTML
	//   "CONTENT_APPLICATION_XCOMPRESS_ARCHIVE"
	//   "CONTENT_TEXT_XCOMPRESS_ARCHIVE" - XCOMPRESS_ARCHIVE converted to
	// HTML
	//   "CONTENT_APPLICATION_WAP_XHTML"
	//   "CONTENT_APPLICATION_XJAVASCRIPT"
	//   "CONTENT_APPLICATION_JAVASCRIPT"
	//   "CONTENT_APPLICATION_ECMASCRIPT"
	//   "CONTENT_TEXT_JAVASCRIPT"
	//   "CONTENT_TEXT_ECMASCRIPT"
	//   "CONTENT_APPLICATION_KML"
	//   "CONTENT_APPLICATION_KMZ_ARCHIVE"
	//   "CONTENT_TEXT_KML" - KML/KMZ converted to HTML
	//   "CONTENT_APPLICATION_DWF"
	//   "CONTENT_DRAWING_DWF"
	//   "CONTENT_TEXT_DWF" - DWF converted to HTML
	//   "CONTENT_APPLICATION_ODF" - OASIS OpenDocument formats
	//   "CONTENT_TEXT_ODF" - (16 real MIME types) ODF converted to HTML
	//   "CONTENT_GOOGLE_NEW"
	//   "CONTENT_APPLICATION_OPENXML_WORD"
	//   "CONTENT_TEXT_OPENXML_WORD" - OPENXML_WORD converted to HTML
	//   "CONTENT_APPLICATION_OPENXML_EXCEL"
	//   "CONTENT_TEXT_OPENXML_EXCEL" - OPENXML_EXCEL converted to HTML
	//   "CONTENT_APPLICATION_OPENXML_POWERPOINT"
	//   "CONTENT_TEXT_OPENXML_POWERPOINT" - OPENXML_POWERPOINT converted to
	// HTML
	//   "CONTENT_APPLICATION_OPENXML" - Generic office 2007 document.
	//   "CONTENT_TEXT_CSS"
	//   "CONTENT_APPLICATION_JSON"
	//   "CONTENT_TEXT_CROSS_DOMAIN_POLICY"
	//   "CONTENT_APPLICATION_GPX_XML" - http://www.topografix.com/GPX/1/1/
	//   "CONTENT_APPLICATION_ENDNOTE_STYLE"
	//   "CONTENT_TEXT_ENDNOTE_STYLE" - ENDNOTE_STYLE converted to HTML
	//   "CONTENT_APPLICATION_XPROTOBUFFER" - Use
	// CONTENT_APPLICATION_XPROTOBUF instead. See
	// go/spectrejs#use-canonical-content-types.
	//   "CONTENT_APPLICATION_OPENSEARCHDESCRIPTION_XML" -
	// http://go/searchdomaincheck
	//   "CONTENT_TEXT_CACHE_MANIFEST" - HTML 5 - http://whatwg.org
	//   "CONTENT_VIDEO_3GPP"
	//   "CONTENT_APPLICATION_ADOBE_ACSM" - Adobe Content Server message
	//   "CONTENT_MODEL_DWFX"
	//   "CONTENT_IMAGE_SVG_XML" -
	// http://www.w3.org/TR/SVG/intro.html#MIMEType
	//   "CONTENT_APPLICATION_XHWP" - Hangul Word Processor
	//   "CONTENT_TEXT_XHWP" - HWP converted to HTML
	//   "CONTENT_APPLICATION_EPUB_ZIP"
	//   "CONTENT_APPLICATION_X_WINDOWS_EXECUTABLE" - Windows executable
	// files.
	//   "CONTENT_APPLICATION_TEX_LATEX" - LaTeX or TeX
	//   "CONTENT_TEXT_TEX_LATEX" - LaTeX or TeX content converted to html
	//   "CONTENT_APPLICATION_SAFEBROWSING_UPDATE" - SafeBrowsing update
	// response
	//   "CONTENT_APPLICATION_SAFEBROWSING_CHUNK" - SafeBrowsing chunk data
	//   "CONTENT_APPLICATION_SAFEBROWSING_KEY" - SafeBrowsing key response
	//   "CONTENT_VIDEO_X_MS_ASF" - MS Advanced Systems Format container.
	//   "CONTENT_APPLICATION_XBZIP" - For Bzip2 compressed files.
	//   "CONTENT_APPLICATION_OCTET_STREAM_COMPRESSIBLE" - For binary
	// content
	//   "CONTENT_IMAGE_X_ICON" - that is OK to be compressed. Equivalent to
	// application/octet-stream but listed in net/http/gzip_rules.txt as
	// safe to gzip.
	//   "CONTENT_APPLICATION_ICS" - Calendar files.
	//   "CONTENT_IMAGE_WEBP"
	//   "CONTENT_IMAGE_BMP" - BMP image files.
	//   "CONTENT_FONT_TTF"
	//   "CONTENT_FONT_OTF"
	//   "CONTENT_FONT_WOFF"
	//   "CONTENT_FONT_WOFF2"
	//   "CONTENT_APPLICATION_CSP_REPORT"
	//   "CONTENT_VIDEO_MP2T"
	//   "CONTENT_TEXT_X_VCALENDAR"
	//   "CONTENT_FONT_EOT"
	//   "CONTENT_APPLICATION_XMPEG_URL"
	//   "CONTENT_APPLICATION_X_BROTLI_DICT_COMPRESSED" - Brotli compound
	// dict.
	//   "CONTENT_VIDEO_MP4" - Used to return streams compressed with brotli
	// and a shared dictionary between client and server. Used by AGSA,
	// Google Go and other clients in the interim period before the
	// standardization of shared brotli. Handles the video/mp4 content type
	//   "CONTENT_AUDIO_MP4" - Handles the audio/mp4 content type
	//   "CONTENT_APPLICATION_MANIFEST_JSON" - Handles the manifest content
	// type
	//   "CONTENT_APPLICATION_MS_TNEF" - Handles the application/ms-tnef
	// type
	//   "CONTENT_TEXT_EPUB_ZIP" - EPUB converted to HTML
	//   "CONTENT_APPLICATION_FB2_XML" -
	// http://fictionbook.org/index.php/Eng:FictionBook
	//   "CONTENT_TEXT_FB2_XML" - FB2 converted to HTML
	//   "CONTENT_APPLICATION_WASM" - WebAssembly binary format
	//   "CONTENT_APPLICATION_GEO_JSON" - GeoJSON
	//   "CONTENT_TEXT_CSV" - Comma-separated values (CSV)
	//   "CONTENT_APPLICATION_XPROTOBUF" - Binary protocol buffers
	//   "CONTENT_VIDEO_WEBM" - Handles the video/webm content type
	//   "CONTENT_AUDIO_WEBM" - Handles the audio/webm content type
	//   "CONTENT_TEXT_CONVERTED_XML" - CONTENT_APPLICATION_XML or
	//   "CONTENT_NUM_TYPES" - CONTENT_TEXT_XML converted to HTML. Add new
	// content types above this
	ContentType string `json:"ContentType,omitempty"`

	// CutoffSize: Where did we cut off? Includes headers plus truncated but
	// uncompressed content. Present if and only if we truncated the
	// document.
	CutoffSize int64 `json:"CutoffSize,omitempty,string"`

	// HttpVersion: DEPRECATED, see field 113. Stores the HTTP version we
	// used in the final hop.
	//
	// Possible values:
	//   "HTTP_11"
	//   "HTTP_10"
	//   "HTTP_09" - ??? do we want this ???
	//   "HTTP_2" - EXPERIMENTAL, DO NOT USE unless you have talked to
	//   "HTTP_AUTO" - trawler-dev@. Allow fetcher to automatically select
	// HTTP protocol
	//   "FIRST_VERSION" - version. The selection is based on prior
	// knowledge and dynamic server response. Basically, if the client and
	// the host is configured to allow HTTP/2 traffic, we will select HTTP/2
	// and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found
	// the server does not support HTTP/2 through ALPN. HTTP Version
	// selection will be applied to each redirect hop. More details about
	// HTTP/2 traffic configuration can be found in:
	// googledata/googlebot/http2_traffic_control_file. We list this after
	// HTTP_* values to make sure
	//   "NUM_VERSIONS" - HTTPVersion_Name(0) returns the correct string.
	HttpVersion string `json:"HttpVersion,omitempty"`

	// ProtocolVersionFallback: DEPRECATED, see field 114. Whether we
	// fallback from HTTP/2 to HTTP/1.1 during fetch. The fallback could
	// happen in any hops and there can be at most one fallback because once
	// fallback happens, we will not try HTTP/2 anymore.
	ProtocolVersionFallback bool `json:"ProtocolVersionFallback,omitempty"`

	// UnTruncatedSize: The amount of data we got from the webserver before
	// any truncation, but after undoing any HTTP gzip/deflate encoding. For
	// HTTP, this includes headers and uncompressed content. Content size is
	// excluded if content was not successfully fetched. See description
	// above TotalFetchedSize for comparison.
	UnTruncatedSize int64 `json:"UnTruncatedSize,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataProtocolResponse) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataProtocolResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerFetchReplyDataRedirects: The sequence of redirects fetched, if
// applicable. This includes url plus stats for each hop after the first
// hop. NOTE: This can be one redirect longer than the chain of
// redirects *followed*, in the case where there was a redirect at the
// end of the chain that the fetcher detected but did not follow.
type TrawlerFetchReplyDataRedirects struct {
	// BadSSLCertificate: The server SSL certificate chain in
	// SSLCertificateInfo protobuf format. See this field in FetchReplyData
	// (i.e., the initial hop) for more description on when it will be
	// populated.
	BadSSLCertificate string `json:"BadSSLCertificate,omitempty"`

	// CrawlTimes: Per redirect hop timestamps. This
	CrawlTimes *TrawlerCrawlTimes `json:"CrawlTimes,omitempty"`

	// DownloadTime: Download time of this fetch (ms)
	DownloadTime int64 `json:"DownloadTime,omitempty"`

	// Endpoints: ## stats If fetched, ip info.
	Endpoints *TrawlerTCPIPInfo `json:"Endpoints,omitempty"`

	// HSTSInfo: This specifies if the url in a redirect was rewritten to
	// HTTPS because of an HSTS policy for the domain. See comments on
	// FetchReplyData.HSTSInfo for how this field's values. A redirect that
	// was rewritten with HSTS will have HSTS_STATUS_REWRITTEN ## here.
	//
	// Possible values:
	//   "HSTS_STATUS_NONE" - No HSTS policy available for this fetch.
	//   "HSTS_STATUS_AVAILABLE" - There is an HSTS policy for this fetch
	// but the fetch URL was not applied.
	//   "HSTS_STATUS_REWRITTEN" - There is an HSTS policy for this fetch
	// and the URL was rewritten from HTTP -> HTTPS.
	HSTSInfo string `json:"HSTSInfo,omitempty"`

	// HTTPResponseCode: The HTTP response code for this hop. We need this
	// since multiple response codes may have the same redirect type (e.g.,
	// 302 and 307 are both REDIRECT_TEMPORARILY), but clients may want to
	// know which one was received. Note this is set only for the hops that
	// are followed (i.e., TargetUrl is present). If the last redirect hop
	// was not followed the fetch status will be URL_NOT_FOLLOWED, and the
	// response code will be in the top level ProtocolResponse field.
	HTTPResponseCode int64 `json:"HTTPResponseCode,omitempty"`

	// HopPageNoIndexInfo: Extra trawler::PageNoIndexInfo for this hop.
	// Integer: ORed together bits from trawler::PageNoIndexInfo. The
	// information specified by this field comes from the http header or
	// content of the source url, not the "TargetUrl" in this Redirects
	// group.
	HopPageNoIndexInfo int64 `json:"HopPageNoIndexInfo,omitempty"`

	// HopReuseInfo: trawler::ReuseInfo with status of IMS/IMF/cache query,
	// for this hop.
	//
	// Possible values:
	//   "RUI_NONE" - Neither IMS or IMF were enabled
	//   "RUI_IMS_CACHE_CURRENT" - IMS Had IMS enabled; but had cache hit;
	//   "RUI_IMS_NOT_MODIFIED" - so didn't need to do the fetch Did IMS and
	// got back 304
	//   "RUI_IMS_CHANGED" - Did IMS and got back non-304
	//   "RUI_IMF_NOCACHE" - IMF - UseBigTableIMF set IMF enabled; but
	// result wasn't in the cache
	//   "RUI_IMF_CACHE_CURRENT" - IMF enabled; but cached copy was current
	//   "RUI_IMF_HIT" - IMF enabled; had older cached copy;
	//   "RUI_IMF_CHANGED" - but got back 304; returned content IMF enabled;
	// had older cached copy;
	//   "RUI_IMF_POST_HIT_ERROR" - got back non-304; indicating change Got
	// back 304 on IMF; but cached copy failed;
	//   "RUI_CACHE_CURRENT" - ACCEPTABLE AGE; no IMF Cache hit
	//   "RUI_CACHE_EXPIRED" - Had content; but older than max
	//   "RUI_CACHE_NOCACHE" - No content in cache
	//   "RUI_CACHE_UNUSABLE" - Cache entry; but not usable
	//   "RUI_IMF_UNUSABLE" - Cache entry for IMF; but not usable
	//   "NUM_REUSE_INFO_VALS" - *** don't forget to update.
	HopReuseInfo string `json:"HopReuseInfo,omitempty"`

	// HopRobotsInfo: Extra trawler::RobotsInfo for this hop. Integer: ORed
	// together bits from trawler::RobotsInfo
	HopRobotsInfo int64 `json:"HopRobotsInfo,omitempty"`

	// HostId: If known, the hostid for this hop
	HostId uint64 `json:"HostId,omitempty,string"`

	// HttpRequestHeaders: The http headers we sent for fetching this
	// redirect hop. Not normally filled in, unless
	// FetchParams.WantSentHeaders is set.
	HttpRequestHeaders string `json:"HttpRequestHeaders,omitempty"`

	// HttpResponseHeaders: The http headers we received from this redirect
	// hop. Trawler does not fill this in; this is intended as a placeholder
	// for crawls like webmirror that fill in and want to track this across
	// redirect hops.
	HttpResponseHeaders string `json:"HttpResponseHeaders,omitempty"`

	// RawTargetUrl: bytes: can contain bad encoding.
	RawTargetUrl string `json:"RawTargetUrl,omitempty"`

	// RefreshTime: Refresh time in meta redirect tag
	RefreshTime int64 `json:"RefreshTime,omitempty"`

	// RobotsTxt: The robots.txt we used for this fetch. Not normally filled
	// in unless WantRobotsBody is set.
	RobotsTxt string `json:"RobotsTxt,omitempty"`

	// SourceBody: For meta-redirects, this field may contain the body of
	// the source document. Currently only filled client side and not
	// implemented (yet) for server-side redirects.
	SourceBody *TrawlerFetchBodyData `json:"SourceBody,omitempty"`

	// TargetUrl: Difference between the following two fields: TargetUrl is
	// set when we have followed the redirect target, and the url is
	// canonicalized. RawTargetUrl is set in either of the following two
	// cases: (1) The url has not be been followed. For example, the
	// redirect is intended to be handled by the client. In the fetch reply
	// response, you will see the url's status as
	// URL_NOT_FOLLOWED-NOT_FOLLOWED*. (2) The extracted redirect url is
	// different from its *canonicalized* form. For example, if the target
	// url contains fragments, then this RawTargetUrl will have the
	// fragments. Redirect target
	TargetUrl string `json:"TargetUrl,omitempty"`

	// Type: URL and redirect type
	//
	// Possible values:
	//   "REDIRECT_NONE" - No redirect
	//   "REDIRECT_EMPTY" - Looks like a redirect but is empty
	//   "REDIRECT_TOO_LONG" - Looks like a redirect but is too long
	//   "REDIRECT_PERMANENT" - Permanent redirect (301)
	//   "REDIRECT_TEMPORARILY" - Temp redirect (302 + meta here)
	//   "REDIRECT_META" - Redirect with tag
	//   "REDIRECT_BAD_URL" - Looks like a redirect but target is a bad URL
	//   "REDIRECT_HTTP_REFRESH" - HTTP "Refresh:" header; similar to meta
	// refresh
	//   "REDIRECT_SCRIPT" - Redirect derived from a script section
	//   "REDIRECT_CUSTOM" - Redirect derived from a Google-specific rule
	//   "REDIRECT_META_FRAGMENT" - Redirect from meta name=fragment
	//   "NUM_REDIRECT_TYPES" - *** don't forget to update.
	Type string `json:"Type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BadSSLCertificate")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BadSSLCertificate") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchReplyDataRedirects) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchReplyDataRedirects
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TrawlerFetchStatus struct {
	// Reason: The Reason field gives further clarifying details about why
	// or how the fetch had the given outcome. For instance, if State is
	// URL_ERROR - was it a 404/NotFound or a DNS error? The Reason field is
	// present iff State != URL_CRAWLED. For a given crawl status of
	// URL_FOO, the Reason value will be one of the various FetchFooReason
	// enum values from crawler/trawler/trawler_enums.proto
	Reason int64 `json:"Reason,omitempty"`

	// State: The State field describes the basic outcome of a fetch
	// (URL_CRAWLED, URL_ROBOTED, URL_ERROR, etc). The value is one of the
	// UrlStatusType enum values from crawler/trawler/trawler_enums.proto
	// Note, there are several combinations of this Status/Reason tuple that
	// could mean that your content is crawled or can be bucketed in a
	// particular type of error. So instead of comparing the enumeration
	// values manually, we suggest to use the predicate functions such as
	// IsContentCrawled() provided in crawler/trawler/public/basictypes.h
	// (see details there).
	//
	// Possible values:
	//   "URL_CRAWLED"
	//   "URL_ERROR" - Error fetching; most commonly 404;
	//   "URL_ROBOTED" - but many other possible reasons. Roboted out.
	//   "URL_UNREACHABLE" - Fetch error; 5xx; truncated response; etc.
	//   "URL_TIMEOUT" - Timeout while fetching.
	//   "URL_REJECTED" - Rejected based on capacity or permissions.
	//   "URL_NOT_FOLLOWED" - Redirects/retries-related: we crawled
	// something
	//   "NUM_STATE_TYPES" - *** don't forget to update.
	State string `json:"State,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Reason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Reason") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerFetchStatus) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerFetchStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerHostBucketData: ============================ Next Tag: 21
// ============================ Data about the scheduling host bucket a
// URL was in (if the client wants to use this, e.g. for more
// intelligent scheduling, etc).
type TrawlerHostBucketData struct {
	// ClientTrafficFraction: How much existing traffic
	ClientTrafficFraction float64 `json:"ClientTrafficFraction,omitempty"`

	// ClientWeightFraction: belong to the client How much weight the client
	ClientWeightFraction float64 `json:"ClientWeightFraction,omitempty"`

	// CurrentActiveConnections: How many connections are actively used for
	// downloading ?
	CurrentActiveConnections int64 `json:"CurrentActiveConnections,omitempty"`

	// IsFull: Is this bucket currently full ?
	IsFull bool `json:"IsFull,omitempty"`

	// LastScheduleIntervalMs: How many ms ago we last scheduled a url
	LastScheduleIntervalMs int64 `json:"LastScheduleIntervalMs,omitempty,string"`

	// MaxActiveConnections: The current hostload value (# of connections) -
	// if negative does not apply
	MaxActiveConnections float64 `json:"MaxActiveConnections,omitempty"`

	// MediumTermLoad: The load the recent times (the actual hostload that
	// we apply is MaxActiveConnections / MediumTermLoad) - a hostload of
	// 1.00 is normal, while over 1.0 is higher than normal load
	MediumTermLoad float64 `json:"MediumTermLoad,omitempty"`

	// MinInterRequestSecs: The min delay between requests (in secs) - if
	// negative does not apply
	MinInterRequestSecs float64 `json:"MinInterRequestSecs,omitempty"`

	// NonFullIntervalMs: If is full, when is becoming non-full (in ms)
	NonFullIntervalMs int64 `json:"NonFullIntervalMs,omitempty,string"`

	// TotalCapacityQps: The following four fields attempt to make things
	// simpler for clients to estimate available capacity. They are not
	// populated yet as of 2013/08/21. Even after they are populated, they
	// may change. So talk to trawler-dev@ before you use the fields. Total
	// qps for this hostid
	TotalCapacityQps float64 `json:"TotalCapacityQps,omitempty"`

	// TotalUsedQps: Currently used qps
	TotalUsedQps float64 `json:"TotalUsedQps,omitempty"`

	Urllist []*TrawlerHostBucketDataUrlList `json:"urllist,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ClientTrafficFraction") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientTrafficFraction") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerHostBucketData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerHostBucketData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *TrawlerHostBucketData) UnmarshalJSON(data []byte) error {
	type NoMethod TrawlerHostBucketData
	var s1 struct {
		ClientTrafficFraction gensupport.JSONFloat64 `json:"ClientTrafficFraction"`
		ClientWeightFraction  gensupport.JSONFloat64 `json:"ClientWeightFraction"`
		MaxActiveConnections  gensupport.JSONFloat64 `json:"MaxActiveConnections"`
		MediumTermLoad        gensupport.JSONFloat64 `json:"MediumTermLoad"`
		MinInterRequestSecs   gensupport.JSONFloat64 `json:"MinInterRequestSecs"`
		TotalCapacityQps      gensupport.JSONFloat64 `json:"TotalCapacityQps"`
		TotalUsedQps          gensupport.JSONFloat64 `json:"TotalUsedQps"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ClientTrafficFraction = float64(s1.ClientTrafficFraction)
	s.ClientWeightFraction = float64(s1.ClientWeightFraction)
	s.MaxActiveConnections = float64(s1.MaxActiveConnections)
	s.MediumTermLoad = float64(s1.MediumTermLoad)
	s.MinInterRequestSecs = float64(s1.MinInterRequestSecs)
	s.TotalCapacityQps = float64(s1.TotalCapacityQps)
	s.TotalUsedQps = float64(s1.TotalUsedQps)
	return nil
}

// TrawlerHostBucketDataUrlList: Per each list that wishes to schedule
// url we return one of these:
type TrawlerHostBucketDataUrlList struct {
	// ClientCanCrawl: Is this client/requestorid allowed to crawl now?
	// (based on resource use)
	ClientCanCrawl bool `json:"ClientCanCrawl,omitempty"`

	// IsDefaultNode: Is this the 'default' user's list
	IsDefaultNode bool `json:"IsDefaultNode,omitempty"`

	// IsListForUrl: Was this the list that a given request landed in?
	IsListForUrl bool `json:"IsListForUrl,omitempty"`

	// NumCurrentFetches: # of current active fetches
	NumCurrentFetches int64 `json:"NumCurrentFetches,omitempty"`

	// NumUrls: # of urls currently in the queue
	NumUrls int64 `json:"NumUrls,omitempty"`

	// RequestType: The type of the request (low latency vs. high
	// throughput)
	//
	// Possible values:
	//   "HIGH_THROUGHPUT" - Note: keep in sync with default in
	// trawler.proto
	//   "LOW_LATENCY"
	//   "NUM_REQUEST_TYPES" - *** don't forget to update.
	RequestType string `json:"RequestType,omitempty"`

	// RequestorFp: The fp64 of the requestor string
	RequestorFp uint64 `json:"RequestorFp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ClientCanCrawl") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientCanCrawl") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerHostBucketDataUrlList) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerHostBucketDataUrlList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerLoggedVPCDestination: Information about VPC fetches tracked
// for logging purposes.
type TrawlerLoggedVPCDestination struct {
	CloudRegion string `json:"cloudRegion,omitempty"`

	Vnid *NetFabricRpcVirtualNetworkId `json:"vnid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CloudRegion") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CloudRegion") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerLoggedVPCDestination) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerLoggedVPCDestination
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerMultiverseClientIdentifier: Contain Multiverse client
// information, such as topic name. Can include other information such
// as crawl policy id in the future.
type TrawlerMultiverseClientIdentifier struct {
	TopicName string `json:"topicName,omitempty"`

	// Possible values:
	//   "TRAFFIC_TYPE_UNSPECIFIED"
	//   "TRAFFIC_TYPE_NO_FETCH" - Not fetch traffic is consisted of
	// requests that we schedule it as notification for clients, but not
	// need to actually fetch.
	//   "TRAFFIC_TYPE_ONEOFF_CRAWL" - As the name suggests, oneoff crawl
	// means client just needs to crawl the URLs once.
	//   "TRAFFIC_TYPE_DISCOVERY" - Discovery traffic is consisted of the
	// new URLs discovered by Multiverse, that we have never seen in the
	// crawl history.
	//   "TRAFFIC_TYPE_REFRESH" - The context of refresh crawl is that
	// client needs to check the content of some URLs periodically, so they
	// refresh those URLs regularly.
	TrafficType string `json:"trafficType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TopicName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TopicName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerMultiverseClientIdentifier) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerMultiverseClientIdentifier
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerOriginalClientParams: The information about the original
// client who starts the request.
type TrawlerOriginalClientParams struct {
	ClientCell string `json:"clientCell,omitempty"`

	ClientIp string `json:"clientIp,omitempty"`

	// ClientRpcType: through which RPC request
	//
	// Possible values:
	//   "UNKNOWN_RPC"
	//   "PUSH_URL_TO_CRAWL" - CrawlService.PushUrlToCrawl.
	//   "PUSH_BATCH_TO_CRAWL" - CrawlService.PushBatchToCrawl.
	//   "CRAWL_URL" - CrawlService.CrawlUrl.
	//   "STREAM_FETCH_URL" - CrawlService.StreamFetchUrl.
	//   "LEGACY_STREAM_FETCH_URL" - CrawlService.LegacyStreamFetchUrl.
	//   "SUBSCRIBE_URL_ONCE" - CrawlService.SubscribeUrlOnce.
	//   "FEEDS_TRANSFER" - FeedsTransfer.BatchTransfer.
	ClientRpcType string `json:"clientRpcType,omitempty"`

	ClientUsername string `json:"clientUsername,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ClientCell") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClientCell") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerOriginalClientParams) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerOriginalClientParams
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerPolicyData: Trawler can add a policy label to a FetchReply.
// The two main cases are: - "spam" label added for specific spammer IPs
// listed in trawler_site_info, which most crawls auto-reject. -
// "roboted:useragent" (e.g. "roboted:googlebot") if InfoOnlyUserAgents
// field is set in FetchParams
type TrawlerPolicyData struct {
	// ExtraData: in roboted case, the RobotsInfo
	ExtraData int64 `json:"ExtraData,omitempty"`

	// Label: "spam" or "roboted:googlebot"
	Label string `json:"Label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ExtraData") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExtraData") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerPolicyData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerPolicyData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerSSLCertificateInfo: This protobuf specifies the results of
// https certificate validation, typically used for the
// BadSSLCertificate field in FetchReplyData. --------------------------
// Next Tag: 13 -------------------------------
type TrawlerSSLCertificateInfo struct {
	// ALPNNegotiatedProtocol: ALPN negotiated protocol, see
	// https://tools.ietf.org/html/rfc7301 The value will either be empty,
	// or one of the protocol names sent by the client that the server
	// accepted. Examples include "h2" and "acme-tls/1".
	ALPNNegotiatedProtocol string `json:"ALPNNegotiatedProtocol,omitempty"`

	// CertificateChain: If present, this consists of the remote webserver's
	// X.509 certificate chain in DER format. The chain stored here is the
	// *reversed* result of SSL_get_peer_cert_chain(). That is to say, it is
	// the chain presented by the peer (which may differ from the chain that
	// was built and verified), but in leaf-last order. Typically the root
	// cert will not be included. But do not assume anything, because
	// servers do all manner of weird things. (For example on the beginning
	// of the chain, there might be also some irrelevant certificates
	// besides the root certificate.) Certificates may be the empty string,
	// indicating an encoding failure. See also |IsTruncated|. Certs can be
	// loaded with util/sig/cert.h Cert::LoadBinaryCert(), converted to
	// ASCII PEM format (CertificateUtil::CertificateToPEM()) or shown as
	// text at the commandline by piping them into 'openssl x509 -text
	// -inform DER'.
	CertificateChain []string `json:"CertificateChain,omitempty"`

	// ErrorMessages: ErrorMessages contains errors from HTTPS validation.
	// Examples of such errors include invalid certificates, failure to
	// build a certificate chain, certificates that do not match the
	// expected hostname, and internal errors. If ErrorMessages is empty,
	// HTTPS validation succeeded. Otherwise, it failed. This is the only
	// guarantee about the contents of this field, though legacy code exists
	// that embeds invalid assumptions, b/70904498. New code should not do
	// anything with this field other than test whether it is empty and
	// display its value to humans. If you need to know more about the
	// details of a particular HTTPS validation, you can revalidate
	// |CertificateChain| independently.
	ErrorMessages []string `json:"ErrorMessages,omitempty"`

	// IsTruncated: This SSLCertificateInfo had its fields truncated because
	// it was too large. It is no longer set (cl/205356251) but may be true
	// in old records.
	IsTruncated bool `json:"IsTruncated,omitempty"`

	// OCSPResponse: Stapled OCSP response obtained during the TLS
	// handshake, if any. An OCSP (Online Certificate Status Protocol)
	// response is an indication, signed by the issuing CA, that the
	// certificate has not been revoked. A TLS handshake extension allows
	// servers to "staple" a response to the certificate served in the
	// handshake, saving the need for the client to fetch it itself from the
	// CA. This field contain the stapled OCSP response if the server served
	// one. See RFC6066, Section 8 for the data format:
	// https://tools.ietf.org/html/rfc6066#section-8
	OCSPResponse string `json:"OCSPResponse,omitempty"`

	// SCTList: SCTList obtained during the TLS handshake, if any. See
	// RFC6962, Section 3.3 for the data format:
	// https://tools.ietf.org/html/rfc6962#section-3.3
	SCTList string `json:"SCTList,omitempty"`

	SSLCipherSuite int64 `json:"SSLCipherSuite,omitempty"`

	SSLCipherSuiteName string `json:"SSLCipherSuiteName,omitempty"`

	// SSLProtocolVersion: Details about the SSL/TLS protocol and cipher.
	// See RFC5246 and google3/crawler/trawler/hope/proto/ssl.proto for more
	// details.
	SSLProtocolVersion int64 `json:"SSLProtocolVersion,omitempty"`

	// SSLProtocolVersionName: The names of the SSL protocol version and
	// cipher suite. These strings are implementation defined and may be
	// subject to change.
	SSLProtocolVersionName string `json:"SSLProtocolVersionName,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ALPNNegotiatedProtocol") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ALPNNegotiatedProtocol")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerSSLCertificateInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerSSLCertificateInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// TrawlerTCPIPInfo: To keep track of fetch connection endpoints. Note:
// You can use trawler::SourceIP(info) or trawler::DestinationIP(info)
// (as well as HasSourceIP/HasDestinationIP) in basictypes.h instead of
// accessing the packed strings directly. This will return a proper
// IPAddress. Never use the fixed32 based Source/Destination-IP in new
// code as they will go away (only IPv4).
type TrawlerTCPIPInfo struct {
	// DestinationIPAddressPacked: Address of the destination host. Extract
	// with trawler::DestinationIP() or decode with
	// PackedStringToIPAddress().
	DestinationIPAddressPacked string `json:"DestinationIPAddressPacked,omitempty"`

	DestinationPort int64 `json:"DestinationPort,omitempty"`

	// SourceIPAddressPacked: Source address of the crawl machine we
	// originated the fetch from. Extract with trawler::SourceIP() or decode
	// with PackedStringToIPAddress().
	SourceIPAddressPacked string `json:"SourceIPAddressPacked,omitempty"`

	SourcePort int64 `json:"SourcePort,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DestinationIPAddressPacked") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DestinationIPAddressPacked") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerTCPIPInfo) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerTCPIPInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type TrawlerThrottleClientData struct {
	IsBandwidthThrottle bool `json:"IsBandwidthThrottle,omitempty"`

	// MaxAllowedRate: Max doc_requestor urls/second allowed from this
	// client to this fetcher.
	MaxAllowedRate float64 `json:"MaxAllowedRate,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsBandwidthThrottle")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsBandwidthThrottle") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerThrottleClientData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerThrottleClientData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *TrawlerThrottleClientData) UnmarshalJSON(data []byte) error {
	type NoMethod TrawlerThrottleClientData
	var s1 struct {
		MaxAllowedRate gensupport.JSONFloat64 `json:"MaxAllowedRate"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxAllowedRate = float64(s1.MaxAllowedRate)
	return nil
}

// TrawlerTrawlerPrivateFetchReplyData: This is an optional container of
// arbitrary data that can be added to a FetchReplyData. This data is
// meant to be logged, but not sent back in a fetch reply (it should be
// added *after* the reply is prepared). Use
// FetchResponsePreparatorImpl::AddTrawlerPrivateDataToFetchReplyData to
// add. See also the comment in fetch_response_preparator_impl.cc. Next
// Tag: 44
type TrawlerTrawlerPrivateFetchReplyData struct {
	// BotGroupName: If we fetched using BotFetchAgent, what is the
	// BotGroupName?
	BotGroupName string `json:"BotGroupName,omitempty"`

	// BotHostname: This is the HOPE server that we sent the url to. We log
	// the HOPE backend cell and hope server shard number (e.g., 'qf:6').
	// This allows us to understand how we are balancing our load to the
	// HOPE servers.
	BotHostname string `json:"BotHostname,omitempty"`

	// CacheRequestorID: Present if the reply is from the trawler cache.
	// This is the requestorid of the trawler client that populated the
	// cache with the data we are reusing.
	CacheRequestorID string `json:"CacheRequestorID,omitempty"`

	// FetcherTaskNumber: Which Trawler fetcher task fetched this URL.
	FetcherTaskNumber int64 `json:"FetcherTaskNumber,omitempty"`

	// HSTSHeaderValue: HTTP Strict-Transport-Security (RFC6797) header
	// value. We log this so we can generate a list of hosts that prefer
	// HTTPS over HTTP.
	HSTSHeaderValue string `json:"HSTSHeaderValue,omitempty"`

	HadInMemCacheHit bool `json:"HadInMemCacheHit,omitempty"`

	// HintIPAddress: If we do not have Endpoints in FetchReplyData (e.g.,
	// url rejected due to hostload limit), do we have a guess of the server
	// IPAddress (e.g., from robots fetch)? This helps us classify URLs
	// based on country code, etc. The field is filled with
	// IPAddress::ToPackedString().
	HintIPAddress string `json:"HintIPAddress,omitempty"`

	// Is5xxHostId: Represents if the HostId belongs to HostId set in 5xx
	// url patterns, it can work as a tag when emitting requestor minute
	// summary, this helps us to aggregate traffic affected by 5xx patterns,
	// and test if there are any fetching changes.
	Is5xxHostId bool `json:"Is5xxHostId,omitempty"`

	// IsRobotsFetch: Was this an internally-initiated robots.txt fetch?
	IsRobotsFetch bool `json:"IsRobotsFetch,omitempty"`

	// PostDataSize: What's the post data size (in bytes) if it's a post
	// request.
	PostDataSize int64 `json:"PostDataSize,omitempty,string"`

	// Producer: Note TrawlerPrivateFetchReplyData is never sent back to
	// clients. The following field is just for Trawler and Multiverse
	// internal tracking, and clients should not look at this field at all.
	//
	// Possible values:
	//   "UNKNOWN_SUBSYSTEM_NAME" - May be used as a placeholder for the
	// actual
	//   "TRAWLER_HARPOON_FETCHER" - sub-system name when the FetchReply is
	// generated in the Trawler/Harpoon client library.
	//   "WEBMIRROR_DISPATCHER"
	//   "WEBMIRROR_CRAWL_ENGINE"
	//   "MULTIVERSE_TRAWLER_FETCHPROXY"
	//   "MULTIVERSE_FRONTEND_SERVER"
	Producer string `json:"Producer,omitempty"`

	// ProxyInstance: If set, this fetch was done through a proxy (e.g.,
	// fetchproxy).
	ProxyInstance string `json:"ProxyInstance,omitempty"`

	// RequestUserName: Log the loas username in trawler private to help
	// with debugging. Store the username in trawler private so clients
	// won't see it from FetchReply. To reduce disk usage, we only log the
	// loas username if the requestorid being used does not have
	// ClientUsernameRestrictions.
	RequestUserName string `json:"RequestUserName,omitempty"`

	// ResponseBytes: The number of bytes we sent back to the client.
	ResponseBytes int64 `json:"ResponseBytes,omitempty,string"`

	// RobotsBody: If this was a robots.txt fetch (IsRobotsFetch above),
	// this may contain the robots.txt body. (It may not, for instance, 404s
	// are omitted; current policy is URL_CRAWLED + partially crawled) This
	// includes http headers + body.
	RobotsBody string `json:"RobotsBody,omitempty"`

	// RpcEndDeadlineLeftMs: RPC deadline left at the end of url control
	// flow. Can be useful for debugging rpc deadline exceeded error
	// received by clients, this field is only recorded if it's small
	// enough.
	RpcEndDeadlineLeftMs int64 `json:"RpcEndDeadlineLeftMs,omitempty"`

	// RpcStartDeadlineLeftMs: RPC deadline left at the start of url control
	// flow. Can be useful for debugging rpc deadline exceeded error
	// received by clients, this field is only recorded if
	// RpcEndDeadlineLeftMs is small enough.
	RpcStartDeadlineLeftMs int64 `json:"RpcStartDeadlineLeftMs,omitempty"`

	// ServerSignature: An arbitrary string signature identifying the remote
	// server type/version. In the case of HTTP, this would be the contents
	// of the "Server:" header.
	ServerSignature string `json:"ServerSignature,omitempty"`

	// TrawlerInstance: Which Trawler cell was this response fetched in?
	// (e.g. "HR" or "YQ")
	TrawlerInstance string `json:"TrawlerInstance,omitempty"`

	// UserAgentSent: The useragent string sent to the remote webserver. It
	// corresponds to UserAgentToSend field in FetchParams.
	UserAgentSent string `json:"UserAgentSent,omitempty"`

	// UserAgentSentFp: The fp2011 of useragent sent to the remote
	// webserver, note it corresponds to UserAgentToSend field in
	// FetchParams
	UserAgentSentFp uint64 `json:"UserAgentSentFp,omitempty,string"`

	// AuthenticationInfo: Stores the OAuth authentication method.
	//
	// Possible values:
	//   "AUTHORIZATION_UNKNOWN"
	//   "AUTHORIZATION_REQUEST_HEADER" - When sending the access token in
	// the "Authorization" request header field defined by HTTP/1.1
	// [RFC2617], the client uses the "Bearer" authentication scheme to
	// transmit the access token. GET /resource HTTP/1.1 Host:
	// server.example.com Authorization: Bearer mF_9.B5f-4.1JqM
	//   "AUTHORIZATION_POST_BODY" - When sending the access token in the
	// HTTP request entity-body, the client adds the access token to the
	// request-body using the "access_token" parameter. POST /resource
	// HTTP/1.1 Host: server.example.com Content-Type:
	// application/x-www-form-urlencoded access_token=mF_9.B5f-4.1JqM
	//   "AUTHORIZATION_QUERY_PARAMETER" - Adds the access token to the
	// request URI query component. GET
	// /resource?access_token=mF_9.B5f-4.1JqM HTTP/1.1 Host:
	// server.example.com
	AuthenticationInfo string `json:"authenticationInfo,omitempty"`

	// BypassedHostOverfull: Cache hit for this url, bypassed host_overfull
	// error.
	BypassedHostOverfull bool `json:"bypassedHostOverfull,omitempty"`

	// CacheAcceptableAfterDate: Corresponds to AcceptableAfterDate field in
	// FetchParams.
	CacheAcceptableAfterDate int64 `json:"cacheAcceptableAfterDate,omitempty"`

	// CacheAcceptableAge: Corresponds to AcceptableAge field in
	// FetchParams.
	CacheAcceptableAge int64 `json:"cacheAcceptableAge,omitempty"`

	// CacheHitType: Only set if the fetch uses cache content
	// (is_cache_fetch is true).
	//
	// Possible values:
	//   "CACHE_HIT_NONE" - There isn't a cache hit.
	//   "FETCHER_IN_MEMORY_HIT" - Cache hit comes from fetcher side
	//   "CACHE_PROXY_CACHE_SERVER_HIT" - local in-memory cache. Cache hit
	// comes from cache proxy, the
	//   "CACHE_PROXY_LARGE_STORE_HIT" - endpoint of cache storage is
	// cacheserver. Cache hit comes from cache proxy, the
	//   "CACHE_SERVER_HIT" - endpoint of cache storage is large store
	// (CNS). Cache hit comes from cacheserver
	CacheHitType string `json:"cacheHitType,omitempty"`

	// Possible values:
	//   "NON_CDN"
	//   "CLOUDFLARE"
	CdnProvider string `json:"cdnProvider,omitempty"`

	// ConcurrentStreamNum: How many concurrent streams are on the
	// connection when the request finishes (including this request). Export
	// this value to monitor the stream multiplexing for HTTP/2.
	ConcurrentStreamNum int64 `json:"concurrentStreamNum,omitempty,string"`

	// DependentFetchType: Dependent fetch type
	//
	// Possible values:
	//   "DEPENDENT_UNSPECIFIED"
	//   "DEPENDENT_COMPOSITE_FETCH" - A flag set by Webmirror to indicate
	// this fetch is associated with a top-level fetch (aka. composite
	// fetch). Unified reporting may choose to ignore a fetch if this flag
	// was set. Notice this is a short-term solution. Composite fetch is a
	// client feature, we should eventually use the logs generated by
	// Webmirror as the source of truth. See go/da-reporting-data-generation
	// for more details.
	DependentFetchType string `json:"dependentFetchType,omitempty"`

	// DownloadFileName: If the response header contains Content-Disposition
	// header "attachment; filename="google.zip": the download_file_name
	// would be "google.zip"
	DownloadFileName string `json:"downloadFileName,omitempty"`

	// HttpVersion: Stores the HTTP version we used in the last hop.
	//
	// Possible values:
	//   "HTTP_11"
	//   "HTTP_10"
	//   "HTTP_09" - ??? do we want this ???
	//   "HTTP_2" - EXPERIMENTAL, DO NOT USE unless you have talked to
	//   "HTTP_AUTO" - trawler-dev@. Allow fetcher to automatically select
	// HTTP protocol
	//   "FIRST_VERSION" - version. The selection is based on prior
	// knowledge and dynamic server response. Basically, if the client and
	// the host is configured to allow HTTP/2 traffic, we will select HTTP/2
	// and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found
	// the server does not support HTTP/2 through ALPN. HTTP Version
	// selection will be applied to each redirect hop. More details about
	// HTTP/2 traffic configuration can be found in:
	// googledata/googlebot/http2_traffic_control_file. We list this after
	// HTTP_* values to make sure
	//   "NUM_VERSIONS" - HTTPVersion_Name(0) returns the correct string.
	HttpVersion string `json:"httpVersion,omitempty"`

	// IsBidiStreamingFetch: Whether this is a bidirectional streaming
	// fetch.
	IsBidiStreamingFetch bool `json:"isBidiStreamingFetch,omitempty"`

	// IsFloonetFetch: Whether or not this is a Floonet fetch request.
	// Floonet requests have inherent lower availability (due to HOPE
	// rejections when HOPE is in degraded mode, and other Floonet specific
	// reasons). Therefore, it is important for debugging and for our
	// availability SLO to know whether of not it is a floonet fetch.
	// IMPORTANT NOTE: This field is only currently set for traffic that
	// explicitly requires Floonet and can not failover to use Googlebot
	// (i.e. "transparent" or "implicit" Floonet fetches).
	IsFloonetFetch bool `json:"isFloonetFetch,omitempty"`

	// IsFromGrpcProxy: Whether or not this response is sent from gRPC proxy
	// service.
	IsFromGrpcProxy bool `json:"isFromGrpcProxy,omitempty"`

	// IsVpcTraffic: Set if the fetch goes through the virtual private cloud
	// path so we can track the VPC traffic.
	IsVpcTraffic bool `json:"isVpcTraffic,omitempty"`

	// LargeStoreHitLocation: Set to the hit location (CNS filename) if
	// cache comes from large store.
	LargeStoreHitLocation string `json:"largeStoreHitLocation,omitempty"`

	// MultiverseClientIdentifier: Multiverse client information
	MultiverseClientIdentifier *TrawlerMultiverseClientIdentifier `json:"multiverseClientIdentifier,omitempty"`

	// NumDroppedReplies: Number of times we drop the content of a stream
	// reply or the final reply, which can only be caused by
	// REJECTED_NO_RPC_BUFFERS now.
	NumDroppedReplies int64 `json:"numDroppedReplies,omitempty,string"`

	// OriginalClientParams: Store the original client information.
	OriginalClientParams *TrawlerOriginalClientParams `json:"originalClientParams,omitempty"`

	// ResourceBucket: If the requestor shares resource bucket with other
	// requestorids, we will store the resource bucket name in these fields.
	ResourceBucket string `json:"resourceBucket,omitempty"`

	SubResourceBucket string `json:"subResourceBucket,omitempty"`

	// Tier: Service tier info will be used in traffic grapher for ploting
	// per tier graph.
	//
	// Possible values:
	//   "SERVICE_TIER_UNKNOWN"
	//   "SERVICE_TIER_TRAWLER"
	//   "SERVICE_TIER_HARPOON"
	//   "SERVICE_TIER_PARTNER"
	Tier string `json:"tier,omitempty"`

	// VpcDestination: The following are vpc information that's only set if
	// is_vpc_traffic is true.
	VpcDestination *TrawlerLoggedVPCDestination `json:"vpcDestination,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BotGroupName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BotGroupName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *TrawlerTrawlerPrivateFetchReplyData) MarshalJSON() ([]byte, error) {
	type NoMethod TrawlerTrawlerPrivateFetchReplyData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UniversalsearchNewPackerKnowledgeResultSupport: Information about the
// result support for a given interpretation.
type UniversalsearchNewPackerKnowledgeResultSupport struct {
	// Debug: A debug message that summarizes how the score was computed.
	// Populated if result was matched and in debug mode.
	Debug string `json:"debug,omitempty"`

	// Docid: The docid of the result, if available.
	Docid uint64 `json:"docid,omitempty,string"`

	// EstimatedNaviness: The naviness for this result. Each matcher can
	// determine the naviness to use for the result. This can be copied
	// directly from the result, or estimated based on clicks or some other
	// heuristic. The value should be between 0 and 1 and should indicate
	// the probability that the user will click on that result. The
	// estimated_naviness is used to break ties when between results with
	// the same rank.
	EstimatedNaviness float64 `json:"estimatedNaviness,omitempty"`

	// Provenance: All provenances of this result support.
	Provenance []*UniversalsearchNewPackerKnowledgeResultSupportProvenance `json:"provenance,omitempty"`

	// Rank: The 0 based rank for this result. When the source is MAIN_GSR
	// this corresponds to the index of the result in the generic search
	// response specific in AddKnowledgePackerPreprocessors. Otherwise, the
	// rank should be estimated so the result is closest in importance to
	// the web result at the same rank.
	Rank int64 `json:"rank,omitempty"`

	// Score: A score from 0 to 1 inclusive that represents the strength of
	// the result support. A score of one indicates this result is entirely
	// about this interpretation.
	Score float64 `json:"score,omitempty"`

	// Source: The source of the result support.
	//
	// Possible values:
	//   "MAIN_GSR" - MAIN_GSR is the generic search response specified in
	// AddKnowledgePackerPreprocessors. This will normally be
	// universal::kResponseWeb but can also be
	// universal::kResponseQuimbyTextWeb or potentially another response
	// depending on the search mode.
	//   "LIVE_RESULT"
	//   "NEWS"
	//   "CLIR_GSR"
	//   "CONTEXTBOOST_RESULT" - The following source is used by
	// ContextBoostVoteAwareVoter to provide support for the selected
	// interpretation. Note that this should not be used for any other
	// purpose like navboost signals smearing.
	//   "SUPPORT_FROM_KSCORER" - This is added for temporary legacy
	// compatibility until all interpretations that use voting have migrated
	// to KScorer. A KScorer-eligible interpretation may not receive any
	// direct support from a particular result, but will require a
	// ResultSupport rank in order to participate in legacy voting.
	//   "PERSONALIZED_RESULT" - The following source is used by the
	// PersonalizationTwiddler
	Source string `json:"source,omitempty"`

	// Url: The result url when available.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Debug") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Debug") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *UniversalsearchNewPackerKnowledgeResultSupport) MarshalJSON() ([]byte, error) {
	type NoMethod UniversalsearchNewPackerKnowledgeResultSupport
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *UniversalsearchNewPackerKnowledgeResultSupport) UnmarshalJSON(data []byte) error {
	type NoMethod UniversalsearchNewPackerKnowledgeResultSupport
	var s1 struct {
		EstimatedNaviness gensupport.JSONFloat64 `json:"estimatedNaviness"`
		Score             gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EstimatedNaviness = float64(s1.EstimatedNaviness)
	s.Score = float64(s1.Score)
	return nil
}

// UniversalsearchNewPackerKnowledgeResultSupportProvenance: Information
// about provenance of a result support.
type UniversalsearchNewPackerKnowledgeResultSupportProvenance struct {
	// EntityGroupType: Entity group type of the supported entity. This
	// field should only be set for support on entities.
	//
	// Possible values:
	//   "QUESTION" - The entity group corresponds to a question entity.
	//   "ANSWER" - The entity group corresponds to an answer entity.
	//   "INTENT" - The entity group corresponds to an intent entity.
	EntityGroupType string `json:"entityGroupType,omitempty"`

	// FromAnswer: ===== Deprecated Fields ===== The bool flag indicating
	// whether the ResultSupport comes from answer entities.
	FromAnswer bool `json:"fromAnswer,omitempty"`

	// Name: The provenance provider name.
	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityGroupType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityGroupType") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *UniversalsearchNewPackerKnowledgeResultSupportProvenance) MarshalJSON() ([]byte, error) {
	type NoMethod UniversalsearchNewPackerKnowledgeResultSupportProvenance
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UrlPoisoningData: Url poisoning information. This information is
// sparse: if num_spam_siblings is not populated, none of the following
// fields will be populated. Next tag: 6
type UrlPoisoningData struct {
	// NotChangedTimeMs: fetched from the web. Time when the page was last
	NotChangedTimeMs int64 `json:"NotChangedTimeMs,omitempty,string"`

	// OriginalCrawlTimeMs: Time when the page was
	OriginalCrawlTimeMs int64 `json:"OriginalCrawlTimeMs,omitempty,string"`

	// ReuseTimeMs: checked but found to be the same as before. If set,
	// timestamp to indicate
	ReuseTimeMs int64 `json:"ReuseTimeMs,omitempty,string"`

	NumSpamSiblings int64 `json:"numSpamSiblings,omitempty"`

	// Url: when it is fetched from the repository. URL of the document for
	// debugging
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NotChangedTimeMs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NotChangedTimeMs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *UrlPoisoningData) MarshalJSON() ([]byte, error) {
	type NoMethod UrlPoisoningData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UtilStatusProto: Wire-format for a Status object
type UtilStatusProto struct {
	// CanonicalCode: The canonical error code (see codes.proto) that most
	// closely corresponds to this status. May be missing.
	CanonicalCode int64 `json:"canonicalCode,omitempty"`

	// Code: Numeric code drawn from the space specified below. Often, this
	// is the canonical error space, and code is drawn from
	// google3/util/task/codes.proto
	Code int64 `json:"code,omitempty"`

	// Message: Detail message
	Message string `json:"message,omitempty"`

	// MessageSet: message_set associates an arbitrary proto message with
	// the status.
	MessageSet *Proto2BridgeMessageSet `json:"messageSet,omitempty"`

	// Space: The following are usually only present when code != 0 Space to
	// which this status belongs
	Space string `json:"space,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *UtilStatusProto) MarshalJSON() ([]byte, error) {
	type NoMethod UtilStatusProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VendingConsumerProtoTrustedGenomeAnnotation:
// ----------------------------------------------------------------------
// -------- Proto message containing the trusted genome entities that
// belong to an app. Document type: ANDROID_APP See go/gd-server-design
// for more info. ## Next tag: 4
type VendingConsumerProtoTrustedGenomeAnnotation struct {
	// Policy: The list of trusted genome policy.
	Policy *VendingConsumerProtoTrustedGenomePolicy `json:"policy,omitempty"`

	// TestCode: The list of test code, used to log when serving. The test
	// code is set in both control and experiment annotations when they are
	// different.
	//
	// Possible values:
	//   "UNKNOWN" - useful always
	//   "RESERVED" - useful always
	//   "RESERVED_2" - useful always
	//   "RESERVED_3" - useful always
	//   "CRSCORE_EQ_0" - useful always
	//   "CRSCORE_GT_0" - useful always
	//   "STORIES_IN_MOVIES_HOME"
	//   "RELATED_X_DC_CLUSTERS_IN_MOVIE_DETAILS_PAGES"
	//   "TC_IN_PSS_CHECK_A"
	//   "TC_IN_PSS_CHECK_B"
	//   "QUERY_IS_BOOTS_ELIGIBLE" - Query is eligible to show Boots chips
	//   "QUERY_HAS_SELECTED_BOOTS_CHIP"
	//   "QUERY_HAS_ONLY_UNSELECTED_BOOTS_CHIPS"
	//   "SPONSORED_ADS_CLUSTER"
	//   "BOOKS_QUERY_HAS_LANGUAGE_INTENT" - go/books-language-handling for
	// details
	//   "IRON_THRONE_QUERY" - Create test code for go/it-design experiment
	//   "GUIDED_DISCOVERY" - go/guided-discovery-design for details.
	//   "BOOKS_AUTHOR_QUERY"
	//   "BOOTS_PROD_V1_QUERY"
	//   "SHOULD_SEE_LIVE_OP_CLUSTER_CANDIDATES" - User has live op cluster
	// candidates.
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING"
	//   "BOOTS_EN_IN"
	//   "BOOTS_EN_GB"
	//   "BOOTS_EN_PH"
	//   "BOOTS_EN_CA"
	//   "ENTERTAINMENT_CLUSTER_CONTAINER_SEARCH_ENABLED"
	//   "SEARCH_NAV_SPONSORED_ADS_CLUSTER"
	//   "TOP_CHART_RANKING_INFO"
	//   "CLIENT_TEST_CODE_VERIFICATION" - For verify the client test code
	// logging flow.
	//   "APPS_PUB_QUERY"
	//   "ABUSIVE_QUERY_SQUASHING_EVENT"
	//   "HOME_SPONSORED_ADS_RE_ENGAGEMENT_CLUSTER_EVENT_LEVEL"
	//   "SEARCH_LIVE_OP_QUERY_EVENT"
	//   "BOOTS_ES_PT"
	//   "BOOTS_URUC"
	//   "BOOTS_URUC_PER_INSTALL"
	//   "GEARHEAD_VANAGON_ESCAPE_HATCH_CANDIDATE" - Candidate for Vanagon
	// Escape hatch experiment
	//   "BOOTS_JP_KR_V2"
	//   "BOOTS_FILTERS_AT_END"
	//   "APP_SUPPORTS_INSTANT_LAUNCH"
	//   "SEARCH_MDP_LIVE_OP_QUERY_EVENT"
	//   "BOOTS_I18N"
	//   "LOW_RESULT_CLUSTER"
	//   "PERSONALIZED_CLUSTER"
	//   "GAME_SEEKING_PERSONALIZED_CLUSTER_AT_EVENT_LEVEL"
	//   "VX_CLUSTER"
	//   "LOW_RESULT_LATENCY"
	//   "MOVIES_GROOT_20"
	//   "MOVIES_GROOT_10"
	//   "MOVIES_GROOT_5"
	//   "MOVIES_GROOT_3"
	//   "MOVIES_GROOT_1"
	//   "MOVIES_DORA_SEARCH"
	//   "MOVIES_MDP_SEARCH"
	//   "MOVIES_ORGANIC_SEARCH"
	//   "FULL_PAGE_REPLACEMENT"
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING_UNDER_FPR" - Track entertainment
	// cluster when FPR is enabled.
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_ENABLED"
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_TRIGGERED"
	//   "BOOTS_I18N_V2"
	//   "BOOTS_I18N_V2_VS_V1"
	//   "AUDIOBOOKS_KIDS_CATEGORICAL_SEARCH"
	//   "ZERO_RESULT"
	//   "BOOTS_I18N_100_THRESH"
	//   "BOOTS_I18N_150_THRESH"
	//   "DISPLAY_ADS_RESPONSE_RECEIVED_EVENT_LEVEL"
	//   "BEST_SELLER_CART_TAG_FOR_MENDEL_AT_EVENT_LEVEL"
	//   "ABUSIVE_QUERY"
	//   "PARTNER_VIOLENCE_TRIGGERING"
	//   "BOOTS_V3"
	//   "HOME_SPONSORED_ADS_CLUSTER_NO_ADS"
	//   "BOOKS_XSELL_ELIGIBLE_APP" - Details page of an app eligible for
	// Books XSell
	//   "NAV_EXT_EVENT"
	//   "PGS_TEST_CODE_LOGGING_VERIFICATION"
	//   "ADS_CUSTOM_DETAILS_PAGE_ASSETS_PRESENT_EVENT_LEVEL"
	//   "ADS_CUSTOM_DETAILS_PAGE_ASSETS_SERVED_EVENT_LEVEL"
	//   "BOOKS_DETAILS_PAGE_KEYWORD_CLUSTER_EVENT_LEVEL"
	//   "DETAILS_PAGE_LIVE_OPS"
	//   "BOOKS_DETAILS_PAGE_SIMILAR_CLUSTER"
	//   "BOOKS_DETAILS_PAGE_POST_ACQUIRE_SIMILAR_CLUSTER"
	//   "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MISMATCH"
	//   "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MATCH"
	//   "APPS_ST_PRICE_INTENT"
	//   "APPS_ST_AUDIENCE_INTENT"
	//   "APPS_PERSONALIZED_TOPIC_QUERY_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_TG_QUERY_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_ALL_GAME_QUERIES_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_NON_TG_QUERIES_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_VERTICAL_RFY_CLUSTER_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_GAME_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_MDP_EVENT_LEVEL"
	//   "APPS_PERSONALIZED_MDP_GAME_EVENT_LEVEL"
	//   "CDP_PROMOTIONAL_IMAGE_LOCALE_MATCH"
	//   "CDP_PROMOTIONAL_IMAGE_LOCALE_MISMATCH"
	//   "CDP_SCREENSHOT_LOCALE_MISMATCH"
	//   "CDP_SCREENSHOT_LOCALE_MATCH"
	//   "CDP_PROMOTIONAL_VIDEO_LOCALE_MISMATCH"
	//   "CDP_PROMOTIONAL_VIDEO_LOCALE_MATCH"
	//   "BOOKS_ELIGIBLE_FOR_BUNDLE_EVENT_LEVEL"
	//   "BOOKS_QUERY_ELIGIBLE_FOR_APPS_CLUSTER"
	//   "TEST_CODE_BUILD_VERIFICATION"
	//   "GAMES_PROFILE_CREATION_EVENT"
	//   "MOVIES_QUERY_ELIGIBLE_FOR_APPS_CLUSTER"
	//   "MOVIES_WALLE_SEARCH"
	//   "TRUSTED_ENTITY_SEARCH_QUERY_EVENT"
	//   "BUNDLE_FBT_DISCOUNT"
	//   "BUNDLE_SERIES_DISCOUNT"
	//   "APPS_SEARCH_TOPIC_RFY_CLUSTER_AT_EVENT_LEVEL" - Indicates
	// triggering of Topic RFY cluster
	//   "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_AT_EVENT_LEVEL" - Triggered
	// Mini Topcharts in apps search.
	//   "PLAY_STORE_SHOW_CART_EVENT_LEVEL"
	//   "HAS_BOOK_FREQUENTLY_BOUGHT_TOGETHER_BUNDLE_EVENT_LEVEL"
	//   "HAS_BOOK_SERIES_BUNDLE_EVENT_LEVEL"
	//   "APPS_SEARCH_TOPIC_RFY_CLUSTER_COUNTERFACTUAL"
	//   "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_COUNTERFACTUAL"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_FIRST_RUN" - User eligible for
	// Assistant first-run tooltip
	//   "GEARHEAD_TOOLTIP_ASSISTANT_NTH_RUN" - User eligible for Assistant
	// nth-run tooltip
	//   "GEARHEAD_TOOLTIP_ASSISTANT_NTH_RUN_BUTTON" - User eligible for
	// Assistant nth-run button tooltip
	//   "GEARHEAD_TOOLTIP_LAUNCHER_FIRST_RUN" - User eligible for Launcher
	// first run tooltip
	//   "GEARHEAD_TOOLTIP_LAUNCHER_NTH_RUN" - User eligible for Launcher
	// nth run tooltip
	//   "GEARHEAD_TOOLTIP_NOTIFICATION_FIRST_RUN" - User eligible for
	// Notification first run tooltip
	//   "GEARHEAD_TOOLTIP_NOTIFICATION_NEW" - User eligible for
	// Notification new tooltip
	//   "GEARHEAD_TOOLTIP_NOTIFICATION_NTH_NEW" - User eligible for
	// Notification nth new tooltip
	//   "BUNDLE_DISCOUNT_SHOWN_ON_DETAIL_PAGE"
	//   "KIDS_AGE_SCORE_BONUS_AT_EVENT_LEVEL"
	//   "KIDS_QUALITY_TAG_SCORE_BONUS_AT_EVENT_LEVEL"
	//   "TEST_FOR_LEVELS_FLAG_AT_EVENT_LEVEL"
	//   "LB_TARGETED_AT_EVENT_LEVEL" - leon banner is targeted at event
	// level.
	//   "LB_ABOVE_AT_EVENT_LEVEL"
	//   "LB_BELOW_AT_EVENT_LEVEL"
	//   "GEARHEAD_TOOLTIP_CONTEXTUAL_ASSISTANT_DIALER_CONTACT" - User
	// eligible for dialer contact tooltip
	//   "LB_PAGINATED_AT_EVENT_LEVEL"
	//   "RECS_USER_INTENT_HP_LOW_INTENT_EVENT_LEVEL"
	//   "RECS_USER_INTENT_HP_HIGH_INTENT_EVENT_LEVEL"
	//   "LB_IMPRESSED_AT_EVENT_LEVEL"
	//   "GEARHEAD_INPUT_TOUCH_PRESENT" - User input has touch hardware
	//   "GEARHEAD_INPUT_ROTARY_PRESENT" - User input has rotary hardware
	//   "GEARHEAD_INPUT_TOUCHPAD_PRESENT" - User input has touchpad
	// hardware
	//   "GEARHEAD_INPUT_TOUCH_ABSENT" - User input lacks touch hardware
	//   "GEARHEAD_INPUT_ROTARY_ABSENT" - User input lacks rotary hardware
	//   "GEARHEAD_INPUT_TOUCHPAD_ABSENT" - User input lacks touchpad
	// hardware
	//
	// "CANCEL_SUBSCRIPTION_CONFIRMATION_DIALOG_SHOWN_WHEN_ELIGIBLE_FOR_ENTIT
	// LEMENT_BENEFITS_EVENT_LEVEL_AT_EVENT_LEVEL"
	//   "SMART_FOP_EVENT_LEVEL_AT_EVENT_LEVEL"
	//   "SMART_FOP_AT_EVENT_LEVEL"
	//   "VX_CLUSTER_IN_APPS_SERP_IMPRESSION"
	//   "KIDS_CONTENT_SEEKING_QUERY"
	//   "KIDS_CONTENT_SEEKING_QUERY_TREATMENT_APPLIED"
	//   "VX_QREF_TRIGGERED_AT_EVENT_LEVEL_AT_EVENT_LEVEL"
	//   "VX_NAVBOOST_SUPPRESSED_AT_EVENT_LEVEL_AT_EVENT_LEVEL"
	//   "VX_QREF_TRIGGERED_AT_EVENT_LEVEL"
	//   "VX_NAVBOOST_SUPPRESSED_AT_EVENT_LEVEL"
	//   "PREFERRED_FOP"
	//   "REDEEM_NOT_ENROLLED_TO_LOYALTY"
	//   "GEARHEAD_TOOLTIP_SETTINGS"
	//   "GEARHEAD_TOOLTIP_CALENDAR" - Add test code for calendar tooltip
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL"
	//   "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP"
	//   "SEARCH_MDP_TRIGGERED_EVENT_LEVEL"
	//   "IN_APP_MESSAGING_APP_1"
	//   "DEVELOPER_PAGE_AT_EVENT_LEVEL"
	//   "BOOKS_FREE_FIXED_DURATION_RENTAL_EVENT_LEVEL"
	//   "BOOKS_FREE_FIXED_DATE_RENTAL_EVENT_LEVEL"
	//   "BOOKS_PRICE_DROP_EVENT_LEVEL"
	//   "TG_VALIDATED_CRISPR_TAG_AT_EVENT_LEVEL"
	//   "HAS_PLAY_CONSOLE_CUSTOM_STORE_LISTING"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_DIALER_FIRST_OPEN"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_OPEN"
	//   "GEARHEAD_WIDESCREEN_DISPLAY"
	//   "GEARHEAD_MULTI_DISPLAY"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_PHONE_CALL_ENDED"
	//   "SERIES_BUNDLE_MULTI_TIER_DISCOUNT_EVENT_LEVEL"
	//   "DIALER_ASSISTANT_CALL_ACTION_SHOWN"
	//   "DIALER_ASSISTANT_CALL_ACTION_CLICKED" - DEPRECATED. Unnecessary
	// test code
	//   "GEARHEAD_TOOLTIP_FEEDBACK"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_THREE_RUNS"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_REC_FIRST_RUN"
	//   "GEARHEAD_WORK_PROFILE_DETECTED" - Indicates a work profile was
	// detected while running Android Auto
	//   "GEARHEAD_WORK_PROFILE_DETECTED_AND_COMPATIBLE" - Indicates Android
	// Auto has detected a work profile, and could query for work data, but
	// might (or might not) need to prompt for permissions first. Also
	// indicates Android Auto has permission to post any needed permission
	// prompts.
	//   "GEARHEAD_WORK_PROFILE_QUERYING_ALLOWED" - Indicates Android Auto
	// has permission to query work data, and show it to the user
	//   "PLAY_ADS_REENGAGEMENT_COUNTERFACTUAL"
	//   "PLAY_ADS_THIRD_LIST_VIEW_ADS_COUNTERFACTUAL"
	//   "MISMATCH_BETWEEN_FINSKY_TARGETING_AND_SKELETON" - The mismatch for
	// target id 12609441 in finsky targeting and skeleton framework.
	//   "GEARHEAD_TOOLTIP_ASSISTANT_LAUNCHER_OPEN"
	//   "GEARHEAD_MULTIPLE_CALLABLE_PHONE_ACCOUNTS_DETECTED" - Indicates
	// that Android Auto has detected multiple phone accounts, which are
	// capable of placing/receiving calls. VOIP accounts are not included.
	//   "GEARHEAD_USER_HAS_SELECTED_OUTGOING_PHONE_ACCOUNT" - Indicates
	// that a phone with multiple callable accounts has a default account
	// specified for placing outgoing calls. This means account
	// disambiguation generally won't be needed when placing a call from
	// Android Auto.
	//   "GEARHEAD_TOOLTIP_ASSISTANT_LONG_DRIVE_START"
	//   "GEARHEAD_TOOLTIP_DIALER_MULTI_SIM" - Indicates that Android Auto
	// has displayed a multi-SIM calling tooltip.
	//   "GEARHEAD_AUDIO_SERVICE_MIGRATION"
	//   "GEARHEAD_MEDIA_APP_DOWNLOAD_LEAVE_BEHIND_NOTIFICATION"
	//   "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_REC_MEDIA_IDLE"
	//   "GEARHEAD_USER_DEVICE_UNPLUGGED"
	//   "GEARHEAD_DO_NOT_DISTURB_CALLS_ENABLED"
	//   "GEARHEAD_DEFAULT_MEDIA_APP_SET_FROM_MULTIPLE_OPTIONS" - Indicates
	// that default media app was set from > 1 available media apps at
	// startup.
	//   "REGIONAL_NAV_EXT_EVENT_LEVEL"
	//   "GEARHEAD_TOOLTIP_BUGREPORT"
	//   "GENERAL_QUERY_PAGINATION_EVENT_LEVEL"
	//   "MULTINAV_PAGINATION_EVENT_LEVEL"
	//   "GEARHEAD_SESSION_ELIGIBLE_FOR_MEDIA_AUTOPLAY" - Indicates that the
	// Android Auto session is eligible to receive media autoplay (i.e.
	// system requesting playback automatically)
	//   "GEARHEAD_AUDIO_FLOW_CONTROL_PERMIT_UNAVAILABLE"
	//   "SHOULD_SEE_SEARCH_MEDIA_RESULT_CLUSTER" - Indicates that some
	// organic search results have generated large-format cluster candidates
	// (i.e. to be shown as search results with media).
	//   "FRESH_RESULTS_SEEKING_SEARCH_QUERY_EVENT_LEVEL" - Event level test
	// code for tracking fresh results seeking search queries.
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_1_EVENT_LEVEL" - Google
	// funded series bundle discount bucket.
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_2_EVENT_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_3_EVENT_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_4_EVENT_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_5_EVENT_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_6_EVENT_LEVEL"
	//   "TRUSTED_GENOME_RELATED_QUERY_CLUSTER_EVENT" - Event level test
	// code that indicates that a tg related query search cluster could be
	// shown.
	//   "NAV_TG_RELATED_QUERY_EVENT" - Event level test code that indicates
	// that tg related queries could be inserted to related query cluster
	// for navigational search.
	//   "PROMOTABLE_APPS_EVENT" - Event level testcode for promotable apps
	// in search. STRONG_CAT and CAT are for strong CAT and general CAT
	// query slices.
	//   "PROMOTABLE_APPS_STRONG_CAT_EVENT"
	//   "PROMOTABLE_APPS_CAT_EVENT"
	//   "INLINE_DETAILS_TQUALITY_CHECK_PASS" - Event level test codes
	// containing result of tquality lookup during market details url
	// matching. A failed tquality result suppresses inline details.
	//   "INLINE_DETAILS_TQUALITY_CHECK_FAIL"
	//   "INLINE_DETAILS_IS_INLINE_URL" - Event level test code indicating
	// external details URL is an inline URL.
	//   "EXPANDER_NEXT_TO_METADATA_BAR" - Event level test codes for
	// expandable cluster.
	//   "EXPANDER_NEXT_TO_PROMOTIONAL_TEXT"
	//   "EXPANDABLE_CLUSTER_EXPANDED"
	//   "EXPANDABLE_CLUSTER_COLLAPSED"
	//   "CLUSTER_REQUEST_LATENCY_EVENT_LEVEL" - Event level test code for
	// Clusters in SERP
	//   "EDITORS_CHOICE_CLUSTER_SERP_EVENT_LEVEL"
	//   "BESTK_CLUSTER_SERP_EVENT_LEVEL"
	//   "LIVEOPS_CLUSTER_SERP_EVENT_LEVEL"
	//   "QUICKPICKS_CLUSTER_SERP_EVENT_LEVEL"
	//   "INLINE_DETAILS_AQUALITY_CHECK_PASS" - Event level test codes
	// containing result of aQuality lookup during market details url
	// matching. A failed aQuality result suppresses inline details.
	//   "INLINE_DETAILS_AQUALITY_CHECK_FAIL"
	//   "INLINE_DETAILS_IS_INLINE_URL_FRONTEND" - Event level test code for
	// Aquality/Tquality filtering in LMD project. This is a duplicated
	// testcode created for logging in frontend.
	//   "INLINE_DETAILS_TQUALITY_CHECK_PASS_FRONTEND"
	//   "INLINE_DETAILS_TQUALITY_CHECK_FAIL_FRONTEND"
	//   "INLINE_DETAILS_AQUALITY_CHECK_PASS_FRONTEND"
	//   "INLINE_DETAILS_AQUALITY_CHECK_FAIL_FRONTEND"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_PASS_FRONTEND"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_FAIL_FRONTEND"
	//   "FRESH_RESULTS_SEEKING_CURRENT_YEAR_EVENT_LEVEL" - Event level test
	// code for tracking fresh results seeking within the current year
	// search queries.
	//   "FILTER_TQ_FAILURE_APP" - Event level test code for when we
	// filtered >=1 apps due to tq failure.
	//   "EDITORIAL_CONTENT_CLUSTER_FHR_SERP_EVENT_LEVEL" - Event level test
	// code for Editorial Content/Articles in SERP (FHR)
	//   "DETAILS_PAGE_TQUALITY_UNKNOWN_EVENT_LEVEL" - Event level test
	// codes containing results for aQuality and tQuality in the details
	// page. See go/low-quality-dp-experiment-config for details.
	//   "DETAILS_PAGE_TQUALITY_FAILED_EVENT_LEVEL"
	//   "DETAILS_PAGE_TQUALITY_PASSED_EVENT_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_UNKNOWN_EVENT_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_FAILED_EVENT_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_PASSED_EVENT_LEVEL"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_PASS"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_FAIL"
	//   "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_UNKNOWN" - Event
	// level test codes containing results for caller tablet aQaulity checks
	// for HSDP.
	//   "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_PASS"
	//   "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_FAIL"
	//   "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_UNKNOWN"
	//   "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_PASS"
	//   "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_FAIL"
	//   "PTP_CLUSTER_SERP_P13N_RANKING_EVENT_LEVEL" - Event level test code
	// for cluster, p13n ranking.
	//   "BROAD_INTENT_REWEIGHTING_EVENT_LEVEL" - TestCode for Broad Intent
	// Reweighting Event Level.
	//   "QUERY_DEPENDENT_SNIPPET_EVENT_LEVEL" - Event level test code for
	// query dependent snippet.
	//   "TRUSTED_ENTITY_L1_AND_ATTRIBUTE_SEARCH_QUERY_EVENT" - Event level
	// test code for SERP L1 TG2 category & TG2 attribute queries.
	//   "TRUSTED_ENTITY_L2_L3_SEARCH_QUERY_EVENT" - Event level test code
	// for SERP L2,L3 TG2 category queries.
	//   "EXPANDED_DEV_SUCCESS_CLUSTER_EVENT_LEVEL" - Event level test code
	// for dev success cluster.
	//   "COLLAPSED_DEV_SUCCESS_CLUSTER_EVENT_LEVEL"
	//   "BROAD_INTENT_GAMES_TIMESPENT_EVENT_LEVEL" - TestCode for Broad
	// Intent Games TimeSpent Event Level.
	//
	// "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE_EAP_PARTNER_APPS_EVENT_LEVEL"
	// - Test codes for the feature and each early-access partners for the
	// Play Store IAP sales project at event-level.
	// go/play-store-iap-sales-dd
	//   "GEARHEAD_ATTEMPT_USB_RECOVERY" - USB connection recovery.
	//   "MDP_P13N_ALL_EVENT_LEVEL" - MDP P13N
	//   "MDP_P13N_GAME_QUERY_L5_EVENT_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L6_EVENT_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L7_EVENT_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L8_EVENT_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L9_EVENT_LEVEL"
	//   "MDP_P13N_RERANKING_UNKNOWN_EVENT_LEVEL"
	//   "MDP_P13N_RERANKING_CATEGORICAL_EVENT_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_EVENT_LEVEL"
	//   "MDP_P13N_RERANKING_MULTI_NAVIGATIONAL_EVENT_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_EXT_EVENT_LEVEL"
	//   "SECOND_PASS_POLARIS_RERANKING_EVENT_LEVEL" - Second pass polaris
	// reranking event level.
	//   "SECOND_PASS_POLARIS_WITH_RANKING_CHANGE_EVENT_LEVEL" - Second pass
	// polaris with ranking change event level.
	//   "EXPLORATORY_BOOSTING_EVENT_LEVEL" - Exploratory boosting event
	// level.
	//   "GEARHEAD_TOOLTIP_COOLWALK_DASHBOARD_UNAVAILABLE" - Tooltip for
	// unavailable dashboard support for selected navigation app.
	//   "TIMESLICED_SAFE_SELF_UPDATE" - Test code used when /selfUpdate
	// endpoint last returned self_update_mode =
	// TIMESLICED_SAFE_SELF_UPDATE, indicating that a safe self-update
	// should be attempted.
	//   "NORMAL_SELF_UPDATE" - Test code used when /selfUpdate endpoint
	// last returned self_update_mode = NORMAL_SELF_UPDATE, indicating that
	// either no self update is available or a normal self update should be
	// performed.
	//   "SECOND_PASS_BROAD_INTENT_QUERY_EVENT_LEVEL" - Test code for second
	// pass broad intent query event level.
	//   "SECOND_PASS_REWEIGHTING_TRIGGERED_EVENT_LEVEL" - Test code for
	// second pass reweighting triggered event level.
	//   "GEARHEAD_TOOLTIP_COOLWALK_RAIL_WIDGET" - Tooltip for notifying
	// user of the rail widget setting.
	//   "INLINE_DETAILS_TQUALITY_CHECK_UNKNOWN" - Event level test codes
	// containing result of tquality lookup during market details url
	// matching. An unknown result means the lookup found nothing.
	//   "INLINE_DETAILS_TQUALITY_CHECK_UNKNOWN_FRONTEND"
	//   "EVENT_LEVEL_TEST_CODE_LIMIT"
	//   "RESERVED_4"
	//   "RESERVED_5"
	//   "RESERVED_6"
	//   "HOME_SPONSORED_ADS_CLUSTER_AT_SESSION_LEVEL"
	//   "HOME_SPONSORED_ADS_CLUSTER_GAP_OPTOUT_AT_SESSION_LEVEL"
	//   "FAMILY_FRAUD_CHALLENGE_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_LIVE_OP_CLUSTER_SESSION_LEVEL" - User should see the
	// live op cluster.
	//   "BOOKS_MONETIZABLE_QUERY_AT_SESSION_LEVEL"
	//   "BOOKS_NONMONETIZABLE_QUERY_AT_SESSION_LEVEL"
	//   "NON_BOOKS_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_PROD_V1_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_TAG_OVERRIDE_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_KG_ANNOTATION_QUERY_AT_SESSION_LEVEL"
	//   "EDITORIAL_REVIEW_CARD_ELIGIBLE_AT_SESSION_LEVEL"
	//   "BOOTS_DEST_QUERY_100_INSTALLS_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_DEST_QUERY_150_INSTALLS_QUERY_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_LIVE_OP_CLUSTER_CANDIDATES_SESSION_LEVEL" - User has
	// live op cluster candidates.
	//   "REV_BOOST_V2_TEST_CODE_AT_SESSION_LEVEL"
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL"
	//   "BOOTS_MIN_TAGS_2_AT_SESSION_LEVEL"
	//   "BOOTS_EN_IN_AT_SESSION_LEVEL"
	//   "BOOTS_EN_GB_AT_SESSION_LEVEL"
	//   "BOOTS_EN_PH_AT_SESSION_LEVEL"
	//   "BOOTS_EN_CA_AT_SESSION_LEVEL"
	//   "BOOTS_EN_AU_AT_SESSION_LEVEL"
	//   "BOOTS_EN_I18N_AT_SESSION_LEVEL"
	//   "BOOTS_V2_STAGING_AT_SESSION_LEVEL"
	//   "OFFLINE_APP_SEARCH_AT_SESSION_LEVEL" - Aqua grammar is used to
	// narrow to offline apps.
	//   "ENTERTAINMENT_CLUSTER_CONTAINER_SEARCH_ENABLED_AT_SESSION_LEVEL"
	//   "BEST_SELLER_CART_TAG_AT_SESSION_LEVEL"
	//   "BOOTS_DEST_QUERY_50_INSTALLS_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_SAFT_SPEC2_AT_SESSION_LEVEL"
	//   "SEARCH_NAV_SPONSORED_ADS_CLUSTER_AT_SESSION_LEVEL"
	//   "BOOTS_ISTA_AT_SESSION_LEVEL"
	//   "BOOTS_EN_GLOBAL_AT_SESSION_LEVEL"
	//   "TOP_CHART_RANKING_INFO_AT_SESSION_LEVEL"
	//   "CLIENT_TEST_CODE_VERIFICATION_AT_SESSION_LEVEL" - For verify the
	// client test code logging flow.
	//   "APPS_PUB_QUERY_AT_SESSION_LEVEL"
	//   "BOOTS_V2_AT_SESSION_LEVEL"
	//   "HAS_BOOKS_BIGPOOL_RECS_AT_SESSION_LEVEL" - User has books bigpool
	// recs.
	//   "TESTING_DEFAULT"
	//   "TESTING_BOTH_AT_SESSION_LEVEL"
	//
	// "PLAY_COMMERCE_FRIEDNLY_FRAUD_PREDICT_CHALLENGE_BUT_FORCE_NO_OVERRIDE"
	//  - predict challenge but force not to.
	//   "PLAY_COMMERCE_FRIENDLY_FRAUD_PREDICT_CHALLENGE" - predict
	// challenge and prompt.
	//   "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT" - no predict made.
	//   "PLAY_COMMERCE_FRIENDLY_FRAUD_PREDICT_NO_CHALLENGE" - predict no
	// challenge.
	//   "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT_NO_CHALLENGE" - no predict
	// no challenge.
	//   "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT_HAS_CHALLENGE" - no
	// predict but has challenge.
	//   "BOOTS_V2_STAGING_150_INSTALLS"
	//   "SHOULD_SEE_BOOKS_WISHLIST_CLUSTER"
	//   "BOOTS_MORE_CHIPS_AT_SESSION_LEVEL"
	//   "BOOTS_TAG_CONVERSION_BASED_RERANKING_AT_SESSION_LEVEL"
	//   "BOOTS_KG_FILTERS_AT_SESSION_LEVEL"
	//   "BOOTS_JP_KR_AT_SESSION_LEVEL"
	//   "DETAILS_POST_INSTALL_SPONSORED_ADS_CLUSTER"
	//   "DETAILS_POST_INSTALL_SPONSORED_ADS_CLUSTER_ATLEAST_ONE_AD"
	//   "BOOTS_ISTA_V2_AT_SESSION_LEVEL"
	//   "PRIMETIME_DISTRIBUTOR_IN_DETAILS_PAGES"
	//   "BOOTS_FILTERS_AT_SESSION_LEVEL"
	//   "PRIMETIME_CONTENT_IN_DETAILS_PAGES"
	//   "INSTANT_CART_ELIGIBLE_USERS"
	//   "INSTANT_CART_CACHE_STUDY"
	//   "QUICK_FIX_EXPIRED_CREDIT_CARD"
	//   "BOOTS_EN_GLOBAL_V2_AT_SESSION_LEVEL"
	//   "BOOTS_ISTA_V2_WITH_BOOTS_V2_AT_SESSION_LEVEL"
	//   "SEARCH_NON_NAV_SPONSORED_ADS_CLUSTER"
	//   "BOOTS_NO_TAG_AT_SESSION_LEVEL"
	//   "BOOTS_NO_DIFF_AT_SESSION_LEVEL"
	//   "BOOTS_ISTA_JP_KR_AT_SESSION_LEVEL"
	//   "BOOTS_VS_ISTA_JP_KR_AT_SESSION_LEVEL"
	//   "CHURNED_LIVE_OP_CANDIDATES_SESSION"
	//   "CHURNED_LIVE_OP_SESSION"
	//   "INSTANT_FOP_ELIGIBLE_USERS"
	//   "DCB_ABANDONMENT_TEST_CODE" - Purchase profile abandonment dialog
	// for DCB.
	//   "HOME_SPONSORED_ADS_RE_ENGAGEMENT_CLUSTER"
	//   "ABUSIVE_QUERY_SQUASHING_AT_SESSION_LEVEL" - Testcode for abusive
	// query squashing experiment
	//   "MENDEL_TEST_CODE_VERIFICATION"
	//   "MOVIES_QUICK_SUGGESTION_CLUSTER_PRESENT"
	//   "MOVIES_BECAUSE_OF_YOU_CLUSTER_PRESENT"
	//   "CART_ABANDONMENT_TEST_CODE" - Cart abandonment flow for purchase
	// flow.
	//   "CLASH_ROYALE_AIA_TRY_NOW_TREATMENT"
	//   "CLASH_ROYALE_AIA_TRY_NOW_CONTROL"
	//   "SEARCH_LIVE_OP_QUERY_SESSION"
	//   "BOOTS_ES_PT_AT_SESSION_LEVEL"
	//   "BOOTS_ISTA_ES_PT"
	//   "BOOTS_VS_ISTA_ES_PT"
	//   "CLASH_ROYALE_AIA_TRY_NOW"
	//   "BOOTS_QUERY"
	//   "BOOTS_QUERY_HAS_SELECTED_CHIP"
	//   "BOOTS_QUERY_HAS_ONLY_UNSELECTED_CHIP"
	//   "BOOTS_JPKR_KG_FILTERS"
	//   "BOOTS_URUC_AT_SESSION_LEVEL"
	//   "BOOTS_URUC_PER_INSTALL_AT_SESSION_LEVEL"
	//   "GAMES_HOME_VIDEO_SPONSORED_CLUSTER_IS_PRESENT"
	//   "BOOTS_JP_KR_V2_AT_SESSION_LEVEL"
	//   "HOUSE_OF_FUN_AIA_TRY_NOW"
	//   "BOOTS_FILTERS_AT_END_AT_SESSION_LEVEL"
	//   "APP_SUPPORTS_INSTANT_LAUNCH_AT_SESSION_LEVEL"
	//   "SEARCH_MDP_LIVE_OP_QUERY_SESSION"
	//   "BOOTS_I18N_AT_SESSION_LEVEL"
	//   "GEARHEAD_VANAGON_FRX_PHASE1_CANDIDATE"
	//   "LOW_RESULT_CLUSTER_AT_SESSION_LEVEL"
	//   "PERSONALIZED_CLUSTER_AT_SESSION_LEVEL"
	//   "GAME_SEEKING_PERSONALIZED_CLUSTER_AT_SESSION_LEVEL"
	//   "VX_CLUSTER_AT_SESSION_LEVEL"
	//   "LOW_RESULT_LATENCY_AT_SESSION_LEVEL"
	//   "PSEUDOCREDIT_UX_REVAMP_TEST_CODE" - Pseudocredit voucher UX revamp
	// experiment.
	//   "MOVIES_GROOT_20_AT_SESSION_LEVEL"
	//   "MOVIES_GROOT_10_AT_SESSION_LEVEL"
	//   "MOVIES_GROOT_5_AT_SESSION_LEVEL"
	//   "MOVIES_GROOT_3_AT_SESSION_LEVEL"
	//   "MOVIES_GROOT_1_AT_SESSION_LEVEL"
	//   "GEARHEAD_MESSAGING_AUTO_REPLY_CANDIDATE"
	//   "MOVIES_DORA_SEARCH_AT_SESSION_LEVEL"
	//   "MOVIES_MDP_SEARCH_AT_SESSION_LEVEL"
	//   "MOVIES_ORGANIC_SEARCH_AT_SESSION_LEVEL"
	//   "FULL_PAGE_REPLACEMENT_AT_SESSION_LEVEL"
	//   "DISPLAY_ADS_RESPONSE_RECEIVED"
	//   "ENTERTAINMENT_CLUSTER_TRIGGERING_UNDER_FPR_AT_SESSION_LEVEL" -
	// Track entertainment cluster when FPR is enabled.
	//   "WORDS_WITH_FRIENDS_AIA_TRY_NOW"
	//
	// "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_ENABLED_AT_SESSION_LEVEL"
	//
	// "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_TRIGGERED_AT_SESSION_LEVEL"
	//   "MIGHTY_BATTLES_AIA_TRY_NOW"
	//   "BUBBLE_WITCH_AIA_TRY_NOW"
	//   "PANDA_POP_AIA_TRY_NOW"
	//   "FINAL_FANTASY_XV_AIA_TRY_NOW"
	//   "BOOTS_V2_ES_PT"
	//   "BOOTS_VS_V2_ES_PT"
	//   "BUY_NOW_BUTTON"
	//   "BOOTS_SELECTOR"
	//   "ADS_EXPERIMENT_ID_RECEIVED"
	//   "BOOTS_I18N_V2_AT_SESSION_LEVEL"
	//   "BOOTS_I18N_V2_VS_V1_AT_SESSION_LEVEL"
	//   "BEST_SELLER_CART_TAG_FOR_MENDEL"
	//   "VIDEO_CLUSTER_TRIGGERING_WHEN_VIDEO_LANDING_ENABLED"
	//   "AUDIOBOOKS_KIDS_CATEGORICAL_SEARCH_AT_SESSION_LEVEL"
	//   "ZERO_RESULT_AT_SESSION_LEVEL"
	//   "BOOTS_I18N_100_THRESH_AT_SESSION_LEVEL"
	//   "BOOTS_I18N_150_THRESH_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_MY_APPS_LIVE_OP_CLUSTER" - User should see liveops
	// cluster on MyApps Page
	//   "CANDY_CRUSH_AIA_TRY_NOW"
	//   "ABUSIVE_QUERY_AT_SESSION_LEVEL"
	//   "PERMISS_TESTING_FOR_TEST_CODE_TOOL"
	//   "PARTNER_VIOLENCE_TRIGGERING_AT_SESSION_LEVEL"
	//   "BOOTS_V3_AT_SESSION_LEVEL"
	//   "HOME_SPONSORED_ADS_CLUSTER_NO_ADS_AT_SESSION_LEVEL"
	//   "BOOKS_XSELL_ELIGIBLE_APP_AT_SESSION_LEVEL" - Details page of an
	// app eligible for Books XSell
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_SESSION_LEVEL"
	//   "SUBSCRIBE_AND_INSTALL_AVAILABLE_CLIENT_SESSION_LEVEL" - Subscribe
	// & Install metadata comes from the server is available to the app for
	// the current user. It helps us to slice metrics for the S&I UDPR
	// migration (a client change). Context:
	// https://screenshot.googleplex.com/APAqqLFYpXjfmWQ.
	//   "NAV_EXT_UI_SESSION"
	//   "NAV_EXT_UI_EVENT"
	//   "NAV_EXT_SESSION"
	//   "CART_ABANDONMENT_SUB_DOLLAR_TEST_CODE"
	//   "PGS_TEST_CODE_LOGGING_VERIFICATION_AT_SESSION_LEVEL"
	//   "DEFAULT_FOP_NON_INSTANT_IAB_EVENT_LEVEL"
	//   "DEFAULT_FOP_INSTANT_FOP_EVENT_LEVEL"
	//   "CART_ABANDONMENT_V2_EXP1_TEST_CODE"
	//   "FAST_REINSTALL_TEST_CODE"
	//   "ADS_CUSTOM_DETAILS_PAGE_ASSETS_PRESENT"
	//   "WELLNET_CASH_DEPRECATED" - Deprecated. Please use user level test
	// code below.
	//   "APPS_DETAILS_PAGE_PROMOTION_SESSION_LEVEL" - User saw/would have
	// seen the details page promotion in App
	//   "BOOKS_DETAILS_PAGE_PROMOTION_SESSION_LEVEL" - Details Page. User
	// saw/would have seen the details page promotion in Books
	//   "CART_NO_FOP" - Details Page. Cart with no fop shown.
	//   "CART_ABANDONMENT_BOOK_NEVER_TEST_CODE" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_BOOK_NEVER_SESSION_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_BOOK_VX_NEVER_SESSION_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_MOVIE_NEVER_SESSION_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_MOVIE_VX_NEVER_SESSION_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "ADS_CUSTOM_DETAILS_PAGE_ASSETS_SERVED"
	//   "DETAILS_PAGE_PROMOTION_SESSION_LEVEL"
	//   "BURNSIE_FOR_EXPIRED_CARD_EVENT_LEVEL"
	//   "CART_ABANDONMENT_HIGH_CART_SESSION_LEVEL" - Cart abandonment exp
	// for high-value carts (v3)
	//   "BOOKS_DETAILS_PAGE_KEYWORD_CLUSTER"
	//   "SHOULD_SEE_LIVE_OPS_V2_CLUSTER"
	//   "DETAILS_PAGE_LIVE_OPS_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_LIVE_OPS_FROM_NEW_APPS"
	//   "SHOULD_SEE_LIVE_OPS_FROM_NEW_APPS_ONLY"
	//   "BOOKS_DETAILS_PAGE_SIMILAR_CLUSTER_AT_SESSION_LEVEL"
	//   "BOOKS_DETAILS_PAGE_POST_ACQUIRE_SIMILAR_CLUSTER_AT_SESSION_LEVEL"
	//   "FLOATING_HIGHLIGHTS_ROW_TRIGGERING_AT_SESSION_LEVEL"
	//   "ADS_SEARCH_PAGE_SC_PRESENT" - Search Page where Sponsored cluster
	// is inserted
	//   "ADS_SEARCH_PAGE_SC_ABSENT" - SERP where Sponsored cluster is not
	// inserted
	//   "CART_ABANDON_SURVEY_V1"
	//   "GEARHEAD_PROJECTION_FRX_ADDITIONAL_INSTALL_REQUIREMENTS"
	//   "APPS_DETAILS_PAGE_EXISTING_PROMOTION_SESSION_LEVEL" - User
	// saw/would have seen the promotion that was redeemd from
	//   "BOOKS_DETAILS_PAGE_EXISTING_PROMOTION_SESSION_LEVEL" - non details
	// page in App Details Page. User saw/would have seen the promotion that
	// was redeemd from
	//   "BOOKS_ELIGIBLE_FOR_BUNDLE" - non details page in Books Details
	// Page.
	//   "IN_ACQUIRE_TEST_CODE"
	//   "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MISMATCH_AT_SESSION_LEVEL"
	//   "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MATCH_AT_SESSION_LEVEL"
	//   "APPS_SEARCH_PRICE_INTENT"
	//   "APPS_ST_PRICE_INTENT_AT_SESSION_LEVEL"
	//   "PERSONALIZED_FOP_OPTIONS_RECOMMENDED"
	//   "FALLBACK_FOP_OPTIONS_RECOMMENDED"
	//   "APPS_ST_AUDIENCE_INTENT_AT_SESSION_LEVEL"
	//   "INSTANT_APP_LAUNCH_KEY_ELIGIBLE_APP"
	//   "CDP_PROMOTIONAL_IMAGE_LOCALE_MATCH_AT_SESSION_LEVEL"
	//   "CDP_PROMOTIONAL_IMAGE_LOCALE_MISMATCH_AT_SESSION_LEVEL"
	//   "CDP_SCREENSHOT_LOCALE_MISMATCH_AT_SESSION_LEVEL"
	//   "CDP_SCREENSHOT_LOCALE_MATCH_AT_SESSION_LEVEL"
	//   "CDP_PROMOTIONAL_VIDEO_LOCALE_MISMATCH_AT_SESSION_LEVEL"
	//   "CDP_PROMOTIONAL_VIDEO_LOCALE_MATCH_AT_SESSION_LEVEL"
	//   "ADS_SEARCH_PAGE_IS_MDP"
	//   "CLOSED_TESTING_TRACK"
	//   "SHOULD_SEE_PREREG_LIVE_OPS_EH"
	//   "SHOULD_SEE_PREREG_LIVE_OPS_DP"
	//   "SHOULD_SEE_PREREG_LIVE_OPS_DEP"
	//   "INTERNAL_TESTING_PROGRAM"
	//   "FETCH_IN_PGS"
	//   "APPS_DETAILS_PAGE_PROMOTION_DEFAULT_SESSION_LEVEL"
	//   "BOOKS_DETAILS_PAGE_PROMOTION_DEFAULT_SESSION_LEVEL"
	//   "HERO_CARD_CLUSTER_AT_SESSION_LEVEL"
	//   "BOOKS_QUERY_ELIGIBLE_FOR_APPS_CLUSTER_AT_SESSION_LEVEL"
	//   "ADS_SEARCH_CATEGORICAL_SC"
	//   "ADS_SEARCH_CATEGORICAL_SC_COUNTERFACTUAL" - Counterfactual for SC
	// in search categorical
	//   "FALLBACK_FOP_OPTIONS_AVAILABLE"
	//   "PERSONALIZED_FOP_OPTIONS_AVAILABLE"
	//   "SWOOP_10P_OFF_SESSION_LEVEL"
	//   "SWOOP_25P_OFF_SESSION_LEVEL" - User eligible for 25% off for next
	// renewal
	//   "SWOOP_50P_OFF_SESSION_LEVEL" - User eligible for 50% off for next
	// renewal
	//   "SWOOP_75P_OFF_SESSION_LEVEL" - User eligible for 75% off for next
	// renewal
	//   "SWOOP_90P_OFF_SESSION_LEVEL" - User eligible for 90% off for next
	// renewal
	//   "RETRIEVAL_SERVICE_GLUE_SCORE_UNDETERMINED"
	//   "RETRIEVAL_SERVICE_GLUE_SCORE_LOW"
	//   "RETRIEVAL_SERVICE_GLUE_SCORE_MEDIUM"
	//   "RETRIEVAL_SERVICE_GLUE_SCORE_HIGH"
	//
	// "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_NEVERS_SESSION_LEVEL"
	//
	// "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_BUYERS_SESSION_LEVEL"
	//
	// "APPS_DETAILS_PAGE_PROMOTION_EXP_2_PREMIUM_APP_NEVERS_SESSION_LEVEL"
	//
	// "CANCEL_SUBSCRIPTION_CONFIRMATION_DIALOG_SHOWN_WHEN_ELIGIBLE_FOR_ENTIT
	// LEMENT_BENEFITS"
	//   "INSTANT_APP_MULTI_LAYOUT_CLUSTER_TOP_VISIBLE_APP"
	//   "TEST_CODE_BUILD_VERIFICATION_AT_SESSION_LEVEL"
	//   "PREREGISTRATION_AT_SESSION_LEVEL"
	//   "CALL_PDS_FETCH_DIRECTLY_IN_PGS"
	//   "RETRIEVAL_SERVICE_GLUE_SCORE_MISSING"
	//   "GAMES_PROFILE_CREATION"
	//   "IN_APP_SALE_IN_CART" - User saw/would have seeen an in-app sale.
	//   "MOVIES_MAX_NUMBER_MEESEEKS_CLUSTERS_SHOWN"
	//   "MOVIES_MAX_NUMBER_BYW_CLUSTERS_SHOWN"
	//   "GET_BOOKS_HOME_STREAM"
	//   "RANDOM_FOP_OPTIONS_RECOMMENDED"
	//   "MOVIES_QUERY_ELIGIBLE_FOR_APPS_CLUSTER_AT_SESSION_LEVEL"
	//   "INSTANT_BANNER_ELIGIBLE"
	//   "SUGGEST_NAV_SUGGEST_TRIGGERED" - At least one navigational
	// suggestion was returned.
	//   "TRUSTED_ENTITY_SEARCH_QUERY"
	//   "BURNSIE_ADD_FOP_PROMOTION_SESSION_LEVEL" - Uer sees/should have
	// seen promotion for Burnsie(Prompt for
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_3_PREMIUM_APP_NEVERS" - fop) in
	// free app purchase.
	//   "MDP_MISMATCH"
	//   "MDP_MATCH" - is_mdp query by QRewrite and OneTree matches
	//   "MOVIES_WALLE_SEARCH_AT_SESSION_LEVEL"
	//   "BUNDLE_FBT_DISCOUNT_AT_SESSION_LEVEL"
	//   "BUNDLE_SERIES_DISCOUNT_AT_SESSION_LEVEL"
	//   "DETAILS_PAGE_DFF_BADGE"
	//   "MOVIES_REPEATED_BUYER"
	//   "PURCHASE_MANAGER_CHALLENGE_SHOWN"
	//   "SUBSCRIPTION_CANCELLATION_PROMOTION_SESSION_LEVEL"
	//   "SUBSCRIPTION_RETRY_FOP_FOR_DCB_AS_PRIMARY_SESSION_LEVEL" -
	// Subscription retry fop flow when the primary fop is dcb.
	//   "SUBSCRIPTION_DCB_AS_DEFAULT_FOP_WITH_BETTER_FOPS_SESSION_LEVEL"
	//   "SUBSCRIPTION_DCB_AS_ADD_FOP_OPTION_SESSION_LEVEL"
	//   "DFF_ON_KIDS_SEEKING_QUERY"
	//   "SHOULD_SEE_CHURNED_LIVEOPS_IN_GAMES_HOME"
	//   "APPS_SEARCH_TOPIC_RFY_CLUSTER_AT_SESSION_LEVEL"
	//   "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_AT_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_TOPIC_QUERY_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_TG_QUERY_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_ALL_GAME_QUERIES_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_NON_TG_QUERIES_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_VERTICAL_RFY_CLUSTER_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_GAME_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_MDP_SESSION_LEVEL"
	//   "APPS_PERSONALIZED_MDP_GAME_SESSION_LEVEL"
	//   "PLAY_STORE_SHOW_CART"
	//   "MOVIES_RENTER"
	//   "LOYALTY_HOME_FIRST_TAB_SESSION_LEVEL" - User visited the first tab
	// of Loyalty Home.
	//   "LOYALTY_HOME_SECOND_TAB_SESSION_LEVEL" - User visited the second
	// tab of Loyalty Home.
	//   "LOYALTY_HOME_THIRD_TAB_SESSION_LEVEL" - User visited the third tab
	// of Loyalty Home.
	//   "SHOULD_SEE_LIVEOPS_ON_APPS_HOME"
	//   "MARKETING_OPTIN_INTERSTITIAL_AT_SESSION_LEVEL" - Adds session
	// level test code for marketing opt-in
	//   "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_EXPERIMENT_USER_LEVEL"
	//   "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_EXPERIMENT_TEST_CODE"
	//   "HAS_BOOK_SERIES_BUNDLE"
	//   "HAS_BOOK_FREQUENTLY_BOUGHT_TOGETHER_BUNDLE"
	//   "APPS_SEARCH_TOPIC_RFY_CLUSTER_COUNTERFACTUAL_AT_SESSION_LEVEL"
	//
	// "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_COUNTERFACTUAL_AT_SESSION_LEVEL"
	//   "ASYNC_ADS_FALLBACK_CLUSTER"
	//   "DETAILS_PAGE_KIDS_QUALITY_BADGE"
	//   "FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_INSTALLED"
	//   "FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_NOT_INSTALLED"
	//   "NON_FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_INSTALLED"
	//   "NON_FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_NOT_INSTALLED"
	//   "CLIENT_NOTIFICATION_APP_UNINSTALLED_WITH_SUBSCRIPTION"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_1_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_2_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_3_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_4_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_5_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_6_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_7_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_8_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_9_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_10_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_11_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_12_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_13_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_14_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_15_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_16_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_17_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_18_AT_SESSION_LEVEL"
	//   "ADD_FORM_OF_PAYMENT_DEEP_LINK_MATCH_SUCCESS"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_19_AT_SESSION_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_20_AT_SESSION_LEVEL"
	//   "KIDS_AGE_SCORE_BONUS"
	//   "NOTIFICATION_IMPRESSION_FOR_APP_UNINSTALLED_WITH_SUBSCRIPTION"
	//   "BUNDLE_DISCOUNT_SHOWN_ON_DETAIL_PAGE_AT_SESSION_LEVEL"
	//   "GLUE_SCORE_INTEGRATION_DETAILS_PAGE_SESSION_LEVEL"
	//   "UPDATE_SUBSCRIPTION_INSTRUMENT_PAYMENT_DECLINED_FOP_IMPRESSION"
	//
	// "UPDATE_SUBSCRIPTION_INSTRUMENT_PAYMENT_DECLINED_FOP_MESSAGE_IMPRESSIO
	// N"
	//   "RECS_STALENESS_DEMOTION_1_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_2_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_3_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_4_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_5_SESSION_LEVEL"
	//   "ADD_FOP_WITHOUT_EXISTING_FOP"
	//   "KIDS_QUALITY_TAG_SCORE_BONUS_AT_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_1_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_2_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_3_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_4_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_5_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_6_SESSION_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_7_SESSION_LEVEL"
	//   "SHOULD_SEE_LOYALTY_SIGNUP_INTERSTITIAL_SESSION_LEVEL" - User
	// sees/should have seen the loyalty signup interstitial.
	//   "SHOULD_SEE_REVIEW_MORE_LINK"
	//   "TEST_FOR_LEVELS_FLAG_AT_SESSION_LEVEL"
	//   "INCENTIVIZED_OPTIN_INTERSTITIAL_AT_SESSION_LEVEL" - Distigunish
	// who see the incentivized opt-in prompt
	//   "PREMIUM_GAME_HOME"
	//   "TESTING_THE_TESTCODE_TOOL"
	//   "LB_TARGETED_AT_SESSION_LEVEL" - leon banner is targeted at session
	// level.
	//   "LB_ABOVE_AT_SESSION_LEVEL"
	//   "LB_BELOW_AT_SESSION_LEVEL"
	//   "LB_PAGINATED_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_POINTS_SPEND_PROMOTION_REORDERING" - User should see
	// personalized Use Tab
	//   "SHOULD_SEE_DEFAULT_POINTS_SPEND_PROMOTION_ORDER"
	//   "RECS_USER_INTENT_HP_LOW_INTENT"
	//   "PCD_APP_DETAILS" - User visited a child directed app details page.
	//   "MIXED_AUDIENCE_APP_DETAILS" - User visited a mixed audience app
	// details page.
	//   "LB_IMPRESSED_AT_SESSION_LEVEL"
	//   "RENEWAL_REMINDER_IN_CANCEL_FLOW"
	//   "RECS_STALENESS_DEMOTION_6_AT_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_7_AT_SESSION_LEVEL"
	//   "RECS_STALENESS_DEMOTION_8_AT_SESSION_LEVEL"
	//   "HERO_CARD_CLUSTER_INSTANT_ELIGIBLE"
	//   "LOYALTY_SHOULD_SEE_FREE_TRIAL_SUBSCRIPTION_POINTS_EARN_MESSAGE"
	//
	// "LOYALTY_SHOULD_NOT_SEE_FREE_TRIAL_SUBSCRIPTION_POINTS_EARN_MESSAGE"
	//   "QREWRITE_TRUE_MDP_TRUE"
	//   "QREWRITE_TRUE_ONETREE_TRUE"
	//   "QREWRITE_FALSE_ONETREE_FALSE"
	//   "QREWRITE_TRUE_ONETREE_FALSE"
	//   "QREWRITE_FALSE_ONETREE_TRUE"
	//   "DOC_ID_MISMATCH"
	//   "MDP_DOC_ID_MISMATCH"
	//   "MOVIES_USER_INTERESTS_NONE_AT_SESSION_LEVEL"
	//   "MOVIES_USER_INTERESTS_LOW_AT_SESSION_LEVEL"
	//   "MOVIES_USER_INTERESTS_MEDIUM_AT_SESSION_LEVEL"
	//   "MOVIES_USER_INTERESTS_HIGH_AT_SESSION_LEVEL"
	//   "MOVIES_BOY_SEEDS_NONE_AT_SESSION_LEVEL"
	//   "MOVIES_BOY_SEEDS_LOW_AT_SESSION_LEVEL"
	//   "MOVIES_BOY_SEEDS_MEDIUM_AT_SESSION_LEVEL"
	//   "MOVIES_BOY_SEEDS_HIGH_AT_SESSION_LEVEL"
	//   "LOYALTY_NO_PERSONALIZABLE_CONTENT_CREDIT_ON_TOP"
	//   "LOYALTY_PERSONALIZABLE_CONTENT_CREDIT_ON_BOTTOM"
	//   "PIXER_DUMMY_TEST_CODE"
	//   "RENEWAL_REMINDER_SET_IN_CANCEL_FLOW"
	//   "RENEWAL_REMINDER_CAN_BE_SET_IN_CANCEL_FLOW"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_ELIGIBLE_SESSION_LEVEL"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_TARGETED_SESSION_LEVEL"
	//   "PLAY_PASS_IPD_ELIGIBLE_SESSION_LEVEL"
	//   "PLAY_PASS_FHR_ELIGIBLE_SESSION_LEVEL"
	//   "DOUBLE_WIDE_SCREENSHOT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL"
	//   "TRIPLE_WIDE_VIDEO_CLUSTER_TRIGGERING_AT_SESSION_LEVEL"
	//   "WIDE_MEDIA_CLUSTER_TRIGGERING_AT_SESSION_LEVEL"
	//   "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS"
	//   "RENEWAL_REMINDER_ELIGIBLE_EXPERIMENT_NOT_ENABLED"
	//   "SMART_FOP_SESSION_LEVEL_AT_SESSION_LEVEL"
	//   "SMART_FOP_AT_SESSION_LEVEL"
	//   "MOVIES_USER_FREE_AT_SESSION_LEVEL" - This is for splitting movies
	// free users
	//   "MOVIES_USER_FAMILY_AT_SESSION_LEVEL" - This is for splitting
	// movies family users
	//   "MOVIES_USER_RENTER_AT_SESSION_LEVEL" - This is for splitting
	// movies renter users
	//   "MOVIES_USER_BUYER_AT_SESSION_LEVEL" - This is for splitting movies
	// buyer users
	//   "HAS_NON_RELOADABLE_PREPAID_CARD_AT_SESSION_LEVEL"
	//   "BILLING_PROFILE_DCB_ELIGIBLE"
	//   "BILLING_PROFILE_GC_ELIGIBLE"
	//   "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_AT_SESSION_LEVEL"
	//   "LOYALTY_SHOULD_SEE_UPSELL_AT_SESSION_LEVEL"
	//   "LOYALTY_UPSELL_AFTER_IN_APP_PURCHASE_AT_SESSION_LEVEL"
	//   "REDEEM_WITH_SUBSCRIBE_AND_INSTALL"
	//   "SHOULD_SEE_APPS_COMPARISON_CLUSTER"
	//   "IS_APPS_COMPARISON_VISIBLE"
	//   "RESIGNUP_FROM_SUBS_CENTER"
	//   "VX_CLUSTER_IN_APPS_SERP_IMPRESSION_SESSIONS"
	//   "PARTNER_REWARD_ON_LOYALTY_SIGNUP_PAGE"
	//   "UGC_CLUSTER_AT_SESSION_LEVEL" - Gameplay video cluster.
	//   "UGC_LANDING_PAGE_AT_SESSION_LEVEL" - Gameplay video cluster
	// landing page.
	//   "REGIONAL_TRENDING_CLUSTER"
	//   "MONETIZABLE_FOP_OPTIONS_AVAILABLE"
	//   "MONETIZABLE_FOP_OPTIONS_RECOMMENDED"
	//   "ORIGINAL_ML_FOP_OPTIONS_AVAILABLE"
	//   "ANON_ML_FOP_OPTIONS_AVAILABLE"
	//   "ORIGINAL_ML_FOP_OPTIONS_RECOMMENDED"
	//   "USABLE_ORIGINAL_ML_FOP_OPTIONS_FOUND"
	//   "USABLE_ANON_ML_FOP_OPTIONS_FOUND"
	//   "ANON_ML_FOP_OPTIONS_RECOMMENDED"
	//   "NEW_ABUSE_MODEL_AT_SESSION_LEVEL"
	//   "RENT_BUTTON_CLICK"
	//   "BUY_BUTTON_CLICK"
	//   "TVOD_BUTTON_CLICK"
	//   "MULTIQUANTITY_EAP_NCSOFT_SKU1"
	//   "MULTIQUANTITY_EAP_NCSOFT_SKU2"
	//   "MULTIQUANTITY_EAP_NCSOFT_SKU3"
	//   "MULTIQUANTITY_EAP_PACKAGE_GAMANIA"
	//   "MULTIQUANTITY_EAP_PACKAGE_GARENA_FF"
	//   "MULTIQUANTITY_EAP_PACKAGE_GARENA_FF_MAX"
	//   "VX_QREF_TRIGGERED_AT_SESSION_LEVEL_AT_SESSION_LEVEL"
	//   "VX_NAVBOOST_SUPPRESSED_AT_SESSION_LEVEL_AT_SESSION_LEVEL"
	//   "VX_QREF_TRIGGERED_AT_SESSION_LEVEL"
	//   "VX_NAVBOOST_SUPPRESSED_AT_SESSION_LEVEL"
	//   "ABUSE_FOR_BANNER"
	//   "ABUSE_FOR_CART_ABANDON"
	//   "ABUSE_FOR_DETAILS_PAGE"
	//   "ABUSE_FOR_PLAY_OPT_IN_PROMPT"
	//   "MOVIE_BUTTON_CLICK"
	//   "TV_BUTTON_CLICK"
	//   "LOYALTY_SEES_POINTS_EARN_PROMOTIONS_AT_SESSION_LEVEL"
	//   "KIDS_CONTENT_SEEKING_QUERY_SESSION"
	//   "KIDS_CONTENT_SEEKING_QUERY_TREATMENT_APPLIED_SESSION"
	//   "FAMILY_BUTTON_CLICK"
	//   "UGC_CLUSTER_NON_FIRST_PAGE_AT_SESSION_LEVEL"
	//   "UGC_CLUSTER_ELIGIBLE_AT_SESSION_LEVEL"
	//   "LOYALTY_SEES_FREE_TRIAL_SUBSCRIPTION_AT_SESSION_LEVEL"
	//   "MOVIES_FAMILY_USER"
	//   "MAIN_FHR_CCI_TRIGGERING_AT_SESSION_LEVEL"
	//   "BASELIST_FHR_CCI_TRIGGERING_AT_SESSION_LEVEL"
	//   "FIREBALL_LANGUAGE_BUTTON_CLICK"
	//   "QUEST_GET_ADDITIONAL_CHALLENGE_SUCCESS_AT_SESSION_LEVEL"
	//   "BASELIST_FHR_IMPRESSION_CAPPING_AT_SESSION_LEVEL"
	//   "APPS_SEARCH_FILTERS_TRIGGERED"
	//   "APPS_SEARCH_FILTERS_ACTIVATED"
	//   "PLAY_SUBMANAGEMENT_LOG_HOOK_SESSION_EXAMPLE"
	//
	// "OUT_OF_APP_PURCHASABLE_PRODUCTS_ON_DETAILS_PAGE_PREFETCH_AT_SESSION_L
	// EVEL"
	//   "LOYALTY_SIGNUP_INTERSTITIAL_AT_SESSION_LEVEL"
	//   "LOYALTY_SIGNUP_SUCCESS_AT_SESSION_LEVEL"
	//   "BOOTS_CHIPS_NOT_TRIGGERED"
	//   "MAIN_FHR_IMPRESSION_CAPPING_AT_SESSION_LEVEL"
	//   "BOOTS_CHIPS_NOT_TRIGGERED_COUNTERFACTUAL"
	//   "BOOTS_CHIPS_TRIGGERED_COUNTERFACTUAL"
	//   "APPS_SEARCH_FILTERS_NOT_TRIGGERED"
	//   "IN_APP_ITEM_DUPLICATE_PURCHASE"
	//   "MOVIES_SERIES_CLUSTER"
	//
	// "FOP_OPTION_OR_EXISTING_INSTRUMENTS_MATCHED_PROMOTION_AT_SESSION_LEVEL
	// "
	//   "FOP_OPTION_MATCHED_PROMOTION_ONLY_AT_SESSION_LEVEL"
	//   "PREFERRED_FOP_AT_SESSION_LEVEL"
	//   "REDEEM_NOT_ENROLLED_TO_LOYALTY_AT_SESSION_LEVEL"
	//   "VIDEO_CLUSTER_EXPANDED"
	//   "LOYALTY_UPSELL_SEEN_AT_SESSION_LEVEL"
	//   "GEARHEAD_TOOLTIP_SETTINGS_NTH_RUN"
	//   "LELOLAND_INSTANT_FOP_V1"
	//   "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_AT_SESSION_LEVEL"
	//   "TRIPLE_WIDE_SCREENSHOT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL"
	//   "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN_AT_USER_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN_AT_SESSION_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT_AT_SESSION_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL_AT_SESSION_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV_AT_SESSION_LEVEL"
	//   "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL_AT_SESSION_LEVEL"
	//   "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP_AT_SESSION_LEVEL"
	//   "LELOLAND_INSTANT_FOP_V1_1"
	//   "LEGOLAND_INSTANT_FOP_KERAS_V1"
	//   "LEGOLAND_INSTANT_FOP_KERAS_V1_1"
	//   "PROMOTION_P13N_BANNER_IN_HOME_AT_SESSION_LEVEL"
	//   "SHOULD_SEE_POINTS_BALANCE_ON_HOME_TOOLBAR_AT_SESSION_LEVEL"
	//   "BOOKS_HAS_USER_FEEDBACK" - User info has at least one feedback
	// record
	//   "BOOKS_USER_FEEDBACK_ADVANCED" - User has many feedback records
	//   "LOYALTY_LIVE_OPS_RETURNED_AT_SESSION_LEVEL"
	//   "LOCALIZED_PRICING_EAP_EA_NFS"
	//   "LOCALIZED_PRICING_EAP_EA_RR3"
	//   "PURCHASE_FLOW_ENTRY_PROMOTION_AT_SESSION_LEVEL"
	//   "PURCHASE_FLOW_ENTRY_PROMOTION_ELIGIBLE_AT_SESSION_LEVEL"
	//   "PLAY_POINTS_HOME_AT_SESSION_LEVEL"
	//   "UGC_VIDEO_CLIENT"
	//   "APPS_DETAILS_PAGE_SIMILAR_APPS"
	//   "SEARCH_MDP_TRIGGERED_SESSION_LEVEL"
	//   "PROMOLINK_CDP_SESSION_LEVEL"
	//   "PROMOLINK_CDP_TITLE_PAGE_SESSION_LEVEL"
	//   "PROMOLINK_CDP_TOPIC_PAGE_SESSION_LEVEL"
	//   "PROMOLINK_CDP_GENERIC_PAGE_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_1_AT_SESSION_LEVEL"
	//   "WMC_INSTANT_PREVIEW_CLUSTER_AT_SESSION_LEVEL"
	//   "POINTS_PROMOTION_CONTENT_HOME_AT_SESSION_LEVEL"
	//   "POINTS_PROMOTION_CONTENT_PAGE_AT_SESSION_LEVEL"
	//   "SEARCH_SYN_APPS_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_2_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_3_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_4_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_5_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_6_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_7_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_8_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_9_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_10_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_11_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_12_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_13_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_14_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_15_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_16_AT_SESSION_LEVEL"
	//   "IN_APP_MESSAGING_APP_17_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_AT_SESSION_LEVEL" - Test Codes for in-app offers at
	// session level.
	//   "IN_APP_OFFER_APP_1_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_APP_2_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_APP_3_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_APP_4_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_1_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_2_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_3_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_4_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_SAVED_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_1_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_2_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_3_AT_SESSION_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_4_AT_SESSION_LEVEL"
	//   "QUICK_BUY_AT_SESSION_LEVEL"
	//   "DEVELOPER_PAGE_AT_SESSION_LEVEL"
	//   "GAMES_SUBNAV_SHUFFLE_APPLIED" - see go/reordering-subnav-tabs
	//   "APPS_SUBNAV_SHUFFLE_APPLIED" - see go/reordering-subnav-tabs
	//   "BOOKS_FREE_FIXED_DURATION_RENTAL_SESSION_LEVEL"
	//   "BOOKS_FREE_FIXED_DATE_RENTAL_SESSION_LEVEL"
	//   "PAYMENTS_DELAYED_CHARGING_AT_SESSION_LEVEL"
	//   "QUICK_BUY_ELIGIBLE_AT_SESSION_LEVEL"
	//   "BOOKS_PRICE_DROP_SESSION_LEVEL"
	//   "LEGOLAND_FOP_COVERSION_V1"
	//   "LEGOLAND_FOP_COVERSION_V1_1"
	//   "LIVE_OP_EVAL_QUALITY_FILTERING"
	//   "TG_VALIDATED_CRISPR_TAG_AT_SESSION_LEVEL"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_0"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_1"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_2"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_3"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_4"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_5"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_6"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_7"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_8"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_9"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_10"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_11"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_12"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_13"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_14"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_15"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_16"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_17"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_18"
	//   "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_19"
	//   "NON_EMPTY_HOME_STREAM_LIVE_OPS_CLUSTER_SERVED"
	//   "SHOULD_SEE_LIVE_OPS_CARD_IN_SEARCH_MDP"
	//   "FIRST_PARTY_PROMOTION_LIVE_OP_SESSION_LEVEL"
	//   "CART_ABANDONMENT_SUBSCRIPTION_ONE_TIME_PASS_SESSION_LEVEL" - User
	// saw/would have seen the subscription one time pass offer
	//   "LEGOLAND_INSTANT_FOP_SCREEN_SESSION_LEVEL" - when abandonments the
	// cart.
	//   "LEGOLAND_INSTANT_FOP_SCREEN_WITH_PROMOTION_SESSION_LEVEL"
	//   "MY_REVIEWS_PAGE_VISIT_USER_LEVEL"
	//   "SERIES_BUNDLE_MULTI_TIER_DISCOUNT_SESSION_LEVEL"
	//   "DEVELOPER_PROMOTIONS_ELIGIBLE_SESSION_LEVEL"
	//   "GOOGLE_PROMOTIONS_ELIGIBLE_SESSION_LEVEL"
	//   "USER_TRIGGERED_IAP_PROMOTION_RETRIEVAL_SESSION_LEVEL"
	//   "IAP_HAS_UNREDEEMED_PROMOTIONS_CLIENT_SESSION_LEVEL"
	//   "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SIGNUP_SESSION_LEVEL" -
	// Subscription update fop flow at signup when the primary fop
	//
	// "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SUB_CENTER_SESSION_LEVEL"
	// - is dcb. Subscription update fop flow at sub center when the primary
	//   "SUBS_PRICE_CHANGE_VERSION_TIME_CHECK_SESSION_LEVEL" - fop is dcb.
	//   "RENEW_TASK_DELAYED_SUBSCRIPTION_TARGETED"
	//   "RENEW_TASK_DELAYED_SUBSCRIPTION_NOT_TARGETED"
	//   "PRE_AUTH_TASK_DELAYED_SUBSCRIPTION_TARGETED"
	//   "PRE_AUTH_TASK_DELAYED_SUBSCRIPTION_NOT_TARGETED"
	//   "REDEEM_REDIRECT_CHALLENGE_AT_SESSION_LEVEL"
	//   "PLAY_STORE_IAP_SALES" - Test codes for the feature and each
	// early-access partners for the Play Store IAP sales project.
	// go/play-store-iap-sales-dd
	//   "PLAY_STORE_IAP_SALES_APP_1"
	//   "PLAY_STORE_IAP_SALES_APP_2"
	//   "PLAY_STORE_IAP_SALES_APP_3"
	//   "PLAY_STORE_IAP_SALES_APP_4"
	//   "PLAY_STORE_IAP_SALES_APP_5"
	//   "PLAY_STORE_IAP_SALES_APP_6"
	//   "PLAY_STORE_IAP_SALES_APP_7"
	//   "PLAY_STORE_IAP_SALES_APP_8"
	//   "PLAY_STORE_IAP_SALES_APP_9"
	//   "PLAY_STORE_IAP_SALES_APP_10"
	//   "PLAY_STORE_IAP_SALES_APP_11"
	//   "PLAY_STORE_IAP_SALES_APP_12"
	//   "PLAY_STORE_IAP_SALES_APP_13"
	//   "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE"
	//   "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE_EAP_PARTNER_APPS"
	//   "CROSS_DEVICE_INSTALL_OPTIONS_FETCHED_IN_SESSION" - Test codes for
	// cross-device features. See go/play-cross-device.
	//   "CROSS_DEVICE_INSTALL_OPTIONS_ITEM_FIELDS_TRIGGERED"
	//   "PAIRED_DEVICE_COMPATIBILITY_CHECKED_IN_SESSION"
	//   "OTHER_DEVICES_SUBNAV_RETURNED_IN_SESSION" - Test code for other
	// devices subnav. Logged for eligible users when home subnavs are
	// fetched.
	//   "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_SESSION_LEVEL"
	//
	// "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_COMBINED_CHANNEL_SESSION_L
	// EVEL"
	//
	// "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PLAY_STORE_PROMOTION_PLAY_ARM_SESSION
	// _LEVEL"
	//
	// "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PLAY_STORE_PROMOTION_COMBINED_ARM_SES
	// SION_LEVEL"
	//   "GEARHEAD_FRX_SENSITIVE_PERMISSION_SCREEN_SEEN"
	//   "POST_PURCHASE_ITEM_UPSELL_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_1_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_2_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_3_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_4_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_5_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_6_SESSION_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_7_SESSION_LEVEL"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_SHOWN_SESSION_LEVEL" - Test code
	// logged on client side for users who see the Play Pass signup
	// interstitial.
	//   "FETCH_PROMOTION_BANNER_FROM_P3_SESSION_LEVEL"
	//   "AVP_SWOOP_10P_OFF_SESSION_LEVEL" - User eligible for 10% off for
	// next renewal
	//   "AVP_SWOOP_25P_OFF_SESSION_LEVEL" - User eligible for 25% off for
	// next renewal
	//   "AVP_SWOOP_50P_OFF_SESSION_LEVEL" - User eligible for 50% off for
	// next renewal
	//   "AVP_SWOOP_75P_OFF_SESSION_LEVEL" - User eligible for 75% off for
	// next renewal
	//   "CLUSTER_TRIGGER_CONDITION_IS_PARENT"
	//   "CDP_ENABLE_PREFETCH_SESSION_LEVEL"
	//   "P13N_INTERSTITIAL_SESSION_LEVEL"
	//   "GEARHEAD_SKIP_LEGACY_FRX_FOR_CAKEWALK" - Indicates Cakewalk that
	// legacy (phone screen) FRX was skipped in favor of the updated HU-only
	// FRX (Cakewalk 2.0)
	//   "FEATURED_SUBSCRIPTIONS_PRESENT"
	//   "SHOULD_NOT_SEE_HOME_LIVE_OPS_CLUSTER" - LiveOps/Offer user
	// coverage metrics. See: go/liveops-user-coverage
	//   "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K1_2"
	//   "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K1"
	//   "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K2"
	//   "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K3_4"
	//   "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_GTE_K5"
	//   "SHOULD_NOT_SEE_HOME_OFFER_CLUSTER"
	//   "SHOULD_SEE_HOME_OFFER_CLUSTER_K1"
	//   "SHOULD_SEE_HOME_OFFER_CLUSTER_K2"
	//   "SHOULD_SEE_HOME_OFFER_CLUSTER_K3_4"
	//   "SHOULD_SEE_HOME_OFFER_CLUSTER_GTE_K5"
	//   "SHOULD_NOT_SEE_DEALS_HOME_OFFER"
	//   "SHOULD_SEE_DEALS_HOME_OFFER_K1"
	//   "SHOULD_SEE_DEALS_HOME_OFFER_K2"
	//   "SHOULD_SEE_DEALS_HOME_OFFER_K3_4"
	//   "SHOULD_SEE_DEALS_HOME_OFFER_GTE_K5"
	//   "SHOULD_SEE_DEALS_HOME_GAME_K1"
	//   "SHOULD_SEE_DEALS_HOME_GAME_K2"
	//   "SHOULD_SEE_DEALS_HOME_GAME_K3"
	//   "SHOULD_SEE_DEALS_HOME_GAME_K4"
	//   "SHOULD_SEE_DEALS_HOME_GAME_GTE_K5"
	//   "SHOULD_SEE_DEALS_HOME_APP_K1"
	//   "SHOULD_SEE_DEALS_HOME_APP_K2"
	//   "SHOULD_SEE_DEALS_HOME_APP_K3"
	//   "SHOULD_SEE_DEALS_HOME_APP_K4"
	//   "SHOULD_SEE_DEALS_HOME_APP_GTE_K5"
	//   "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K1"
	//   "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K2"
	//   "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K3"
	//   "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K4"
	//   "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_GTE_K5"
	//   "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K1"
	//   "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K2"
	//   "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K3"
	//   "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K4"
	//   "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_GTE_K5"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SESSION_LEVEL" - Test code
	// for tracking the new subscription document format in GetSkuDetails,
	// Acquire and SubscriptionDocumentsFetcher flows
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SESSION_LEVEL"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SKU_DETAILS_SESSION_LEVEL"
	//
	// "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SKU_DETAILS_SESSIO
	// N_LEVEL"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_FOR_ALL_SUBS_SESSION_LEVEL"
	//   "SHOULD_SEE_DYNAMIC_HOME_CONTAINER" - Test code for tracking
	// sessions which are supposed to show a
	// http://navstar/fs/visual_element/f/ios_gsa_client:DynamicHomeContainer
	//   "FROM_GAME_PROFILE_ID_ALLOWLIST" - Test code for tracking whether
	// an order was placed from a package with vetted game profile IDs.
	//   "LEON_LIVEOPS_DEAL_STATE_SYNC_SESSION_LEVEL"
	//   "SURVEY_AHC_AT_SESSION_LEVEL"
	//   "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_SESSION_LEVEL" - Test
	// code for tracking users eligible for the Play Pass cart marketing
	// banner.
	//
	// "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_AND_SHOWN_CART_SESSION_LEVEL
	// " - Test code for tracking eligble users who are shown the cart with
	// marketing banner.
	//   "PLAY_PASS_PERKS_VOUCHER_IN_CART_SESSION_LEVEL" - Test code for
	// tracking users shown Play Pass perks icon in cart.
	//   "PLAY_SEARCH_MDP_TRIGGERING" - Testcode for slicing MDP triggering
	// queries in Play search.
	//   "PLAY_SEARCH_NON_MDP_TRIGGERING" - Testcode for slicing non-MDP
	// triggering queries in Play search.
	//   "PRICE_TRANSPARENCY_IS_OFFER_PERSONALIZED_SESSION_LEVEL" - Testcode
	// for slicing requests where the offer is considered to be personalized
	// to the users, either by google or by Play Billing Library developers.
	//   "GEARHEAD_SKIP_LEGACY_FRX_FOR_CAKEWALK_USB_CANDIDATE" - Indicates
	// that legacy (phone screen) FRX could be skipped during a session,
	// ignoring the feature flag and other conditions that differ between
	// experiment arms. This will allow us to compare metrics between
	// Cakewalk users in the experiment group and *potential* Cakewalk users
	// in the control group.
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_SESSION_LEVEL" - Test code for
	// play quest platform project
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_2_SESSION_LEVEL"
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_3_SESSION_LEVEL"
	//   "PLAY_PASS_PARENT_FOCUSED_SPLASH_PAGE_SESSION_LEVEL" - Test code
	// for tracking sessions which are supposed to show a Play Pass
	// parent-focused splash page.
	//   "PLAY_PASS_SPLASH_PAGE_FOR_PARENT_SESSION_LEVEL"
	//   "PLAY_PASS_SPLASH_PAGE_FOR_UNICORN_SESSION_LEVEL"
	//   "REVIEW_SUBMITTED_SESSION_LEVEL" - Test code for tracking sessions
	// where a review is submitted.
	//   "REVIEW_TOPIC_FILTER_SELECTED_SESSION_LEVEL"
	//   "PLAY_SEARCH_GENERAL_QUERY_PAGINATION_SESSION_LEVEL" - Test code
	// for tracking sessions where the page is paginated by general query
	// pagination.
	//   "IN_CART_EXCHANGE_OPTIONS_ELIGIBLE_SESSION_LEVEL" - Test code for
	// tracking sessions where in cart exchange options are available.
	//   "PLAY_SEARCH_MULTINAV_PAGINATION_SESSION_LEVEL" - Test code fpr
	// tracking sessions where the page is being paginated by multinav
	// pagination.
	//   "REGIONAL_NAV_EXT_SESSION_LEVEL"
	//   "SUPPORT_SUBSCRIPTIONS_IN_FEATURED_SKU_SESSION_LEVEL" - Test code
	// for subscriptions being shown in Featured SKU. Design:
	// go/play-store-iap-sales-subs-dd
	//   "IAP_SKU_DEALS_LIVE_OP_DEALS_HOME_SESSION_LEVEL" - Session level
	// test code for tracking users who should see the IAP Sku Deals liveops
	// card.
	//   "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_SESSION_LEVEL" - Session level
	// test code for tracking users who should see the IAP Sku Games Home
	// liveops card.
	//   "FEATURING_AHC_OR_FHR_TRIGGERED_SESSION_LEVEL" - Test code for
	// tracking sessions where featuring AHC or FHR is triggered.
	//   "STARTERKIT_CLUSTERS_ELIGIBLE_SESSION_LEVEL" - Session level test
	// code for tracking sessions that include startkit clusters.
	//   "ALLOWLIST_EXPANSION_FOR_P13N_INTERSTITIAL_SESSION_LEVEL" - Session
	// level test code for tracking users who have p13n interstitials
	// impressions.
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_SESSION_LEVEL" - Session level test
	// codes for Clusters Types.
	//   "NOVEL_TOPIC_CLUSTER_IMPRESSED_AT_SESSION_LEVEL"
	//   "ALLOWLIST_EXPANSION_FOR_P13N_LIVEOPS_SESSION_LEVEL" - Session
	// level test code for tracking users who have p13n LiveOps impressions.
	//   "SURVEY_RECS_LIST_AT_SESSION_LEVEL" - Session-level test code
	// logged when PRS returns a survey RecsList.
	//   "GEARHEAD_FRX_RUNNING_CW175_IN_GH"
	//   "RANDOM_SHUFFLE_CLUSTERS_ON_TARGET_USERS_SESSION_LEVEL" -
	// Session-level test code logged when randomly shuffle clusters on
	// target users.
	//   "RANDOM_SHUFFLE_CLUSTERS_AND_APPS_ON_TARGET_USERS_SESSION_LEVEL" -
	// Session-level test code logged when randomly shuffle both clusters
	// and apps on target users.
	//   "ALLOWLIST_EXPANSION_FOR_P13N_NOTIFICATIONS_SESSION_LEVEL" -
	// Session level test code for tracking users who have p13n
	// Notifications candidates.
	//   "FRESH_RESULTS_SEEKING_SEARCH_QUERY_SESSION_LEVEL" - Session level
	// test code for tracking fresh results seeking search queries.
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_1_SESSION_LEVEL" - Google
	// funded series bundle discount bucket.
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_2_SESSION_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_3_SESSION_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_4_SESSION_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_5_SESSION_LEVEL"
	//   "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_6_SESSION_LEVEL"
	//   "TRUSTED_GENOME_RELATED_QUERY_CLUSTER_SESSION" - Session level test
	// code that indicates that a tg related query search cluster could be
	// shown.
	//   "NAV_TG_RELATED_QUERY_SESSION" - Session level test code that
	// indicates that tg related queries could be inserted to related query
	// cluster for navigational search.
	//   "PROMOTABLE_APPS_SESSION" - Event level test code that indicates
	// promotable apps boosting is enabled. STRONG_CAT and CAT are for
	// strong CAT and general CAT query slices.
	//   "PROMOTABLE_APPS_STRONG_CAT_SESSION"
	//   "PROMOTABLE_APPS_CAT_SESSION"
	//   "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_SESSION_LEVEL" - Session level
	// test code for Growth Coffee Card Phase 1 launch, for tracking users
	// who made eligible purchases and are eligible for the GCC in purchase
	// flow.
	//   "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_SERVER_SESSION_LEVEL" -
	// Session level test code for Growth Coffee Card, for tracking users
	// who made eligible purchases and are eligible for the GCC in purchase
	// flow. This test code is logged on server side.
	//   "LIVE_OPS_ROI_HOLDBACK" - Test code for live ops ROI holdback
	// experiment. Record the test code if user was in control/treatment and
	// was eligible to see at least one liveop prior to filtering. For more
	// info, see: go/roi-design
	//   "TRUSTED_GENOME_OR_BROAD_INTENT_CATEGORICAL_QUERY_CLUSTER_SESSION"
	// - Session level test code that indicates that grouping is applied on
	// TG or broad intent categorical quries.
	//   "CLUSTER_REQUEST_LATENCY_SESSION_LEVEL" - Session level test code
	// for clusters in SERP
	//   "EDITORS_CHOICE_CLUSTER_SERP_SESSION_LEVEL"
	//   "BESTK_CLUSTER_SERP_SESSION_LEVEL"
	//   "LIVEOPS_CLUSTER_SERP_SESSION_LEVEL"
	//   "QUICKPICKS_CLUSTER_SERP_SESSION_LEVEL"
	//   "WIDE_MEDIA_CLUSTER_INVALID_VIDEO_ASSET_SESSION_LEVEL" - Session
	// level test code logged when the wide media card has invalid video
	// asset in the asset agnostic 3x experiment.
	//   "ALTERNATE_DEVICE_PRESENT_SESSION_LEVEL" - Session level test code
	// that indicates that the user has at least one alternate form factor
	// device.
	//   "MULTIPLE_ALTERNATE_DEVICES_PER_FORM_FACTOR_SESSION_LEVEL" -
	// Session level test code that indicates that the user has at more than
	// one alternate form factor devices per form factor.
	//   "APPS_SEARCH_DISCOVERY_CLUSTER_TRIGGERED_SESSION_LEVEL" - Session
	// level test code that indicates that an apps discovery cluster was
	// triggered on the search page.
	//   "SUGGEST_CROSS_FORM_FACTOR_APPS_WEAR_SUGGESTIONS_ENABLED" - Session
	// level test code that indicates that cross form factor wear Suggestion
	// is enabled. b/222328256 for more details.
	//   "SUGGEST_CROSS_FORM_FACTOR_APPS_WEAR_SUGGESTIONS_AVAILABLE" -
	// Session level test code that indicates that at least one cross form
	// factor wear suggestion is available. b/222328256 for more details.
	//   "SUGGEST_CROSS_FORM_FACTOR_APPS_TV_SUGGESTIONS_ENABLED" - Session
	// level test code that indicates that cross form factor tv Suggestion
	// is enabled. b/257494005 for more details.
	//   "SUGGEST_CROSS_FORM_FACTOR_APPS_TV_SUGGESTIONS_AVAILABLE" - Session
	// level test code that indicates that at least one cross form factor tv
	// suggestion is available. b/257494005 for more details.
	//   "SUGGEST_APPS_SUBTEXT_SUGGESTIONS_SESSION_LEVEL" - Session level
	// test code that indicates the subtext is triggered for that group of
	// suggestions. Could either be for XFF Cat, Nav or legacy subtext.
	//   "INLINE_DETAILS_TQUALITY_CHECK_PASS_SESSION_LEVEL" - Session level
	// test codes containing result of tQuality lookup during market details
	// url matching. A failed tQuality result suppresses inline details.
	//   "INLINE_DETAILS_TQUALITY_CHECK_FAIL_SESSION_LEVEL"
	//   "INLINE_DETAILS_AQUALITY_CHECK_PASS_SESSION_LEVEL" - Session level
	// test codes containing result of aQuality lookup during market details
	// url matching. A failed aQuality result suppresses inline details.
	//   "INLINE_DETAILS_AQUALITY_CHECK_FAIL_SESSION_LEVEL"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_PASS_SESSION_LEVEL"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_FAIL_SESSION_LEVEL"
	//
	// "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_UNKNOWN_SESSION_LEVEL"
	// - Session level test codes containing results for caller tablet
	// aQaulity checks for HSDP.
	//   "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_PASS_SESSION_LEVEL"
	//   "HSDP_AD_NETWORK_CALLER_TABLET_AQUALITY_CHECK_FAIL_SESSION_LEVEL"
	//
	// "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_UNKNOWN_SESSION_LEV
	// EL"
	//
	// "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_PASS_SESSION_LEVEL"
	//
	// "HSDP_INDEPENDENT_APP_CALLER_TABLET_AQUALITY_CHECK_FAIL_SESSION_LEVEL"
	//   "INLINE_DETAILS_IS_INLINE_URL_SESSION_LEVEL" - Session level test
	// code indicating external details URL is an inline URL.
	//   "INLINE_DETAILS_IS_INLINE_URL_FRONTEND_SESSION_LEVEL" - Session
	// level test code for Aquality/Tquality filtering in LMD project. This
	// is a duplicated testcode created for logging in frontend.
	//   "INLINE_DETAILS_TQUALITY_CHECK_PASS_FRONTEND_SESSION_LEVEL"
	//   "INLINE_DETAILS_TQUALITY_CHECK_FAIL_FRONTEND_SESSION_LEVEL"
	//   "INLINE_DETAILS_AQUALITY_CHECK_PASS_FRONTEND_SESSION_LEVEL"
	//   "INLINE_DETAILS_AQUALITY_CHECK_FAIL_FRONTEND_SESSION_LEVEL"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_PASS_FRONTEND_SESSION_LEVEL"
	//   "INLINE_DETAILS_CALLER_AQUALITY_CHECK_FAIL_FRONTEND_SESSION_LEVEL"
	//   "SENT_EMAIL_ENTER_GRACE_PERIOD_SESSION_LEVEL" - Session level test
	// code that indicates that decline email is sent when the subscription
	// enters grace period.
	//   "SENT_EMAIL_ENTER_SUSPENDED_PERIOD_SESSION_LEVEL" - Session level
	// test code that indicates that decline email is sent when the
	// subscription enters suspended period.
	//   "ANALYTICS_AD_LINKING_RECOMMENDATION_ELIGIBLE_SESSION_LEVEL" -
	// Session level test code that indicates that user was eligible for ad
	// linking recommendation.
	//   "ANALYTICS_MERCHANT_UPSELL_ELIGIBLE_SESSION_LEVEL" - Session level
	// test code that indicates that user was eligible for merchant center
	// upsell recommendation.
	//   "ANALYTICS_PREDICTIVE_INSIGHT_ELIGIBLE_SESSION_LEVEL" - Session
	// level test code that indicates that user was eligible for predictive
	// insight recommendation.
	//   "ANALYTICS_CONSENT_MODE_INSIGHT_ELIGIBLE_SESSION_LEVEL" - Session
	// level test code that indicates that user was eligible for consent
	// mode insight.
	//   "ANALYTICS_DIVERSITY_30D_ELIGIBLE_SESSION_LEVEL" - Session level
	// test code that indicates that user was eligible for diversity
	// processing with 30d lookback window.
	//   "ANALYTICS_DIVERSITY_60D_ELIGIBLE_SESSION_LEVEL" - Session level
	// test code that indicates that user was eligible for diversity
	// processing with 60d lookback window.
	//   "ANALYTICS_ADS_UPSELL_ELIGIBLE_SESSION_LEVEL" - Session level test
	// code that indicates that user was eligible for the ads upsell
	// recommendation.
	//   "ANALYTICS_DOWNLOAD_MOBILE_APP_ELIGIBLE_SESSION_LEVEL" - Session
	// level test code that indicates that user was eligible for the
	// download mobile app recommendation
	//   "EDITORIAL_FCC_AT_SESSION_LEVEL" - Session level test code that
	// indicates that a user was served an editorial FCC (Flexible Content
	// Cluster).
	//   "FRESH_RESULTS_SEEKING_CURRENT_YEAR_SESSION_LEVEL" - Session level
	// test code for tracking fresh results seeking within the current year
	// search queries.
	//   "FILTER_TQ_FAILURE_APP_SESSION_LEVEL" - Event level test code for
	// when we filtered >=1 apps due to tq failure.
	//   "EDITORIAL_CONTENT_CLUSTER_FHR_SERP_SESSION_LEVEL" - Session level
	// test code for Editorial Content/Articles in SERP (FHR)
	//   "CONNECTED_WITH_WIFI" - Information about user's data connection.
	//   "CONNECTED_WITH_DATA"
	//   "AUTOPLAY_VIDEOS_AT_ANY_TIME" - Information about user's video
	// auto-play settings.
	//   "AUTOPLAY_VIDEOS_OVER_WIFI_ONLY"
	//   "AUTOPLAY_VIDEOS_NEVER"
	//   "HAS_DECLINE_REASON_IN_PAYMENT_DECLINE_EMAIL_SESSION_LEVEL" -
	// Session level test code that indicates the decline reason is
	// populated to payment decline email.
	//   "QUEST_CONTENT_CARD_IN_DEALS_HOME_SESSION_LEVEL" - Session level
	// test code for Quest Content Card launch on Deals Home, for tracking
	// users who made eligible purchases and are eligible for the QCC.
	//   "DETAILS_PAGE_TQUALITY_UNKNOWN_SESSION_LEVEL" - Session level test
	// code for low quality app in details page. See
	// go/low-quality-dp-experiment-config for details.
	//   "DETAILS_PAGE_TQUALITY_FAILED_SESSION_LEVEL"
	//   "DETAILS_PAGE_TQUALITY_PASSED_SESSION_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_UNKNOWN_SESSION_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_FAILED_SESSION_LEVEL"
	//   "DETAILS_PAGE_AQUALITY_PASSED_SESSION_LEVEL"
	//   "QUERY_DEPENDENT_SNIPPET_SESSION_LEVEL" - Session level test code
	// for query dependent snippet.
	//   "FOP_STEERING_PROMOTION_INITIAL_BILLING_PROFILE_SESSION_LEVEL" -
	// Session level test code for Fop Steering Promotion with initial
	// billing profile.
	//   "FOP_STEERING_PROMOTION_CART_ADD_FOP_SESSION_LEVEL" - Session level
	// test code for Fop Steering Promotion displayed in cart with add fop
	// action.
	//   "FOP_STEERING_PROMOTION_CART_CHANGE_FOP_SESSION_LEVEL" - Session
	// level test code for Fop Steering Promotion displayed in cart with
	// change fop action.
	//   "FOP_STEERING_PROMOTION_CART_APPLY_PROMOTION_SESSION_LEVEL" -
	// Session level test code for Fop Steering Promotion displayed in cart
	// with apply promotion action.
	//   "PTP_CLUSTER_SERP_P13N_RANKING_SESSION_LEVEL" - Session level test
	// code for cluster, p13n ranking.
	//   "QUERY_DEPENDENT_SNIPPET_FRONT_END_SESSION_LEVEL" - Session level
	// test code for query dependent snippet. It is logged when the front
	// end shows at least 1 query dependent snippet.
	//   "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_SESSION_LEVEL" - Session
	// level test code that indicates that at least one high churn fop
	// options is available for user when visiting add fop page for
	// subscription purchase. Deprecated, use 10779 instead.
	//   "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_SESSION_LEVEL_V2"
	//
	// "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITH_EXISTING_FOP_SESSION_LEVEL
	// "
	//
	// "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITHOUT_EXISTING_FOP_SESSION_LE
	// VEL"
	//   "MDP_WITHOUT_QUALITY_SESSION_LEVEL" - Session level test code for
	// quality modulated MDP. It is logged when the front end receives a MDP
	// without quality information.
	//   "MDP_WITH_HIGH_QUALITY_SESSION_LEVEL" - Session level test code for
	// quality modulated MDP. It is logged when the front end receives a MDP
	// with high quality.
	//   "MDP_WITH_MEDIUM_QUALITY_SESSION_LEVEL" - Session level test code
	// for quality modulated MDP. It is logged when the front end receives a
	// MDP with medium quality.
	//   "MDP_WITH_LOW_QUALITY_SESSION_LEVEL" - Session level test code for
	// quality modulated MDP. It is logged when the front end receives a MDP
	// with low quality.
	//   "MDP_TRIGGERED_AND_GAME_SEEKING_SESSION_LEVEL" - Session level test
	// code for headroom experiment. It is logged when MDP is triggered and
	// the search is categorized as game seeking.
	//
	// "PLAY_SEARCH_GENERAL_QUERY_MDP_PAGINATION_WITH_GAME_SEEKING_RYF_CLUSTE
	// R_SESSION_LEVEL" - Session level test code for rfy cluster which is
	// displayed above general query pagination for queries which are game
	// seeking.
	//
	// "PLAY_SEARCH_GENERAL_QUERY_NON_MDP_PAGINATION_WITH_GAME_SEEKING_RYF_CL
	// USTER_SESSION_LEVEL"
	//   "BUY_BUTTON_WITH_AUTHENTICATION_DISABLED" - Testcode for logging
	// users with authentication deactivated or set to biometric who click
	// on "1-tap buy" or its alternative
	//   "SEND_PAYMENT_DECLINE_EMAIL_SESSION_LEVEL" - Session level test
	// code that indicates the subscription payment decline email is sent.
	//   "PSS_GENERAL_PAGINATION_SESSION_LEVEL" - Session level test code
	// that indicates the related query cluster is supposed to be displayed
	// at the manual pagination location.
	//   "PSS_GENERAL_PAGINATION_GAME_SEEKING_SESSION_LEVEL" - Besides
	// (10794), the query is also game seeking.
	//   "INLINE_ADD_PAYMENT_CREDIT_CARD_ELIGIBLE" - Session level test code
	// that marks eligibility of inline payment add. Eligibility bucketed
	// based on payment method types.
	//   "INLINE_ADD_PAYMENT_CARRIER_BILLING_ELIGIBLE"
	//   "INLINE_ADD_PAYMENT_EWALLET_ELIGIBLE"
	//   "INLINE_ADD_PAYMENT_NO_ELIGIBLE_TYPE"
	//   "SHOULD_NOT_SEE_NOW_CONTENT_AH" - Session level test codes for Now!
	// content coverage metrics. Any Now! content on Apps Home.
	//   "SHOULD_SEE_NOW_CONTENT_AH_K1"
	//   "SHOULD_SEE_NOW_CONTENT_AH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_AH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_AH_GTE_K5"
	//   "SHOULD_NOT_SEE_NOW_CONTENT_GH" - Any Now! content on Games Home.
	//   "SHOULD_SEE_NOW_CONTENT_GH_K1"
	//   "SHOULD_SEE_NOW_CONTENT_GH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_GH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_GH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_AH_K1" - New release Now!
	// content on Apps Home.
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_AH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_AH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_AH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_GH_K1" - New release Now!
	// content on Games Home.
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_GH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_GH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_GH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_AH_K1" - Editorial Now! content
	// on Apps Home.
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_AH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_AH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_AH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_GH_K1" - Editorial Now! content
	// on Games Home.
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_GH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_GH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_EDITORIAL_GH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_AH_K1" - Live Ops Now! content on
	// Apps Home.
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_AH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_AH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_AH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_GH_K1" - Live Ops Now! content on
	// Games Home.
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_GH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_GH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_GH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_AH_K1" - Pre-registration
	// now! content on Apps Home.
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_AH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_AH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_AH_GTE_K5"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_GH_K1" - Pre-registration
	// now! content on Games Home.
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_GH_K2"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_GH_K3_4"
	//   "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_GH_GTE_K5"
	//   "SHOULD_NOT_SEE_TOP_NOW_CONTENT_AH" - Session level test codes for
	// top of page Now! content coverage metrics. Any Now! content on Top of
	// Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_AH_K1"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_AH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_AH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_AH_GTE_K5"
	//   "SHOULD_NOT_SEE_TOP_NOW_CONTENT_GH" - Any Now! content on Top of
	// Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_GH_K1"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_GH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_GH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_GH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_AH_K1" - New release Now!
	// content on Top of Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_AH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_AH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_AH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_GH_K1" - New release Now!
	// content on Top of Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_GH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_GH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_NEW_RELEASE_GH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_AH_K1" - Editorial Now!
	// content on Top of Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_AH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_AH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_AH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_GH_K1" - Editorial Now!
	// content on Top of Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_GH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_GH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_EDITORIAL_GH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_AH_K1" - Live Ops Now! content
	// on Top of Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_AH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_AH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_AH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_GH_K1" - Live Ops Now! content
	// on Top of Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_GH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_GH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_LIVE_OPS_GH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_AH_K1" -
	// Pre-registration now! content on Top of Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_AH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_AH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_AH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_GH_K1" -
	// Pre-registration now! content on Top of Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_GH_K2"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_GH_K3_4"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_PRE_REGISTRATION_GH_GTE_K5"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_NEW_RELEASE_AH" - Merch featuring
	// Now! content on Top of Apps Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_PRE_REGISTRATION_AH"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_LIVE_OPS_AH"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_NEW_RELEASE_GH" - Merch featuring
	// Now! content on Top of Games Home.
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_PRE_REGISTRATION_GH"
	//   "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_LIVE_OPS_GH"
	//   "LOYALTY_STAMP_CARD_IN_PURCHASE_FLOW_SESSION_LEVEL" - Session level
	// test code for Quest Platform Loyalty Stamp Card in Purchase flow.
	//   "WALLET_WELLBEING_ALERT_SESSION_LEVEL" - TestCode for slicing the
	// users cohorts that should have received a budget Warning alert
	//   "BROAD_INTENT_REWEIGHTING_SESSION_LEVEL" - TestCode for Broad
	// Intent Reweighting Session Level.
	//   "DYNASTY_DEVICE_HANDOFF_SESSION_LEVEL" - TestCode for Dynasty
	// Device Handoff Session Level.
	//   "TRUSTED_ENTITY_L1_AND_ATTRIBUTE_SEARCH_QUERY_SESSION" - Session
	// level test code for SERP L1 TG2 category & TG2 attribute queries.
	//   "TRUSTED_ENTITY_L2_L3_SEARCH_QUERY_SESSION" - Session level test
	// code for SERP L2,L3 TG2 category queries.
	//   "EXPANDED_DEV_SUCCESS_CLUSTER_SESSION_LEVEL" - Session level test
	// code for dev success cluster.
	//   "COLLAPSED_DEV_SUCCESS_CLUSTER_SESSION_LEVEL"
	//   "DOWNLOAD_COUNT_ELIGIBLE" - Session level test code for 1.5x ad
	// format. See here for details: http://shortn/_04Q1LMyoTe.
	//   "PLANOGRAM_MERCH_AMERICAS_GAMES_PAYPAL_SESSION_LEVEL" - Session
	// level test code for merch run planogram experiment
	//   "BROAD_INTENT_GAMES_TIMESPENT_SESSION_LEVEL" - TestCode for Broad
	// Intent Games TimeSpent Session Level.
	//   "ELIGIBLE_FOR_MANAGE_IN_APP_DETAILS_SESSION_LEVEL" - Session level
	// test code for eligible users for manage in-app details
	//   "ELIGIBLE_FOR_ACC_SESSION_LEVEL" - Session level test code for
	// users are eligible for ACC
	//   "ELIGIBLE_FOR_ACQUISITION_ACC_SESSION_LEVEL" - Session level test
	// code for users are eligible for acquisition ACC
	//   "ELIGIBLE_FOR_REENGAGEMENT_ACC_SESSION_LEVEL" - Session level test
	// code for users are eligible for reengagement ACC
	//   "MDP_P13N_ALL_SESSION_LEVEL" - MDP P13N
	//   "MDP_P13N_GAME_QUERY_L5_SESSION_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L6_SESSION_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L7_SESSION_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L8_SESSION_LEVEL"
	//   "MDP_P13N_GAME_QUERY_L9_SESSION_LEVEL"
	//   "MDP_P13N_RERANKING_UNKNOWN_SESSION_LEVEL"
	//   "MDP_P13N_RERANKING_CATEGORICAL_SESSION_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_SESSION_LEVEL"
	//   "MDP_P13N_RERANKING_MULTI_NAVIGATIONAL_SESSION_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_EXT_SESSION_LEVEL"
	//   "VIDEO_CAN_AUTOPLAY" - Session level test code to tell if a video
	// can autoplay for the given user based on their settings and
	// connection status
	//   "VIDEO_CANNOT_AUTOPLAY"
	//   "YOUTUBE_OPT_IN_NOTIFICATION_DRIVEN_PREFETCH_SESSION_LEVEL" -
	// Session level test code for YouTube commerce, tracking users who opt
	// in notification driven prefetch.
	//
	// "YOUTUBE_COUNTERFACTUAL_OPT_IN_NOTIFICATION_DRIVEN_PREFETCH_SESSION_LE
	// VEL"
	//   "YOUTUBE_NOT_OPT_IN_NOTIFICATION_DRIVEN_PREFETCH_SESSION_LEVEL"
	//   "YOUTUBE_FROM_LANDING_PAGE_SESSION_LEVEL"
	//   "SECOND_PASS_POLARIS_RERANKING_SESSION_LEVEL" - Second pass polaris
	// reranking session level.
	//   "SECOND_PASS_POLARIS_WITH_RANKING_CHANGE_SESSION_LEVEL" - Second
	// pass polaris with ranking change session level.
	//   "EXPLORATORY_BOOSTING_SESSION_LEVEL" - Exploratory boosting session
	// level.
	//   "PLAY_BOOKS_READING_PROGRESS_TOOLTIP_SESSION_LEVEL" - Session level
	// test code for reading progress tooltip.
	//   "NAV_SEARCH_D2D_EMBEDDING_BOOST_SESSION_LEVEL" - Session level test
	// code for Nav search d2d embedding boost.
	//   "HAS_NO_BACKUP_FOP_FOR_ORDER_SESSION_LEVEL" - Session level test
	// code for orders that don’t have a backup fop.
	//   "SECOND_PASS_BROAD_INTENT_QUERY_SESSION_LEVEL" - Test code for
	// second pass broad intent query session level.
	//   "SECOND_PASS_REWEIGHTING_TRIGGERED_SESSION_LEVEL" - Test code for
	// second pass reweighting triggered session level.
	//   "BOOKS_SEARCH_PAGE_DORA_QUERY_SESSION_LEVEL" - Test code for Books
	// search queries that trigger Dora categorical search.
	//   "INLINE_DETAILS_TQUALITY_CHECK_UNKNOWN_SESSION_LEVEL" - Session
	// level test code containing result of tQuality lookup during market
	// details url matching. Unknown means the lookup found nothing.
	//   "INLINE_DETAILS_TQUALITY_CHECK_UNKNOWN_FRONTEND_SESSION_LEVEL"
	//   "APPS_LAUNCHER_CLUSTER_AT_SESSION_LEVEL" - Session-level test code
	// that indicates a user was served an Apps Launcher Cluster.
	//   "SESSION_LEVEL_TEST_CODE_LIMIT"
	//   "SHOULD_SEE_LIVE_OP_CLUSTER_USER_LEVEL" - User should see the live
	// op cluster.
	//   "CART_ABANDONMENT_USER_LEVEL" - Cart abandonment flow for purchase
	// flow.
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_USER_LEVEL" - User
	// saw/should have seen purchasable subscription card in
	//   "CART_ABANDONMENT_SUB_DOLLAR_USER_LEVEL" - App Details Page. Cart
	// abandonment sub dollar experiment.
	//   "CART_ABANDONMENT_V2_EXP1_USER_LEVEL" - Cart abandonment V2
	// experiment1.
	//   "IN_APP_PRODUCTS_IN_DETAILS_PAGE_USER_LEVEL" - User saw/would have
	// seen the in app products section in App
	//   "APPS_DETAILS_PAGE_PROMOTION_USER_LEVEL" - Details Page. User
	// saw/would have seen the details page promotion in App
	//   "BOOKS_DETAILS_PAGE_PROMOTION_USER_LEVEL" - Details Page. User
	// saw/would have seen the details page promotion in Books
	//   "CART_ABANDONMENT_BOOK_NEVER_USER_LEVEL" - Details Page.
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_BOOK_VX_NEVER_USER_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_MOVIE_NEVER_USER_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "CART_ABANDONMENT_MOVIE_VX_NEVER_USER_LEVEL" -
	// go/cart-abandon-vx-rollout
	//   "QUICK_FIX_EXPIRED_CREDIT_CARD_USER_LEVEL" - Quick fix expired
	// credit card flow for purchase flow.
	//   "DETAILS_PAGE_PROMOTION_USER_LEVEL" - Details page promotion global
	// holdback
	//   "BURNSIE_ADD_FOP_PROMOTION_USER_LEVEL" - Suer saw/should have seem
	// promotion for Burnsie(Prompt for
	//   "CART_ABANDONMENT_HIGH_CART_USER_LEVEL" - fop) in free purchase.
	// Cart abandonment exp for high-value carts (v3)
	//   "WELLNET_CASH_USER_LEVEL" - Cash top up experiment.
	// go/cash-top-up-one-pager
	//   "BURNSIE_FOR_EXPIRED_CARDS_USER_LEVEL" -
	// go/burnsie-for-expired-cards
	//   "APPS_DETAILS_PAGE_EXISTING_PROMOTION_USER_LEVEL" - User saw/would
	// have seen the promotion that was redeemd from
	//   "BOOKS_DETAILS_PAGE_EXISTING_PROMOTION_USER_LEVEL" - non details
	// page in App Details Page. User saw/would have seen the promotion that
	// was redeemd from
	//   "SWOOP_CAMPAIGN_10P_OFF_USER_LEVEL" - non details page in Books
	// Details Page. User saw/would have seen the 10% off swoop campaign.
	//   "SWOOP_CAMPAIGN_25P_OFF_USER_LEVEL" - go/subs-swoop-experiment User
	// saw/would have seen the 25% off swoop campaign.
	//   "SWOOP_CAMPAIGN_50P_OFF_USER_LEVEL" - go/subs-swoop-experiment User
	// saw/would have seen the 50% off swoop campaign.
	//   "SWOOP_CAMPAIGN_75P_OFF_USER_LEVEL" - go/subs-swoop-experiment User
	// saw/would have seen the 75% off swoop campaign.
	//   "SWOOP_CAMPAIGN_90P_OFF_USER_LEVEL" - go/subs-swoop-experiment User
	// saw/would have seen the 90% off swoop campaign.
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_WAVE_2_USER_LEVEL" -
	// User saw/would have seen the "wave 2" purchasable
	//   "SUBSCRIBE_AND_INSTALL_AVAILABLE_CLIENT_USER_LEVEL" - subscription
	// card in App Details Page. Subscribe & Install metadata comes from the
	// server is
	//   "CART_ABANDONMENT_ELIGIBLE_USER_LEVEL" - available to the app for
	// the current user. It helps us to slice metrics for the S&I UDPR
	// migration (a client change). Context:
	// https://screenshot.googleplex.com/APAqqLFYpXjfmWQ. User is eligible
	// for some campaign, and passes surface
	//   "ACQUIRE_REQUEST_EXISTING_SESSION_WITHOUT_ACTION_TOKENS" - matching
	// and snooze check. go/p3-ge-cart-abandonment-dd Users who have ever
	// sent acquire requests with existing
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_2_USER_LEVEL" - DEPRECATED. Use
	// campaign-specific test codes (20034-20036).
	//   "APPS_DETAILS_PAGE_EXISTING_PROMOTION_EXP_2_USER_LEVEL" - User
	// saw/would have seen the promotion that was redeemd from
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_NEVERS_USER_LEVEL" -
	// non details page in App Details Page. User saw/would have seen the
	// details page in-app item
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_BUYERS_USER_LEVEL" -
	// promotion for Nevers in App Details Page. User saw/would have seen
	// the details page in-app item
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_2_PREMIUM_APP_NEVERS_USER_LEVEL" -
	// promotion for Lapsed Buyers in App Details Page. User saw/would have
	// seen the details page premium app
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_3_PREMIUM_APP_NEVERS_USER_LEVEL" -
	// promotion for Nevers in App Details Page. User saw/would have seen
	// the details page premium app
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_3_IN_APP_ITEM_BUYERS_USER_LEVEL" -
	// promotion for Nevers in App Details Page. User saw/would have seen
	// the details page in-app item
	//   "APPS_PERSONALIZED_TOPIC_QUERY_USER_LEVEL" - promotion for Lapsed
	// Buyers in App Details Page.
	//   "APPS_PERSONALIZED_TG_QUERY_USER_LEVEL"
	//   "APPS_PERSONALIZED_ALL_GAME_QUERIES_USER_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_USER_LEVEL"
	//   "APPS_PERSONALIZED_CATEGORICAL_NON_TG_QUERIES_USER_LEVEL"
	//   "APPS_PERSONALIZED_VERTICAL_RFY_CLUSTER_USER_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_USER_LEVEL"
	//   "APPS_PERSONALIZED_NAVIGATIONAL_GAME_USER_LEVEL"
	//   "APPS_PERSONALIZED_MDP_USER_LEVEL"
	//   "APPS_PERSONALIZED_MDP_GAME_USER_LEVEL"
	//   "SUBSCRIPTION_CANCELLATION_PROMOTION_USER_LEVEL" - Subscription
	// cancellation flow for purchase flow per user.
	//   "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SIGNUP_USER_LEVEL" -
	// Subscription update fop flow at signup when the primary fop
	//   "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_USER_LEVEL" - is dcb.
	// Subscription update fop flow when the primary fop is dcb.
	//   "SUBSCRIPTION_RETRY_FOP_FOR_DCB_AS_PRIMARY_USER_LEVEL" -
	// Subscription retry fop flow when the primary fop is dcb.
	//   "SUBSCRIPTION_DCB_AS_DEFAULT_FOP_WITH_BETTER_FOPS_USER_LEVEL"
	//   "SUBSCRIPTION_DCB_AS_ADD_FOP_OPTION_USER_LEVEL"
	//   "LOYALTY_HOME_FIRST_TAB_USER_LEVEL" - User visited the first tab of
	// Loyalty Home.
	//   "LOYALTY_HOME_SECOND_TAB_USER_LEVEL" - User visited the second tab
	// of Loyalty Home.
	//   "LOYALTY_HOME_THIRD_TAB_USER_LEVEL" - User visited the third tab of
	// Loyalty Home.
	//   "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_USER_LEVEL" - Cart
	// abandonment exp for retail excellence text experiment.
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_1_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_2_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_3_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_4_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_5_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_6_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_7_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_8_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_9_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_10_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_11_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_12_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_13_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_14_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_15_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_16_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_17_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_18_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_19_AT_USER_LEVEL"
	//   "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_20_AT_USER_LEVEL"
	//   "GLUE_SCORE_INTEGRATION_DETAILS_PAGE_USER_LEVEL" - Glue score
	// integration in Details Page.
	//   "DETAILS_PAGE_PROMOTION_HOLDBACK_USER_LEVEL" - User level test code
	// for Details Page Global Holdback.
	//   "RECS_STALENESS_DEMOTION_1_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_2_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_3_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_4_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_5_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_1_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_2_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_3_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_4_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_5_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_6_USER_LEVEL"
	//   "RECS_ANIMA_FEATURES_GH_RANKING_7_USER_LEVEL"
	//   "TEST_FOR_LEVELS_FLAG_AT_USER_LEVEL"
	//   "USER_LB_TARGETED" - leon banner is targeted at user level.
	//   "LB_ABOVE_AT_USER_LEVEL"
	//   "LB_BELOW_AT_USER_LEVEL"
	//   "LB_TARGETED_AT_USER_LEVEL"
	//   "LB_PAGINATED_AT_USER_LEVEL"
	//   "LB_IMPRESSED_AT_USER_LEVEL"
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_4_NEVERS_USER_LEVEL"
	//   "APPS_DETAILS_PAGE_PROMOTION_EXP_5_NEVERS_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_6_AT_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_7_AT_USER_LEVEL"
	//   "RECS_STALENESS_DEMOTION_8_AT_USER_LEVEL"
	//   "MOVIES_USER_INTERESTS_NONE_AT_USER_LEVEL"
	//   "MOVIES_USER_INTERESTS_LOW_AT_USER_LEVEL"
	//   "MOVIES_USER_INTERESTS_MEDIUM_AT_USER_LEVEL"
	//   "MOVIES_USER_INTERESTS_HIGH_AT_USER_LEVEL"
	//   "MOVIES_BOY_SEEDS_NONE_AT_USER_LEVEL"
	//   "MOVIES_BOY_SEEDS_LOW_AT_USER_LEVEL"
	//   "MOVIES_BOY_SEEDS_MEDIUM_AT_USER_LEVEL"
	//   "MOVIES_BOY_SEEDS_HIGH_AT_USER_LEVEL"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_ELIGIBLE_USER_LEVEL"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_TARGETED_USER_LEVEL"
	//   "PLAY_PASS_IPD_ELIGIBLE_USER_LEVEL"
	//   "PLAY_PASS_FHR_ELIGIBLE_USER_LEVEL"
	//   "MOVIES_USER_FREE_AT_USER_LEVEL" - This is for splitting movies
	// free users
	//   "MOVIES_USER_FAMILY_AT_USER_LEVEL" - This is for splitting movies
	// family users
	//   "MOVIES_USER_RENTER_AT_USER_LEVEL" - This is for splitting movies
	// renter users
	//   "MOVIES_USER_BUYER_AT_USER_LEVEL" - This is for splitting movies
	// buyer users
	//   "HAS_NON_RELOADABLE_PREPAID_CARD_AT_USER_LEVEL"
	//   "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_USER_LEVEL"
	//   "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_SESSION_LEVEL"
	//   "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_AT_USER_LEVEL"
	//   "LOYALTY_SHOULD_SEE_UPSELL_AT_USER_LEVEL"
	//   "LOYALTY_UPSELL_AFTER_IN_APP_PURCHASE_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_USER_LEVEL" - User saw/would have seen in-app
	// messages.
	//   "RESIGNUP_FROM_SUBS_CENTER_USER"
	//   "PROMOTION_BANNER_ELIGIBLE_USER_LEVEL"
	//   "NEW_ABUSE_MODEL_AT_USER_LEVEL"
	//   "LOYALTY_RECEIPT_UPSELL_SENT_WITH_ICON_AT_USER_LEVEL"
	//   "LOYALTY_RECEIPT_UPSELL_SENT_WITH_GIF_AT_USER_LEVEL"
	//   "LOYALTY_RECEIPT_UPSELL_SENT_AT_USER_LEVEL"
	//   "VX_QREF_TRIGGERED_AT_USER_LEVEL_AT_USER_LEVEL"
	//   "LOYALTY_SEES_POINTS_EARN_PROMOTIONS_AT_USER_LEVEL"
	//   "LOYALTY_SEES_FREE_TRIAL_SUBSCRIPTION_AT_USER_LEVEL"
	//   "QUEST_GET_ADDITIONAL_CHALLENGE_SUCCESS_AT_USER_LEVEL"
	//
	// "OUT_OF_APP_PURCHASABLE_PRODUCTS_ON_DETAILS_PAGE_PREFETCH_AT_USER_LEVE
	// L"
	//   "LOYALTY_SIGNUP_INTERSTITIAL_AT_USER_LEVEL"
	//   "LOYALTY_SIGNUP_SUCCESS_AT_USER_LEVEL"
	//   "PLAY_SUBMANAGEMENT_LOG_HOOK_USER_EXAMPLE"
	//
	// "FOP_OPTION_OR_EXISTING_INSTRUMENTS_MATCHED_PROMOTION_AT_USER_LEVEL"
	//   "FOP_OPTION_MATCHED_PROMOTION_ONLY_AT_USER_LEVEL"
	//   "PROMOTION_P13N_BANNER_ELIGIBLE_AT_USER_LEVEL"
	//   "NEW_USER_FOP_PROMOTION_SEEN"
	//   "LOYALTY_UPSELL_SEEN_AT_USER_LEVEL"
	//   "PROMOTION_OMNICHANNEL_ELIGIBLE_AT_USER_LEVEL"
	//   "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_AT_USER_LEVEL"
	//   "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_WITH_3_DAY_GUARDRAIL_AT_USER_LEVEL"
	//   "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_WITH_7_DAY_GUARDRAIL_AT_USER_LEVEL"
	//   "PROMOTION_P13N_BANNER_IN_HOME_AT_USER_LEVEL"
	//   "SHOULD_SEE_POINTS_BALANCE_ON_HOME_TOOLBAR_AT_USER_LEVEL"
	//   "LOYALTY_LIVE_OPS_RETURNED_AT_USER_LEVEL"
	//   "PURCHASE_FLOW_ENTRY_PROMOTION_AT_USER_LEVEL"
	//   "PURCHASE_FLOW_ENTRY_PROMOTION_ELIGIBLE_AT_USER_LEVEL"
	//   "PLAY_POINTS_HOME_AT_USER_LEVEL"
	//   "PROMOLINK_CDP_USER_LEVEL"
	//   "PROMOLINK_CDP_TITLE_PAGE_USER_LEVEL"
	//   "PROMOLINK_CDP_TOPIC_PAGE_USER_LEVEL"
	//   "PROMOLINK_CDP_GENERIC_PAGE_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_1_AT_USER_LEVEL"
	//   "POINTS_PROMOTION_CONTENT_HOME_AT_USER_LEVEL"
	//   "POINTS_PROMOTION_CONTENT_PAGE_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_2_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_3_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_4_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_5_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_6_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_7_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_8_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_9_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_10_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_11_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_12_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_13_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_14_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_15_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_16_AT_USER_LEVEL"
	//   "IN_APP_MESSAGING_APP_17_AT_USER_LEVEL"
	//   "IN_APP_OFFER_AT_USER_LEVEL" - Test codes for in-app offers at user
	// level.
	//   "IN_APP_OFFER_APP_1_AT_USER_LEVEL"
	//   "IN_APP_OFFER_APP_2_AT_USER_LEVEL"
	//   "IN_APP_OFFER_APP_3_AT_USER_LEVEL"
	//   "IN_APP_OFFER_APP_4_AT_USER_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_AT_USER_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_1_AT_USER_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_2_AT_USER_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_3_AT_USER_LEVEL"
	//   "IN_APP_OFFER_ELIGIBLE_APP_4_AT_USER_LEVEL"
	//   "IN_APP_OFFER_SAVED_AT_USER_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_1_AT_USER_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_2_AT_USER_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_3_AT_USER_LEVEL"
	//   "IN_APP_OFFER_SAVED_APP_4_AT_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_R2_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R2_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R2_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R2_USER_LEVEL"
	//   "FIRST_PARTY_PROMOTION_LIVE_OP_USER_LEVEL" - First Party Promotion
	// LiveOps
	//   "FIRST_PARTY_PROMOTION_LIVE_OP_PRE_REDEMPTION_USER_LEVEL"
	//
	// "FIRST_PARTY_PROMOTION_LIVE_OP_PRE_REDEMPTION_ABOVE_DEV_EVENTS_USER_LE
	// VEL"
	//   "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_CTA_USER_LEVEL"
	//   "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_ON_SERP_MDP_USER_LEVEL"
	//
	// "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_ON_APP_DETAILS_PAGE_USER_LEVEL"
	//   "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_ON_APP_DP_USER_LEVEL"
	//   "CART_ABANDONMENT_SUBSCRIPTION_ONE_TIME_PASS_USER_LEVEL" - User
	// saw/would have seen the subscription one time pass offer
	//   "LEGOLAND_INSTANT_FOP_SCREEN_USER_LEVEL" - when abandonments the
	// cart.
	//   "LEGOLAND_INSTANT_FOP_SCREEN_WITH_PROMOTION_USER_LEVEL"
	//   "DEVELOPER_PROMOTIONS_ELIGIBLE_USER_LEVEL"
	//   "GOOGLE_PROMOTIONS_ELIGIBLE_USER_LEVEL"
	//   "USER_TRIGGERED_IAP_PROMOTION_RETRIEVAL_USER_LEVEL"
	//   "LOYALTY_IAP_UPSELL_USER_LEVEL"
	//   "IAP_HAS_UNREDEEMED_PROMOTIONS_CLIENT_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_R3_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R3_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R3_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R3_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_R4_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R4_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R4_USER_LEVEL"
	//   "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R4_USER_LEVEL"
	//   "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_USER_LEVEL"
	//
	// "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_COMBINED_CHANNEL_USER_LEVE
	// L"
	//   "PLAY_STORE_IAP_SALES_USER_LEVEL" - Test codes for the feature and
	// each early-access partners for the Play Store IAP sales project.
	// go/play-store-iap-sales-dd
	//   "PLAY_STORE_IAP_SALES_APP_1_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_2_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_3_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_4_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_5_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_6_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_7_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_8_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_9_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_10_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_11_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_12_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_APP_13_USER_LEVEL"
	//   "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE_USER_LEVEL"
	//   "PLAY_PASS_SUBNAV_USER_IN_FAMILY_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R1_CLIENT_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R1_SERVER_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R2_CLIENT_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R2_SERVER_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R3_CLIENT_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R3_SERVER_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R4_CLIENT_USER_LEVEL"
	//   "PLAY_GROWTH_BUYER_RETENTION_R4_SERVER_USER_LEVEL"
	//   "PLAY_GROWTH_IS_SCHEDULED"
	//
	// "PLAY_PASS_BUNDLE_ELIGIBLE_USER_SHOWN_IPD_OR_INTERSTITIAL_USER_LEVEL"
	//   "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PROMOTION_COMBINED_ARM_USER_LEVEL"
	//   "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PROMOTION_PLAY_ARM_USER_LEVEL"
	//   "HYPE_PANEL_USER_LEVEL" - Test code for hype panel features on
	// details page: go/vip-hype-panel-passport,
	// go/vip-hype-panel2dot1-passport
	//   "HYPE_PANEL_NOT_OWNED_USER_LEVEL"
	//   "HYPE_PANEL_OWNED_NOT_INSTALED_USER_LEVEL"
	//   "HYPE_PANEL_INSTALLED_USER_LEVEL"
	//   "GEARHEAD_VISUAL_PREVIEW_UNCHAINED_ELIGIBLE" - Test code for when a
	// user was eligible for visual preview while in motion. E.g. received a
	// notification and had visual preview setting enabled.
	//   "POST_PURCHASE_ITEM_UPSELL_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_1_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_2_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_3_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_4_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_5_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_6_USER_LEVEL"
	//   "POST_PURCHASE_ITEM_UPSELL_APP_7_USER_LEVEL"
	//   "PLAY_PASS_SIGNUP_INTERSTITIAL_SHOWN_USER_LEVEL" - Test code logged
	// on client side for users who see the Play Pass signup interstitial.
	//   "DISABLE_TOPUP_EXPERIMENT_CONTROL_GROUP_USER_LEVEL" - Test codes
	// for seeing the effects of disabling topup in select countries.
	//   "DISABLE_TOPUP_EXPERIMENT_TREATMENT_GROUP_USER_LEVEL"
	//   "AVP_SWOOP_CAMPAIGN_10P_OFF_USER_LEVEL" - User saw/would have seen
	// the 10% off swoop campaign.
	//   "AVP_SWOOP_CAMPAIGN_25P_OFF_USER_LEVEL" - http://shortn/_L6kJNPGsS0
	// User saw/would have seen the 25% off swoop campaign.
	//   "AVP_SWOOP_CAMPAIGN_50P_OFF_USER_LEVEL" - http://shortn/_L6kJNPGsS0
	// User saw/would have seen the 50% off swoop campaign.
	//   "AVP_SWOOP_CAMPAIGN_75P_OFF_USER_LEVEL" - http://shortn/_L6kJNPGsS0
	// User saw/would have seen the 75% off swoop campaign.
	//   "CDP_ENABLE_PREFETCH_USER_LEVEL"
	//   "P13N_INTERSTITIAL_USER_LEVEL"
	//   "PLAY_EVENT_SERVICE_LOG_HOOK_USER_EXAMPLE"
	//   "FEATURED_SUBSCRIPTIONS_PRESENT_USER_LEVEL"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_USER_LEVEL" - Test code for
	// tracking the new subscription document format in GetSkuDetails,
	// Acquire and SubscriptionDocumentsFetcher flows
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_USER_LEVEL"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SKU_DETAILS_USER_LEVEL"
	//
	// "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SKU_DETAILS_USER_L
	// EVEL"
	//   "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_FOR_ALL_SUBS_USER_LEVEL"
	//   "LOYALTY_EARN_TAB_APP_INSTALL_ELIGIBLE_USER_LEVEL" - Test code for
	// tracking whether GPP user saw app install promo on the earn tab. Only
	// used for US/FR experiment for app install promotions.
	//   "LOYALTY_DETAILS_PAGE_APP_INSTALL_ELIGIBLE_USER_LEVEL" - Test code
	// for tracking whether GPP user saw app install promo on the details
	// page. Only used for US/FR experiment for app install promotions.
	//   "LEON_LIVEOPS_DEAL_STATE_SYNC_USER_LEVEL"
	//   "SURVEY_AHC_AT_USER_LEVEL"
	//   "CART_ABANDONMENT_CHURN_USER_LEVEL"
	//   "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_USER_LEVEL" - Test code
	// for tracking users eligible for the Play Pass cart marketing banner.
	//
	// "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_AND_SHOWN_CART_USER_LEVEL"
	// - Test code for tracking banner eligble users who are shown the cart.
	//   "PLAY_PASS_PERKS_VOUCHER_IN_CART_USER_LEVEL" - Test code for
	// tracking users shown Play Pass perks icon in cart.
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_USER_LEVEL" - Test code for
	// play quest platform project
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_2_USER_LEVEL"
	//   "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_3_USER_LEVEL"
	//   "PSO_ELIGIBLE_PROMOTION_HOLDBACK_USER_LEVEL" - Indicates that the
	// user was eligible to be served a promotion, but the promotion was not
	// served
	//   "PSO_ELIGIBLE_PROMOTION_USER_LEVEL" - Indicates that the user was
	// eligible to be served a promotion, and the promotion was served
	//   "PLAY_PASS_PARENT_FOCUSED_SPLASH_PAGE_USER_LEVEL" - Test code for
	// tracking users who see a Play Pass parent-focused splash page.
	//   "PLAY_PASS_SPLASH_PAGE_FOR_PARENT_USER_LEVEL"
	//   "PLAY_PASS_SPLASH_PAGE_FOR_UNICORN_USER_LEVEL"
	//   "OMNICHANNEL_P13N_CANDIDATES_FOR_LIVEOPS_USER_LEVEL"
	//   "PLAY_SEARCH_GENERAL_QUERY_PAGINATION_USER_LEVEL" - Test code for
	// tracking users where the page is paginated by general query
	// pagination.
	//   "IN_CART_EXCHANGE_OPTIONS_ELIGIBLE_USER_LEVEL" - Test code for
	// tracking users where in cart exchange options are available.
	//   "CART_ABANDONMENT_GE_MODEL_EXPERIMENT" - Test code for cart
	// abandonment GE model experiment.
	//   "REDEEM_SAVE_GE_MODEL_EXPERIMENT" - Test code for redeem save GE
	// model experiment.
	//   "GE_COFFEE_CARD_INDIVIDUALIZATION_EXPERIMENT" - Test code for the
	// coffee card I15n experiment
	//   "GE_NOTIFICATION_REVENUE_ACCELERATION_EXPERIMENT" - Test code for
	// GE revenue acceleration experiment on Notification surface.
	//   "GE_USER_BUYER_STATE_UNKNOWN" - Test code GE ranker service unknown
	// users.
	//   "GE_USER_BUYER_STATE_NEVER" - Test code GE ranker service never
	// users.
	//   "GE_USER_BUYER_STATE_NEW" - Test code GE ranker service new users.
	//   "GE_USER_BUYER_STATE_CHURN" - Test code GE ranker service churn
	// users.
	//   "GE_USER_BUYER_STATE_REPEAT" - Test code GE ranker service repeat
	// users.
	//   "GE_USER_VALUE_SEGMENT_UNKNOWN" - Test code GE ranker service
	// unknown user value segment.
	//   "GE_USER_VALUE_SEGMENT_LOW" - Test code GE ranker service low user
	// value segment.
	//   "GE_USER_VALUE_SEGMENT_MEDIUM" - Test code GE ranker service medium
	// user value segment.
	//   "GE_USER_VALUE_SEGMENT_HIGH" - Test code GE ranker service high
	// user value segment.
	//   "GE_USER_VALUE_SEGMENT_NEVER" - Test code GE ranker service never
	// user value segment.
	//   "GE_IS_SCHEDULED_UNKNOWN_SURFACE" - Test codes for GE surfaces.
	//   "GE_IS_SCHEDULED_LEON"
	//   "GE_IS_SCHEDULED_NOTIFICATION"
	//   "GE_IS_SCHEDULED_CART_ABANDONMENT"
	//   "GE_IS_SCHEDULED_SWOOP"
	//   "GE_IS_SCHEDULED_LIVE_OP"
	//   "GE_IS_SCHEDULED_REDEEM_SAVE"
	//   "GE_IS_SCHEDULED_APP_HERO_CARD"
	//   "GE_IS_SCHEDULED_POINTS_BOOSTER"
	//   "GE_IS_SCHEDULED_INTERSTITIAL"
	//   "GE_IS_SCHEDULED_COFFEE_CARD"
	//   "GE_IS_SCHEDULED_QUEST"
	//   "GE_RANKING_CONFIG_EXPERIMENT" - Test code for GE ranking config
	// experiment
	//   "SUPPORT_SUBSCRIPTIONS_IN_FEATURED_SKU_USER_LEVEL" - Test code for
	// subscriptions being shown in Featured SKU. Design:
	// go/play-store-iap-sales-subs-dd
	//   "IAP_SKU_DEALS_LIVE_OP_DEALS_HOME_USER_LEVEL" - User level test
	// code for tracking users who should see the IAP Sku Deals liveops
	// card.
	//   "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_USER_LEVEL" - User level test
	// code for tracking users who should see the IAP Sku Games Home liveops
	// card.
	//   "FEATURING_AHC_OR_FHR_TRIGGERED_USER_LEVEL" - User level test code
	// for tracking users who should see the featuring AHC or FHR.
	//   "STARTERKIT_CLUSTERS_ELIGIBLE_USER_LEVEL" - User level test code
	// for tracking sessions include startkit clusters.
	//   "ALLOWLIST_EXPANSION_FOR_P13N_INTERSTITIAL_USER_LEVEL" - User level
	// test code for tracking users who have p13n interstitials impressions.
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL" - User level test codes
	// for Cluster Types. Use 20352.
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V0" - Use 20352.
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V1" - Use 20352.
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V2"
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V3"
	//   "NOVEL_TOPIC_CLUSTER_IMPRESSED_AT_USER_LEVEL"
	//   "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V4"
	//   "IPS_ITEM_LEVEL_RECS_REMOVED_USER_LEVEL" - User level test code for
	// tracking users who have IPS low appeal recommendations removed from
	// their feed.
	//   "ALLOWLIST_EXPANSION_FOR_P13N_LIVEOPS_USER_LEVEL" - User level test
	// code for tracking users who have p13n LiveOps impressions.
	//   "SURVEY_RECS_LIST_AT_USER_LEVEL" - User-level test code logged when
	// PRS returns a survey RecsList.
	//   "DEV_OFFER_SWGOH_USER_LEVEL" - User level test code logged when the
	// Dev Offer EAP campaign is about to be returned.
	//   "ALLOWLIST_EXPANSION_FOR_P13N_NOTIFICATIONS_USER_LEVEL" - User
	// level test code for tracking users who have p13n Notifications
	// candidates.
	//   "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_USER_LEVEL" - User level test
	// code for Growth Coffee Card Phase 1 launch, for tracking users who
	// made eligible purchases and are eligible for the GCC in purchase
	// flow.
	//   "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_SERVER_USER_LEVEL" - User
	// level test code for Growth Coffee Card, for tracking users who made
	// eligible purchases and are eligible for the GCC in purchase flow.
	// This test code is logged on server side.
	//   "GROWTH_CORPUS_WIDE_STAMP_CARD_PURCHASE_FLOW_CLIENT_USER_LEVEL" -
	// User level test code for Corpus Wide Growth Stamp Card, for tracking
	// users who made eligible purchases and are eligible for the GSC in
	// purchase flow. This test code is logged on client side.
	//   "GROWTH_CORPUS_WIDE_STAMP_CARD_PURCHASE_FLOW_SERVER_USER_LEVEL" -
	// User level test code for Corpus Wide Growth Stamp Card, for tracking
	// users who made eligible purchases and are eligible for the GSC in
	// purchase flow. This test code is logged on server side.
	//   "GROWTH_CORPUS_WIDE_STAMP_CARD_GAMES_HOME_USER_LEVEL" - User level
	// test code for Corpus Wide Growth Stamp Card, for tracking users who
	// are eligible for the GSC in Games Home.
	//   "LOYALTY_PURCHASE_QUEST_GAMES_HOME_USER_LEVEL" - User level test
	// code for Loyalty Purchase Quest, for tracking users who are eligible
	// for the LPQ in Games Home.
	//   "GROWTH_CORPUS_WIDE_STAMP_CARD_GAMES_HOME_SERVER_USER_LEVEL" - User
	// level test code for Corpus Wide Growth Stamp Card, for tracking users
	// who are eligible for the GSC in Games Home. This test code is logged
	// on server side.
	//   "LOYALTY_PURCHASE_QUEST_GAMES_HOME_SERVER_USER_LEVEL" - User level
	// test code for Loyalty Purchase Quest, for tracking users who are
	// eligible for the LPQ in Games Home. This test code is logged on
	// server side.
	//   "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL" - User level
	// test code that indicates that at least one high churn fop options is
	// available for user when visiting add fop page for subscription
	// purchase. Deprecated, use 20361 instead.
	//   "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL_V2"
	//
	// "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITH_EXISTING_FOP_USER_LEVEL"
	//
	// "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITHOUT_EXISTING_FOP_USER_LEVEL
	// "
	//   "SUBS_PRICE_CHANGE_VERSION_TIME_CHECK_USER_LEVEL" - User level test
	// code that indicates users who go through time based check to
	// determine if there's an eligible price change for this user.
	//   "WIDE_MEDIA_CLUSTER_INVALID_VIDEO_ASSET_USER_LEVEL" - User level
	// test code logged when the wide media card has invalid video asset in
	// the asset agnostic 3x experiment.
	//   "WEBSKY_SEARCH_THIRD_PARTY_CONTENT_ELIGIBLE_QUERY_USER_LEVEL" -
	// User level test code that indicates a user's search query qualifies
	// them to see third party content in Websky search stream.
	//   "EDITORIAL_FCC_AT_USER_LEVEL" - User level test code that indicates
	// that a user was served an editorial FCC (Flexible Content Cluster).
	//   "QUEST_CONTENT_CARD_IN_DEALS_HOME_USER_LEVEL" - User level test
	// code for Quest Content Card launch on Deals Home, for tracking users
	// who made eligible purchases and are eligible for the QCC.
	//   "FOP_STEERING_PROMOTION_INITIAL_BILLING_PROFILE_USER_LEVEL" - User
	// level test code for Fop Steering Promotion with initial billing
	// profile.
	//   "FOP_STEERING_PROMOTION_CART_ADD_FOP_USER_LEVEL" - User level test
	// code for Fop Steering Promotion displayed in cart with add fop
	// action.
	//   "FOP_STEERING_PROMOTION_CART_CHANGE_FOP_USER_LEVEL" - User level
	// test code for Fop Steering Promotion displayed in cart with change
	// fop action.
	//   "FOP_STEERING_PROMOTION_CART_APPLY_PROMOTION_USER_LEVEL" - User
	// level test code for Fop Steering Promotion displayed in cart with
	// apply promotion action.
	//   "LOYALTY_STAMP_CARD_IN_PURCHASE_FLOW_USER_LEVEL" - User level test
	// code for Quest Platform Loyalty Stamp Card in Purchase flow.
	//   "HAS_MONETIZATION_BEHAVIOR_USER_LEVEL" - User level test code for
	// users who have made any monetization behavior(sub, iap) before
	// (controlled by fsUlyssesBuyerState), used for AH/GH monetization
	// experiments.
	//   "HAS_MONETIZATION_BEHAVIOR_LAST_180D_USER_LEVEL" - User level test
	// code for users who have made any monetization behavior(sub, iap) for
	// the last 180 days (controlled by
	// ULYSSES_OOP_SPEND_PER_PURCHASE_180D), used for AH/GH monetization
	// experiments.
	//   "HAS_LAST_28D_CART_ABANDONMENT_USER_LEVEL" - User level test code
	// for users who have any purchase card abandon behavior in the last 28
	// day (controlled by LAST_28D_CART_ABANDONMENT_BACKEND), used for AH/GH
	// monetization experiments.
	//   "HAS_LAST_7D_CART_ABANDONMENT_USER_LEVEL" - User level test code
	// for users who have any purchase card abandon behavior in the last 7
	// day (controlled by LAST_7D_CART_ABANDONMENT_BACKEND), used for AH/GH
	// monetization experiments.
	//   "LINK_BIOMETRICS_USER_LEVEL" - User level test code for link
	// biometrics for free app acquisitions.
	//   "POST_SUCCESS_ADD_BACKUP_FLOW_USER_LEVEL" - User level test code
	// for post success add backup flow.
	//   "SKIP_CHECK_MARK_SCREEN_WITH_BACKUP_FLOW_USER_LEVEL" - User level
	// test code for skipping ckechmark screen with backup flow.
	//   "IS_ELIGIBLE_FOR_ONE_CLICK_BACKUP_FOP_USER_LEVEL" - User level test
	// code for users who are eligible for one-click backup fop.
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_INVALID_USER_LEVEL" - User
	// level test codes for pre-period user page visit frequency in past 28
	// days.
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_0_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_1_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_2_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_3_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_4_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_5_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_6_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_7_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_8_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_9_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_10_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_11_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_12_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_13_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_14_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_15_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_16_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_17_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_18_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_19_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_20_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_21_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_22_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_23_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_24_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_25_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_26_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_27_USER_LEVEL"
	//   "PREPERIOD_PAGE_VISIT_28D_FREQUENCY_28_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_INVALID_USER_LEVEL" - User
	// level test codes for post-period user page visit frequency in past 28
	// days.
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_0_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_1_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_2_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_3_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_4_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_5_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_6_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_7_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_8_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_9_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_10_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_11_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_12_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_13_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_14_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_15_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_16_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_17_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_18_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_19_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_20_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_21_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_22_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_23_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_24_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_25_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_26_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_27_USER_LEVEL"
	//   "POSTPERIOD_PAGE_VISIT_28D_FREQUENCY_28_USER_LEVEL"
	//   "LOYALTY_STAMP_CARD_IN_PURCHASE_FLOW_SERVER_USER_LEVEL" - Test code
	// for Loyalty Stamp Card, for tracking users who made eligible
	// purchases and are eligible for the LSC in purchase flow.
	//   "ELIGIBLE_FOR_MANAGE_IN_APP_DETAILS_USER_LEVEL" - User level test
	// code for eligible users for manage in-app details
	//   "PLAY_ONBOARDING_QUEST_GAMES_HOME_USER_LEVEL" - User level test
	// code for Play Onboarding quest, tracking users who are eligible for
	// Play Onboarding quest in Games Home
	//   "SERVED_GPP_ONBOARDING_QUEST_USER_LEVEL" - User level test code for
	// users who have been served GPP onboarding quest.
	//   "YOUTUBE_OPTED_IN_NOTIFICATION_DRIVEN_PREFETCH_USER_LEVEL" - User
	// level test code for YouTube commerce, tracking users who opted in
	// notification driven prefetch.
	//   "PLAY_ONBOARDING_QUEST_GAMES_HOME_SERVER_USER_LEVEL" - User level
	// test code for Play Onboarding quest, tracking users who are eligible
	// for Play Onboarding quest in Games Home. This test code is logged on
	// the server side.
	//   "PCH_O2_WITH_CRE_USER_LEVEL" - User level test code for tracking
	// users who are being shown PersistentCartHeader through purchase flow.
	// This test code is logged on the server side.
	//   "MERCH_USER_JOURNEY_SPEND_USER_LEVEL" - User level test code for
	// Merch user journey experiment. This test code is logged on the Growth
	// Engine server side.
	//   "PBUY_FINE_TUNING_WITH_TEXT_TREAT_USER_LEVEL" - User level test
	// code for new uplift modeling architecture with campaign features in
	// treatment tower.
	//   "PLAY_GAMES_ACHIEVEMENT_LOYALTY_QUEST_USER_LEVEL" - User level test
	// code for Non-Play Growth Events experiment (go/npge-prd). Logged on
	// the server side and applied to users that visit Loyalty Home and are
	// eligible to receive a quest with Play Games Achievement tasks,
	// regardless of whether the quest was shown or held back.
	//   "PLAY_BOOKS_READING_PROGRESS_TOOLTIP_USER_LEVEL" - User level test
	// code for reading progress tooltip.
	//   "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_USER_LEVEL1" - User level test
	// code for tracking users who should see the IAP Sku Games Home liveops
	// card.
	//
	// "POST_PURCHASE_OFFER_POST_PURCHASE_CONFIRMATION_DIALOG_SERVER_USER_LEV
	// EL" - Post purchase offer test codes User level test code to track
	// the user who sees the post purcahse offer redemption dialog for post
	// purchase offer experiment.
	//
	// "POST_PURCHASE_OFFER_POST_PURCHASE_OFFER_SAVED_DIALOG_SERVER_USER_LEVE
	// L" - User level test code to track the user who sees the post
	// purcahse offer saved dialog for post purchase offer experiment.
	//
	// "POST_PURCHASE_OFFER_VALUE_PROMOTION_DIALOG_SHOWN_SERVER_USER_LEVEL"
	// - User level test code to track the user who sees the value promotion
	// dialog, including loyalty upsell, post purcahse offer and so on for
	// post purchase offer experiment.
	//   "MDP_P13N_RERANKING_UNKNOWN_USER_LEVEL" - MDP P13N reranking.
	//   "MDP_P13N_RERANKING_CATEGORICAL_USER_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_USER_LEVEL"
	//   "MDP_P13N_RERANKING_MULTI_NAVIGATIONAL_USER_LEVEL"
	//   "MDP_P13N_RERANKING_NAVIGATIONAL_EXT_USER_LEVEL"
	//   "PLAY_ONBOARDING_QUEST_PLATFORM_SERVING_USER_LEVEL" - User level
	// test code for Play Onboarding quest, tracking users who are eligible
	// in any serving flow via Quest Platform.
	//   "APPS_LAUNCHER_CLUSTER_AT_USER_LEVEL" - User-level test code that
	// indicates a user was served an Apps Launcher Cluster.
	//   "PBUY_V1_SEQUENCE_MODEL_LAUNCH_USER_LEVEL" - User level test code
	// for v1 sequence model launch layer, tracking users who actually get
	// different experience between control and treatment.
	//   "USER_LEVEL_TEST_CODE_LIMIT"
	TestCode []string `json:"testCode,omitempty"`

	// TrustedGenomeHierarchy: The list of trusted genome hierarchy. One
	// trusted_genome_hierarchy may contain one or multiple entities. This
	// is required for TG 2.0 tags.
	TrustedGenomeHierarchy []*VendingConsumerProtoTrustedGenomeHierarchy `json:"trustedGenomeHierarchy,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Policy") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Policy") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VendingConsumerProtoTrustedGenomeAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod VendingConsumerProtoTrustedGenomeAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VendingConsumerProtoTrustedGenomeEntity: Proto message containing the
// id, localized title, score, and hierarchy level of a trusted genome
// entity. Next ID: 10
type VendingConsumerProtoTrustedGenomeEntity struct {
	// CategoryId: The category id matching this trusted genome entity. e.g.
	// Action tag with id /m/025zzc matches category of id GAME_ACTION
	CategoryId string `json:"categoryId,omitempty"`

	// Id: The identifier of a play trusted genome entity. Required.
	Id string `json:"id,omitempty"`

	// Level: The level of the entity. E.g. in hierarchy like Action ->
	// Platformer > Endless Runner. Action is level 1, Platformer is level 2
	// and Endless Runner is level 3. Currently, only APP_TAXONOMY and
	// GAME_TAXONOMY type may have the levels. For entity that does not have
	// hierarchy, its level is 1. Required.
	Level int64 `json:"level,omitempty"`

	// PredicateName: The name of the relation between the app and the
	// entity. Required.
	PredicateName string `json:"predicateName,omitempty"`

	// QueryText: The localized query string for this trusted genome entity.
	// This query will be used when we want to bring users to SERP on click.
	QueryText string `json:"queryText,omitempty"`

	// Score: The confidence score of the entity to the app.
	Score float64 `json:"score,omitempty"`

	// Title: The localized title. Required.
	Title string `json:"title,omitempty"`

	// UserVisible: This boolean is used to decide whether this entity will
	// be shown on user-facing features in the Store or not.
	UserVisible bool `json:"userVisible,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CategoryId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CategoryId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VendingConsumerProtoTrustedGenomeEntity) MarshalJSON() ([]byte, error) {
	type NoMethod VendingConsumerProtoTrustedGenomeEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VendingConsumerProtoTrustedGenomeEntity) UnmarshalJSON(data []byte) error {
	type NoMethod VendingConsumerProtoTrustedGenomeEntity
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// VendingConsumerProtoTrustedGenomeHierarchy: Proto message containing
// one or multiple trusted genome entity. This is used to capture
// entities that belong to the same type and have parent-children
// relationship in the taxonomy. e.g. One hierarchy may include 3
// entities with Game_Taxonomy Type: (1) Action (Level 1) (2) Platformer
// (Level 2 under Action) (3) Endless Runner (Level 3 under Platformer)
// e.g. One hierarchy may also include only 1 entity with
// Game_Graphic_Style: (1) Anime (No level information) Next ID: 5
type VendingConsumerProtoTrustedGenomeHierarchy struct {
	// Entity: List of entities (one or multiple) that belong in the same
	// hierarchy. The entries will be ordered such that the first entry will
	// be of level 1, and the second entry will be of level 2, and so on.
	// Required
	Entity []*VendingConsumerProtoTrustedGenomeEntity `json:"entity,omitempty"`

	// HierarchyType: The (hierarchy-level) type of this Trusted Genome
	// hierarchy. Will only be populated when meeting certain criteria, e.g.
	// 'GD2_Game_Main' means this hierarchy of entities can serve as the
	// main game genre for Game Discovery 2.0.
	//
	// Possible values:
	//   "UNKNOWN_HIERARCHY_TYPE"
	//   "GD2_GAME_MAIN" - Indicates this can be used as the main genre in
	// Game Discovery 2.0 (GD2). See http://shortn/_3Aj6GDRdxM for more
	// info.
	//   "GD2_GAME_SUB" - Indicates this can be used as the sub genre in
	// Game Discovery 2.0 (GD2). Specifically, sub genre tags are only
	// limited to 'Casual' & 'Arcade' and their children genres. See
	// http://shortn/_3Aj6GDRdxM for more info.
	HierarchyType string `json:"hierarchyType,omitempty"`

	// Source: The source of this Trusted Genome hierarchy.
	//
	// Possible values:
	//   "UNKNOWN_TRUSTED_GENOME_SOURCE"
	//   "TRUSTED_GENOME_2" - Source of truth for App KG annotations, a.k.a.
	// TG2. See go/play-genome-g3doc for details.
	//   "VALIDATED_DEVELOPER" - If the categories provided by rater
	// platform and developers are matched.
	//   "DEVELOPER_PROVIDED" - If there is no rater provided category or
	// the categories provided by rater platform and developers are NOT
	// matched.
	Source string `json:"source,omitempty"`

	// TrustedGenomeType: The (entity-level) type of trusted genome entities
	// in this hierarchy. Required.
	//
	// Possible values:
	//   "UNKNOWN_ENTITY_TYPE"
	//   "APP_TAXONOMY" - Apps taxonomy. e.g. Air travel.
	//   "APP_ATTRIBUTE" - Apps attribute, it can be universal, e.g. VR, or
	// it can be category specific, e.g. Beauty type makeup.
	//   "GAME_TAXONOMY" - Game taxonomy. e.g. Action.
	//   "GAMEPLAY_ELEMENT" - Gameplay element. e.g. Arcade.
	//   "GAMEPLAY_MODE" - Gameplay mode. e.g. Single player
	//   "GAME_GRAPHIC_STYLE" - Game graphic stype. e.g. Anime
	//   "GAME_THEME_SETTING" - Game theme setting. e.g. Fantasy
	//   "GAME_CONNECTIVITY" - Game connectivity. e.g. Offline
	//   "GAME_DIMENSIONAL_PLANES" - Game dimensional planes. e.g. 3D
	//   "GAME_MONETIZATION" - Game monetization. e.g. subscription, try
	// before you buy.
	//   "ACCESSIBLITY" - Accessiblity. e.g. Blind-Friendly
	//   "ASSISTANT" - Assistant tags, e.g. Assistant-Enabled
	//   "CHROMEBOOK_COMPATIBILITY" - Chrome OS compatibility tags. e.g.
	// Optimized for Chromebooks
	TrustedGenomeType string `json:"trustedGenomeType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entity") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VendingConsumerProtoTrustedGenomeHierarchy) MarshalJSON() ([]byte, error) {
	type NoMethod VendingConsumerProtoTrustedGenomeHierarchy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VendingConsumerProtoTrustedGenomePolicy: Proto message containing
// policy related information.
type VendingConsumerProtoTrustedGenomePolicy struct {
	// LocalizedRegionOverride: Override text for region for special
	// treatment. Override will be used in special cases for example regions
	// are too long to show in UI, the override will be "CA/NV/..." to cut
	// it short. By keeping a region override string we'll have more
	// flexibility to adjust what we show on UI. Optional.
	LocalizedRegionOverride string `json:"localizedRegionOverride,omitempty"`

	// PolicyType: Policy type. e.g. Government Endorsed, Apollo Required.
	//
	// Possible values:
	//   "UNKNOWN_POLICY_TYPE"
	//   "GOVERNMENT_COMMISSIONED" - Government Commissioned
	//   "APOLLO_APPROVED" - Apollo Approved
	//   "APOLLO_EXPRESS" - Apollo ENX Approved
	PolicyType []string `json:"policyType,omitempty"`

	// TargetRegion: Contains target region for the current policy. Optional
	TargetRegion []*VendingConsumerProtoTrustedGenomePolicyTargetRegion `json:"targetRegion,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "LocalizedRegionOverride") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalizedRegionOverride")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VendingConsumerProtoTrustedGenomePolicy) MarshalJSON() ([]byte, error) {
	type NoMethod VendingConsumerProtoTrustedGenomePolicy
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VendingConsumerProtoTrustedGenomePolicyTargetRegion struct {
	// LocalizedRegion: Localized name for targeted regions. e.g. San
	// Francisco Bay Area Required.
	LocalizedRegion string `json:"localizedRegion,omitempty"`

	// Mid: Associated KG entity mid for region. e.g. /m/06pvr
	Mid string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LocalizedRegion") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LocalizedRegion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VendingConsumerProtoTrustedGenomePolicyTargetRegion) MarshalJSON() ([]byte, error) {
	type NoMethod VendingConsumerProtoTrustedGenomePolicyTargetRegion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoAmbisonicsAmbisonicsMetadata struct {
	// ChannelMap: Maps channel indexes of an audio stream to indexes
	// corresponding to the specified ambisonics channel ordering scheme.
	// For example: A 1st order pheriphonic ambisonics format is configured
	// with 4 audio channels corresponding to ambisonic components W, X, Y,
	// Z respectively. The channel_ordering scheme is specified as
	// CHANNEL_ORDERING_ACN (which implies a W, Y, Z, X ordering). Therefore
	// the channel_map is [0, 3, 1, 2].
	ChannelMap []int64 `json:"channelMap,omitempty"`

	// Possible values:
	//   "CHANNEL_ORDERING_UNKNOWN"
	//   "CHANNEL_ORDERING_ACN" - Ambisonic Channel Number
	ChannelOrdering string `json:"channelOrdering,omitempty"`

	NonDiegeticStereo bool `json:"nonDiegeticStereo,omitempty"`

	// Possible values:
	//   "NORMALIZATION_UNKNOWN"
	//   "NORMALIZATION_SN3D" - Schmidt semi-normalisation
	Normalization string `json:"normalization,omitempty"`

	NumChannels int64 `json:"numChannels,omitempty"`

	Order int64 `json:"order,omitempty"`

	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "TYPE_PERIPHONIC" - Full 360 degree sphere (x,y,z)
	//   "TYPE_HORIZONTAL" - Planar horizontal-only plan (x,y)
	Type string `json:"type,omitempty"`

	Version int64 `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ChannelMap") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ChannelMap") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoAmbisonicsAmbisonicsMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAmbisonicsAmbisonicsMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoAssetsVenomACL: Valid fields in ACL are "mdb/groupname", or
// "user/username", e.g., "mdb/youtube-prod", or "user/alice".
type VideoAssetsVenomACL struct {
	// Owner: REQUIRED: the current owner of this video. Please note that
	// owner does not get implicit reader/writer access. You must set them
	// explicitly.
	Owner string `json:"owner,omitempty"`

	// Reader: Allowed readers of this video.
	Reader []string `json:"reader,omitempty"`

	// Writer: Allowed writers of this video.
	Writer []string `json:"writer,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Owner") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Owner") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoAssetsVenomACL) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAssetsVenomACL
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoAssetsVenomSettings: Describes ingredient level settings.
// Clients are authoritative in defining Settings. See go/venom-trustme
// for how Settings and ProcessingCharacteristics work together. If your
// Settings extension contains PII fields, please 1) Annotate them
// appropriately with DataPol, and 2) Add your BUILD target to
// google3/video/assets/venom/proto/settings/BUILD:pii See
// google3/video/assets/venom/proto/settings/ for extension messages.
type VideoAssetsVenomSettings struct {
}

// VideoAssetsVenomTransition: As video mutations are reconciled by
// Venom, we can tell if the ingredient did or did not reach certain
// objectives. When processing has completed, all objectives will have a
// corresponding transition. All transitions are reset for every
// mutation, but will take into account assets outside of that mutation.
// For example, if Asset X fails, and was part of
// "OBJECTIVE_PRIMARY_ASSETS_DONE", a rerun of Asset Y is destined to
// result in OUTCOME_FAILED, regardless of the fate of Asset Y. Some
// phenonema have effects on most or all Objectives. For example, a bad
// input file will result on OUTCOME_INFEASIBLE across the board
// (eventually, for now it's just GO_LIVE and DO_ALL, work in progress),
// and a failure to produce Format 18 will cause OUTCOME_FAILED across
// most Objectives.
type VideoAssetsVenomTransition struct {
	// Objective: The objective this transition is about. REQUIRED.
	//
	// Possible values:
	//   "OBJECTIVE_UNKNOWN" - Should not happen.
	//   "OBJECTIVE_INGREDIENT_DO_ALL" - Put all the assets in a
	// satisfactory state.
	//   "OBJECTIVE_INGREDIENT_GO_LIVE" - Enough was done on the ingredient
	// for the video to be playable.
	//   "OBJECTIVE_INGREDIENT_VALIDATED" - The validation asset is ready.
	//   "OBJECTIVE_PRIMARY_ASSETS_DONE" - The most important transcodes and
	// other assets have been completed. Drives "is_fully_processed" in
	// VAPI. Limited to UGC and Reels. Also used to atomically publish all
	// latency-sensitive transcodes after an edit.
	//   "OBJECTIVE_PREVIEW_DONE" - A representation for the video in
	// advance of all completed assets is ready.
	//   "OBJECTIVE_TRANSMUXED_DONE" - The transmuxed transcode for the
	// video, used for faster playback in certain early GO_LIVE scenarios,
	// is playable. This is currently limited to Photos.
	//   "OBJECTIVE_MEDIA_INFO_DONE" - Basic media information is available
	// -- a rare single-asset objective, to advertise a video's general
	// information as quickly as possible.
	//   "OBJECTIVE_PRIMARY_720P_TRANSCODES_DONE" - Subset of
	// OBJECTIVE_PRIMARY_ASSETS_DONE for 720p resolution and below.
	//   "OBJECTIVE_PRIMARY_1080P_TRANSCODES_DONE" - Subset of
	// OBJECTIVE_PRIMARY_ASSETS_DONE for 1080p resolution and below.
	//   "OBJECTIVE_PRIMARY_2K_TRANSCODES_DONE" - Subset of
	// OBJECTIVE_PRIMARY_ASSETS_DONE for 2K resolution and below.
	//   "OBJECTIVE_PRIMARY_4K_TRANSCODES_DONE" - Subset of
	// OBJECTIVE_PRIMARY_ASSETS_DONE for 4K resolution and below.
	//   "OBJECTIVE_PRIMARY_8K_TRANSCODES_DONE" - Deprecated.
	//   "OBJECTIVE_FINGERPRINTS_DONE" - Fingerprint assets are complete.
	//   "OBJECTIVE_CHECKSUMS_DONE" - ASSET_CHECKSUMS is complete. Only
	// transmitted for SIGNIFICANCE_MAJOR_USER_INITATED changes.
	//   "OBJECTIVE_CLAIM_DONE" - Deprecated.
	//   "OBJECTIVE_THUMBNAILS_DONE" - All thumbnails are complete.
	//   "OBJECTIVE_LIVE_STITCHABLE_ASSETS_DONE" - All live server
	// stitchable ad assets are complete.
	//   "OBJECTIVE_CRAWL_ASSETS_DONE" - All requested crawl assets for
	// Amarna are complete. This is only needed for genus which is shared by
	// Amarna and other clients. As of 10/2020, YT UGC is the only genus,
	// and crawl assets include MOVING_THUMBNAIL_{8K, 30K, 90K, 300K_24FPS}
	// and ASSET_TIMED_ANCHOR_THUMBNAIL_SPORTS_MOMENT.
	//   "OBJECTIVE_VITAL_ASSETS_DONE" - A super set of
	// OBJECTIVE_PRIMARY_ASSETS_DONE and a few other assets that are
	// important for tracking the health of a video. Note: This is for
	// internal health tracking and *not* intended for clients.
	//   "OBJECTIVE_SAM_FEATURES_DONE" - The set of features that Smart Auto
	// Midrolls depends on for generating midroll ad breaks.
	//   "OBJECTIVE_SPEECH_RECOGNITION_DONE"
	Objective string `json:"objective,omitempty"`

	// Outcome: Whether the objective is reached or not. REQUIRED.
	//
	// Possible values:
	//   "OUTCOME_UNKNOWN" - Should not happen.
	//   "OUTCOME_SUCCESS" - We managed to put the video in the state
	// described by the transition. All assets are in STATE_DONE or have a
	// good reason not to be. No asset is stuck in STATE_MISSING or
	// STATE_DIRTY, and Venom has determined that all assets in either
	// STATE_NOT_APPLICABLE (common) or were not requested (less common) are
	// acceptable (e.g. not marked "must_succeed" in TrustMe).
	//   "OUTCOME_FAILED" - Venom failed to put the video in the state
	// described by the transition, due to failures in one or more assets.
	// These are failures within video processing, rather than client
	// issues. Venom won’t try any further, until another mutation occurs.
	// This almost always indicates that assets failed in Viper/Kronos, and
	// ran out of retries. Failure of some consistency checks within Venom
	// can also cause this Outcome, in theory. Both OUTCOME_INFEASIBLE and
	// OUTCOME_NOT_REQUESTED dominate this value, when different assets have
	// differing fates.
	//   "OUTCOME_INFEASIBLE" - * an asset marked as "must_succeed" in
	// TrustMe is declared Not Applicable by Viper/Kronos. e.g.: a video so
	// low-res we can't even make itag 18. The GENUS_DRIVE adapter has
	// similar logic if *all* assets are somehow declared not applicable
	// (http://google3/video/assets/venom/internal/genera/drive.cc?l=224&rcl=368933695).
	// These scenarios are not common. We didn’t put the video in the
	// state described by the transition and won’t try any further, until
	// another mutation occurs. This happens if we discovered that the State
	// can’t possibly be reached for this specific video (for instance,
	// it’s not even a video, it’s out of spec or it’s a live stream
	// that can’t be archived,...)
	//   "OUTCOME_NOT_REQUESTED" - One of the following has occurred: 1) at
	// least one "must_succeed" asset (as defined by TrustMe) was not
	// requested by the client, or 2) no assets defined in the Objective
	// were requested whatsoever. 3) no assets are associated with the
	// Objective whatsoever Deleting assets is considered equivalent to
	// never having requested them. For most genera, this a sign of a
	// serious bug in asset declaration, either TrustMe data, client code,
	// or backfill request. However, Photos and HVC have a few expected use
	// cases.
	//   "OUTCOME_PENDING" - We are waiting to complete a transition. This
	// is a temporary condition that should move to one of OUTCOME_SUCCESS,
	// OUTCOME_FAILED, or OUTCOME_INFEASIBLE once processing on the video is
	// able to complete. It's unlikely we will transition to
	// OUTCOME_NOT_REQUESTED from here, because that outcome is determined
	// immediately on first audit.
	Outcome string `json:"outcome,omitempty"`

	// Reason: An optional debug string indicating the reason for this
	// transition. This is typically omitted for OUTCOME_SUCCESS. e.g. "The
	// video's content is invalid due to failed blobstore cloning."
	Reason string `json:"reason,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Objective") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Objective") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoAssetsVenomTransition) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAssetsVenomTransition
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoAssetsVenomVideoId: A VideoId is the unique identifier of a
// video. Privacy: VideoIds are visible in logs, notifications, etc and
// must not contain PII.
type VideoAssetsVenomVideoId struct {
	// Id: REQUIRED. IDs have some constraints: - 32 bytes max: this is
	// enforced by the server - for the time being, must be parseable as a
	// youtube ID (basically a base64-encoded string which maps to a 64-bit
	// integer). This restriction will eventually be lifted.
	Id string `json:"id,omitempty"`

	// Ns: LINT.ThenChange(
	// //depot/google3/googledata/production/playbooks/video-assets/clients.m
	// d, //depot/google3/video/assets/venom/proto/namespace.proto )
	// REQUIRED.
	//
	// Possible values:
	//   "NS_UNKNOWN" - Default (invalid) namespace if the field is not set.
	//   "NS_YOUTUBE" - YouTube video ID. This is the public, encrypted, ID.
	//   "NS_YOUTUBE_MEDIA" - YouTube media content: videos in this
	// namespace are _NOT_ visible directly to users, but act as the primary
	// video for video aliases in the NS_YOUTUBE namespace. IDs in this
	// namespace are independent from regular YouTube IDs.
	//   "NS_KIDS_HUB"
	//   "NS_GMAIL"
	//   "NS_YOUTUBE_DIRECTOR"
	//   "NS_DCLK_VIDEO_ADS" - Namespace for the Truman project.
	//   "NS_TESTING" - Used for Bandaid probe test videos.
	//   "NS_HVC_INGESTION" - Namespace for Play Movies.
	//   "NS_DRIVE"
	//   "NS_ASK_QNA" - Namespace for AskJoe Video Q&A.
	//   "NS_LOCAL_VIDEO" - Namespace for local imagery aka Photo/Video On
	// Maps.
	//   "NS_PLAY_AUDIOBOOKS"
	//   "NS_HANGOUTS_CHAT" - Namespace for Hangouts Chat (Dynamite)
	//   "NS_VIDEO_INTEREST_FEED" - Namespace for Interest Feed Inline
	// Video.
	//   "NS_RECORDER" - Namespace for Recorder - User generated local News
	// content.
	//   "NS_STAMP" - Namespace for STAMP - AMP Stories.
	//   "NS_CRAWL" - Namespace for Non-YouTube videos processed through
	// Amarna.
	//   "NS_PHOTOS"
	//   "NS_MATERIAL_GALLERY"
	//   "NS_YT_REFERENCE" - Namespace for 'A-' References; audio or video
	// references that are not playable on YouTube, and only used as
	// references for ContentID claiming.
	//   "NS_LENSLETS_VIDEOS"
	//   "NS_BLOGGER"
	//   "NS_OCEAN"
	//   "NS_OCEAN_DEV" - Namespace for Ocean / Play Books dev/staging
	// content. Needed because the Books staging server talks only to the
	// prod video streaming environment.
	//   "NS_ADORA"
	//   "NS_WEB_VIDEO_ADS" - Namespace for Web Video Ads.
	//   "NS_STUDIO" - Namespace for RichMedia Studio.
	//   "NS_YT_TDSD_REFERENCE" - Namespace for TDSD references. These are
	// not playable on YouTube, and are only used for generating ContentID
	// fingerprints.
	//   "NS_WEB_STORY" - Namespace for Kahani Web Stories.
	//   "NS_NEST_CAMERA_CLOUD" - Namespace for Nest Camera Cloud.
	//   "NS_AREA120_BLUEBIRD" - Namespace for Area120 project Bluebird
	//   "NS_ARTS_AND_CULTURE" - Namespace for Google Arts & Culture.
	//   "NS_DAI_PODCAST" - Namespace for Dynamic Ad Insertion Podcasts.
	//   "NS_DEMO" - Namespace for the Demo tier used by new clients to try
	// things out.
	//   "NS_KARTO" - Namespace for Karto videos.
	//   "NS_CONTRIB_SERVICE_SHARED" - Namespace for shared ContribService
	// UGC videos.
	//   "NS_CONTRIB_SERVICE_GEO_UGC" - Namespace for GEO UGC videos
	// processed by ContribService.
	//   "NS_SEARCH_SPORTS" - Namespace for Search Sports vertical videos.
	//   "NS_BUSINESSMESSAGING" - Namespace for Business Messaging videos.
	// Please receive approval via go/vp-newclients before adding a new
	// namespace.
	Ns string `json:"ns,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Id") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Id") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoAssetsVenomVideoId) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAssetsVenomVideoId
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoAudioStream: Next tag: 10
type VideoAudioStream struct {
	// Bitrate: Audio bitrate in bits/s.
	Bitrate int64 `json:"bitrate,omitempty,string"`

	// Channels: Number of audio channels.
	Channels int64 `json:"channels,omitempty"`

	// CodecId: Audio codec ID. Uses the numeric value corresponding to the
	// CodecId enum object, in order to avoid the dependency on
	// vsi/videostreaminfo.proto.
	// http://cs/symbol:CodecId%20f:google3/video/vidproc/vsi/videostreaminfo.proto
	CodecId int64 `json:"codecId,omitempty"`

	// ContentType: Content type of the stream. Only populated with valid
	// "acont" xtag values at the moment. Supported acont xtag values can be
	// found in google3/video/storage/common/xtag_validation.cc. Examples:
	// "original", "dubbed", "descriptive", "commentary", etc.
	ContentType string `json:"contentType,omitempty"`

	// Language: Language, examples: "eng", "en", "enG", etc.
	Language string `json:"language,omitempty"`

	// LengthSec: Audio length, in seconds. This value is derived from
	// metadata in the source video, and often differs from the actual
	// duration of any given transcode. In videos without valid timestamps,
	// this value is not calculable, and is reported as zero.
	LengthSec float64 `json:"lengthSec,omitempty"`

	Loudness1770Lkfs float64 `json:"loudness1770Lkfs,omitempty"`

	// SampleRate: Audio sample rate.
	SampleRate int64 `json:"sampleRate,omitempty,string"`

	// StreamIndex: Index of the stream in the file, 0-based.
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Bitrate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bitrate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoAudioStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAudioStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoAudioStream) UnmarshalJSON(data []byte) error {
	type NoMethod VideoAudioStream
	var s1 struct {
		LengthSec        gensupport.JSONFloat64 `json:"lengthSec"`
		Loudness1770Lkfs gensupport.JSONFloat64 `json:"loudness1770Lkfs"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.LengthSec = float64(s1.LengthSec)
	s.Loudness1770Lkfs = float64(s1.Loudness1770Lkfs)
	return nil
}

// VideoClipInfo: Generic clip information contains a key string and a
// value string.
type VideoClipInfo struct {
	Key string `json:"key,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Key") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoClipInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoClipInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoClosedCaptions struct {
	VideoHasClosedCaptions bool `json:"videoHasClosedCaptions,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "VideoHasClosedCaptions") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VideoHasClosedCaptions")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoClosedCaptions) MarshalJSON() ([]byte, error) {
	type NoMethod VideoClosedCaptions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchAnchorCommonFeatureSet: Contains anchor level
// features that apply to all anchor types. Next id: 18.
type VideoContentSearchAnchorCommonFeatureSet struct {
	// AnchorQbstDistance: QBST distance between the anchor and the top
	// navboost query of the video if exists, or the video title otherwise.
	AnchorQbstDistance float64 `json:"anchorQbstDistance,omitempty"`

	// BleurtFeatures: Features needed for Bleurt inference.
	BleurtFeatures *VideoContentSearchBleurtFeatures `json:"bleurtFeatures,omitempty"`

	// BleurtScore: The Bleurt inference score generated using the
	// bleurt_features.
	BleurtScore float64 `json:"bleurtScore,omitempty"`

	// DescartesScoreWithTitle: Descartes similarity score between video
	// title and anchor label.
	DescartesScoreWithTitle float64 `json:"descartesScoreWithTitle,omitempty"`

	// DolphinDescriptivenessScore: The predicted descriptiveness and
	// usefulness rating scores generated by the Unified Dolphin model.
	// Rating template:
	// experimental/video/video_anchors_oneside_without_thumbnail/template.jh
	// tml
	DolphinDescriptivenessScore float64 `json:"dolphinDescriptivenessScore,omitempty"`

	// DolphinEnsembleScore: If the dolphin model is an ensemble model, this
	// contains the scores associated to each individual ensemble model.
	DolphinEnsembleScore []*VideoContentSearchDolphinEnsembleScore `json:"dolphinEnsembleScore,omitempty"`

	// DolphinFeatures: The features used to generate the Dolphin score.
	DolphinFeatures *VideoContentSearchDolphinFeatures `json:"dolphinFeatures,omitempty"`

	// DolphinScore: The score generated by the Dolphin callout model.
	DolphinScore float64 `json:"dolphinScore,omitempty"`

	DolphinUsefulnessScore float64 `json:"dolphinUsefulnessScore,omitempty"`

	// LabelPhraseEmbedding: A phrase embedding for the anchor label. The
	// model used to generate the embedding can be found in VideoAnchorSets:
	// video_score_info.common_features.label_phrase_embedding_model
	LabelPhraseEmbedding []float64 `json:"labelPhraseEmbedding,omitempty"`

	// MumDescriptivenessScore: The predicted descriptiveness of the anchor
	// using the MUM unified scoring model.
	MumDescriptivenessScore float64 `json:"mumDescriptivenessScore,omitempty"`

	// MumUsefulnessScore: The predicted usefulness of the anchor using the
	// MUM unified scoring model.
	MumUsefulnessScore float64 `json:"mumUsefulnessScore,omitempty"`

	// RetentionScore: A score that is correlated with retention probability
	// of the interval associated with this anchor (start time to end time).
	// Retention probability of an interval is 1 - (probability the user
	// does not watch the interval all the way through, given they started
	// watching it). This score may be predicted by a model, or calculated
	// from actual retention data.
	RetentionScore float64 `json:"retentionScore,omitempty"`

	// SaftDocument: A saft document generated from the anchor label.
	SaftDocument *NlpSaftDocument `json:"saftDocument,omitempty"`

	// TimedLabelFeatures: For annotating labels and their timing and
	// context info. For example, this is used for anchor labels within a
	// passage.
	TimedLabelFeatures []*VideoContentSearchCaptionLabelFeatures `json:"timedLabelFeatures,omitempty"`

	Timestamp []*VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp `json:"timestamp,omitempty"`

	// TitleAnchorBabelMatchScore: Babel similarity between the anchor and
	// the video title.
	TitleAnchorBabelMatchScore float64 `json:"titleAnchorBabelMatchScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorQbstDistance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorQbstDistance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorCommonFeatureSet) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorCommonFeatureSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchAnchorCommonFeatureSet) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchAnchorCommonFeatureSet
	var s1 struct {
		AnchorQbstDistance          gensupport.JSONFloat64 `json:"anchorQbstDistance"`
		BleurtScore                 gensupport.JSONFloat64 `json:"bleurtScore"`
		DescartesScoreWithTitle     gensupport.JSONFloat64 `json:"descartesScoreWithTitle"`
		DolphinDescriptivenessScore gensupport.JSONFloat64 `json:"dolphinDescriptivenessScore"`
		DolphinScore                gensupport.JSONFloat64 `json:"dolphinScore"`
		DolphinUsefulnessScore      gensupport.JSONFloat64 `json:"dolphinUsefulnessScore"`
		MumDescriptivenessScore     gensupport.JSONFloat64 `json:"mumDescriptivenessScore"`
		MumUsefulnessScore          gensupport.JSONFloat64 `json:"mumUsefulnessScore"`
		RetentionScore              gensupport.JSONFloat64 `json:"retentionScore"`
		TitleAnchorBabelMatchScore  gensupport.JSONFloat64 `json:"titleAnchorBabelMatchScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnchorQbstDistance = float64(s1.AnchorQbstDistance)
	s.BleurtScore = float64(s1.BleurtScore)
	s.DescartesScoreWithTitle = float64(s1.DescartesScoreWithTitle)
	s.DolphinDescriptivenessScore = float64(s1.DolphinDescriptivenessScore)
	s.DolphinScore = float64(s1.DolphinScore)
	s.DolphinUsefulnessScore = float64(s1.DolphinUsefulnessScore)
	s.MumDescriptivenessScore = float64(s1.MumDescriptivenessScore)
	s.MumUsefulnessScore = float64(s1.MumUsefulnessScore)
	s.RetentionScore = float64(s1.RetentionScore)
	s.TitleAnchorBabelMatchScore = float64(s1.TitleAnchorBabelMatchScore)
	return nil
}

// VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp: When an
// anchor label has a long duration (for example, labels that contain
// multiple sentences), this field stores the mapping between label
// segments and the start time.
type VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp struct {
	// AsrConfidence: The ASR confidence for the label span, if available.
	AsrConfidence float64 `json:"asrConfidence,omitempty"`

	// IsSentenceStart: Whether or not this token is the first token in a
	// sentence.
	IsSentenceStart bool `json:"isSentenceStart,omitempty"`

	// LabelBeginCharIndex: The character index range for the span. The end
	// index is exclusive.
	LabelBeginCharIndex int64 `json:"labelBeginCharIndex,omitempty,string"`

	LabelEndCharIndex int64 `json:"labelEndCharIndex,omitempty,string"`

	// TimeMs: The time of the span.
	TimeMs int64 `json:"timeMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AsrConfidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrConfidence") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp
	var s1 struct {
		AsrConfidence gensupport.JSONFloat64 `json:"asrConfidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AsrConfidence = float64(s1.AsrConfidence)
	return nil
}

// VideoContentSearchAnchorThumbnail: Properties of the thumbnail image
// to show for an anchor.
type VideoContentSearchAnchorThumbnail struct {
	// ImagesearchDocid: Serving docid for the thumbnail in the images-tbn
	// tables.
	ImagesearchDocid uint64 `json:"imagesearchDocid,omitempty,string"`

	// IsThumbnailMissing: Set to true when no thumbnail could be generated
	// for this anchor.
	IsThumbnailMissing bool `json:"isThumbnailMissing,omitempty"`

	// ServingMetadata: Metadata about the anchor thumbnail computed by
	// Amarna, including dimensions and the size in bytes.
	ServingMetadata *ImageBaseThumbnailMetadata `json:"servingMetadata,omitempty"`

	// ThumbnailInfo: Information about the thumbnail anchor.
	ThumbnailInfo *VideoContentSearchAnchorThumbnailInfo `json:"thumbnailInfo,omitempty"`

	// TimestampMs: Millisecond timestamp of the frame used for the
	// thumbnail.
	TimestampMs int64 `json:"timestampMs,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImagesearchDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImagesearchDocid") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchAnchorThumbnailInfo struct {
	// ColorEntropy: Entropy of the clustered color distribution.
	ColorEntropy float64 `json:"colorEntropy,omitempty"`

	// ImageData: Thumbnail image data for SafeSearch classification.
	ImageData *ImageData `json:"imageData,omitempty"`

	// IsUnsafe: Convenience field that consolidates signals for whether
	// this thumbnail is safe.
	IsUnsafe bool `json:"isUnsafe,omitempty"`

	// StarburstV4Embedding: 64d float vector of starburst v4 embedings.
	StarburstV4Embedding *DrishtiDenseFeatureData `json:"starburstV4Embedding,omitempty"`

	// ThumbnailBytes: The raw data for a thumbnail.
	ThumbnailBytes string `json:"thumbnailBytes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ColorEntropy") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ColorEntropy") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorThumbnailInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorThumbnailInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchAnchorThumbnailInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchAnchorThumbnailInfo
	var s1 struct {
		ColorEntropy gensupport.JSONFloat64 `json:"colorEntropy"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ColorEntropy = float64(s1.ColorEntropy)
	return nil
}

// VideoContentSearchAnchorsCommonFeatureSet: Contains anchor set level
// features that apply to all anchor types.
type VideoContentSearchAnchorsCommonFeatureSet struct {
	// DolphinDescriptivenessStats: A summary of the Dolphin descriptiveness
	// scores of the anchors in the set.
	DolphinDescriptivenessStats *VideoContentSearchMetricStats `json:"dolphinDescriptivenessStats,omitempty"`

	// DolphinUsefulnessStats: A summary of the Dolphin usefulness scores of
	// the anchors in the set.
	DolphinUsefulnessStats *VideoContentSearchMetricStats `json:"dolphinUsefulnessStats,omitempty"`

	// MumDescriptivenessStats: A summary of the MUM descriptiveness scores
	// of the anchors in the set.
	MumDescriptivenessStats *VideoContentSearchMetricStats `json:"mumDescriptivenessStats,omitempty"`

	// MumUsefulnessStats: A summary of the MUM usefulness scores of the
	// anchors in the set.
	MumUsefulnessStats *VideoContentSearchMetricStats `json:"mumUsefulnessStats,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DolphinDescriptivenessStats") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DolphinDescriptivenessStats") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorsCommonFeatureSet) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorsCommonFeatureSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchAnchorsThumbnailInfo struct {
	// HasMissingStarburst: Whether or not any of the anchor thumbnails have
	// missing Starburst embeddings.
	HasMissingStarburst bool `json:"hasMissingStarburst,omitempty"`

	// HasMissingThumbnails: Whether or not any of the anchors have missing
	// thumbnails.
	HasMissingThumbnails bool `json:"hasMissingThumbnails,omitempty"`

	// ThumbnailDiversity: A score representing how diverse a set of
	// thumbnails is. This is currently defined as one minus the median
	// pairwise cosine similarity between thumbnail Starburst embeddings.
	ThumbnailDiversity float64 `json:"thumbnailDiversity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HasMissingStarburst")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HasMissingStarburst") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAnchorsThumbnailInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAnchorsThumbnailInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchAnchorsThumbnailInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchAnchorsThumbnailInfo
	var s1 struct {
		ThumbnailDiversity gensupport.JSONFloat64 `json:"thumbnailDiversity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ThumbnailDiversity = float64(s1.ThumbnailDiversity)
	return nil
}

// VideoContentSearchAspect: Product aspect.
type VideoContentSearchAspect struct {
	// FallbackAspect: Product aspect to be used if non of the other aspects
	// exist.
	FallbackAspect string `json:"fallbackAspect,omitempty"`

	// SaftAspect: Product aspect produced by running SAFT annotation.
	SaftAspect string `json:"saftAspect,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FallbackAspect") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FallbackAspect") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAspect) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAspect
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchAsrCaption: Contains token-level information about
// ASR captions.
type VideoContentSearchAsrCaption struct {
	// Confidence: The confidence score of the token: between 0 and 1.
	Confidence float64 `json:"confidence,omitempty"`

	// DurationMs: The duration that the token is spoken for.
	DurationMs float64 `json:"durationMs,omitempty"`

	// StartTimeMs: The time in the video at which the token starts being
	// spoken.
	StartTimeMs int64 `json:"startTimeMs,omitempty"`

	// Text: The speech token.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchAsrCaption) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchAsrCaption
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchAsrCaption) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchAsrCaption
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		DurationMs gensupport.JSONFloat64 `json:"durationMs"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.DurationMs = float64(s1.DurationMs)
	return nil
}

// VideoContentSearchBleurtFeatures: Contains features needed for Bleurt
// inference.
type VideoContentSearchBleurtFeatures struct {
	Candidate string `json:"candidate,omitempty"`

	Reference string `json:"reference,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Candidate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Candidate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchBleurtFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchBleurtFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchCaptionEntityAnchorFeatures: Features and debug
// info for individual caption entity video anchors.
type VideoContentSearchCaptionEntityAnchorFeatures struct {
	// AsrMentionText: If the description anchor has been recognized as an
	// entity and that entity has also been mention in the ASR, this is the
	// mention text from the ASR.
	AsrMentionText string `json:"asrMentionText,omitempty"`

	// AsrMentionTranscriptOffset: The start index of the ASR entity mention
	// from the beginning of the ASR transcript. The index is included so
	// that individual mentions that share the same mid and time can be
	// distinguished which happens when an entity is mentioned multiple
	// times in an ASR sentence. Each mid/asr_mention_transcript_offset will
	// be unique.
	AsrMentionTranscriptOffset int64 `json:"asrMentionTranscriptOffset,omitempty"`

	// AsrSentence: The nearest ASR sentence.
	AsrSentence string `json:"asrSentence,omitempty"`

	// AsrStartTime: The begin time in ms of the ASR sentence.
	AsrStartTime int64 `json:"asrStartTime,omitempty"`

	// BertScores: The result of the BERT inference using the title, ASR
	// sentence and entity mention text.
	BertScores []float64 `json:"bertScores,omitempty"`

	// Broadness: A score to help determine how specific this entity is.
	Broadness float64 `json:"broadness,omitempty"`

	// DurationCoverage: The percentage of the video covered by the span of
	// the first mention to the last mention.
	DurationCoverage float64 `json:"durationCoverage,omitempty"`

	// EntityConnectedness: The webref connectedness score of the entity.
	EntityConnectedness float64 `json:"entityConnectedness,omitempty"`

	// EntityDescription: A short text describing the entity.
	EntityDescription string `json:"entityDescription,omitempty"`

	// EntityInfo: Information about how many documents the entity occurred
	// in and how many total mentions the entity has across the entire video
	// corpus.
	EntityInfo *VideoContentSearchCaptionEntityDocInfo `json:"entityInfo,omitempty"`

	// EntityMentionInDescription: Whether or not the entity mention text
	// appears in the description of the video.
	EntityMentionInDescription bool `json:"entityMentionInDescription,omitempty"`

	// EstimatedMentionTime: The estimated begin time in ms of the entity
	// mention using the text offset divided by the ASR duration.
	EstimatedMentionTime int64 `json:"estimatedMentionTime,omitempty"`

	// GroupCohesion: Average similarity between this anchor and other
	// anchors in the set.
	GroupCohesion float64 `json:"groupCohesion,omitempty"`

	// HypernymConfidence: The confidence of the hypernym used as the set
	// label.
	HypernymConfidence float64 `json:"hypernymConfidence,omitempty"`

	// HypernymCount: Number of hypernyms used for calculating similarity.
	HypernymCount float64 `json:"hypernymCount,omitempty"`

	// HyperpediaSalientTermsSimilarity: The cosine similarity between the
	// document salient terms and the hyperpedia hypernyms for a given
	// entity.
	HyperpediaSalientTermsSimilarity float64 `json:"hyperpediaSalientTermsSimilarity,omitempty"`

	// InWebrefEntities: Whether or not this entity is in the webref
	// entities.
	InWebrefEntities bool `json:"inWebrefEntities,omitempty"`

	// IsOracleEntity: True if the given entity appears as an Oracle
	// followup query.
	IsOracleEntity bool `json:"isOracleEntity,omitempty"`

	// IsProduct: Whether this entity counts as a 'product' for the purpose
	// of dividing entities between the 'related topics' and 'products in
	// this video' features.
	IsProduct bool `json:"isProduct,omitempty"`

	// MaxMentionConfidence: The maximum confidence of all of the entity
	// mentions in the transcript.
	MaxMentionConfidence float64 `json:"maxMentionConfidence,omitempty"`

	// MentionConfidence: The confidence that the ASR mention matches the
	// given mid.
	MentionConfidence float64 `json:"mentionConfidence,omitempty"`

	// Mentions: Number of times an entity is mentioned in the ASR
	// transcript.
	Mentions int64 `json:"mentions,omitempty"`

	// MsFromLastAnchor: The duration in ms between this anchor and the
	// previous anchor or the beginning of the video if this is the first
	// anchor.
	MsFromLastAnchor int64 `json:"msFromLastAnchor,omitempty"`

	// NextAsrSentence: The ASR sentence after asr_sentence or "" if it is
	// the last sentence.
	NextAsrSentence string `json:"nextAsrSentence,omitempty"`

	// OtherAsrMentionText: The ASR text of each mention of the entity.
	OtherAsrMentionText []string `json:"otherAsrMentionText,omitempty"`

	// OtherEstimatedMentionTimes: Each time the entity was mentioned.
	OtherEstimatedMentionTimes []int64 `json:"otherEstimatedMentionTimes,omitempty"`

	// PreviousAsrSentence: The ASR sentence before asr_sentence or "" if it
	// is the first sentence.
	PreviousAsrSentence string `json:"previousAsrSentence,omitempty"`

	// TrustedNameConfidence: The confidence that the ASR mention is a
	// trusted name.
	TrustedNameConfidence float64 `json:"trustedNameConfidence,omitempty"`

	// WebrefEntityTopicality: The webref entity topicality score if the
	// entity is a webref entity and 0 if not.
	WebrefEntityTopicality float64 `json:"webrefEntityTopicality,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AsrMentionText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrMentionText") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionEntityAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionEntityAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchCaptionEntityAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchCaptionEntityAnchorFeatures
	var s1 struct {
		Broadness                        gensupport.JSONFloat64 `json:"broadness"`
		DurationCoverage                 gensupport.JSONFloat64 `json:"durationCoverage"`
		EntityConnectedness              gensupport.JSONFloat64 `json:"entityConnectedness"`
		GroupCohesion                    gensupport.JSONFloat64 `json:"groupCohesion"`
		HypernymConfidence               gensupport.JSONFloat64 `json:"hypernymConfidence"`
		HypernymCount                    gensupport.JSONFloat64 `json:"hypernymCount"`
		HyperpediaSalientTermsSimilarity gensupport.JSONFloat64 `json:"hyperpediaSalientTermsSimilarity"`
		MaxMentionConfidence             gensupport.JSONFloat64 `json:"maxMentionConfidence"`
		MentionConfidence                gensupport.JSONFloat64 `json:"mentionConfidence"`
		TrustedNameConfidence            gensupport.JSONFloat64 `json:"trustedNameConfidence"`
		WebrefEntityTopicality           gensupport.JSONFloat64 `json:"webrefEntityTopicality"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Broadness = float64(s1.Broadness)
	s.DurationCoverage = float64(s1.DurationCoverage)
	s.EntityConnectedness = float64(s1.EntityConnectedness)
	s.GroupCohesion = float64(s1.GroupCohesion)
	s.HypernymConfidence = float64(s1.HypernymConfidence)
	s.HypernymCount = float64(s1.HypernymCount)
	s.HyperpediaSalientTermsSimilarity = float64(s1.HyperpediaSalientTermsSimilarity)
	s.MaxMentionConfidence = float64(s1.MaxMentionConfidence)
	s.MentionConfidence = float64(s1.MentionConfidence)
	s.TrustedNameConfidence = float64(s1.TrustedNameConfidence)
	s.WebrefEntityTopicality = float64(s1.WebrefEntityTopicality)
	return nil
}

// VideoContentSearchCaptionEntityAnchorSetFeatures: Features and debug
// info for clusters of caption entity video anchors.
type VideoContentSearchCaptionEntityAnchorSetFeatures struct {
	// AggregateScore: The total score used for filtering and selecting
	// entity sets.
	AggregateScore float64 `json:"aggregateScore,omitempty"`

	// ClusterSize: The prefiltered size of the entity set.
	ClusterSize int64 `json:"clusterSize,omitempty"`

	// EntitiesInWebrefEntities: The number of entities in the anchor set
	// that are in the webref entities.
	EntitiesInWebrefEntities int64 `json:"entitiesInWebrefEntities,omitempty"`

	// EntityMentionInDescriptionCount: The number of anchors where the
	// entity mention text appears in the description of the video.
	EntityMentionInDescriptionCount bool `json:"entityMentionInDescriptionCount,omitempty"`

	// GroupCohesion: The average cosine similarity between hypernyms of
	// members of the set.
	GroupCohesion float64 `json:"groupCohesion,omitempty"`

	// Hypernym: The most prominent hypernym across the entities in the set.
	Hypernym string `json:"hypernym,omitempty"`

	// HypernymSalience: The salience of the best hypernym for the set.
	HypernymSalience float64 `json:"hypernymSalience,omitempty"`

	// MedianMentions: Median number of times any member of the set was
	// mentioned in the ASR transcript.
	MedianMentions int64 `json:"medianMentions,omitempty"`

	// MentionSalience: Mentions divided by the total number of entity
	// mentions in the video.
	MentionSalience float64 `json:"mentionSalience,omitempty"`

	// Salience: Salience of the set computed by aggregating the hypernyms
	// from each member and calculating the cosine similarity with the
	// salient terms.
	Salience float64 `json:"salience,omitempty"`

	// TopHypernym: The top N hypernyms for the entities in the set.
	TopHypernym []string `json:"topHypernym,omitempty"`

	// TotalMentions: Number of times any member of the group was mentioned
	// in the ASR transcript.
	TotalMentions int64 `json:"totalMentions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregateScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregateScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionEntityAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionEntityAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchCaptionEntityAnchorSetFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchCaptionEntityAnchorSetFeatures
	var s1 struct {
		AggregateScore   gensupport.JSONFloat64 `json:"aggregateScore"`
		GroupCohesion    gensupport.JSONFloat64 `json:"groupCohesion"`
		HypernymSalience gensupport.JSONFloat64 `json:"hypernymSalience"`
		MentionSalience  gensupport.JSONFloat64 `json:"mentionSalience"`
		Salience         gensupport.JSONFloat64 `json:"salience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AggregateScore = float64(s1.AggregateScore)
	s.GroupCohesion = float64(s1.GroupCohesion)
	s.HypernymSalience = float64(s1.HypernymSalience)
	s.MentionSalience = float64(s1.MentionSalience)
	s.Salience = float64(s1.Salience)
	return nil
}

// VideoContentSearchCaptionEntityDocInfo: Contains information about
// document appearances of an entity.
type VideoContentSearchCaptionEntityDocInfo struct {
	// EntityDocCount: The number of documents where this entity was
	// mentioned at least once.
	EntityDocCount int64 `json:"entityDocCount,omitempty,string"`

	// EntityMentionCount: The number of times the entity was mentioned
	// across the entire corpus.
	EntityMentionCount int64 `json:"entityMentionCount,omitempty,string"`

	// Mid: The entity id.
	Mid string `json:"mid,omitempty"`

	// TotalDocCount: The number of documents in the corpus.
	TotalDocCount int64 `json:"totalDocCount,omitempty,string"`

	// TotalMentionCount: The number of mentions of any entity across the
	// entire corpus.
	TotalMentionCount int64 `json:"totalMentionCount,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EntityDocCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityDocCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionEntityDocInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionEntityDocInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchCaptionInfo: Contains transcript-level data about a
// video whether it comes from ASR or closed captions.
type VideoContentSearchCaptionInfo struct {
	AsrCaption []*VideoContentSearchAsrCaption `json:"asrCaption,omitempty"`

	SaftDocument *NlpSaftDocument `json:"saftDocument,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AsrCaption") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrCaption") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchCaptionLabelFeatures: Contains timing and text for
// a given label.
type VideoContentSearchCaptionLabelFeatures struct {
	// AlignedOcrTexts: OCR anchors with overlapping time-window with this
	// anchor
	AlignedOcrTexts []*VideoContentSearchOCRText `json:"alignedOcrTexts,omitempty"`

	// AlignedTime: The time stamp in milliseconds for the reference text
	// (e.g. description anchor time).
	AlignedTime int64 `json:"alignedTime,omitempty,string"`

	// ContextText: Text around the aligned_time of a long duration, say
	// [-15 minutes, +15 minutes]
	ContextText string `json:"contextText,omitempty"`

	// LabelText: The main label text for the feature.
	LabelText string `json:"labelText,omitempty"`

	// TextSimilarityFeatures: Identified matching text by similarity.
	TextSimilarityFeatures *VideoContentSearchTextSimilarityFeatures `json:"textSimilarityFeatures,omitempty"`

	// TextSpanAtAlignedTime: The text span in the passage starting from the
	// aligned time.
	TextSpanAtAlignedTime string `json:"textSpanAtAlignedTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AlignedOcrTexts") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AlignedOcrTexts") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionLabelFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionLabelFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchCaptionSpanAnchorFeatures struct {
	// DolphinFeatures: The features used to construct the inference
	// example.
	DolphinFeatures *VideoContentSearchSpanDolphinFeatures `json:"dolphinFeatures,omitempty"`

	// DolphinScores: The inference result from the Dolphin span model.
	DolphinScores *VideoContentSearchSpanDolphinScores `json:"dolphinScores,omitempty"`

	// EmbeddingDistance: Embedding distances (e.g. cosine distance) to the
	// other anchors of the same video.
	EmbeddingDistance []float64 `json:"embeddingDistance,omitempty"`

	// PostGapInMs: Time gap in ms to the next anchor. Always positive
	// number.
	PostGapInMs int64 `json:"postGapInMs,omitempty"`

	// PreGapInMs: Time gap in ms to the previous anchor. Always a positive
	// number.
	PreGapInMs int64 `json:"preGapInMs,omitempty"`

	// SaftBeginTokenIndex: The range of tokens in video_info.saft_doc for
	// the anchor label.
	SaftBeginTokenIndex int64 `json:"saftBeginTokenIndex,omitempty"`

	SaftEndTokenIndex int64 `json:"saftEndTokenIndex,omitempty"`

	SaftTranscriptEndCharOffset int64 `json:"saftTranscriptEndCharOffset,omitempty"`

	// SaftTranscriptStartCharOffset: The range of characters in
	// video_info.saft_transcript for the anchor label.
	SaftTranscriptStartCharOffset int64 `json:"saftTranscriptStartCharOffset,omitempty"`

	// SpanAsrConfidenceStats: A summary of the ASR confidence for the
	// selected candidate.
	SpanAsrConfidenceStats *VideoContentSearchMetricStats `json:"spanAsrConfidenceStats,omitempty"`

	// SpanDolphinScore: A summary of the Dolphin span token scores for the
	// selected candidate.
	SpanDolphinScore *VideoContentSearchMetricStats `json:"spanDolphinScore,omitempty"`

	// WordCount: Word count of the span text, tokenized with SAFT.
	WordCount int64 `json:"wordCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DolphinFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DolphinFeatures") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionSpanAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionSpanAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchCaptionSpanAnchorSetFeatures struct {
	// AnchorSetDolphinScoreStats: A summary of the dolphin scores over the
	// anchor set.
	AnchorSetDolphinScoreStats *VideoContentSearchMetricStats `json:"anchorSetDolphinScoreStats,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnchorSetDolphinScoreStats") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AnchorSetDolphinScoreStats") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCaptionSpanAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCaptionSpanAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchCommentAnchorSetFeatures: A message containing
// set-level comment anchor features. Next ID: 3
type VideoContentSearchCommentAnchorSetFeatures struct {
	Replies []*VideoContentSearchCommentAnchorSetFeaturesComment `json:"replies,omitempty"`

	RootComment *VideoContentSearchCommentAnchorSetFeaturesComment `json:"rootComment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Replies") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Replies") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCommentAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCommentAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchCommentAnchorSetFeaturesComment: A structure that
// represents a comment. Fields 1 through 6 are designed to store
// responses from the 3P YouTube Data API (see
// https://developers.google.com/youtube/v3/docs/comments). Field 7 is
// used to store the Google-internal representation of the comment; if
// it is populated, then all other fields may be empty. Next ID: 8
type VideoContentSearchCommentAnchorSetFeaturesComment struct {
	// CommentId: The ID that YouTube uses to uniquely identify the comment.
	CommentId string `json:"commentId,omitempty"`

	// LikeCount: The total number of likes (positive ratings) the comment
	// has received.
	LikeCount int64 `json:"likeCount,omitempty"`

	// MiniStanza: The MiniStanza object that represents the comment. If
	// populated, all other fields in this message may be empty.
	MiniStanza *YoutubeCommentsClusteringMiniStanza `json:"miniStanza,omitempty"`

	// PublishedAt: The date and time when the comment was orignally
	// published, specified in ISO 8601 format.
	PublishedAt string `json:"publishedAt,omitempty"`

	// TextDisplay: The comment's text, in HTML.
	TextDisplay string `json:"textDisplay,omitempty"`

	// TextOriginal: The original, raw text of the comment.
	TextOriginal string `json:"textOriginal,omitempty"`

	// UpdatedAt: The date and time when the comment was last updated,
	// specified in ISO 8601 format.
	UpdatedAt string `json:"updatedAt,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommentId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommentId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchCommentAnchorSetFeaturesComment) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchCommentAnchorSetFeaturesComment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchDescriptionAnchorFeatures struct {
	// EntityTextCoverage: When the description anchor text has been
	// recognized as an entity, how much of the description anchor text is
	// covered by the entity mention.
	EntityTextCoverage float64 `json:"entityTextCoverage,omitempty"`

	// InAsr: Whether or not a mention of the description anchor exists in
	// the ASR.
	InAsr bool `json:"inAsr,omitempty"`

	// IsDescriptionAnchor: Whether or not the anchor was created from the
	// description for use in training data. This will be set to true for
	// positive examples and false for negative examples.
	IsDescriptionAnchor bool `json:"isDescriptionAnchor,omitempty"`

	// SpanToAsrTime: The distance from the ASR sentence to the description
	// anchor time in ms.
	SpanToAsrTime int64 `json:"spanToAsrTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityTextCoverage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityTextCoverage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDescriptionAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDescriptionAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchDescriptionAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchDescriptionAnchorFeatures
	var s1 struct {
		EntityTextCoverage gensupport.JSONFloat64 `json:"entityTextCoverage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EntityTextCoverage = float64(s1.EntityTextCoverage)
	return nil
}

type VideoContentSearchDescriptionAnchorSetFeatures struct {
	// AsrAnchorCount: The number of description anchors that were matched
	// to captions in the ASR.
	AsrAnchorCount int64 `json:"asrAnchorCount,omitempty"`

	// AsrAnchorFraction: The fraction of anchors that were matched to
	// captions in the ASR.
	AsrAnchorFraction float64 `json:"asrAnchorFraction,omitempty"`

	// UniqueAsrMidCount: The number of unique mids which where matched to
	// description anchors.
	UniqueAsrMidCount int64 `json:"uniqueAsrMidCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AsrAnchorCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrAnchorCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDescriptionAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDescriptionAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchDescriptionAnchorSetFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchDescriptionAnchorSetFeatures
	var s1 struct {
		AsrAnchorFraction gensupport.JSONFloat64 `json:"asrAnchorFraction"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AsrAnchorFraction = float64(s1.AsrAnchorFraction)
	return nil
}

// VideoContentSearchDescriptionSpanInfo: Metadata about the span when
// the anchor source is description span.
type VideoContentSearchDescriptionSpanInfo struct {
	// ContextTokenCount: The number of tokens in the context (sentence)
	// where the description span is extracted from.
	ContextTokenCount int64 `json:"contextTokenCount,omitempty"`

	// DolphinScores: The inference result from the Dolphin span model if
	// the anchor's source is description span.
	DolphinScores *VideoContentSearchSpanDolphinScores `json:"dolphinScores,omitempty"`

	// SpanDolphinScoreStats: A summary of the Dolphin span token scores for
	// the selected candidate. Currently, dolphin_scores in
	// DescriptionSpanInfo would only contain a single span candidate so
	// this field is essentially the copy of the score_stats for that span
	// candidate.
	SpanDolphinScoreStats *VideoContentSearchMetricStats `json:"spanDolphinScoreStats,omitempty"`

	// SpanTokenCount: The number of tokens in the description span. The
	// description span is formed from non-contiguous segment spans of a
	// sentence (context), where each segment span's score satifsies the min
	// span thresholds.
	SpanTokenCount int64 `json:"spanTokenCount,omitempty"`

	// SpanTokenCountRatio: The ratio of span_token_count /
	// context_token_count.
	SpanTokenCountRatio float64 `json:"spanTokenCountRatio,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ContextTokenCount")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ContextTokenCount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDescriptionSpanInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDescriptionSpanInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchDescriptionSpanInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchDescriptionSpanInfo
	var s1 struct {
		SpanTokenCountRatio gensupport.JSONFloat64 `json:"spanTokenCountRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SpanTokenCountRatio = float64(s1.SpanTokenCountRatio)
	return nil
}

// VideoContentSearchDolphinEnsembleScore: Contains information about
// the scores from each individual dolphin ensemble model.
type VideoContentSearchDolphinEnsembleScore struct {
	// DolphinScore: The score generated by the Dolphin callout model.
	DolphinScore float64 `json:"dolphinScore,omitempty"`

	ModelName string `json:"modelName,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DolphinScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DolphinScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDolphinEnsembleScore) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDolphinEnsembleScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchDolphinEnsembleScore) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchDolphinEnsembleScore
	var s1 struct {
		DolphinScore gensupport.JSONFloat64 `json:"dolphinScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DolphinScore = float64(s1.DolphinScore)
	return nil
}

type VideoContentSearchDolphinFeatures struct {
	// AltQuery: The alt query used for building the Dolphin example.
	AltQuery string `json:"altQuery,omitempty"`

	// Answer: The answer used for building the Dolphin example.
	Answer string `json:"answer,omitempty"`

	// Query: The query used for building the Dolphin example.
	Query string `json:"query,omitempty"`

	// TimeMs: The time stamp of the video anchor in milliseconds.
	TimeMs int64 `json:"timeMs,omitempty,string"`

	// Title: The title used for building the Dolphin example.
	Title string `json:"title,omitempty"`

	// Url: The url of the video.
	Url string `json:"url,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AltQuery") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AltQuery") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDolphinFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDolphinFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchDolphinScoringConfig struct {
	// DescriptivenessOutputKey: The output put keys for Dolphin
	// PredictResponse
	DescriptivenessOutputKey string `json:"descriptivenessOutputKey,omitempty"`

	// EnsembleModelNames: If the dolphin model is an ensemble model (e.g.
	// Video QnA model which consists of 4 teacher models), stores each
	// individual model name.
	EnsembleModelNames []string `json:"ensembleModelNames,omitempty"`

	// InferenceBatchSize: The inference batch size to use for inference
	// methods that handle batching.
	InferenceBatchSize int64 `json:"inferenceBatchSize,omitempty"`

	// InferenceMethod: The method to use for inference. This must be set or
	// inference will fail.
	//
	// Possible values:
	//   "NONE"
	//   "RPC" - Use a remote model server (for example, TPU server) to run
	// inference. If this mode is used, service_bns should be set.
	//   "IN_PROCESS" - Run inference in the flume workers. If this is used,
	// model_path should be set.
	InferenceMethod string `json:"inferenceMethod,omitempty"`

	// MaxRpcRetries: Holds value of flag --max_rpc_retries.
	MaxRpcRetries int64 `json:"maxRpcRetries,omitempty"`

	// ModelName: Model name used for ModelSpec in PredictRequest used in
	// the PredictionService API.
	ModelName string `json:"modelName,omitempty"`

	// ModelPath: Only used when using the bulk_inference API. See
	// go/dolphin-models to learn about the different dolphin models.
	ModelPath string `json:"modelPath,omitempty"`

	// OutputKey: TODO(alexiaxu) To deprecate this field in the future
	// Output key for Dolphin PredictResponse.
	OutputKey string `json:"outputKey,omitempty"`

	// RpcDeadlineSeconds: Holds value of flag --rpc_deadline (converted to
	// seconds).
	RpcDeadlineSeconds float64 `json:"rpcDeadlineSeconds,omitempty"`

	// ServiceBns: Tensorflow inference BNS address when using
	// PredictionService API.
	ServiceBns string `json:"serviceBns,omitempty"`

	UsefulnessOutputKey string `json:"usefulnessOutputKey,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DescriptivenessOutputKey") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DescriptivenessOutputKey")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchDolphinScoringConfig) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchDolphinScoringConfig
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchDolphinScoringConfig) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchDolphinScoringConfig
	var s1 struct {
		RpcDeadlineSeconds gensupport.JSONFloat64 `json:"rpcDeadlineSeconds"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RpcDeadlineSeconds = float64(s1.RpcDeadlineSeconds)
	return nil
}

// VideoContentSearchEntityAnnotations: Entity annotations for one of
// the mids representing an anchor label or a query text.
type VideoContentSearchEntityAnnotations struct {
	// Category: The Webref category that this entity belongs to e.g.
	// "/moka/software".
	Category string `json:"category,omitempty"`

	// Confidence: The overall confidence that this entity is annotated
	// somewhere in the label.
	Confidence float64 `json:"confidence,omitempty"`

	// IsRestricted: Whether or not this entity belongs to a set of
	// blocklisted categories.
	IsRestricted bool `json:"isRestricted,omitempty"`

	// Mid: The Webref entity mid.
	Mid string `json:"mid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Category") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Category") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchEntityAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchEntityAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchEntityAnnotations) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchEntityAnnotations
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

type VideoContentSearchEntityGroupInfo struct {
	// CollectionId: Collection id.
	CollectionId string `json:"collectionId,omitempty"`

	// Label: Label for this anchor group.
	Label string `json:"label,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CollectionId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CollectionId") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchEntityGroupInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchEntityGroupInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchFrameSimilarityInterval: Frame-level similarities
// info for each topic for an interval of frames.
type VideoContentSearchFrameSimilarityInterval struct {
	// FrameSimilarity: The similarity between this topic and starburst
	// features for frames in [frames[frame_level_starburst_start_index],
	// frames[frame_level_starburst_start_index + len(frame_similarity)].
	FrameSimilarity []float64 `json:"frameSimilarity,omitempty"`

	// FramesEndTimestampMs: Timestamp in milliseconds for the last frame in
	// this frame interval.
	FramesEndTimestampMs int64 `json:"framesEndTimestampMs,omitempty,string"`

	// FramesStarburstStartIndex: The index of the first frame within this
	// interval of similar frames.
	// VideoMultimodalTopicFeatures.frame_starburst_data.
	FramesStarburstStartIndex int64 `json:"framesStarburstStartIndex,omitempty"`

	// FramesStartTimestampMs: Timestamp in milliseconds for the first frame
	// in this frame interval.
	FramesStartTimestampMs int64 `json:"framesStartTimestampMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "FrameSimilarity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameSimilarity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchFrameSimilarityInterval) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchFrameSimilarityInterval
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchFrameStarburstData: Starburst frame-level dense
// data.
type VideoContentSearchFrameStarburstData struct {
	// DenseVector: Raw float feature vector of the starburst
	// representation.
	DenseVector []float64 `json:"denseVector,omitempty"`

	// SbVersion: Starburst version. Possible values are: STARBURST_TEXT_V4
	// STARBURST_TEXT_V4_5 STARBURST_TEXT_V4_PLC STARBURST_TEXT_V5
	//
	// Possible values:
	//   "SIGNAL_VERSION_UNSPECIFIED" - UNSPECIFIED case for default value
	// 0.
	//   "RAID_V1" - Raid versions.
	//   "RAID_V2"
	//   "RAID_V2_2"
	//   "RAID_V2_NEST" - Trained on RAID + Nest combined data, which
	// improved detector performance on surveillance video frames.
	//   "RAID_V3"
	//   "RAID_FOREGROUND_SEGMENTER_V1"
	//   "RAID_FOREGROUND_SEGMENTER_V2"
	//   "RAID_PRODUCT_SEGMENTER_V1"
	//   "RAID_PRODUCT_SEGMENTER_V2"
	//   "BARCODE_V1" - Barcode versions.
	//   "BARCODE_V2"
	//   "BARCODE_V3"
	//   "LOGO_DEEPLOGO" - Logo versions.
	//   "LOGO_V1" - DeepLogo
	//   "LOGO_V2" - LogoMNet V1
	//   "LOGO_V2_PLUS" - LogoMNet V1 model with V2 index.
	//   "LOGO_MNET_V2" - LogoMNet V2
	//   "LOGO_MNET_V2_HATE_SYMBOLS" - LogoMNet V2 with hate symbol
	// recognition.
	//   "ICA_HNET" - ICA versions.
	//   "ICA_INET"
	//   "ICA_KNET"
	//   "ICA_LNET"
	//   "ICA_OIDV6_GNET"
	//   "ICA_ONET"
	//   "ICA_PNET"
	//   "ICA_PNET_SENSITIVE"
	//   "ICA_RNET"
	//   "NIMA_VQ_V1" - Nima versions.
	//   "NIMA_AVA_V1"
	//   "NIMA_VQ_V2"
	//   "NIMA_AVA_V2"
	//   "ATT_GMAIL" - Attachment icon versions.
	//   "ATT_MS"
	//   "IM2SHOP_LOCAL_V1" - Im2Shop local feature versions.
	//   "IM2SHOP_LOCAL_V2"
	//   "NIMBY_RAW_V0" - NIMBY versions. The original version of the NIMBY
	// raw feature from Q3 2019.
	//   "NIMBY_RAW_V1" - "Mobile NIMBY": A lightweight NIMBY model that
	// take grayscale inputs. The output dimension is the same as NIMBY_V0,
	// but the embeddings are different. Significant latency wins over
	// NIMBY_V0 and also some quality wins.
	//   "NIMBY_TOKENIZER_V0" - The original version of NIMBY Tokens from Q3
	// 2019.
	//   "NIMBY_TOKENIZER_V1" - "Mobile NIMBY Tokens": A lightweight NIMBY
	// model that take grayscale inputs. The output dimension is the same as
	// NIMBY_V0, but the embeddings are different. Significant latency wins
	// over NIMBY_V0 and also some quality wins.
	//   "IM2QUERY_LABELED_PRODUCTS_V1" - Im2Query labeled products
	// versions.
	//   "IM2QUERY_LABELED_PRODUCTS_V2"
	//   "PLACE_EMB_V1" - Place embedding versions.
	//   "PLACE_EMB_V2"
	//   "STARBURST_V3" - Starburst versions. LINT.IfChange
	//   "STARBURST_V4"
	//   "STARBURST_V4_01" - Starburstv4 with stretch resize.
	//   "STARBURST_VISUAL_V4"
	//   "STARBURST_V5"
	//   "STARBURST_V5_5" -
	// LINT.ThenChange(//depot/google3/image/content/proto/image_content.prot
	// o)
	//   "ATTRIBUTE_EMBEDDING_V1" - Attribute embedding versions.
	//   "PHOTOCAT_V1" - PhotoCat versions. The photocat v1 signal is based
	// on the photocat qic v1 model trained from the Starburst v3 embeddings
	// and the ICA labels.
	//   "PHOTOCAT_V3" - The photocat v3 signal is based on the photocat qic
	// v3 model trained from the Starburst v4.5 embeddings.
	//   "PHOTOCAT_V4" - The photocat v4 signal is based on the photocat qic
	// v4 model trained from the Starburst v5 embeddings.
	//   "PHOTOCAT_V5" - The photocat v5 signal is based on the photocat qic
	// v5 model trained from the Starburst v5.5 embeddings.
	//   "STARBURST_TEXT_V4" - Starburst text co-embedding versions.
	//   "STARBURST_TEXT_V4_5"
	//   "STARBURST_TEXT_V4_PLC"
	//   "STARBURST_TEXT_V5"
	//   "STARBURST_TEXT_V5_PLC"
	//   "COLLAGE_V1" - Image collage model versions.
	//   "SHOPPING_COLOR_INFO_V1_V2" - ColorInfo versions
	//   "SHOPPING_COLOR_INFO_V3" - When both
	// SHOPPING_COLOR_INFO_V3_WITHOUT_PER_DOMAIN_OUTPUTS and
	// SHOPPING_COLOR_INFO_V3 are in the request, SHOPPING_COLOR_INFO_V3's
	// response is returned.
	//   "SHOPPING_COLOR_INFO_V3_WITHOUT_PER_DOMAIN_OUTPUTS"
	//   "SHOPPING_COLOR_SAMPLING_V1"
	//   "FOODNET_WIC_V1" - FoodNet whole image classifier versions.
	//   "FOODNET_WIC_V2"
	//   "SINGLE_IMAGE_HOLISTIC_STABLE" - Single Image Holistic versions.
	//   "SINGLE_IMAGE_HOLISTIC_EXP"
	//   "MOKA_ATTRIBUTES_V1" - Moka attributes.
	//   "MOKA_ATTRIBUTES_V1_1"
	//   "MOKA_ATTRIBUTES_V1_2"
	//   "MOKA_ATTRIBUTES_V2"
	//   "GNN_OCR_EMB_V1" - GNN OCR embedding.
	//   "AKSARA_RPN_LAYOUT" - OCR Page layout analysis versions.
	//   "GCN_LAYOUT"
	//   "FACE_DETECTION_V1" - Face Detection versions. These versions are
	// only used with module_wanted: "face_detection", with the intent of
	// deprecating module_wanted: "face_detection_nextgen". When using
	// FACE_DETECTION_V1, models with and without landmarks are specified by
	// setting the "Source" value in
	// VisualSearchRequestContext.face_detection_options to either FACESSD
	// or FACESSD_LANDMARKLESS. Going forward, all new versions of face
	// detectors will use the following enums to indicate whether the model
	// produces landmarks, with a version numbering specifying how recent
	// that model is. E.g. FACE_DETECTION_V3 will use a newer face detection
	// model than FACE_DETECTION_V2, while FACE_DETECTION_LANDMARKLESS_V3
	// will use a newer landmarkless face detection model than
	// FACE_DETECTION_LANDMARKLESS_V2.
	//   "FACE_DETECTION_LANDMARKLESS_V2"
	//   "FACE_DETECTION_V2"
	//   "PRODUCT_POSE_SHOE_V1" - Pursuit product pose versions.
	//   "GOCR_LATEST" - GOCR versions.
	//   "GOCR_STABLE"
	//   "PAGEBURST_V1" - Pageburst versions.
	//   "PAGEBURST_V2"
	//   "ADSBURST_V09" - Adsburst versions.
	//   "ADSBURST_COMP_V09"
	//   "ADSBURST_V1_COMP"
	//   "ADSBURST_V1_CONCAT"
	//   "ADSBURST_BASIC_COAT4_V0"
	//   "ADSBURST_HUBBLE_V1_COMP"
	//   "ADSBURST_HUBBLE_V1_CONCAT"
	//   "ADSBURST_DISCOVERY_UNCOMFORTABLE_V1"
	//   "ADSBURST_DISCOVERY_NERV_SUBS_V1"
	//   "ADSBURST_BASIC_TEXT_TOWER_V0"
	//   "SHOPPING_IMAGE_TRANSFORMATION_UNCROP" - Shopping image
	// transformation versions.
	//   "SHOPPING_IMAGE_TRANSFORMATION_V2"
	//   "SCREENAI_V1" - ScreenAI versions. IconNet.
	//   "SCREENAI_V2" - IconNet, any image size.
	//   "SCREENAI_V2_MOBILE" - IconNet, mobile image size.
	//   "SCREENAI_CLASSIFIER_V1" - ScreenAI classifier versions.
	//   "PERSONNET_V4" - PersonNet versions.
	//   "PERSONNET_V5"
	//   "DEEP_IMAGE_ENGAGINGNESS_V1" - Deep image engagingness versions.
	SbVersion string `json:"sbVersion,omitempty"`

	// TimestampMs: Timestamp in milliseconds for this frame.
	TimestampMs int64 `json:"timestampMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "DenseVector") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DenseVector") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchFrameStarburstData) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchFrameStarburstData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchGenerativePredictionFeatures struct {
	// Passage: Features for inferences from generative models.
	Passage string `json:"passage,omitempty"`

	// Predictions: Inference results.
	Predictions []string `json:"predictions,omitempty"`

	Target string `json:"target,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Passage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Passage") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchGenerativePredictionFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchGenerativePredictionFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchGenerativeTopicPredictionFeatures: The inference
// result features coming from the prediction service that generates the
// topics.
type VideoContentSearchGenerativeTopicPredictionFeatures struct {
	// GroundTruthTopic: This field is present if we already have a ground
	// truth topic from the training data.
	GroundTruthTopic string `json:"groundTruthTopic,omitempty"`

	// ModelName: The name of the model where the predictions come from.
	ModelName string `json:"modelName,omitempty"`

	// Predictions: Inference results from the prediction service. Since we
	// generally use beam search with beam_size > 1, this field is repeated
	// to capture all the generated topic beams.
	Predictions []string `json:"predictions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "GroundTruthTopic") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GroundTruthTopic") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchGenerativeTopicPredictionFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchGenerativeTopicPredictionFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchInstructionAnchorFeatures: Anchor-level Metadata
// about Instruction anchors. TODO(keyvana) Update this proto.
type VideoContentSearchInstructionAnchorFeatures struct {
}

// VideoContentSearchInstructionTrainingDataAnchorFeatures: Anchor-level
// metadata about the instruction anchors. Each instruction passage
// anchor can contain multiple instruction steps and multiple
// description anchors and thus the following fields are defined as
// repeated.
type VideoContentSearchInstructionTrainingDataAnchorFeatures struct {
	// BestAsrAndDescriptionAnchorsMatchInfo: The match info about the
	// description anchor matches with the ASR n-grams in the instruction
	// passage. Each element represents the best match between a given
	// description anchor and all qualified n-grams within the passage.
	BestAsrAndDescriptionAnchorsMatchInfo []*VideoContentSearchSimilarityMatchInfo `json:"bestAsrAndDescriptionAnchorsMatchInfo,omitempty"`

	// BestDescriptionAndInstructionAnchorsMatchInfo: The match info about
	// the description anchor matches with the instruction anchors in a
	// instruction passage. Each element represents the best match between a
	// given description anchor and all the instruction anchors in the
	// passage.
	BestDescriptionAndInstructionAnchorsMatchInfo []*VideoContentSearchSimilarityMatchInfo `json:"bestDescriptionAndInstructionAnchorsMatchInfo,omitempty"`

	// InstructionAnchorsMatchInfo: The match info about the instruction
	// steps matches with the ASR. Each instruction step corresponds to a
	// step extracted from a web doc. Each instruction passage can contain
	// multiple instruction step matches thus the repeated field.
	InstructionAnchorsMatchInfo []*VideoContentSearchSimilarityMatchInfo `json:"instructionAnchorsMatchInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "BestAsrAndDescriptionAnchorsMatchInfo") to unconditionally include
	// in API requests. By default, fields with empty or default values are
	// omitted from API requests. However, any non-pointer, non-interface
	// field appearing in ForceSendFields will be sent to the server
	// regardless of whether the field is empty or not. This may be used to
	// include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "BestAsrAndDescriptionAnchorsMatchInfo") to include in API requests
	// with the JSON null value. By default, fields with empty values are
	// omitted from API requests. However, any field with an empty value
	// appearing in NullFields will be sent to the server as null. It is an
	// error if a field in this list has a non-empty value. This may be used
	// to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchInstructionTrainingDataAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchInstructionTrainingDataAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchListAnchorFeatures: Anchor-level Metadata about
// list description anchors.
type VideoContentSearchListAnchorFeatures struct {
	// BabelMatch: The babel match info of the list anchor with its matched
	// ASR text.
	BabelMatch *VideoContentSearchTextMatchInfo `json:"babelMatch,omitempty"`

	// DescriptionSpanInfo: The description span metadata about list anchor
	// when the anchor source is DESCRIPTION_SPANS.
	DescriptionSpanInfo *VideoContentSearchDescriptionSpanInfo `json:"descriptionSpanInfo,omitempty"`

	// ListItemIndex: The list item index of this anchor in the video
	// description.
	ListItemIndex int64 `json:"listItemIndex,omitempty"`

	// MatchScores: The metadata about this list item's matches with
	// different ASR snippets. This is currently used in the base model
	// (DTW) to generate candidate anchors.
	MatchScores []*VideoContentSearchMatchScores `json:"matchScores,omitempty"`

	// PretriggerScore: The score from the pretrigger model.
	PretriggerScore float64 `json:"pretriggerScore,omitempty"`

	// TitleAnchorBabelMatchScore: Babel similarity between the anchor and
	// the video title.
	TitleAnchorBabelMatchScore float64 `json:"titleAnchorBabelMatchScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BabelMatch") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BabelMatch") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchListAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchListAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchListAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchListAnchorFeatures
	var s1 struct {
		PretriggerScore            gensupport.JSONFloat64 `json:"pretriggerScore"`
		TitleAnchorBabelMatchScore gensupport.JSONFloat64 `json:"titleAnchorBabelMatchScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PretriggerScore = float64(s1.PretriggerScore)
	s.TitleAnchorBabelMatchScore = float64(s1.TitleAnchorBabelMatchScore)
	return nil
}

// VideoContentSearchListAnchorSetFeatures: Cluster-level Metadata about
// list anchors. Next id: 15.
type VideoContentSearchListAnchorSetFeatures struct {
	// AggregatedSpanText: The following fields are used for description
	// span anchors, The aggregated span token texts over all the span
	// candidates of the anchor set.
	AggregatedSpanText string `json:"aggregatedSpanText,omitempty"`

	// AnchorSetSpanScoreStats: A summary of the span scores over the anchor
	// set. This summary is calculated over the aggregation of the
	// individual token spans belonging to the span candidates of anchors.
	AnchorSetSpanScoreStats *VideoContentSearchMetricStats `json:"anchorSetSpanScoreStats,omitempty"`

	// BabelMatchScoreStats: Median, average and standard deviation of
	// babel_match_score among anchors in the same VideoAnchors cluster.
	BabelMatchScoreStats *VideoContentSearchMetricStats `json:"babelMatchScoreStats,omitempty"`

	// ContextTokenCountStats: A summary of the context token counts over
	// the anchor set.
	ContextTokenCountStats *VideoContentSearchMetricStats `json:"contextTokenCountStats,omitempty"`

	// DurationSpanRatio: The ratio of anchors timespan duration over the
	// total duration of the video. Anchors timespan duration is defined as
	// the time span from the first anchor to the last anchor in
	// VideoAnchors.
	DurationSpanRatio float64 `json:"durationSpanRatio,omitempty"`

	// DurationToPredictedTimeMsStats: Median, average and standard
	// deviation of duration_to_predicted_time_ms among anchors in the same
	// VideoAnchors cluster.
	DurationToPredictedTimeMsStats *VideoContentSearchMetricStats `json:"durationToPredictedTimeMsStats,omitempty"`

	// ListAnchorSource: The source of anchors extracted from the video
	// descriptions.
	//
	// Possible values:
	//   "UNKNOWN_SOURCE"
	//   "ORDERED_LIST_PARSER" - Anchors that are generated from ordered
	// list parser of webanswers.
	//   "DESCRIPTION_SPANS" - Anchors that are generated from applying the
	// span model to the video description.
	//   "STEPS_PARSER" - Anchors that are generated from the steps parser
	// that extracts certain template list patterns for a video description.
	//   "DESCRIPTION_LIST_EXTRACTION" - Anchors generated by extracting
	// ordered list elements from video description.
	ListAnchorSource string `json:"listAnchorSource,omitempty"`

	// ListDescriptionItemsSize: The total number of list items mentioned in
	// the video description. Not all these list items are necessarily found
	// as list anchors.
	ListDescriptionItemsSize int64 `json:"listDescriptionItemsSize,omitempty"`

	// MatchedListDescriptionAnchorsRatio: The number of matched anchors in
	// the list anchors over the total number of post-filtering list items
	// in the video description, i.e. matched_list_description_anchors_ratio
	// = matched_list_description_anchors_size /
	// post_filtering_list_description_items_size.
	MatchedListDescriptionAnchorsRatio float64 `json:"matchedListDescriptionAnchorsRatio,omitempty"`

	// MatchedListDescriptionAnchorsSize: The number of matched list anchors
	// found in the ASR. The matched list anchors are a subset of the
	// post-filtering list items in the video description, and as such
	// matched_list_description_anchors_size <=
	// post_filtering_list_description_items_size.
	MatchedListDescriptionAnchorsSize int64 `json:"matchedListDescriptionAnchorsSize,omitempty"`

	// PostFilteringListDescriptionItemsSize: The total number of list items
	// in the video description that are actually considered for matching.
	// This is a subset of list items in the video description that passed
	// filterings such as language filtering, i.e.
	// post_filtering_list_description_items_size <=
	// list_description_items_size
	PostFilteringListDescriptionItemsSize int64 `json:"postFilteringListDescriptionItemsSize,omitempty"`

	// PretriggerScoreStats: Median, average and standard deviation of
	// pretrigger_score among anchors in the same cluster.
	PretriggerScoreStats *VideoContentSearchMetricStats `json:"pretriggerScoreStats,omitempty"`

	// SpanTokenCountRatioStats: A summary of the span token count ratios
	// over the anchor set.
	SpanTokenCountRatioStats *VideoContentSearchMetricStats `json:"spanTokenCountRatioStats,omitempty"`

	// SpanTokenCountStats: A summary of the span token counts over the
	// anchor set.
	SpanTokenCountStats *VideoContentSearchMetricStats `json:"spanTokenCountStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AggregatedSpanText")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AggregatedSpanText") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchListAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchListAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchListAnchorSetFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchListAnchorSetFeatures
	var s1 struct {
		DurationSpanRatio                  gensupport.JSONFloat64 `json:"durationSpanRatio"`
		MatchedListDescriptionAnchorsRatio gensupport.JSONFloat64 `json:"matchedListDescriptionAnchorsRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DurationSpanRatio = float64(s1.DurationSpanRatio)
	s.MatchedListDescriptionAnchorsRatio = float64(s1.MatchedListDescriptionAnchorsRatio)
	return nil
}

// VideoContentSearchListTrainingDataAnchorFeatures: Anchor-level
// metadata about the description anchors used as list items to build
// training data for list anchors.
type VideoContentSearchListTrainingDataAnchorFeatures struct {
	// DescriptionAnchorTimeMs: The timestamp of when the description anchor
	// is annotated to appear in the video in ms.
	DescriptionAnchorTimeMs int64 `json:"descriptionAnchorTimeMs,omitempty"`

	// DescriptionAnchorTimeToMatchedTimeMs: The time gap of when the
	// description anchor is annotated to appear in the video
	// (description_anchor_time_ms) from when it's matched in the ASR as the
	// list anchor.
	DescriptionAnchorTimeToMatchedTimeMs int64 `json:"descriptionAnchorTimeToMatchedTimeMs,omitempty,string"`

	// EditDistance: Closest edit distance between the anchor generated by
	// description span and the description anchor where the span anchor
	// must be within small threshold time difference of the description
	// anchor timestamp.
	EditDistance int64 `json:"editDistance,omitempty"`

	// EditDistanceRatio: edit_distance over the description anchor's label
	// length.
	EditDistanceRatio float64 `json:"editDistanceRatio,omitempty"`

	// MatchedDescriptionText: The description anchor text used for matching
	// to Span anchor text.
	MatchedDescriptionText string `json:"matchedDescriptionText,omitempty"`

	// MatchedSpanText: The description span anchor text that was the best
	// match for the nearby description anchor.
	MatchedSpanText string `json:"matchedSpanText,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DescriptionAnchorTimeMs") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DescriptionAnchorTimeMs")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchListTrainingDataAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchListTrainingDataAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchListTrainingDataAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchListTrainingDataAnchorFeatures
	var s1 struct {
		EditDistanceRatio gensupport.JSONFloat64 `json:"editDistanceRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EditDistanceRatio = float64(s1.EditDistanceRatio)
	return nil
}

// VideoContentSearchListTrainingDataSetFeatures: Cluster-level metadata
// about the description anchors used as list items to build training
// data for list anchors.
type VideoContentSearchListTrainingDataSetFeatures struct {
	// EditDistanceRatioStats: Summary of the edit_distance_ratios of the
	// description spans from their best matched description anchor texts.
	EditDistanceRatioStats *VideoContentSearchMetricStats `json:"editDistanceRatioStats,omitempty"`

	// EditDistanceStats: Summary of the edit_distances of the description
	// spans from their best matched description anchor texts.
	EditDistanceStats *VideoContentSearchMetricStats `json:"editDistanceStats,omitempty"`

	// MatchedDescriptionAnchorsTimegapStats: Median, average and standard
	// deviation of time gaps of when the description anchors is annotated
	// to appear in the video (description_anchor_time_ms) from when they
	// are matched in the ASR as the list description anchors.
	MatchedDescriptionAnchorsTimegapStats *VideoContentSearchMetricStats `json:"matchedDescriptionAnchorsTimegapStats,omitempty"`

	// NumDescriptionAnchors: Number of description anchors in the
	// description of this video.
	NumDescriptionAnchors int64 `json:"numDescriptionAnchors,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "EditDistanceRatioStats") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EditDistanceRatioStats")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchListTrainingDataSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchListTrainingDataSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchMatchScores struct {
	MatchInfo []*VideoContentSearchTextMatchInfo `json:"matchInfo,omitempty"`

	// Method: The method used for matching, e.g. 'babel', 'nlp', 'neon',
	// ßß'phonetic'.
	Method string `json:"method,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MatchInfo") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatchInfo") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchMatchScores) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchMatchScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchMetricStats: Median, mean and standard deviation of
// a feature value.
type VideoContentSearchMetricStats struct {
	Max float64 `json:"max,omitempty"`

	Mean float64 `json:"mean,omitempty"`

	Median float64 `json:"median,omitempty"`

	Min float64 `json:"min,omitempty"`

	Stddev float64 `json:"stddev,omitempty"`

	Sum float64 `json:"sum,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Max") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Max") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchMetricStats) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchMetricStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchMetricStats) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchMetricStats
	var s1 struct {
		Max    gensupport.JSONFloat64 `json:"max"`
		Mean   gensupport.JSONFloat64 `json:"mean"`
		Median gensupport.JSONFloat64 `json:"median"`
		Min    gensupport.JSONFloat64 `json:"min"`
		Stddev gensupport.JSONFloat64 `json:"stddev"`
		Sum    gensupport.JSONFloat64 `json:"sum"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Max = float64(s1.Max)
	s.Mean = float64(s1.Mean)
	s.Median = float64(s1.Median)
	s.Min = float64(s1.Min)
	s.Stddev = float64(s1.Stddev)
	s.Sum = float64(s1.Sum)
	return nil
}

// VideoContentSearchMultimodalTopicFeatures: Multimodal features for a
// single generated topic. Next ID: 8
type VideoContentSearchMultimodalTopicFeatures struct {
	// FrameSimilarityInterval: The list of frame sequence similarities to
	// this topic. The list of frames are picked to be around the topic
	// timestamp. The set of frames selected are thresholded at a value to
	// ensure the selected frame intervals are similar to the query.
	FrameSimilarityInterval []*VideoContentSearchFrameSimilarityInterval `json:"frameSimilarityInterval,omitempty"`

	// GenerativeTopicPredictionFeatures: The inference results from the
	// prediction services that generate the topics.
	GenerativeTopicPredictionFeatures []*VideoContentSearchGenerativeTopicPredictionFeatures `json:"generativeTopicPredictionFeatures,omitempty"`

	// NavboostAnchorFeatures: Features related to queries generated using
	// document navboost data with timed anchors. Only populated if the
	// query was generated using this approach.
	NavboostAnchorFeatures *VideoContentSearchNavboostAnchorFeatures `json:"navboostAnchorFeatures,omitempty"`

	// Topic: The text of the generated topic.
	Topic string `json:"topic,omitempty"`

	// TopicEndMs: End time of the topic.
	TopicEndMs int64 `json:"topicEndMs,omitempty,string"`

	// TopicStartMs: Start time of the topic.
	TopicStartMs int64 `json:"topicStartMs,omitempty,string"`

	// VideoQuerySource: How the query was generated.
	//
	// Possible values:
	//   "UNKNOWN_QUERY_SOURCE"
	//   "NAVBOOST_ANCHOR" - Queries generated from a combination of video
	// anchors and navboost queries.
	//   "ORACLE" - Queries from Oracle result-set followups.
	//   "GENERATED_NAVBOOST_ANCHOR" - Queries generated with a generative
	// model using Navboost-anchors as training data.
	//   "GENERATED_AQUARIUM_RETRIEVAL" - Queries generated with a
	// generative model with training data from a retrieval model fetching
	// queries with Aquarium and scoring them against video passages.
	//   "ORACLE_PER_RESULT" - Queries from Oracle per-result followups.
	//   "ENTITY_ANCHOR" - Queries from entities extracted by Webref from
	// the video transcript.
	//   "PRODUCT_ANCHOR" - Queries extracted from different data sources
	// for the Related Products feature.
	//   "ANCHOR" - Queries from the anchor text directly.
	//   "RANKEMBED_GENERATED_NAVBOOST_ANCHOR" - Queries generated from the
	// rankembed nearest neighbor candidates of the Navboost-anchors.
	VideoQuerySource string `json:"videoQuerySource,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "FrameSimilarityInterval") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameSimilarityInterval")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchMultimodalTopicFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchMultimodalTopicFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchMultimodalTopicTrainingFeatures: Multimodal
// features for a single generated topic used to build training data.
type VideoContentSearchMultimodalTopicTrainingFeatures struct {
	// MaxFrameSimilarityInterval: The similarity info for the frame with
	// maximum similarity to the topic in its visual interval. The repeated
	// similarity field in this proto has a single value corresponding to
	// the maximum similarity. This similarity score is used to filter and
	// pick the training data examples.
	MaxFrameSimilarityInterval *VideoContentSearchFrameSimilarityInterval `json:"maxFrameSimilarityInterval,omitempty"`

	// NormalizedTopic: The topic/query normalized for Navboost and QBST
	// lookups as well as fetching of the Rankembed nearest neighbors.
	NormalizedTopic string `json:"normalizedTopic,omitempty"`

	// QbstTermsOverlapFeatures: QBST terms overlap features for a candidate
	// query.
	QbstTermsOverlapFeatures *VideoContentSearchQbstTermsOverlapFeatures `json:"qbstTermsOverlapFeatures,omitempty"`

	// RankembedNearestNeighborsFeatures: Rankembed similarity features for
	// a candidate nearest neighbor rankembed query.
	RankembedNearestNeighborsFeatures *VideoContentSearchRankEmbedNearestNeighborsFeatures `json:"rankembedNearestNeighborsFeatures,omitempty"`

	// SaftEntityInfo: The information about the saft entity annotation for
	// this topic.
	SaftEntityInfo *VideoContentSearchSaftEntityInfo `json:"saftEntityInfo,omitempty"`

	// TopicDenseVector: Raw float feature vector of the topic's co-text
	// embedding representation in the Starburst space.
	TopicDenseVector []float64 `json:"topicDenseVector,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MaxFrameSimilarityInterval") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "MaxFrameSimilarityInterval") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchMultimodalTopicTrainingFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchMultimodalTopicTrainingFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchNamedEntity: Message for SAFT named entities.
type VideoContentSearchNamedEntity struct {
	// EntityType: Type name: e.g. /saft/person for a person's name.
	EntityType string `json:"entityType,omitempty"`

	// Text: Text referring to an entity of type entity_type;
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchNamedEntity) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchNamedEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchNavboostAnchorFeatures: Features for queries
// generated using document navboost data with timed anchors.
type VideoContentSearchNavboostAnchorFeatures struct {
	// AnchorText: The anchor text used in the generated query.
	AnchorText string `json:"anchorText,omitempty"`

	// NavboostText: The navboost query used in the generated query.
	NavboostText string `json:"navboostText,omitempty"`

	// Source: How the navboost-anchor query was constructed.
	//
	// Possible values:
	//   "UNKNOWN_NAVBOOST_ANCHOR_SOURCE"
	//   "ANCHOR_TEXT" - The cleaned anchor text.
	//   "NAVBOOST_AND_ANCHOR_TEXT" - The cleaned anchor text concatenated
	// with a navboost query for the video.
	//   "ANCHOR_SIMILAR_QUERY" - A similar query to the cleaned anchor
	// text.
	//   "NAVBOOST_AND_ANCHOR_SIMILAR_QUERY" - A similar query to the
	// navboost-anchor concatenation.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorText") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchNavboostAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchNavboostAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchOCRText: Contains OCR text, its start time and
// additional details about position/fonts
type VideoContentSearchOCRText struct {
	// OcrFeature: Additional details about position/font/color etc. for the
	// OCR text
	OcrFeature *VideoContentSearchOnScreenTextFeature `json:"ocrFeature,omitempty"`

	// OcrText: The OCR recognized text label
	OcrText string `json:"ocrText,omitempty"`

	// TimeMs: The time in ms at which the OCR text appears on the frame
	TimeMs int64 `json:"timeMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "OcrFeature") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "OcrFeature") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOCRText) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOCRText
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchOcrAsrFeature struct {
	// MinCharEditDistance: The minimum char edit distance between the
	// normalized OCR text and candidate word strings taken from a time
	// window around the OCR appearance.
	MinCharEditDistance int64 `json:"minCharEditDistance,omitempty"`

	// MinCharEditDistanceAsrText: The matched ASR candidate for minimum
	// char edit distance.
	MinCharEditDistanceAsrText string `json:"minCharEditDistanceAsrText,omitempty"`

	// MinCharEditDistancePercent: The min_char_edit_distance divided by the
	// length of the OCR string.
	MinCharEditDistancePercent float64 `json:"minCharEditDistancePercent,omitempty"`

	// OcrTextNormalizedForCharMatch: The normalized OCR text which was used
	// to match the candidate.
	OcrTextNormalizedForCharMatch string `json:"ocrTextNormalizedForCharMatch,omitempty"`

	// OcrTextNormalizedForCharMatchLength: The length of the normalized OCR
	// text.
	OcrTextNormalizedForCharMatchLength int64 `json:"ocrTextNormalizedForCharMatchLength,omitempty"`

	// PretriggerScore: The score from the pretrigger model.
	PretriggerScore float64 `json:"pretriggerScore,omitempty"`

	// WordOverlapAsrText: The ASR text that was used for the word overlap
	// calculation.
	WordOverlapAsrText string `json:"wordOverlapAsrText,omitempty"`

	// WordOverlapCount: The number of words found both in the OCR text and
	// the ASR in a time window around OCR appearance.
	WordOverlapCount int64 `json:"wordOverlapCount,omitempty"`

	// WordOverlapPercent: The word_overlap_count divided by the number of
	// words in the OCR text.
	WordOverlapPercent float64 `json:"wordOverlapPercent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MinCharEditDistance")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MinCharEditDistance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOcrAsrFeature) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOcrAsrFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOcrAsrFeature) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOcrAsrFeature
	var s1 struct {
		MinCharEditDistancePercent gensupport.JSONFloat64 `json:"minCharEditDistancePercent"`
		PretriggerScore            gensupport.JSONFloat64 `json:"pretriggerScore"`
		WordOverlapPercent         gensupport.JSONFloat64 `json:"wordOverlapPercent"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MinCharEditDistancePercent = float64(s1.MinCharEditDistancePercent)
	s.PretriggerScore = float64(s1.PretriggerScore)
	s.WordOverlapPercent = float64(s1.WordOverlapPercent)
	return nil
}

type VideoContentSearchOcrAsrSetFeature struct {
	// NormalizedWordOverlapScore: The word_overlap_score divided by the
	// greatest word_overlap_score for any cluster in the VideoAnchorSets.
	NormalizedWordOverlapScore float64 `json:"normalizedWordOverlapScore,omitempty"`

	// WordOverlapScore: A score based on the number of overlapped words
	// between the OCR and ASR for anchors in the cluster.
	WordOverlapScore float64 `json:"wordOverlapScore,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "NormalizedWordOverlapScore") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "NormalizedWordOverlapScore") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOcrAsrSetFeature) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOcrAsrSetFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOcrAsrSetFeature) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOcrAsrSetFeature
	var s1 struct {
		NormalizedWordOverlapScore gensupport.JSONFloat64 `json:"normalizedWordOverlapScore"`
		WordOverlapScore           gensupport.JSONFloat64 `json:"wordOverlapScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.NormalizedWordOverlapScore = float64(s1.NormalizedWordOverlapScore)
	s.WordOverlapScore = float64(s1.WordOverlapScore)
	return nil
}

// VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures: Metadata
// about the join of description anchors and OCR data which is used to
// build training data.
type VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures struct {
	// EditDistance: The string edit distance from the anchor label to the
	// nearest OCR text.
	EditDistance int64 `json:"editDistance,omitempty"`

	// EditDistanceRatio: edit_distance over the description anchor's label
	// length.
	EditDistanceRatio float64 `json:"editDistanceRatio,omitempty"`

	// MatchedDescriptionText: The description anchor text used for matching
	// to OCR text.
	MatchedDescriptionText string `json:"matchedDescriptionText,omitempty"`

	// MatchedFrameTimeMs: The time of the selected OCR frame in ms. The
	// best frame in a window around the target description anchor will be
	// selected.
	MatchedFrameTimeMs int64 `json:"matchedFrameTimeMs,omitempty"`

	// MatchedOcrText: The OCR text that was the best match for the nearby
	// description anchor.
	MatchedOcrText string `json:"matchedOcrText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EditDistance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EditDistance") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures
	var s1 struct {
		EditDistanceRatio gensupport.JSONFloat64 `json:"editDistanceRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EditDistanceRatio = float64(s1.EditDistanceRatio)
	return nil
}

// VideoContentSearchOcrDescriptionTrainingDataSetFeatures: Metadata
// about the join of description anchors and OCR data for a set of
// description anchors.
type VideoContentSearchOcrDescriptionTrainingDataSetFeatures struct {
	// MaxEditDistance: The max edit distance of any description anchor to
	// its closest OCR text.
	MaxEditDistance int64 `json:"maxEditDistance,omitempty"`

	// MaxEditDistanceRatio: The maximum of (edit distance of any
	// description anchor to its closest OCR text over description anchor
	// label length).
	MaxEditDistanceRatio float64 `json:"maxEditDistanceRatio,omitempty"`

	// MedianEditDistance: The median edit distance of any description
	// anchor to its closest OCR text.
	MedianEditDistance int64 `json:"medianEditDistance,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MaxEditDistance") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MaxEditDistance") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOcrDescriptionTrainingDataSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOcrDescriptionTrainingDataSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOcrDescriptionTrainingDataSetFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOcrDescriptionTrainingDataSetFeatures
	var s1 struct {
		MaxEditDistanceRatio gensupport.JSONFloat64 `json:"maxEditDistanceRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxEditDistanceRatio = float64(s1.MaxEditDistanceRatio)
	return nil
}

// VideoContentSearchOcrVideoFeature: Features for video level info.
type VideoContentSearchOcrVideoFeature struct {
	// AverageTextAreaRatio: Average text area ratio throughout video
	// frames. Text area ratio for a frame is defined by sum(text area) /
	// image area.
	AverageTextAreaRatio float64 `json:"averageTextAreaRatio,omitempty"`

	// ClusterIdToFrameSize: Cluster id to the num of frames in each
	// cluster.
	ClusterIdToFrameSize map[string]int64 `json:"clusterIdToFrameSize,omitempty"`

	// DurationInMs: Total time of this video in milliseconds.
	DurationInMs int64 `json:"durationInMs,omitempty"`

	// LangIdDetectedLanguage: Video level detected language by lang id,
	// aggregated from each frame.
	LangIdDetectedLanguage string `json:"langIdDetectedLanguage,omitempty"`

	// NumClusters: The number of ShotInfo clusters.
	NumClusters int64 `json:"numClusters,omitempty"`

	// NumFrames: The number of video frames contained in ShotInfo cluster.
	NumFrames int64 `json:"numFrames,omitempty"`

	// OcrDetectedLanguage: Video level detected language, aggregated from
	// each frame.
	OcrDetectedLanguage string `json:"ocrDetectedLanguage,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AverageTextAreaRatio") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageTextAreaRatio") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOcrVideoFeature) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOcrVideoFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOcrVideoFeature) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOcrVideoFeature
	var s1 struct {
		AverageTextAreaRatio gensupport.JSONFloat64 `json:"averageTextAreaRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageTextAreaRatio = float64(s1.AverageTextAreaRatio)
	return nil
}

// VideoContentSearchOnScreenTextClusterFeature: Features for the set of
// OnScreenText.
type VideoContentSearchOnScreenTextClusterFeature struct {
	// AverageConfidence: Average confidence.
	AverageConfidence float64 `json:"averageConfidence,omitempty"`

	AverageDurationRatio float64 `json:"averageDurationRatio,omitempty"`

	AverageHorizontalPosition float64 `json:"averageHorizontalPosition,omitempty"`

	// AverageOcrTextLength: Deprecated. Please use
	// ocr_text_length_stats.median instead. The average length of anchor
	// labels. average_ocr_text_length is deprecated, because now
	// ocr_text_length_stats has a field for holding the same value.
	AverageOcrTextLength float64 `json:"averageOcrTextLength,omitempty"`

	// AverageOfAverageTextHeightRatio: Deprecated. Please use
	// text_height_ratio_stats.mean instead. Average value of text height
	// ratio (over image height), which is taken average over the same text.
	// average_of_average_text_height_ratio is deprecated, because now
	// text_height_ratio_stats has a field for keeping the same value.
	AverageOfAverageTextHeightRatio float64 `json:"averageOfAverageTextHeightRatio,omitempty"`

	// AverageVerticalPosition: Average of label center position.
	AverageVerticalPosition float64 `json:"averageVerticalPosition,omitempty"`

	// ClusterRatio: The number of anchors in the cluster over the number of
	// anchors in the video.
	ClusterRatio float64 `json:"clusterRatio,omitempty"`

	// ClusterSize: The number of anchors in the cluster.
	ClusterSize int64 `json:"clusterSize,omitempty"`

	// CountingNumberRatio: The number of anchors that had a counting number
	// over the number of anchors in total.
	CountingNumberRatio float64 `json:"countingNumberRatio,omitempty"`

	// DurationMsStats: Median, average and standard deviation of
	// duration_ms among anchors in the same cluster.
	DurationMsStats *VideoContentSearchMetricStats `json:"durationMsStats,omitempty"`

	// FrameSizeRatio: Frame size ratio over total frames in video.
	FrameSizeRatio float64 `json:"frameSizeRatio,omitempty"`

	// LogOcrTextLengthStats: Average and standard deviation of logarithm of
	// the length of labels among anchors in the same cluster.
	LogOcrTextLengthStats *VideoContentSearchMetricStats `json:"logOcrTextLengthStats,omitempty"`

	// LogTextHeightRatioStats: Average and standard deviation of
	// log(average_text_height_ratio) among anchors in the same cluster.
	LogTextHeightRatioStats *VideoContentSearchMetricStats `json:"logTextHeightRatioStats,omitempty"`

	// Logp1000DurationMsStats: Average and standard deviation of log(1000 +
	// duration_ms) among anchors in the same cluster. Since duration_ms can
	// be zero, 1000 is added before applying logarithm.
	Logp1000DurationMsStats *VideoContentSearchMetricStats `json:"logp1000DurationMsStats,omitempty"`

	// MaxVideoDurationRatioBetweenAnchors: The maximum ratio of duration
	// between two consecutive anchors to video duration. This is calculated
	// after all anchor filtering has been completed.
	MaxVideoDurationRatioBetweenAnchors float64 `json:"maxVideoDurationRatioBetweenAnchors,omitempty"`

	// MaximumDurationRatio: Stats for ratio of frame time intervals, over
	// total video time.
	MaximumDurationRatio float64 `json:"maximumDurationRatio,omitempty"`

	// MedianClusteringDistance: The median cluster distance for the anchors
	// in the cluster. The way the distance is calculated will vary
	// depending on the clustering method.
	MedianClusteringDistance float64 `json:"medianClusteringDistance,omitempty"`

	MedianDurationRatio float64 `json:"medianDurationRatio,omitempty"`

	// MedianOfAverageTextHeightRatio: Deprecated. Please use
	// text_height_ratio_stats.median instead. Median value of text height
	// ratio (over image height), which is taken average over the same text.
	// median_of_average_text_height_ratio is deprecated, because now
	// text_height_ratio_stats has a field for keeping the same value.
	MedianOfAverageTextHeightRatio float64 `json:"medianOfAverageTextHeightRatio,omitempty"`

	// OcrAsrFeature: Features for the overlap between OCR and ASR.
	OcrAsrFeature *VideoContentSearchOcrAsrSetFeature `json:"ocrAsrFeature,omitempty"`

	// OcrTextLengthStats: Median, average and standard deviation of the
	// length of labels among anchors in the same cluster.
	OcrTextLengthStats *VideoContentSearchMetricStats `json:"ocrTextLengthStats,omitempty"`

	StddevDurationRatio float64 `json:"stddevDurationRatio,omitempty"`

	// TextHeightRatioStats: Median, average and standard deviation of
	// average_text_height_ratio among anchors in the same cluster.
	TextHeightRatioStats *VideoContentSearchMetricStats `json:"textHeightRatioStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AverageConfidence")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageConfidence") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOnScreenTextClusterFeature) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOnScreenTextClusterFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOnScreenTextClusterFeature) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOnScreenTextClusterFeature
	var s1 struct {
		AverageConfidence                   gensupport.JSONFloat64 `json:"averageConfidence"`
		AverageDurationRatio                gensupport.JSONFloat64 `json:"averageDurationRatio"`
		AverageHorizontalPosition           gensupport.JSONFloat64 `json:"averageHorizontalPosition"`
		AverageOcrTextLength                gensupport.JSONFloat64 `json:"averageOcrTextLength"`
		AverageOfAverageTextHeightRatio     gensupport.JSONFloat64 `json:"averageOfAverageTextHeightRatio"`
		AverageVerticalPosition             gensupport.JSONFloat64 `json:"averageVerticalPosition"`
		ClusterRatio                        gensupport.JSONFloat64 `json:"clusterRatio"`
		CountingNumberRatio                 gensupport.JSONFloat64 `json:"countingNumberRatio"`
		FrameSizeRatio                      gensupport.JSONFloat64 `json:"frameSizeRatio"`
		MaxVideoDurationRatioBetweenAnchors gensupport.JSONFloat64 `json:"maxVideoDurationRatioBetweenAnchors"`
		MaximumDurationRatio                gensupport.JSONFloat64 `json:"maximumDurationRatio"`
		MedianClusteringDistance            gensupport.JSONFloat64 `json:"medianClusteringDistance"`
		MedianDurationRatio                 gensupport.JSONFloat64 `json:"medianDurationRatio"`
		MedianOfAverageTextHeightRatio      gensupport.JSONFloat64 `json:"medianOfAverageTextHeightRatio"`
		StddevDurationRatio                 gensupport.JSONFloat64 `json:"stddevDurationRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageConfidence = float64(s1.AverageConfidence)
	s.AverageDurationRatio = float64(s1.AverageDurationRatio)
	s.AverageHorizontalPosition = float64(s1.AverageHorizontalPosition)
	s.AverageOcrTextLength = float64(s1.AverageOcrTextLength)
	s.AverageOfAverageTextHeightRatio = float64(s1.AverageOfAverageTextHeightRatio)
	s.AverageVerticalPosition = float64(s1.AverageVerticalPosition)
	s.ClusterRatio = float64(s1.ClusterRatio)
	s.CountingNumberRatio = float64(s1.CountingNumberRatio)
	s.FrameSizeRatio = float64(s1.FrameSizeRatio)
	s.MaxVideoDurationRatioBetweenAnchors = float64(s1.MaxVideoDurationRatioBetweenAnchors)
	s.MaximumDurationRatio = float64(s1.MaximumDurationRatio)
	s.MedianClusteringDistance = float64(s1.MedianClusteringDistance)
	s.MedianDurationRatio = float64(s1.MedianDurationRatio)
	s.MedianOfAverageTextHeightRatio = float64(s1.MedianOfAverageTextHeightRatio)
	s.StddevDurationRatio = float64(s1.StddevDurationRatio)
	return nil
}

// VideoContentSearchOnScreenTextFeature: Keep feature values which are
// useful to filter titles, labels.
type VideoContentSearchOnScreenTextFeature struct {
	// AverageAngle: The average of rotation angles (degree) of texts.
	AverageAngle float64 `json:"averageAngle,omitempty"`

	// AverageConfidence: Average value of confidence.
	AverageConfidence float64 `json:"averageConfidence,omitempty"`

	// AverageFontsize: Font size or weight information. This is extracted
	// from internal message, so may not be available in future.
	AverageFontsize float64 `json:"averageFontsize,omitempty"`

	AverageFontweight float64 `json:"averageFontweight,omitempty"`

	AverageHeightRatio float64 `json:"averageHeightRatio,omitempty"`

	BackgroundBlue float64 `json:"backgroundBlue,omitempty"`

	BackgroundGray float64 `json:"backgroundGray,omitempty"`

	BackgroundGreen float64 `json:"backgroundGreen,omitempty"`

	BackgroundRed float64 `json:"backgroundRed,omitempty"`

	BoxHeightRatio float64 `json:"boxHeightRatio,omitempty"`

	// BoxWidthRatio: Box width and height ratio, against to the frame size,
	// so the value range is [0, 1]. If this text feature consists of
	// multiple text boxes, the box width / height is a union of each text
	// box.
	BoxWidthRatio float64 `json:"boxWidthRatio,omitempty"`

	// CenterHorizontalPositionRatio: Horizontal position of the center of
	// this text, by ratio [0.0, 1.0].
	CenterHorizontalPositionRatio float64 `json:"centerHorizontalPositionRatio,omitempty"`

	// CenterVerticalPositionRatio: Vertical position of the center of this
	// text, by ratio [0.0, 1.0].
	CenterVerticalPositionRatio float64 `json:"centerVerticalPositionRatio,omitempty"`

	// CountingNumber: Counting number in this anchor's original label.
	CountingNumber int64 `json:"countingNumber,omitempty"`

	// CountingNumberOooRatio: # of numbered anchors that are not
	// out-of-order / # of all the numbered anchors. If no counting number
	// is detected, this will be empty.
	CountingNumberOooRatio float64 `json:"countingNumberOooRatio,omitempty"`

	// CountingNumberPrefix: Prefix for counting number in this anchor's
	// label. If no counting number is detected, this will be empty.
	CountingNumberPrefix string `json:"countingNumberPrefix,omitempty"`

	// CountingNumberSuffix: Suffix for counting number in this anchor's
	// label. If no counting number is detected, this will be empty.
	CountingNumberSuffix string `json:"countingNumberSuffix,omitempty"`

	// DurationMs: Duration time in millisec.
	DurationMs int64 `json:"durationMs,omitempty"`

	ForegroundBlue float64 `json:"foregroundBlue,omitempty"`

	// ForegroundGray: Color information, normalized to [0-1]. This color
	// information is extracted from the largest word in the line entities
	// of PageLayout message. See goodoc::PageLayoutEntity::Colors for
	// details.
	ForegroundGray float64 `json:"foregroundGray,omitempty"`

	ForegroundGreen float64 `json:"foregroundGreen,omitempty"`

	ForegroundRed float64 `json:"foregroundRed,omitempty"`

	// HadUrlInLabel: Whether or not this anchor had URL in its label before
	// the label fixing step.
	HadUrlInLabel bool `json:"hadUrlInLabel,omitempty"`

	// HandwrittenTextRatio: # of LINE entities that are recognized as
	// handwritten texts over # of merged LINE entities.
	HandwrittenTextRatio float64 `json:"handwrittenTextRatio,omitempty"`

	// IsCountingNumberOoo: Whether or not the counting number in this
	// anchor's label is out-of-order. If no counting number is detected,
	// this will be empty.
	IsCountingNumberOoo bool `json:"isCountingNumberOoo,omitempty"`

	// Languages: Languages predicted by OCR. "repeated" is employed for
	// this field because LINE entities of PageLayout message are sometimes
	// annotated with multiple languages, and also two VideoAnchor that are
	// annotated with different languages can be merged into one
	// VideoAnchor. When two VideoAnchor are merged into one, the weight
	// field values of the new VideoAnchor will be the average of weight
	// field values weighted by merged_line_count.
	Languages []*GoodocLanguageCombinationLanguage `json:"languages,omitempty"`

	// LeftPositionRatio: Left position of this text, by ratio [0, 1].
	LeftPositionRatio float64 `json:"leftPositionRatio,omitempty"`

	// MedianClusteringDistance: The median distance between this anchor and
	// other anchors in the cluster. The way the distance is calculated will
	// vary depending on the clustering method.
	MedianClusteringDistance float64 `json:"medianClusteringDistance,omitempty"`

	// MergedLineCount: The number of LINE entities used for this text.
	MergedLineCount int64 `json:"mergedLineCount,omitempty"`

	// NTextsInSameFrame: # of OCR texts that appear in the same frame. If
	// duration of this OCR text is not zero, the maximum number among
	// multiple frames where this OCR text appears is set to this field.
	NTextsInSameFrame int64 `json:"nTextsInSameFrame,omitempty"`

	// OccurrenceCount: The number of OCR texts that have the same text
	// among temporally-merged OCR texts.
	OccurrenceCount float64 `json:"occurrenceCount,omitempty"`

	// OccurrenceRatio: occurrence_count over the number of anchors merged
	// to this anchor.
	OccurrenceRatio float64 `json:"occurrenceRatio,omitempty"`

	// OcrAsrFeature: Features for the overlap between OCR and ASR.
	OcrAsrFeature *VideoContentSearchOcrAsrFeature `json:"ocrAsrFeature,omitempty"`

	// OriginalLabel: The label this VideoAnchor originally had before label
	// clearning steps.
	OriginalLabel string `json:"originalLabel,omitempty"`

	RelativeShotTimeMsPosteriorToEndTime int64 `json:"relativeShotTimeMsPosteriorToEndTime,omitempty"`

	RelativeShotTimeMsPosteriorToStartTime int64 `json:"relativeShotTimeMsPosteriorToStartTime,omitempty"`

	RelativeShotTimeMsPriorToEndTime int64 `json:"relativeShotTimeMsPriorToEndTime,omitempty"`

	// RelativeShotTimeMsPriorToStartTime: Shot boundary time nearest to
	// OnScreenText's start and end time. The time is relative to each
	// OnScreenText's start / end time (ex. -1 means shot time exists prior
	// to the start / end time). If shot time and start/end time is the
	// same, 0 is set in 'prior' field. If no shot info is available, the
	// below fields are not set.
	RelativeShotTimeMsPriorToStartTime int64 `json:"relativeShotTimeMsPriorToStartTime,omitempty"`

	ShotInfoCountDuringText int64 `json:"shotInfoCountDuringText,omitempty"`

	// TopOcrLanguage: OCR language that has the highest weight.
	TopOcrLanguage string `json:"topOcrLanguage,omitempty"`

	// TopPositionRatio: Note that top-left position is (0, 0) for position
	// values. Top position of this text, by ratio [0, 1].
	TopPositionRatio float64 `json:"topPositionRatio,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AverageAngle") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageAngle") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchOnScreenTextFeature) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchOnScreenTextFeature
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchOnScreenTextFeature) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchOnScreenTextFeature
	var s1 struct {
		AverageAngle                  gensupport.JSONFloat64 `json:"averageAngle"`
		AverageConfidence             gensupport.JSONFloat64 `json:"averageConfidence"`
		AverageFontsize               gensupport.JSONFloat64 `json:"averageFontsize"`
		AverageFontweight             gensupport.JSONFloat64 `json:"averageFontweight"`
		AverageHeightRatio            gensupport.JSONFloat64 `json:"averageHeightRatio"`
		BackgroundBlue                gensupport.JSONFloat64 `json:"backgroundBlue"`
		BackgroundGray                gensupport.JSONFloat64 `json:"backgroundGray"`
		BackgroundGreen               gensupport.JSONFloat64 `json:"backgroundGreen"`
		BackgroundRed                 gensupport.JSONFloat64 `json:"backgroundRed"`
		BoxHeightRatio                gensupport.JSONFloat64 `json:"boxHeightRatio"`
		BoxWidthRatio                 gensupport.JSONFloat64 `json:"boxWidthRatio"`
		CenterHorizontalPositionRatio gensupport.JSONFloat64 `json:"centerHorizontalPositionRatio"`
		CenterVerticalPositionRatio   gensupport.JSONFloat64 `json:"centerVerticalPositionRatio"`
		CountingNumberOooRatio        gensupport.JSONFloat64 `json:"countingNumberOooRatio"`
		ForegroundBlue                gensupport.JSONFloat64 `json:"foregroundBlue"`
		ForegroundGray                gensupport.JSONFloat64 `json:"foregroundGray"`
		ForegroundGreen               gensupport.JSONFloat64 `json:"foregroundGreen"`
		ForegroundRed                 gensupport.JSONFloat64 `json:"foregroundRed"`
		HandwrittenTextRatio          gensupport.JSONFloat64 `json:"handwrittenTextRatio"`
		LeftPositionRatio             gensupport.JSONFloat64 `json:"leftPositionRatio"`
		MedianClusteringDistance      gensupport.JSONFloat64 `json:"medianClusteringDistance"`
		OccurrenceCount               gensupport.JSONFloat64 `json:"occurrenceCount"`
		OccurrenceRatio               gensupport.JSONFloat64 `json:"occurrenceRatio"`
		TopPositionRatio              gensupport.JSONFloat64 `json:"topPositionRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageAngle = float64(s1.AverageAngle)
	s.AverageConfidence = float64(s1.AverageConfidence)
	s.AverageFontsize = float64(s1.AverageFontsize)
	s.AverageFontweight = float64(s1.AverageFontweight)
	s.AverageHeightRatio = float64(s1.AverageHeightRatio)
	s.BackgroundBlue = float64(s1.BackgroundBlue)
	s.BackgroundGray = float64(s1.BackgroundGray)
	s.BackgroundGreen = float64(s1.BackgroundGreen)
	s.BackgroundRed = float64(s1.BackgroundRed)
	s.BoxHeightRatio = float64(s1.BoxHeightRatio)
	s.BoxWidthRatio = float64(s1.BoxWidthRatio)
	s.CenterHorizontalPositionRatio = float64(s1.CenterHorizontalPositionRatio)
	s.CenterVerticalPositionRatio = float64(s1.CenterVerticalPositionRatio)
	s.CountingNumberOooRatio = float64(s1.CountingNumberOooRatio)
	s.ForegroundBlue = float64(s1.ForegroundBlue)
	s.ForegroundGray = float64(s1.ForegroundGray)
	s.ForegroundGreen = float64(s1.ForegroundGreen)
	s.ForegroundRed = float64(s1.ForegroundRed)
	s.HandwrittenTextRatio = float64(s1.HandwrittenTextRatio)
	s.LeftPositionRatio = float64(s1.LeftPositionRatio)
	s.MedianClusteringDistance = float64(s1.MedianClusteringDistance)
	s.OccurrenceCount = float64(s1.OccurrenceCount)
	s.OccurrenceRatio = float64(s1.OccurrenceRatio)
	s.TopPositionRatio = float64(s1.TopPositionRatio)
	return nil
}

// VideoContentSearchQbstTermsOverlapFeatures: QBST terms overlap
// features for the candidate query.
type VideoContentSearchQbstTermsOverlapFeatures struct {
	// QbstAnchorOverlap: Fraction of salient terms of original query
	// covered by anchor text.
	QbstAnchorOverlap float64 `json:"qbstAnchorOverlap,omitempty"`

	// QbstNavboostOverlap: Fraction of salient terms of original query
	// covered by top navboost query of the video.
	QbstNavboostOverlap float64 `json:"qbstNavboostOverlap,omitempty"`

	// ForceSendFields is a list of field names (e.g. "QbstAnchorOverlap")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "QbstAnchorOverlap") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchQbstTermsOverlapFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchQbstTermsOverlapFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchQbstTermsOverlapFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchQbstTermsOverlapFeatures
	var s1 struct {
		QbstAnchorOverlap   gensupport.JSONFloat64 `json:"qbstAnchorOverlap"`
		QbstNavboostOverlap gensupport.JSONFloat64 `json:"qbstNavboostOverlap"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QbstAnchorOverlap = float64(s1.QbstAnchorOverlap)
	s.QbstNavboostOverlap = float64(s1.QbstNavboostOverlap)
	return nil
}

// VideoContentSearchQnaAnchorFeatures: Features for individual Q&A
// anchors. Next ID: 23
type VideoContentSearchQnaAnchorFeatures struct {
	// Answer: Segment of text from the ASR.
	Answer string `json:"answer,omitempty"`

	DescartesDotScore float64 `json:"descartesDotScore,omitempty"`

	DescartesRankingScore float64 `json:"descartesRankingScore,omitempty"`

	// Possible values:
	//   "DOLPHIN_MODEL_TYPE_UNKNOWN"
	//   "VIDEO_QA_TEACHER_V2"
	//   "VIDEO_QA_V11"
	DolphinModelType string `json:"dolphinModelType,omitempty"`

	// DolphinScore: Dolphin score calculated using the question as the
	// query, the ASR passage as the answer. See go/dolphin-models to learn
	// more.
	DolphinScore float64 `json:"dolphinScore,omitempty"`

	// EditDistance: Edit distance of the question and the title from 0 to 1
	// where 1 is most similar.
	EditDistance float64 `json:"editDistance,omitempty"`

	// EndMs: End time in milliseconds relative to the beginning of the
	// video.
	EndMs int64 `json:"endMs,omitempty,string"`

	EnsembleScore float64 `json:"ensembleScore,omitempty"`

	// IsDuplicateOfTitle: True if question_title_similarity is less than
	// 0.2.
	IsDuplicateOfTitle bool `json:"isDuplicateOfTitle,omitempty"`

	// NeonScore: Neon similarity of question and title.
	NeonScore float64 `json:"neonScore,omitempty"`

	// PointwiseNormalizedGapScore: Pointwise GAP normalized score. Score
	// ranges from 0 to 1 and corresponds to GAP precision. See
	// go/wa-cgap-to-pgap-migration to learn more.
	PointwiseNormalizedGapScore float64 `json:"pointwiseNormalizedGapScore,omitempty"`

	// QbstScore: QBST similarity of question and title.
	QbstScore float64 `json:"qbstScore,omitempty"`

	// QueryCount: NavBoostFeature f_query_count for questions that are
	// NavBoost queries.
	QueryCount float64 `json:"queryCount,omitempty"`

	// QueryDocCount: NavBoostFeature f_query_doc_count for questions that
	// are NavBoost queries.
	QueryDocCount float64 `json:"queryDocCount,omitempty"`

	// Question: Question from Related Questions SSTable or NavBoost.
	Question string `json:"question,omitempty"`

	QuestionTitleSimilarity float64 `json:"questionTitleSimilarity,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "ENTITY" - Questions sourced from joining WebRef entities in CDocs
	// with the Related Question's E2Q table.
	//   "NAVBOOST" - Questions sourced from the CDoc's NavBoost queries.
	//   "GLUE_WEBANS" - Questions from WebAnswer queries that bypass D2Q
	// filtering.
	//   "INSTANT_NAVBOOST" - Questions sourced from the CDoc's Instant
	// NavBoost queries.
	QuestionType string `json:"questionType,omitempty"`

	// StartMs: Start time in milliseconds relative to the beginning of the
	// video.
	StartMs int64 `json:"startMs,omitempty,string"`

	// VideoDurationMs: Duration of the video.
	VideoDurationMs int64 `json:"videoDurationMs,omitempty,string"`

	// VideoTitle: Video title.
	VideoTitle string `json:"videoTitle,omitempty"`

	// WebrefMid: Mid corresponding to the WebRef entity from the CDoc that
	// was used to source the question.
	WebrefMid string `json:"webrefMid,omitempty"`

	// WebrefTopicalityScore: The WebRef entity topicality score. Learn more
	// about this score at: http://go/topicality-score
	WebrefTopicalityScore float64 `json:"webrefTopicalityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Answer") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Answer") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchQnaAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchQnaAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchQnaAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchQnaAnchorFeatures
	var s1 struct {
		DescartesDotScore           gensupport.JSONFloat64 `json:"descartesDotScore"`
		DescartesRankingScore       gensupport.JSONFloat64 `json:"descartesRankingScore"`
		DolphinScore                gensupport.JSONFloat64 `json:"dolphinScore"`
		EditDistance                gensupport.JSONFloat64 `json:"editDistance"`
		EnsembleScore               gensupport.JSONFloat64 `json:"ensembleScore"`
		NeonScore                   gensupport.JSONFloat64 `json:"neonScore"`
		PointwiseNormalizedGapScore gensupport.JSONFloat64 `json:"pointwiseNormalizedGapScore"`
		QbstScore                   gensupport.JSONFloat64 `json:"qbstScore"`
		QueryCount                  gensupport.JSONFloat64 `json:"queryCount"`
		QueryDocCount               gensupport.JSONFloat64 `json:"queryDocCount"`
		QuestionTitleSimilarity     gensupport.JSONFloat64 `json:"questionTitleSimilarity"`
		WebrefTopicalityScore       gensupport.JSONFloat64 `json:"webrefTopicalityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DescartesDotScore = float64(s1.DescartesDotScore)
	s.DescartesRankingScore = float64(s1.DescartesRankingScore)
	s.DolphinScore = float64(s1.DolphinScore)
	s.EditDistance = float64(s1.EditDistance)
	s.EnsembleScore = float64(s1.EnsembleScore)
	s.NeonScore = float64(s1.NeonScore)
	s.PointwiseNormalizedGapScore = float64(s1.PointwiseNormalizedGapScore)
	s.QbstScore = float64(s1.QbstScore)
	s.QueryCount = float64(s1.QueryCount)
	s.QueryDocCount = float64(s1.QueryDocCount)
	s.QuestionTitleSimilarity = float64(s1.QuestionTitleSimilarity)
	s.WebrefTopicalityScore = float64(s1.WebrefTopicalityScore)
	return nil
}

// VideoContentSearchQnaAnchorSetFeatures: Debug info for Q&A anchors.
// Next ID: 15
type VideoContentSearchQnaAnchorSetFeatures struct {
	// BackgroundEncodingPath: Path to Descartes background encoding in the
	// form of a serialized drishti.DenseFeatureData proto. This is
	// generated by the flume_generate_background_encoding binary.
	BackgroundEncodingPath string `json:"backgroundEncodingPath,omitempty"`

	// DescartesModelVersion: This field is used for debugging which model
	// the decartes_model_score is generated from. You can learn more about
	// the Descartes model at go/descartes-qa.
	DescartesModelVersion string `json:"descartesModelVersion,omitempty"`

	// DescartesScoreThreshold: Descartes score threshold for determining
	// whether to output a QA pair as an anchor. This currently effects only
	// the Descartes ranking score.
	DescartesScoreThreshold float64 `json:"descartesScoreThreshold,omitempty"`

	// DolphinConfig: The configuration used for fetching Dolphin scores.
	DolphinConfig *VideoContentSearchDolphinScoringConfig `json:"dolphinConfig,omitempty"`

	// EnsembleModelPath: Path to Ranklab ensemble model used in
	// post-trigger step.
	EnsembleModelPath string `json:"ensembleModelPath,omitempty"`

	// EnsembleModelScoreThreshold: Minimum score for video anchor to pass
	// the post-trigger step. Calculated by training a logisitic regression
	// model with 95% precision. Training colab can be found at
	// go/video-qa-ensemble.
	EnsembleModelScoreThreshold float64 `json:"ensembleModelScoreThreshold,omitempty"`

	// MinEntityTopicalityScore: Threshold for determining whether to
	// consider an entity from a CDoc for sourcing questions on that topic.
	// Learn more about this score at: http://go/topicality-score
	MinEntityTopicalityScore float64 `json:"minEntityTopicalityScore,omitempty"`

	// MinQuestionDistance: Threshold for determining whether questions
	// belong in the same cluster.
	MinQuestionDistance float64 `json:"minQuestionDistance,omitempty"`

	// RelatedQuestionsSstablePath: Path to the Related Questions SSTable
	// that maps entities to questions.
	RelatedQuestionsSstablePath string `json:"relatedQuestionsSstablePath,omitempty"`

	// SpanDurationSecs: The duration threshold for merging captions.
	SpanDurationSecs int64 `json:"spanDurationSecs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "BackgroundEncodingPath") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BackgroundEncodingPath")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchQnaAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchQnaAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchQnaAnchorSetFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchQnaAnchorSetFeatures
	var s1 struct {
		DescartesScoreThreshold     gensupport.JSONFloat64 `json:"descartesScoreThreshold"`
		EnsembleModelScoreThreshold gensupport.JSONFloat64 `json:"ensembleModelScoreThreshold"`
		MinEntityTopicalityScore    gensupport.JSONFloat64 `json:"minEntityTopicalityScore"`
		MinQuestionDistance         gensupport.JSONFloat64 `json:"minQuestionDistance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DescartesScoreThreshold = float64(s1.DescartesScoreThreshold)
	s.EnsembleModelScoreThreshold = float64(s1.EnsembleModelScoreThreshold)
	s.MinEntityTopicalityScore = float64(s1.MinEntityTopicalityScore)
	s.MinQuestionDistance = float64(s1.MinQuestionDistance)
	return nil
}

// VideoContentSearchRankEmbedNearestNeighborsFeatures: Rankembed
// neighbor neighbor features for the candidate query.
type VideoContentSearchRankEmbedNearestNeighborsFeatures struct {
	// AnchorReSimilarity: Rankembed similarity between the rankembed
	// neighbor and the video anchor.
	AnchorReSimilarity float64 `json:"anchorReSimilarity,omitempty"`

	// NavQueryReSimilarity: Rankembed similarity between the rankembed
	// neighbor and the top navboost query of the video.
	NavQueryReSimilarity float64 `json:"navQueryReSimilarity,omitempty"`

	// ReSimilarity: Rankembed similarity between the rankembed neighbor and
	// the original query candidate.
	ReSimilarity float64 `json:"reSimilarity,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorReSimilarity")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorReSimilarity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchRankEmbedNearestNeighborsFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchRankEmbedNearestNeighborsFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchRankEmbedNearestNeighborsFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchRankEmbedNearestNeighborsFeatures
	var s1 struct {
		AnchorReSimilarity   gensupport.JSONFloat64 `json:"anchorReSimilarity"`
		NavQueryReSimilarity gensupport.JSONFloat64 `json:"navQueryReSimilarity"`
		ReSimilarity         gensupport.JSONFloat64 `json:"reSimilarity"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnchorReSimilarity = float64(s1.AnchorReSimilarity)
	s.NavQueryReSimilarity = float64(s1.NavQueryReSimilarity)
	s.ReSimilarity = float64(s1.ReSimilarity)
	return nil
}

// VideoContentSearchSaftEntityInfo: Saft named-entities info for a
// given topic.
type VideoContentSearchSaftEntityInfo struct {
	// CanonicalEntityName: Representative canonical name for the entity.
	CanonicalEntityName string `json:"canonicalEntityName,omitempty"`

	// EntitySalience: Score indicating the saliency (centrality) of this
	// entity to the original_text.
	EntitySalience float64 `json:"entitySalience,omitempty"`

	// EntityTypeName: The type name, like "/saft/person", "/saft/art". See
	// README.entity-types for the inventory of SAFT type tags.
	EntityTypeName string `json:"entityTypeName,omitempty"`

	// MentionText: Representative entity name mention extracted from
	// original_text.
	MentionText string `json:"mentionText,omitempty"`

	// MentionType: SAFT Mention type.
	//
	// Possible values:
	//   "NAM" - name mention (proper noun)
	//   "NOM" - nominal mention (common noun)
	//   "PRE" - pre-nominal mention
	//   "PRO" - pronominal mention
	//   "CMC" - conjoined mention construction
	//   "NRP" - mention of a non-referential pronoun
	//   "VRB" - Verbal mention (head of verb phrase antecedents in
	// discourse deixis).
	//   "IMP" - Implicit mention (e.g., elliptical subjects in pro-drop
	// languages). The facet in the phrase indicates its role with respect
	// to the phrase token.
	MentionType string `json:"mentionType,omitempty"`

	// Mid: Freebase MID for entity if this the saft entity corresponds to a
	// Webref KG mid. This field is not always populated and is taken from
	// FREEBASE_MID mid in EntityProfile in the saft entity annotation.
	Mid string `json:"mid,omitempty"`

	// OriginalText: The original input text (e.g. the anchor text) where
	// the saft entity annotation was run on.
	OriginalText string `json:"originalText,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CanonicalEntityName")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CanonicalEntityName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSaftEntityInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSaftEntityInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchSaftEntityInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchSaftEntityInfo
	var s1 struct {
		EntitySalience gensupport.JSONFloat64 `json:"entitySalience"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EntitySalience = float64(s1.EntitySalience)
	return nil
}

// VideoContentSearchShoppingOpinionsAnchorFeatures: Features for an
// individual Shopping Opinions Anchor. This file is used for video
// anchor use case. Next Id: 34
type VideoContentSearchShoppingOpinionsAnchorFeatures struct {
	// AnchorLabel: The anchor label.
	AnchorLabel string `json:"anchorLabel,omitempty"`

	// AnchorLabelFirstMentionPos: The first anchor_label mention position
	// (word index, 0-based). It is computed from the snippet_sub_segment if
	// exists. Otherwise it is computed from the snippet. It is not
	// populated if there is no such mention.
	AnchorLabelFirstMentionPos int64 `json:"anchorLabelFirstMentionPos,omitempty"`

	// AnchorLabelSentiment: The sentiment score of the anchor label, with
	// range: [-1, 1]. If using Lumin Pro/Con tags as the anchor labels, the
	// "Pro" Lumin tag will have a score of 1 and Con Lumin tag will have a
	// score of -1.
	AnchorLabelSentiment float64 `json:"anchorLabelSentiment,omitempty"`

	// AnchorLabelWordsMentions: The number of times words in anchor label
	// (that is not a stopword) being mentioned in the snippet.
	AnchorLabelWordsMentions int64 `json:"anchorLabelWordsMentions,omitempty"`

	// AnchorOrAspectFirstMentionPos: The smaller number of
	// anchor_label_first_mention_pos and lumin_aspect_first_mention_pos.
	AnchorOrAspectFirstMentionPos int64 `json:"anchorOrAspectFirstMentionPos,omitempty"`

	// AnchorOrAspectWordsMentions: The number of times words in anchor
	// label or Lumin aspect (that is not a stopword) being mentioned in the
	// snippet. If a word exists in both anchor label and Lumin aspect, it
	// shall be only counted once for a mention in the snippet.
	AnchorOrAspectWordsMentions int64 `json:"anchorOrAspectWordsMentions,omitempty"`

	// Aspect: Product aspect being discussed by this Shopping Opinions.
	Aspect *VideoContentSearchAspect `json:"aspect,omitempty"`

	// AsrForProConExtraction: The asr with sentence break that was used for
	// pro/con extraction.
	AsrForProConExtraction string `json:"asrForProConExtraction,omitempty"`

	// BabelSimilarityScore: The Babel similarity score between the snippet
	// and the anchor label.
	BabelSimilarityScore float64 `json:"babelSimilarityScore,omitempty"`

	// ConScore: The classification score of the anchor being a con opinion.
	ConScore float64 `json:"conScore,omitempty"`

	// GrampusScore: The score from the Grampus model if the pro/con is
	// extracted by Grampus.
	GrampusScore float64 `json:"grampusScore,omitempty"`

	// IsCon: Whether the anchor is classified as a con opinion.
	IsCon bool `json:"isCon,omitempty"`

	// IsPro: Whether the anchor is classified as a pro opinion.
	IsPro bool `json:"isPro,omitempty"`

	// IsProConWhenExtractedFromMum: True if the anchor is considered as pro
	// or con when extracted from MUM.
	IsProConWhenExtractedFromMum bool `json:"isProConWhenExtractedFromMum,omitempty"`

	// LuminAspect: The lumin aspect of the Pro/Con Lumin tag. e.g.
	// "weight".
	LuminAspect string `json:"luminAspect,omitempty"`

	// LuminAspectFirstMentionPos: The first Lumin aspect mention position
	// (word index, 0-based). It is computed from the snippet_sub_segment if
	// exists. Otherwise it is computed from the snippet. It is not
	// populated if there is no such mention.
	LuminAspectFirstMentionPos int64 `json:"luminAspectFirstMentionPos,omitempty"`

	// LuminAspectWordsMentions: The number of times words in Lumin aspect
	// (that is not a stopword) being mentioned in the snippet.
	LuminAspectWordsMentions int64 `json:"luminAspectWordsMentions,omitempty"`

	// LuminScore: The Lumin model score for the anchor label against the
	// segment.
	LuminScore float64 `json:"luminScore,omitempty"`

	// MumProductAspect: The product aspect of the pro/con generated using
	// the MUM model.
	MumProductAspect string `json:"mumProductAspect,omitempty"`

	// MumScore: The score from the MUM model if the pro/con anchor is
	// extracted by MUM.
	MumScore float64 `json:"mumScore,omitempty"`

	// OpinionsDolphinDescriptivenessScore: Scores from Opinions Dolphin
	// scorer. Opinions Dolphin scorer is built by finetuning the
	// Dolphin-based Video Anchor Unified Scorer V2 on the Opinions anchors
	// ratings. It outputs two scores, which are optimized for
	// descriptiveness and usefulness ratings respectively.
	// 'descriptiveness_score' measures how well the anchor label describes
	// the video section. 'usefulness_score' measures how useful the anchor
	// label is for jumping to an important section in the video.
	// go/vs-opinions-migration-report
	OpinionsDolphinDescriptivenessScore float64 `json:"opinionsDolphinDescriptivenessScore,omitempty"`

	OpinionsDolphinUsefulnessScore float64 `json:"opinionsDolphinUsefulnessScore,omitempty"`

	// ProScore: The classification score of the anchor being a pro opinion.
	ProScore float64 `json:"proScore,omitempty"`

	// ProductNameFromTitle: The product name from title extracted by the
	// grampus model.
	ProductNameFromTitle string `json:"productNameFromTitle,omitempty"`

	// Question: The question used to score this video segment.
	Question string `json:"question,omitempty"`

	// Snippet: The ASR for the selected segment window.
	Snippet string `json:"snippet,omitempty"`

	// SnippetQaScore: The QA model score for the selected segment window
	// against the question.
	SnippetQaScore float64 `json:"snippetQaScore,omitempty"`

	// SnippetSentimentScore: The go/scarlett sentiment score of the
	// selected segment window. Positive score represents positive
	// sentiment. Negative score represents negative sentiment.
	SnippetSentimentScore float64 `json:"snippetSentimentScore,omitempty"`

	// SnippetSubSegment: The ASR for the best matched sub segment inside
	// the selected segment.
	SnippetSubSegment string `json:"snippetSubSegment,omitempty"`

	// SnippetSubSegmentQaScore: The QA model score for the best sub segment
	// against the question.
	SnippetSubSegmentQaScore float64 `json:"snippetSubSegmentQaScore,omitempty"`

	// SnippetSubSegmentSentimentScore: The go/scarlett sentiment score of
	// the best matched sub segment. Positive score represents positive
	// sentiment. Negative score represents negative sentiment.
	SnippetSubSegmentSentimentScore float64 `json:"snippetSubSegmentSentimentScore,omitempty"`

	// SnippetSubSegmentWordCount: The number of words in the ASR for the
	// best matched sub segment.
	SnippetSubSegmentWordCount int64 `json:"snippetSubSegmentWordCount,omitempty"`

	// SnippetWordCount: The number of words in the ASR for the selected
	// segment window.
	SnippetWordCount int64 `json:"snippetWordCount,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorLabel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorLabel") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchShoppingOpinionsAnchorFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchShoppingOpinionsAnchorFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchShoppingOpinionsAnchorFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchShoppingOpinionsAnchorFeatures
	var s1 struct {
		AnchorLabelSentiment                gensupport.JSONFloat64 `json:"anchorLabelSentiment"`
		BabelSimilarityScore                gensupport.JSONFloat64 `json:"babelSimilarityScore"`
		ConScore                            gensupport.JSONFloat64 `json:"conScore"`
		GrampusScore                        gensupport.JSONFloat64 `json:"grampusScore"`
		LuminScore                          gensupport.JSONFloat64 `json:"luminScore"`
		MumScore                            gensupport.JSONFloat64 `json:"mumScore"`
		OpinionsDolphinDescriptivenessScore gensupport.JSONFloat64 `json:"opinionsDolphinDescriptivenessScore"`
		OpinionsDolphinUsefulnessScore      gensupport.JSONFloat64 `json:"opinionsDolphinUsefulnessScore"`
		ProScore                            gensupport.JSONFloat64 `json:"proScore"`
		SnippetQaScore                      gensupport.JSONFloat64 `json:"snippetQaScore"`
		SnippetSentimentScore               gensupport.JSONFloat64 `json:"snippetSentimentScore"`
		SnippetSubSegmentQaScore            gensupport.JSONFloat64 `json:"snippetSubSegmentQaScore"`
		SnippetSubSegmentSentimentScore     gensupport.JSONFloat64 `json:"snippetSubSegmentSentimentScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnchorLabelSentiment = float64(s1.AnchorLabelSentiment)
	s.BabelSimilarityScore = float64(s1.BabelSimilarityScore)
	s.ConScore = float64(s1.ConScore)
	s.GrampusScore = float64(s1.GrampusScore)
	s.LuminScore = float64(s1.LuminScore)
	s.MumScore = float64(s1.MumScore)
	s.OpinionsDolphinDescriptivenessScore = float64(s1.OpinionsDolphinDescriptivenessScore)
	s.OpinionsDolphinUsefulnessScore = float64(s1.OpinionsDolphinUsefulnessScore)
	s.ProScore = float64(s1.ProScore)
	s.SnippetQaScore = float64(s1.SnippetQaScore)
	s.SnippetSentimentScore = float64(s1.SnippetSentimentScore)
	s.SnippetSubSegmentQaScore = float64(s1.SnippetSubSegmentQaScore)
	s.SnippetSubSegmentSentimentScore = float64(s1.SnippetSubSegmentSentimentScore)
	return nil
}

type VideoContentSearchSimilarityMatchInfo struct {
	// InstructionStartMs: The timestamp of when the first token in the
	// token sequence is spoken in the video.
	InstructionStartMs int64 `json:"instructionStartMs,omitempty"`

	// InstructionText: The instruction step text coming from the web
	// document. Currently only populated for
	// best_description_and_instruction_anchors_match_info.
	InstructionText string `json:"instructionText,omitempty"`

	// ReferenceText: The reference text used for matching against
	// token_sequence (e.g. description anchor text or instruction step
	// text).
	ReferenceText string `json:"referenceText,omitempty"`

	// ReferenceTextTimeMs: The timestamp of when the reference text is
	// pointing in the video (e.g. this is the description anchor timestamp
	// when reference_text is description anchor. For instruction step used
	// as the reference, no timestamps exists and thus this field is not
	// populated).
	ReferenceTextTimeMs int64 `json:"referenceTextTimeMs,omitempty"`

	// ScoringMethodName: Similarity scorer name.
	ScoringMethodName string `json:"scoringMethodName,omitempty"`

	// SimilarityScore: The similarity score given by the scoring method
	// specified by the message scoring_method_name.
	SimilarityScore float64 `json:"similarityScore,omitempty"`

	// StepIndex: The index of the step in HowToInstructions that this
	// token_sequence corresponds to.
	StepIndex int64 `json:"stepIndex,omitempty"`

	// TokenSequence: The matched token sequence text in ASR.
	TokenSequence string `json:"tokenSequence,omitempty"`

	// TokenSequenceLength: The length of the tokens in the token sequence.
	TokenSequenceLength int64 `json:"tokenSequenceLength,omitempty"`

	// TokenStartPos: The token offset of the matched token sequence from
	// the beginning of the document.
	TokenStartPos int64 `json:"tokenStartPos,omitempty"`

	// ForceSendFields is a list of field names (e.g. "InstructionStartMs")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "InstructionStartMs") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSimilarityMatchInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSimilarityMatchInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchSimilarityMatchInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchSimilarityMatchInfo
	var s1 struct {
		SimilarityScore gensupport.JSONFloat64 `json:"similarityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SimilarityScore = float64(s1.SimilarityScore)
	return nil
}

type VideoContentSearchSpanDolphinFeatures struct {
	// Passage: The text passage from ASR.
	Passage string `json:"passage,omitempty"`

	// Title: The title of the video.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Passage") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Passage") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSpanDolphinFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSpanDolphinFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchSpanDolphinScores struct {
	// SpanCandidate: The span candidates extracted from the list of span
	// tokens. Each token is added to a span if its score is above a certain
	// threshold.
	SpanCandidate []*VideoContentSearchSpanDolphinScoresSpanCandidate `json:"spanCandidate,omitempty"`

	// SpanToken: The token-score pairs for the passage.
	SpanToken []*VideoContentSearchSpanDolphinScoresSpanToken `json:"spanToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SpanCandidate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SpanCandidate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSpanDolphinScores) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSpanDolphinScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchSpanDolphinScoresSpanCandidate struct {
	// AsrConfidenceStats: A summary of the token asr_confidence scores that
	// make up the candidate.
	AsrConfidenceStats *VideoContentSearchMetricStats `json:"asrConfidenceStats,omitempty"`

	// ScoreStats: A summary of the token scores that make up the candidate.
	ScoreStats *VideoContentSearchMetricStats `json:"scoreStats,omitempty"`

	// SourcePassage: The passage text from which this span candidate
	// belongs to. In case of description spans, this field stores the
	// sentence containing the span candidate where the sentence is a subset
	// of the passage used for generating the span candidate.
	SourcePassage string `json:"sourcePassage,omitempty"`

	// Text: The span candidate text.
	Text string `json:"text,omitempty"`

	// TimeMs: The start time for the span candidate.
	TimeMs int64 `json:"timeMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AsrConfidenceStats")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrConfidenceStats") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSpanDolphinScoresSpanCandidate) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSpanDolphinScoresSpanCandidate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchSpanDolphinScoresSpanToken struct {
	// AsrConfidence: The ASR confidence for the token, if available.
	AsrConfidence float64 `json:"asrConfidence,omitempty"`

	// IsSentenceStart: Whether or not this token is the first token in a
	// sentence.
	IsSentenceStart bool `json:"isSentenceStart,omitempty"`

	// Score: A score correlated with the probability that the token is part
	// of a span candidate.
	Score float64 `json:"score,omitempty"`

	// Text: The token text.
	Text string `json:"text,omitempty"`

	// TimeMs: The start time of the passage with this token.
	TimeMs int64 `json:"timeMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "AsrConfidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AsrConfidence") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSpanDolphinScoresSpanToken) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSpanDolphinScoresSpanToken
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchSpanDolphinScoresSpanToken) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchSpanDolphinScoresSpanToken
	var s1 struct {
		AsrConfidence gensupport.JSONFloat64 `json:"asrConfidence"`
		Score         gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AsrConfidence = float64(s1.AsrConfidence)
	s.Score = float64(s1.Score)
	return nil
}

// VideoContentSearchSportsKeyMomentsAnchorSetFeatures: Features for a
// set of Sports Key Moments (SKM) Anchors. Each instance of this object
// should be associated with a VideoAnchorSets object. Next ID: 3
type VideoContentSearchSportsKeyMomentsAnchorSetFeatures struct {
	// PrefilterClassificationLabel: The Prefilter classification label
	// associated with the video that contains the VideoAnchorSets this
	// object is asociated with. E.g. "basketball".
	PrefilterClassificationLabel string `json:"prefilterClassificationLabel,omitempty"`

	// TensorflowModelVersion: Version of the underlying TensorFlow model.
	TensorflowModelVersion string `json:"tensorflowModelVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PrefilterClassificationLabel") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "PrefilterClassificationLabel") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchSportsKeyMomentsAnchorSetFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchSportsKeyMomentsAnchorSetFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoContentSearchTextMatchInfo struct {
	// DurationToPredictedTimeMs: The time gap of the matched_time_ms from
	// the predicted timestamp of when this anchor should appear in the
	// video.
	DurationToPredictedTimeMs int64 `json:"durationToPredictedTimeMs,omitempty,string"`

	// MatchScore: The float similarty score from the anchor label to
	// matched_asr_text.
	MatchScore float64 `json:"matchScore,omitempty"`

	// MatchedAsrStartPos: The start token offset from the beginning of ASR
	// where matched_asr_text starts.
	MatchedAsrStartPos int64 `json:"matchedAsrStartPos,omitempty"`

	// MatchedAsrText: The ASR text that was a candidate match for the list
	// anchor.
	MatchedAsrText string `json:"matchedAsrText,omitempty"`

	// MatchedAsrTimeMs: The timestamp of the matched ASR in the video in
	// milliseconds.
	MatchedAsrTimeMs int64 `json:"matchedAsrTimeMs,omitempty,string"`

	// MatchedAsrTimeRatio: The ratio of the matched_asr_time_ms over the
	// total duration of the video.
	MatchedAsrTimeRatio float64 `json:"matchedAsrTimeRatio,omitempty"`

	// MatchedAsrTokenCount: The number of tokens in matched_asr_text
	MatchedAsrTokenCount int64 `json:"matchedAsrTokenCount,omitempty"`

	// MatchedDescriptionItemIndexRatio: The ratio of the video description
	// item index this match corresponds to over the total number of list
	// description items for the video.
	MatchedDescriptionItemIndexRatio float64 `json:"matchedDescriptionItemIndexRatio,omitempty"`

	// MatchedDescriptionText: The video description text matched with the
	// ASR that's used as the anchor label.
	MatchedDescriptionText string `json:"matchedDescriptionText,omitempty"`

	// MatchedDescriptionTokenCount: The number of tokens in
	// matched_description_text.
	MatchedDescriptionTokenCount int64 `json:"matchedDescriptionTokenCount,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DurationToPredictedTimeMs") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "DurationToPredictedTimeMs") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchTextMatchInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchTextMatchInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchTextMatchInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchTextMatchInfo
	var s1 struct {
		MatchScore                       gensupport.JSONFloat64 `json:"matchScore"`
		MatchedAsrTimeRatio              gensupport.JSONFloat64 `json:"matchedAsrTimeRatio"`
		MatchedDescriptionItemIndexRatio gensupport.JSONFloat64 `json:"matchedDescriptionItemIndexRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MatchScore = float64(s1.MatchScore)
	s.MatchedAsrTimeRatio = float64(s1.MatchedAsrTimeRatio)
	s.MatchedDescriptionItemIndexRatio = float64(s1.MatchedDescriptionItemIndexRatio)
	return nil
}

type VideoContentSearchTextSimilarityFeatures struct {
	// HypothesisText: The hypothesis text that was used for the token
	// overlap calculation.
	HypothesisText string `json:"hypothesisText,omitempty"`

	// HypothesisTextTime: The time in ms for the hypothesis_text.
	HypothesisTextTime int64 `json:"hypothesisTextTime,omitempty,string"`

	ReferenceText string `json:"referenceText,omitempty"`

	// ScoringMethodName: Similarity scorer name.
	ScoringMethodName string `json:"scoringMethodName,omitempty"`

	// SimilarityScore: The similarity score given by the scoring method
	// specified by the message scoring_method_name.
	SimilarityScore float64 `json:"similarityScore,omitempty"`

	// TokenMatchCount: Token by token matching stats. Exact matched token
	// count.
	TokenMatchCount int64 `json:"tokenMatchCount,omitempty"`

	// TokenMatchPercent: The token_overlap_count divided by the number of
	// tokens in the hypothesis text.
	TokenMatchPercent float64 `json:"tokenMatchPercent,omitempty"`

	// WordAlignment: Word by word alignment.
	WordAlignment []*VideoContentSearchTokenAlignment `json:"wordAlignment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HypothesisText") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HypothesisText") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchTextSimilarityFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchTextSimilarityFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchTextSimilarityFeatures) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchTextSimilarityFeatures
	var s1 struct {
		SimilarityScore   gensupport.JSONFloat64 `json:"similarityScore"`
		TokenMatchPercent gensupport.JSONFloat64 `json:"tokenMatchPercent"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.SimilarityScore = float64(s1.SimilarityScore)
	s.TokenMatchPercent = float64(s1.TokenMatchPercent)
	return nil
}

// VideoContentSearchTokenAlignment: Token by token mapping between
// hypothesis text and reference text.
type VideoContentSearchTokenAlignment struct {
	// HypothesisIndex: Index of the token in hypothesis text.
	HypothesisIndex int64 `json:"hypothesisIndex,omitempty"`

	// HypothesisToken: Token in hypothesis.
	HypothesisToken string `json:"hypothesisToken,omitempty"`

	// ReferenceIndex: Index of the word in reference.
	ReferenceIndex int64 `json:"referenceIndex,omitempty"`

	// ReferenceToken: Token in label.
	ReferenceToken string `json:"referenceToken,omitempty"`

	// TokenIsMatched: Whether it's a perfect match.
	TokenIsMatched bool `json:"tokenIsMatched,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HypothesisIndex") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HypothesisIndex") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchTokenAlignment) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchTokenAlignment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchTokenTimingInfo: Token level timing information for
// ASR spans. This is expected to be extracted from PseudoVideoData in
// the CDoc. Next ID: 5
type VideoContentSearchTokenTimingInfo struct {
	// Confidence: Generated from th PseudoVideoData Timestamp Confidence
	// field, which is quantized values in range 0-127. To convert to range
	// 0-1 this field divides the PseudoVideoData Timestamp Confidence field
	// by 127.
	Confidence float64 `json:"confidence,omitempty"`

	DurationMs int64 `json:"durationMs,omitempty,string"`

	StartMs int64 `json:"startMs,omitempty,string"`

	// Text: Should be a single token.
	Text string `json:"text,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchTokenTimingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchTokenTimingInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchTokenTimingInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchTokenTimingInfo
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// VideoContentSearchVideoActions: Video level info for online pipeline
// usage. For example: skip pattern as defined in
// https://schema.org/SeekToAction.
type VideoContentSearchVideoActions struct {
	// SkipPatternStartOffsetInput: startOffset_input name as defined in
	// https://schema.org/SeekToAction
	SkipPatternStartOffsetInput string `json:"skipPatternStartOffsetInput,omitempty"`

	// SkipToTimePattern: Skip to time pattern as defined in
	// https://schema.org/SeekToAction
	SkipToTimePattern string `json:"skipToTimePattern,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "SkipPatternStartOffsetInput") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "SkipPatternStartOffsetInput") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoActions) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoActions
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoAnchor: Next ID: 23
type VideoContentSearchVideoAnchor struct {
	// AnchorScore: The score indicating anchor confidence.
	AnchorScore float64 `json:"anchorScore,omitempty"`

	// AnchorType: Specifies the type of the anchor.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "DESCRIPTION_ANCHOR" - Anchors with the time stamps in the video
	// description.
	//   "LIST" - The lists of text items in the video description.
	//   "OCR" - The OCR text items in the video content.
	//   "LIST_ENTITY" - The entity mids from Oraclemania or Lisztomania.
	//   "CAPTION_ENTITY" - The entity mids from the captions.
	//   "KEY_MOMENT" - Sports Key Moments (go/skm-dd) anchors.
	//   "QUESTION_AND_ANSWER" - Anchors where the labels are questions that
	// are answered in the video segment.
	//   "MARKUP" - Anchors generated from the schema.org markup:
	// https://schema.org/Clip
	//   "OCR_ASR" - Anchors created with a combination of OCR and ASR from
	// the video content.
	//   "ASR_SPAN" - Anchors created from ASR spans.
	//   "INSTRUCTION" - Anchors created from Instruction steps in the
	// video.
	//   "DESCRIPTION_SPAN" - Anchors created from Description spans.
	//   "EXPERIMENTAL_MORE_VIDEO_ANSWERS" - Anchors created from
	// MoreVideoAnswers. This is used for MVA experiment, will be deprecated
	// after its LE.
	//   "SHOPPING_OPINIONS" - Anchors created for shopping opinions
	// (pros/cons).
	//   "GENERATED_QUERY" - Anchors from queries generated from video
	// content.
	//   "HIGHLIGHTED_SNIPPET" - Anchor that is created from highlighting
	// matching metadata against the query.
	//   "SHORT_TOPIC_HEADING_GROUP" - Merged anchors where the labels are
	// short topic heading. This can be used as
	// AnchorTypeVersionSpec.merging_group_type.
	//   "SHOPPING_ASR_SPAN" - Anchors created from shopping asr span model.
	// This may be merged with ASR span anchor online.
	//   "RADISH_QA" - QUESTION_AND_ANSWER anchors that are generated via
	// Radish in Goldmine.
	//   "GENERATIVE_ASR" - Generative ASR anchors.
	//   "ASR_TRANSCRIPT" - Anchors where each timed anchor represents one
	// sentence in the ASR transcript.
	//   "COMMENT" - Anchors extracted from a YouTube comment.
	//   "GENERATIVE_ASR_V2" - Generative ASR anchors V2.
	//   "SUMMARY_SEGMENT" - Anchors pointing to the conclusion/summary part
	// of the video. (go/vs-find-summary-segment)
	//   "OCR_EDU" - OCR and ASR anchors generated for educational videos in
	// edu Raffia Overlay.
	//   "ASR_SPAN_EDU"
	AnchorType string `json:"anchorType,omitempty"`

	// ContextText: Context text from ASR of long duration, used for longT5
	// models.
	ContextText string `json:"contextText,omitempty"`

	// DestinationUrl: When set, this is the link that should be used when
	// clicking on a video anchor. This should jump to the given time in the
	// video.
	DestinationUrl string `json:"destinationUrl,omitempty"`

	// Duration: The duration of the video anchor in milliseconds.
	Duration int64 `json:"duration,omitempty,string"`

	// EntityScore: The score indicating the usefulness of the entity
	// identified by 'mid'.
	EntityScore float64 `json:"entityScore,omitempty"`

	// FilterReason: If is_filtered is true, this field illustrates the
	// reasons.
	//
	// Possible values:
	//   "UNKNOWN_REASON"
	//   "DISPLAY_SIZE_LIMIT" - Only limited number of video anchors are
	// shown. Anchors could be filtered to reduce the number. Or the anchors
	// are too few to be shown.
	//   "THUMBNAIL_MISSING" - Anchors are filtered because their thumbnails
	// are missing.
	//   "THUMBNAIL_UNSAFE" - Anchors are filtered because their thumbnails
	// are unsafe.
	//   "LABEL_UNSAFE" - Anchors are filtered because their labels are
	// unsafe.
	//   "TITLE_DUPLICATE_AND_CLOSE_TO_START" - This is specific to video
	// Q&A anchors. Anchors are filtered when their labels are similar to
	// the video titles and located close to the starts of the videos.
	//   "POLICY" - Anchors are filtered due to policy violation (e.g.
	// EUCD).
	//   "INVALID_TIMESTAMP" - Timestamps that are invalid, e.g. negative
	// timestamps or timestamps that are past the video duration.
	//   "NO_ANCHOR_DESTINATION_URL" - No destination_url is set.
	//   "LABEL_WITH_RESTRICTED_ENTITIES" - Anchors are filtered because
	// their labels contain restricted entities.
	//   "LABEL_WITH_PERSON_NAMES" - Anchors are filtered because their
	// labels contain person names
	//   "LABEL_IN_VIDEO_WITH_RESTRICTED_PETACATS" - Anchors are filtered
	// because the video has restricted petacat items.
	//   "LABEL_REMOVED_BY_GENERAL_SAFE_SEARCH" - Anchors are filtered
	// because the label has violations by safe search.
	//   "LABEL_REMOVED_BY_FRINGE_SAFE_SEARCH" - Anchors are filtered
	// because the label is fringe (more restricted than the general safe
	// search threshold).
	//   "LABEL_REMOVED_BY_OFFENSIVE_SAFE_SEARCH" - Anchors are filtered
	// because the label is offsive (more restricted than the general safe
	// search threshold).
	//   "LABEL_IN_VIDEO_GENERAL_SAFE_SEARCH" - Anchors are filtered bacause
	// the video title has violations by safe search.
	FilterReason []string `json:"filterReason,omitempty"`

	// IsFiltered: If true, the anchor is filtered and not served online.
	IsFiltered bool `json:"isFiltered,omitempty"`

	// IsSafe: Convenience field that consolidates signals for whether this
	// label is safe.
	IsSafe bool `json:"isSafe,omitempty"`

	// IsScutiBad: whether this label is bad by go/scuti
	IsScutiBad bool `json:"isScutiBad,omitempty"`

	// Label: The text label of the video anchor.
	Label string `json:"label,omitempty"`

	// LabelScore: The score indicating label confidence.
	LabelScore float64 `json:"labelScore,omitempty"`

	// Mid: The mid of the video anchor.
	Mid string `json:"mid,omitempty"`

	// NamedEntity: Specifies named enitities the label has.
	NamedEntity []*VideoContentSearchNamedEntity `json:"namedEntity,omitempty"`

	// PrecisionScore: The precision for which the anchor should trigger.
	// For example, if the desired precision is 95%, anchors with
	// precision_score < 0.95 should be removed.
	PrecisionScore float64 `json:"precisionScore,omitempty"`

	// ScoreInfo: Additional scoring info used for debugging.
	ScoreInfo *VideoContentSearchVideoAnchorScoreInfo `json:"scoreInfo,omitempty"`

	// StarburstFeatures: Visual tokens for the anchor. Eg. starbust feature
	// vectors for several frames concatenated together.
	StarburstFeatures *VideoContentSearchVisualFeatures `json:"starburstFeatures,omitempty"`

	// Thumbnail: Data about the thumbnail to display for this anchor.
	Thumbnail *VideoContentSearchAnchorThumbnail `json:"thumbnail,omitempty"`

	// ThumbnailUrl: The url for a frame to display for this anchor.
	ThumbnailUrl string `json:"thumbnailUrl,omitempty"`

	// Time: The time stamp of the video anchor in milliseconds.
	Time int64 `json:"time,omitempty,string"`

	// TokenTimingInfo: Timing info for each token in the anchor label.
	TokenTimingInfo []*VideoContentSearchTokenTimingInfo `json:"tokenTimingInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorScore") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorScore") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchor) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchor
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchVideoAnchor) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchVideoAnchor
	var s1 struct {
		AnchorScore    gensupport.JSONFloat64 `json:"anchorScore"`
		EntityScore    gensupport.JSONFloat64 `json:"entityScore"`
		LabelScore     gensupport.JSONFloat64 `json:"labelScore"`
		PrecisionScore gensupport.JSONFloat64 `json:"precisionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AnchorScore = float64(s1.AnchorScore)
	s.EntityScore = float64(s1.EntityScore)
	s.LabelScore = float64(s1.LabelScore)
	s.PrecisionScore = float64(s1.PrecisionScore)
	return nil
}

// VideoContentSearchVideoAnchorRatingScore: Aggregated rating score,
// used in training pipeline, etc.
type VideoContentSearchVideoAnchorRatingScore struct {
	// AverageBookmarkUsefulness: Average score of bookmark usefulness.
	AverageBookmarkUsefulness float64 `json:"averageBookmarkUsefulness,omitempty"`

	// AverageDescriptionQuality: Average score of description quality.
	AverageDescriptionQuality float64 `json:"averageDescriptionQuality,omitempty"`

	// FurballUrl: Furball URL(s) of the rating score (may have been rated
	// more than once)
	FurballUrl []string `json:"furballUrl,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AverageBookmarkUsefulness") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AverageBookmarkUsefulness") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorRatingScore) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorRatingScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchVideoAnchorRatingScore) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchVideoAnchorRatingScore
	var s1 struct {
		AverageBookmarkUsefulness gensupport.JSONFloat64 `json:"averageBookmarkUsefulness"`
		AverageDescriptionQuality gensupport.JSONFloat64 `json:"averageDescriptionQuality"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageBookmarkUsefulness = float64(s1.AverageBookmarkUsefulness)
	s.AverageDescriptionQuality = float64(s1.AverageDescriptionQuality)
	return nil
}

// VideoContentSearchVideoAnchorScoreInfo: Message to contain scoring /
// debugging information. If you want to add information which is not
// directly used in the final VideoAnchor data, it should be put here.
// Next ID: 27
type VideoContentSearchVideoAnchorScoreInfo struct {
	// AnchorCommonFeatureSet: Common features for any anchor types.
	AnchorCommonFeatureSet *VideoContentSearchAnchorCommonFeatureSet `json:"anchorCommonFeatureSet,omitempty"`

	// Attachments: Additional attachments which extend MessageSet.
	Attachments *Proto2BridgeMessageSet `json:"attachments,omitempty"`

	// BabelCheckpointPath: The path to the particular babel checkpoint
	BabelCheckpointPath string `json:"babelCheckpointPath,omitempty"`

	// CaptionEntityAnchorFeatures: Training features and debug info for
	// caption entity anchors.
	CaptionEntityAnchorFeatures *VideoContentSearchCaptionEntityAnchorFeatures `json:"captionEntityAnchorFeatures,omitempty"`

	// CaptionSpanAnchorFeatures: Features for caption span anchors for use
	// in training.
	CaptionSpanAnchorFeatures *VideoContentSearchCaptionSpanAnchorFeatures `json:"captionSpanAnchorFeatures,omitempty"`

	// DescriptionAnchorFeatures: Description anchor features for use in
	// training.
	DescriptionAnchorFeatures *VideoContentSearchDescriptionAnchorFeatures `json:"descriptionAnchorFeatures,omitempty"`

	// FilterReason: A description of why the anchor was removed. This is
	// intended for debugging anchor sets which use multiple heuristics to
	// filter anchors.
	FilterReason []string `json:"filterReason,omitempty"`

	// Filtered: Whether or not the anchor will be removed in the final
	// proto.
	Filtered bool `json:"filtered,omitempty"`

	// GenerativeFeatures: Generated predictions from generative models
	GenerativeFeatures []*VideoContentSearchGenerativePredictionFeatures `json:"generativeFeatures,omitempty"`

	// InstructionAnchorFeatures: Anchor level features for Instruction
	// anchors.
	InstructionAnchorFeatures *VideoContentSearchInstructionAnchorFeatures `json:"instructionAnchorFeatures,omitempty"`

	// InstructionTrainingDataAnchorFeatures: Training data features for
	// Instruction anchors.
	InstructionTrainingDataAnchorFeatures *VideoContentSearchInstructionTrainingDataAnchorFeatures `json:"instructionTrainingDataAnchorFeatures,omitempty"`

	// LabelLanguage: Detected language of label
	LabelLanguage string `json:"labelLanguage,omitempty"`

	LabelTransformation []*VideoContentSearchVideoAnchorScoreInfoLabelTransformation `json:"labelTransformation,omitempty"`

	// ListAnchorFeatures: List anchor features.
	ListAnchorFeatures *VideoContentSearchListAnchorFeatures `json:"listAnchorFeatures,omitempty"`

	// ListTrainingDataAnchorFeatures: Anchor level metadata about the
	// description anchors used to build training data for list anchors.
	ListTrainingDataAnchorFeatures *VideoContentSearchListTrainingDataAnchorFeatures `json:"listTrainingDataAnchorFeatures,omitempty"`

	// MultimodalTopicFeatures: Multimodal features for a generated topic.
	MultimodalTopicFeatures *VideoContentSearchMultimodalTopicFeatures `json:"multimodalTopicFeatures,omitempty"`

	// MultimodalTopicTrainingFeatures: Features for a generated topic used
	// to build training data for multimodal topics.
	MultimodalTopicTrainingFeatures *VideoContentSearchMultimodalTopicTrainingFeatures `json:"multimodalTopicTrainingFeatures,omitempty"`

	// NormalizedBabelEmbedding: Normalized babel embedding of
	// anchor.label(). If the label has more than one sentences, the
	// embedding will be the averaged normalized embedding of each sentence.
	NormalizedBabelEmbedding []float64 `json:"normalizedBabelEmbedding,omitempty"`

	// OcrAnchorFeature: OCR anchor features.
	OcrAnchorFeature *VideoContentSearchOnScreenTextFeature `json:"ocrAnchorFeature,omitempty"`

	// OcrDescriptionTrainingDataAnchorFeatures: Anchor level metadata about
	// the join of description anchors and OCR data which is used to build
	// training data.
	OcrDescriptionTrainingDataAnchorFeatures *VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures `json:"ocrDescriptionTrainingDataAnchorFeatures,omitempty"`

	// OpinionsAnchorFeatures: Shopping Opinions anchor features.
	OpinionsAnchorFeatures *VideoContentSearchShoppingOpinionsAnchorFeatures `json:"opinionsAnchorFeatures,omitempty"`

	// QnaAnchorFeatures: Q&A anchor features for use in training.
	QnaAnchorFeatures *VideoContentSearchQnaAnchorFeatures `json:"qnaAnchorFeatures,omitempty"`

	// RatingScore: Human rating score, used for training.
	RatingScore *VideoContentSearchVideoAnchorRatingScore `json:"ratingScore,omitempty"`

	// SafeSearchClassifierOutput: The output of Safe Search's
	// MultiLabelClassifier.
	SafeSearchClassifierOutput *ClassifierPornQueryMultiLabelClassifierOutput `json:"safeSearchClassifierOutput,omitempty"`

	// TextSimilarityFeatures: ASR matching feature for any anchor types.
	TextSimilarityFeatures []*VideoContentSearchTextSimilarityFeatures `json:"textSimilarityFeatures,omitempty"`

	// ThumbnailInfo: Information about the thumbnail anchor.
	ThumbnailInfo *VideoContentSearchAnchorThumbnailInfo `json:"thumbnailInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnchorCommonFeatureSet") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorCommonFeatureSet")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorScoreInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorScoreInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoAnchorScoreInfoLabelTransformation: Used to
// store the label before label cleaning or other transformations. If
// the label goes through multiple transformations, the original_label
// vector will include the transformations in chronological order.
type VideoContentSearchVideoAnchorScoreInfoLabelTransformation struct {
	// Description: A label for the transformation.
	Description string `json:"description,omitempty"`

	// SourceLabel: The label that was transformated from.
	SourceLabel string `json:"sourceLabel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Description") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorScoreInfoLabelTransformation) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorScoreInfoLabelTransformation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoAnchorSetRatingScore: Aggregated set level
// rating score, used in training pipeline, etc.
type VideoContentSearchVideoAnchorSetRatingScore struct {
	// AverageSetDescriptionQuality: Average score of set level description
	// quality.
	AverageSetDescriptionQuality float64 `json:"averageSetDescriptionQuality,omitempty"`

	// AverageSetNavigationUsefulness: Average score of how useful the set
	// is for navigation.
	AverageSetNavigationUsefulness float64 `json:"averageSetNavigationUsefulness,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AverageSetDescriptionQuality") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AverageSetDescriptionQuality") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorSetRatingScore) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorSetRatingScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchVideoAnchorSetRatingScore) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchVideoAnchorSetRatingScore
	var s1 struct {
		AverageSetDescriptionQuality   gensupport.JSONFloat64 `json:"averageSetDescriptionQuality"`
		AverageSetNavigationUsefulness gensupport.JSONFloat64 `json:"averageSetNavigationUsefulness"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageSetDescriptionQuality = float64(s1.AverageSetDescriptionQuality)
	s.AverageSetNavigationUsefulness = float64(s1.AverageSetNavigationUsefulness)
	return nil
}

// VideoContentSearchVideoAnchorSets: One video can have multiple types
// of text anchors. For example,
// https://www.youtube.com/watch?v=Rtk0I5PVOIc has both list anchors and
// OCR anchors.
type VideoContentSearchVideoAnchorSets struct {
	VideoActions *VideoContentSearchVideoActions `json:"videoActions,omitempty"`

	VideoAnchors []*VideoContentSearchVideoAnchors `json:"videoAnchors,omitempty"`

	VideoInfo *VideoContentSearchVideoInfo `json:"videoInfo,omitempty"`

	VideoScoreInfo *VideoContentSearchVideoScoreInfo `json:"videoScoreInfo,omitempty"`

	// ForceSendFields is a list of field names (e.g. "VideoActions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "VideoActions") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorSets) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorSets
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoAnchors: A video can have a list of text
// anchors, which have different anchor types. Next ID: 15
type VideoContentSearchVideoAnchors struct {
	// Possible values:
	//   "UNKNOWN"
	//   "DESCRIPTION_ANCHOR" - Anchors with the time stamps in the video
	// description.
	//   "LIST" - The lists of text items in the video description.
	//   "OCR" - The OCR text items in the video content.
	//   "LIST_ENTITY" - The entity mids from Oraclemania or Lisztomania.
	//   "CAPTION_ENTITY" - The entity mids from the captions.
	//   "KEY_MOMENT" - Sports Key Moments (go/skm-dd) anchors.
	//   "QUESTION_AND_ANSWER" - Anchors where the labels are questions that
	// are answered in the video segment.
	//   "MARKUP" - Anchors generated from the schema.org markup:
	// https://schema.org/Clip
	//   "OCR_ASR" - Anchors created with a combination of OCR and ASR from
	// the video content.
	//   "ASR_SPAN" - Anchors created from ASR spans.
	//   "INSTRUCTION" - Anchors created from Instruction steps in the
	// video.
	//   "DESCRIPTION_SPAN" - Anchors created from Description spans.
	//   "EXPERIMENTAL_MORE_VIDEO_ANSWERS" - Anchors created from
	// MoreVideoAnswers. This is used for MVA experiment, will be deprecated
	// after its LE.
	//   "SHOPPING_OPINIONS" - Anchors created for shopping opinions
	// (pros/cons).
	//   "GENERATED_QUERY" - Anchors from queries generated from video
	// content.
	//   "HIGHLIGHTED_SNIPPET" - Anchor that is created from highlighting
	// matching metadata against the query.
	//   "SHORT_TOPIC_HEADING_GROUP" - Merged anchors where the labels are
	// short topic heading. This can be used as
	// AnchorTypeVersionSpec.merging_group_type.
	//   "SHOPPING_ASR_SPAN" - Anchors created from shopping asr span model.
	// This may be merged with ASR span anchor online.
	//   "RADISH_QA" - QUESTION_AND_ANSWER anchors that are generated via
	// Radish in Goldmine.
	//   "GENERATIVE_ASR" - Generative ASR anchors.
	//   "ASR_TRANSCRIPT" - Anchors where each timed anchor represents one
	// sentence in the ASR transcript.
	//   "COMMENT" - Anchors extracted from a YouTube comment.
	//   "GENERATIVE_ASR_V2" - Generative ASR anchors V2.
	//   "SUMMARY_SEGMENT" - Anchors pointing to the conclusion/summary part
	// of the video. (go/vs-find-summary-segment)
	//   "OCR_EDU" - OCR and ASR anchors generated for educational videos in
	// edu Raffia Overlay.
	//   "ASR_SPAN_EDU"
	AnchorType string `json:"anchorType,omitempty"`

	// EntityGroupInfo: The list of entity groups derived from the caption
	// entities.
	EntityGroupInfo *VideoContentSearchEntityGroupInfo `json:"entityGroupInfo,omitempty"`

	// ExperimentalPredictedQuerylessTocUsefulness: Same as above, but used
	// for experimenting with new models.
	ExperimentalPredictedQuerylessTocUsefulness float64 `json:"experimentalPredictedQuerylessTocUsefulness,omitempty"`

	// FilterReason: If is_filtered is true, this field illustrates the
	// reasons.
	//
	// Possible values:
	//   "UNKNOWN_REASON"
	//   "DISPLAY_SIZE_LIMIT" - Only limited number of video anchors are
	// shown. Anchors could be filtered to reduce the number. Or the anchors
	// are too few to be shown.
	//   "THUMBNAIL_MISSING" - Anchors are filtered because their thumbnails
	// are missing.
	//   "THUMBNAIL_UNSAFE" - Anchors are filtered because their thumbnails
	// are unsafe.
	//   "LABEL_UNSAFE" - Anchors are filtered because their labels are
	// unsafe.
	//   "TITLE_DUPLICATE_AND_CLOSE_TO_START" - This is specific to video
	// Q&A anchors. Anchors are filtered when their labels are similar to
	// the video titles and located close to the starts of the videos.
	//   "POLICY" - Anchors are filtered due to policy violation (e.g.
	// EUCD).
	//   "INVALID_TIMESTAMP" - Timestamps that are invalid, e.g. negative
	// timestamps or timestamps that are past the video duration.
	//   "NO_ANCHOR_DESTINATION_URL" - No destination_url is set.
	//   "LABEL_WITH_RESTRICTED_ENTITIES" - Anchors are filtered because
	// their labels contain restricted entities.
	//   "LABEL_WITH_PERSON_NAMES" - Anchors are filtered because their
	// labels contain person names
	//   "LABEL_IN_VIDEO_WITH_RESTRICTED_PETACATS" - Anchors are filtered
	// because the video has restricted petacat items.
	//   "LABEL_REMOVED_BY_GENERAL_SAFE_SEARCH" - Anchors are filtered
	// because the label has violations by safe search.
	//   "LABEL_REMOVED_BY_FRINGE_SAFE_SEARCH" - Anchors are filtered
	// because the label is fringe (more restricted than the general safe
	// search threshold).
	//   "LABEL_REMOVED_BY_OFFENSIVE_SAFE_SEARCH" - Anchors are filtered
	// because the label is offsive (more restricted than the general safe
	// search threshold).
	//   "LABEL_IN_VIDEO_GENERAL_SAFE_SEARCH" - Anchors are filtered bacause
	// the video title has violations by safe search.
	FilterReason []string `json:"filterReason,omitempty"`

	// IsFiltered: If true, the anchor set is filtered and not served
	// online.
	IsFiltered bool `json:"isFiltered,omitempty"`

	// MergedAnchorsSources: The anchor sources being used to generate this
	// merged anchors. This field is filled only when this is a merged
	// anchor.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "DESCRIPTION_ANCHOR" - Anchors with the time stamps in the video
	// description.
	//   "LIST" - The lists of text items in the video description.
	//   "OCR" - The OCR text items in the video content.
	//   "LIST_ENTITY" - The entity mids from Oraclemania or Lisztomania.
	//   "CAPTION_ENTITY" - The entity mids from the captions.
	//   "KEY_MOMENT" - Sports Key Moments (go/skm-dd) anchors.
	//   "QUESTION_AND_ANSWER" - Anchors where the labels are questions that
	// are answered in the video segment.
	//   "MARKUP" - Anchors generated from the schema.org markup:
	// https://schema.org/Clip
	//   "OCR_ASR" - Anchors created with a combination of OCR and ASR from
	// the video content.
	//   "ASR_SPAN" - Anchors created from ASR spans.
	//   "INSTRUCTION" - Anchors created from Instruction steps in the
	// video.
	//   "DESCRIPTION_SPAN" - Anchors created from Description spans.
	//   "EXPERIMENTAL_MORE_VIDEO_ANSWERS" - Anchors created from
	// MoreVideoAnswers. This is used for MVA experiment, will be deprecated
	// after its LE.
	//   "SHOPPING_OPINIONS" - Anchors created for shopping opinions
	// (pros/cons).
	//   "GENERATED_QUERY" - Anchors from queries generated from video
	// content.
	//   "HIGHLIGHTED_SNIPPET" - Anchor that is created from highlighting
	// matching metadata against the query.
	//   "SHORT_TOPIC_HEADING_GROUP" - Merged anchors where the labels are
	// short topic heading. This can be used as
	// AnchorTypeVersionSpec.merging_group_type.
	//   "SHOPPING_ASR_SPAN" - Anchors created from shopping asr span model.
	// This may be merged with ASR span anchor online.
	//   "RADISH_QA" - QUESTION_AND_ANSWER anchors that are generated via
	// Radish in Goldmine.
	//   "GENERATIVE_ASR" - Generative ASR anchors.
	//   "ASR_TRANSCRIPT" - Anchors where each timed anchor represents one
	// sentence in the ASR transcript.
	//   "COMMENT" - Anchors extracted from a YouTube comment.
	//   "GENERATIVE_ASR_V2" - Generative ASR anchors V2.
	//   "SUMMARY_SEGMENT" - Anchors pointing to the conclusion/summary part
	// of the video. (go/vs-find-summary-segment)
	//   "OCR_EDU" - OCR and ASR anchors generated for educational videos in
	// edu Raffia Overlay.
	//   "ASR_SPAN_EDU"
	MergedAnchorsSources []string `json:"mergedAnchorsSources,omitempty"`

	// PredictedQuerylessTocUsefulness: The score that predicts the
	// usefulness of this anchor set on the Huh table of contents eval
	// without considering the query.
	PredictedQuerylessTocUsefulness float64 `json:"predictedQuerylessTocUsefulness,omitempty"`

	// Score: The quality of the anchor set.
	Score float64 `json:"score,omitempty"`

	// ScoreInfo: Additional scoring info used for debugging.
	ScoreInfo *VideoContentSearchVideoAnchorsScoreInfo `json:"scoreInfo,omitempty"`

	// ShouldServeThumbnails: Whether or not thumbnails should be displayed
	// when serving anchors.
	ShouldServeThumbnails bool `json:"shouldServeThumbnails,omitempty"`

	// ThumbnailForced: This field indicates that the thumbnail should be
	// hidden but is forced to show.
	ThumbnailForced bool `json:"thumbnailForced,omitempty"`

	// ThumbnailSetInfo: Information about the set of thumbnails.
	ThumbnailSetInfo *VideoContentSearchAnchorsThumbnailInfo `json:"thumbnailSetInfo,omitempty"`

	VideoAnchor []*VideoContentSearchVideoAnchor `json:"videoAnchor,omitempty"`

	// VideoIntroduction: Information about the video's introduction
	// segment.
	VideoIntroduction *VideoContentSearchVideoIntroduction `json:"videoIntroduction,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorType") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorType") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchors) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchors
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchVideoAnchors) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchVideoAnchors
	var s1 struct {
		ExperimentalPredictedQuerylessTocUsefulness gensupport.JSONFloat64 `json:"experimentalPredictedQuerylessTocUsefulness"`
		PredictedQuerylessTocUsefulness             gensupport.JSONFloat64 `json:"predictedQuerylessTocUsefulness"`
		Score                                       gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ExperimentalPredictedQuerylessTocUsefulness = float64(s1.ExperimentalPredictedQuerylessTocUsefulness)
	s.PredictedQuerylessTocUsefulness = float64(s1.PredictedQuerylessTocUsefulness)
	s.Score = float64(s1.Score)
	return nil
}

// VideoContentSearchVideoAnchorsScoreInfo: Message to contain scoring /
// debugging information. If you want to add information which is not
// directly used in the final VideoAnchors data, it should be put here.
// Next ID: 14
type VideoContentSearchVideoAnchorsScoreInfo struct {
	// AnchorsCommonFeatureSet: Common set-level features for any anchor
	// types.
	AnchorsCommonFeatureSet *VideoContentSearchAnchorsCommonFeatureSet `json:"anchorsCommonFeatureSet,omitempty"`

	// CaptionEntityAnchorSetFeatures: Training features and debug info for
	// caption entity anchors.
	CaptionEntityAnchorSetFeatures *VideoContentSearchCaptionEntityAnchorSetFeatures `json:"captionEntityAnchorSetFeatures,omitempty"`

	CaptionSpanAnchorSetFeatures *VideoContentSearchCaptionSpanAnchorSetFeatures `json:"captionSpanAnchorSetFeatures,omitempty"`

	// CommentAnchorSetFeatures: Set-level features for comment anchors.
	CommentAnchorSetFeatures *VideoContentSearchCommentAnchorSetFeatures `json:"commentAnchorSetFeatures,omitempty"`

	// DescriptionAnchorSetFeatures: Description anchor features for use in
	// training.
	DescriptionAnchorSetFeatures *VideoContentSearchDescriptionAnchorSetFeatures `json:"descriptionAnchorSetFeatures,omitempty"`

	// Filtered: Whether or not the anchors will be removed in the final
	// proto.
	Filtered bool `json:"filtered,omitempty"`

	// ListAnchorSetFeatures: Set-level features for list anchors.
	ListAnchorSetFeatures *VideoContentSearchListAnchorSetFeatures `json:"listAnchorSetFeatures,omitempty"`

	// ListTrainingDataSetFeatures: Set level metadata about the description
	// anchors used to build training data for List Description anchors.
	ListTrainingDataSetFeatures *VideoContentSearchListTrainingDataSetFeatures `json:"listTrainingDataSetFeatures,omitempty"`

	// OcrAnchorClusterFeature: OCR anchor cluster features.
	OcrAnchorClusterFeature *VideoContentSearchOnScreenTextClusterFeature `json:"ocrAnchorClusterFeature,omitempty"`

	// OcrDescriptionTrainingDataSetFeatures: Set level metadata about the
	// join of description anchors and OCR data which is used to build
	// training data.
	OcrDescriptionTrainingDataSetFeatures *VideoContentSearchOcrDescriptionTrainingDataSetFeatures `json:"ocrDescriptionTrainingDataSetFeatures,omitempty"`

	// QnaAnchorSetFeatures: Metadata such as model versions for Q&A
	// anchors.
	QnaAnchorSetFeatures *VideoContentSearchQnaAnchorSetFeatures `json:"qnaAnchorSetFeatures,omitempty"`

	// RatingScore: Human rating score, used for training.
	RatingScore *VideoContentSearchVideoAnchorSetRatingScore `json:"ratingScore,omitempty"`

	SportsKeyMomentsAnchorSetFeatures *VideoContentSearchSportsKeyMomentsAnchorSetFeatures `json:"sportsKeyMomentsAnchorSetFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AnchorsCommonFeatureSet") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorsCommonFeatureSet")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoAnchorsScoreInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoAnchorsScoreInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoCommonFeatures: Contains video level features
// that apply to all anchor types.
type VideoContentSearchVideoCommonFeatures struct {
	// AnchorCount: The total number of anchors in all video anchor sets.
	AnchorCount int64 `json:"anchorCount,omitempty"`

	// CaptionInfo: The caption data for the video transcript. The models
	// used for unified scorer. Should be a filepath that contains
	// saved_model.pb and a variables/ folder
	CaptionInfo *VideoContentSearchCaptionInfo `json:"captionInfo,omitempty"`

	// LabelPhraseEmbeddingModel: The model used for generating
	// label_phrase_embedding.
	LabelPhraseEmbeddingModel string `json:"labelPhraseEmbeddingModel,omitempty"`

	UnifiedScoringBertModels []string `json:"unifiedScoringBertModels,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnchorCount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnchorCount") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoCommonFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoCommonFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoGeneratedQueryFeatures: Contains video level
// features for generated queries that are applied at the video level.
type VideoContentSearchVideoGeneratedQueryFeatures struct {
	// FilterReason: A description of why the video was removed. This is
	// intended for debugging generated queries that are filtered at the
	// video level.
	FilterReason []string `json:"filterReason,omitempty"`

	// PrefilteredPassageCount: The total number of passages that were input
	// to generating queries for this video. This count might be bigger than
	// the total number of anchors in the video as some of the anchors might
	// have been filtered by the pipeline.
	PrefilteredPassageCount int64 `json:"prefilteredPassageCount,omitempty"`

	// TitleEntityAnnotations: Entity annotations for one of the mids
	// representing the video title. This entity is either one of the
	// blocklisted entities if at least of the mentioned entities in the
	// title belongs to the blocklisted categories, or is the highest
	// confidence entity for the title.
	TitleEntityAnnotations *VideoContentSearchEntityAnnotations `json:"titleEntityAnnotations,omitempty"`

	// TotalRestrictedQueries: The total number of queries that belong to
	// the blocklisted categories for this video.
	TotalRestrictedQueries int64 `json:"totalRestrictedQueries,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FilterReason") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FilterReason") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoGeneratedQueryFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoGeneratedQueryFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoInfo: This message holds metadata and signals
// of one video. It is typically used for holding debug data in tables
// produced by offline pipelines related to video anchors. Please never
// populate this message into the search serving stack. Next ID: 31
type VideoContentSearchVideoInfo struct {
	// AmarnaDocid: A hash of the video bytes used as a key to Amarna's
	// video_metadata table.
	AmarnaDocid string `json:"amarnaDocid,omitempty"`

	// AsrLanguage: Language information, extracted from
	// content_based_metadata.speech_properties.
	AsrLanguage string `json:"asrLanguage,omitempty"`

	// CrapsData: Craps data from the video cdoc.
	CrapsData *QualityNavboostCrapsCrapsData `json:"crapsData,omitempty"`

	// Description: Video description.
	Description string `json:"description,omitempty"`

	// DocLanguage: Language information, extracted from DocProperties.
	DocLanguage string `json:"docLanguage,omitempty"`

	// DurationMs: Video duration in ms.
	DurationMs float64 `json:"durationMs,omitempty"`

	// HasAsr: Whether or not automatic speech recognition has been
	// generated for this video.
	HasAsr bool `json:"hasAsr,omitempty"`

	// HasDescriptionAnchors: Whether or not the video has description
	// anchors.
	HasDescriptionAnchors bool `json:"hasDescriptionAnchors,omitempty"`

	// IsSafe: Convenience field that is false if any of the video's anchors
	// have their is_safe field set to false.
	IsSafe bool `json:"isSafe,omitempty"`

	// IsWatchpage: Whether or not this is watchpage.
	IsWatchpage bool `json:"isWatchpage,omitempty"`

	// Navqueries: Navqueries for the video.
	Navqueries []string `json:"navqueries,omitempty"`

	// Nsr: NSR for the video page document.
	Nsr float64 `json:"nsr,omitempty"`

	// NumViews: Number of views.
	NumViews int64 `json:"numViews,omitempty,string"`

	// PseudoVideoData: ASR with timing info for each token copied from
	// doc_videos.content_based_metadata.transcript_asr.
	PseudoVideoData *PseudoVideoData `json:"pseudoVideoData,omitempty"`

	// SaftDoc: The Saft document generated from the anchor labels.
	SaftDoc *NlpSaftDocument `json:"saftDoc,omitempty"`

	// SaftTranscript: The transcript used to generate the Saft doc.
	SaftTranscript string `json:"saftTranscript,omitempty"`

	// SalientTermSet: Salient term set from the document. This message
	// contains a lot of data and dependencies, so sub-messages are disabled
	// in model evaluation in scorer.
	SalientTermSet *QualitySalientTermsSalientTermSet `json:"salientTermSet,omitempty"`

	// Subindexid: The subindexid from the cdoc. Stored as an int to avoid a
	// cyclical dependency. Should be convertible to
	// CompositeDoc.SubIndexType.
	Subindexid []int64 `json:"subindexid,omitempty"`

	// Title: Video title.
	Title string `json:"title,omitempty"`

	// TitleLanguage: Video title language Language information, set
	// automatically by the SAFT LangID.
	TitleLanguage string `json:"titleLanguage,omitempty"`

	// TranscriptAnnotations: Transcript annotations that include
	// information about the ASR including timing and entity mentions.
	TranscriptAnnotations *QualityWebanswersTranscriptAnnotations `json:"transcriptAnnotations,omitempty"`

	// UniqueChromeViews: Number of unique visits in Chrome.
	UniqueChromeViews int64 `json:"uniqueChromeViews,omitempty"`

	// Url: Document url.
	Url string `json:"url,omitempty"`

	// VerticalItem: Top petacat verticals of the video produced by
	// indexing/ml/vertical, sorted in descending order by vertical
	// confidence.
	VerticalItem []*IndexingMlVerticalVerticalItem `json:"verticalItem,omitempty"`

	// VideoGenre: Genre of the video from the page metadata. Concatenate
	// all with a comma separator if there are multiple genres.
	VideoGenre string `json:"videoGenre,omitempty"`

	// Possible values:
	//   "UNKNOWN"
	//   "LISTICLE" - The video shows a list of things (e.g. top 10 disney
	// movies, etc.).
	//   "INSTRUCTION" - How-to or other educational video.
	//   "SPORTS" - Video containing sports footage.
	//   "SINGLE_PRODUCT_RESEARCH" - Shopping video that reviews a single
	// product.
	//   "EDU" - Educational video from /raffia/educational-videos.
	VideoType string `json:"videoType,omitempty"`

	// VideoUrl: Video url. Note that VideoInfo::url is a page url that has
	// this video, while this is a video file url.
	VideoUrl string `json:"videoUrl,omitempty"`

	// WebrefEntities: Represents a collection of entities returned by the
	// WebRef service. This message contains a lot of data and dependencies,
	// so sub-messages are disabled in model evaluation in scorer.
	WebrefEntities *RepositoryWebrefWebrefEntities `json:"webrefEntities,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AmarnaDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AmarnaDocid") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoContentSearchVideoInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoContentSearchVideoInfo
	var s1 struct {
		DurationMs gensupport.JSONFloat64 `json:"durationMs"`
		Nsr        gensupport.JSONFloat64 `json:"nsr"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DurationMs = float64(s1.DurationMs)
	s.Nsr = float64(s1.Nsr)
	return nil
}

// VideoContentSearchVideoIntroduction: Specifies whether a video has an
// introduction part that can be skipped. An introduction is the
// beginning part of a video that can be safely skipped without
// impacting user's understanding of the overall video content.
type VideoContentSearchVideoIntroduction struct {
	// HasIntro: If set to true, it means the video has an introduction
	// spanning from intro_start_ms to intro_end_ms.
	HasIntro bool `json:"hasIntro,omitempty"`

	// IntroEndMs: Timestamp of the end of an introduction. Will only be set
	// if has_intro is true. Indicates video may be skipped to this
	// timestamp with minimal impact on understanding the overall video
	// contents.
	IntroEndMs int64 `json:"introEndMs,omitempty,string"`

	// IntroStartMs: Timestamp of the beginning of an introduction. Will
	// only be set if has_intro is true. This value may be nonzero.
	IntroStartMs int64 `json:"introStartMs,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "HasIntro") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HasIntro") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoIntroduction) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoIntroduction
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoMultimodalTopicFeatures: Video-level
// Multimodal features for generated topics. Next ID: 2
type VideoContentSearchVideoMultimodalTopicFeatures struct {
	// FrameStarburstData: Starburst vectors. Sorted by timestamp.
	FrameStarburstData []*VideoContentSearchFrameStarburstData `json:"frameStarburstData,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameStarburstData")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameStarburstData") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoMultimodalTopicFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoMultimodalTopicFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVideoScoreInfo: Video level scoring info.
type VideoContentSearchVideoScoreInfo struct {
	// CommonFeatures: Anchor scoring features that apply to all anchor
	// types.
	CommonFeatures *VideoContentSearchVideoCommonFeatures `json:"commonFeatures,omitempty"`

	// OcrVideoFeature: OCR specific video level feature.
	OcrVideoFeature *VideoContentSearchOcrVideoFeature `json:"ocrVideoFeature,omitempty"`

	// SafeSearchClassifierOutput: The output of Safe Search's
	// MultiLabelClassifier for video title.
	SafeSearchClassifierOutput *ClassifierPornQueryMultiLabelClassifierOutput `json:"safeSearchClassifierOutput,omitempty"`

	// Version: The version of this VideoAnchorSets in spanner.
	Version string `json:"version,omitempty"`

	// VideoGeneratedQueryFeatures: Video-level features that apply to all
	// the generated queries within this VideoAnchorSets.
	VideoGeneratedQueryFeatures *VideoContentSearchVideoGeneratedQueryFeatures `json:"videoGeneratedQueryFeatures,omitempty"`

	// VideoMultimodalTopicFeatures: Video-level features for Multimodal
	// topics.
	VideoMultimodalTopicFeatures *VideoContentSearchVideoMultimodalTopicFeatures `json:"videoMultimodalTopicFeatures,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CommonFeatures") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CommonFeatures") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVideoScoreInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVideoScoreInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoContentSearchVisualFeatures: Startburst visual tokens or
// features, more details in go/starburst-mum-user-guide
type VideoContentSearchVisualFeatures struct {
	// Features: Starburst features semantic or visual/
	Features []float64 `json:"features,omitempty"`

	// Possible values:
	//   "UNKNOWN_VERSION"
	//   "STARBURST_V1"
	//   "STARBURST_V2"
	//   "STARBURST_V3"
	//   "STARBURST_V4"
	//   "STARBURST_VISUAL_V4"
	//   "STARBURST_V5"
	//   "STARBURST_V5_5"
	StarbustVersion string `json:"starbustVersion,omitempty"`

	// Tokens: Starburst visual tokens
	Tokens []int64 `json:"tokens,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Features") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Features") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoContentSearchVisualFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod VideoContentSearchVisualFeatures
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoCrawlVideoInlinePlaybackMetadata: This message is used to store
// information about Inline Playback in the VideoWebAttachment portion
// of the websearch index. LINT.IfChange
type VideoCrawlVideoInlinePlaybackMetadata struct {
	// ExpirationTimestampSec: Timestamp (measured in seconds since epoch)
	// when a video may not be used for inline playback in the interest
	// feed.
	ExpirationTimestampSec int64 `json:"expirationTimestampSec,omitempty,string"`

	// GoogleAnalyticsId: Publisher's Google Analytics Id to which we can
	// report view metrics.
	GoogleAnalyticsId string `json:"googleAnalyticsId,omitempty"`

	// PlaybackCountryBlacklist: All two-letter codes for countries where
	// this video may NOT be played.
	PlaybackCountryBlacklist []string `json:"playbackCountryBlacklist,omitempty"`

	// PlaybackCountryWhitelist: All two-letter codes for countries where
	// this video may be played. If empty, then all countries not on the
	// blacklist are allowed for playback.
	PlaybackCountryWhitelist []string `json:"playbackCountryWhitelist,omitempty"`

	// TranscodeItags: Set of transcodes which are available for the video.
	TranscodeItags []int64 `json:"transcodeItags,omitempty"`

	// VastTag: VAST tag for ads to be played along with this video.
	// Currently, we only support VAST tags from Doubleclick and FreeWheel.
	VastTag string `json:"vastTag,omitempty"`

	// VideoId: Identifier video is known by in the video infrastructure.
	// The format given here is the YoutubeId format (base-64) used in
	// Venom; for Viper/Bandaid/ StreamingURLService, convert to
	// ContentIdHex.
	VideoId string `json:"videoId,omitempty"`

	// VideoUrlOnExternalCdn: Set if the video is hosted on an external CDN,
	// in which case it is not to be transcoded and hosted at Google for the
	// Interest Feed.
	VideoUrlOnExternalCdn string `json:"videoUrlOnExternalCdn,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExpirationTimestampSec") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ExpirationTimestampSec")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoCrawlVideoInlinePlaybackMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod VideoCrawlVideoInlinePlaybackMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoDoViDecoderConfiguration: Decoder configuration for Dolby Vision
// encoded by any codec. Dolby Vision defines a separate profile & level
// hierarchy regardless of the base codec. See Dolby Vision profiles,
// levels and compatibility:
// https://dolby.my.salesforce.com/sfc/p/#700000009YuG/a/4u000000l6G4/4R18riPaaW3gxpVx7XwyQLdEITLFjB.w.Si0LoQR5j8
// Dolby Vision DASH streaming:
// https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolbyvisioninmpegdashspecification_v2_0_public_20190107.pdf
// HTTP Live Streaming:
// https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby-vision-streams-within-the-http-live-streaming-format-v2.0-13-november-2018.pdf
// Dolby Vision bitstreams:
// https://professional.dolby.com/siteassets/pdfs/dolbyvisionstreamsinisobmffspecification-v2.1.2.pdf
type VideoDoViDecoderConfiguration struct {
	// BlPresentFlag: If a track contains the base layer substream.
	BlPresentFlag bool `json:"blPresentFlag,omitempty"`

	// DvBlSignalCompatibilityId: Whether the stream is compatible with
	// other sets of standard.
	DvBlSignalCompatibilityId int64 `json:"dvBlSignalCompatibilityId,omitempty"`

	DvLevel int64 `json:"dvLevel,omitempty"`

	DvProfile int64 `json:"dvProfile,omitempty"`

	// DvVersionMajor: Specifies the major version number of the Dolby
	// Vision specification that the stream complies with.
	DvVersionMajor int64 `json:"dvVersionMajor,omitempty"`

	// DvVersionMinor: Specifies the minor version number of the Dolby
	// Vision specification that the stream complies with.
	DvVersionMinor int64 `json:"dvVersionMinor,omitempty"`

	// ElPresentFlag: If a track contains the enhancement layer substream.
	ElPresentFlag bool `json:"elPresentFlag,omitempty"`

	// FourccTag: dvhe, dvh1, dvav, dva1:
	// https://screenshot.googleplex.com/ipMGXFqLX9E
	FourccTag string `json:"fourccTag,omitempty"`

	// RpuPresentFlag: If a track contains the reference picture unit
	// substream.
	RpuPresentFlag bool `json:"rpuPresentFlag,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BlPresentFlag") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BlPresentFlag") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoDoViDecoderConfiguration) MarshalJSON() ([]byte, error) {
	type NoMethod VideoDoViDecoderConfiguration
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileColorInfo: A message holding all of the color information
// about a signal: -Color primaries identify the meaning of red, green,
// and blue ( and the white point). -The transfer characteristic
// identifies the mapping used to go between linear and coded values of
// light. -The matrix coefficients identifies, e.g., the conversion
// between Ycbcr to RGB (in the space of the primaries) -And the color
// range defines the min/max of the levels used.
type VideoFileColorInfo struct {
	// Possible values:
	//   "COLOR_MATRIX_COEFFICIENTS_RGB"
	//   "COLOR_MATRIX_COEFFICIENTS_BT709" - Also ITU-R BT1361 / IEC
	// 61966-2-4 xvYCC709 / SMPTE RP177 Annex B.
	//   "COLOR_MATRIX_COEFFICIENTS_UNSPECIFIED"
	//   "COLOR_MATRIX_COEFFICIENTS_FCC"
	//   "COLOR_MATRIX_COEFFICIENTS_BT470BG" - Also ITU-R BT601-6 625 /
	// ITU-R BT1358 625 / ITU-R BT1700 625 PAL & / SECAM / IEC 61966-2-4
	// xvYCC601.
	//   "COLOR_MATRIX_COEFFICIENTS_SMPTE170M" - Also ITU-R BT601-6 525 /
	// ITU-R BT1358 525 / ITU-R BT1700 NTSC / / functionally identical to
	// above.
	//   "COLOR_MATRIX_COEFFICIENTS_SMPTE240M"
	//   "COLOR_MATRIX_COEFFICIENTS_YCOCG" - Used by Dirac / VC-2 and H.264
	// FRext, see ITU-T SG16.
	//   "COLOR_MATRIX_COEFFICIENTS_BT2020_NCL" - ITU-R BT2020 non-constant
	// luminance system.
	//   "COLOR_MATRIX_COEFFICIENTS_BT2020_CL" - ITU-R BT2020 constant
	// luminance system.
	//   "COLOR_MATRIX_COEFFICIENTS_SMPTE2085" - SMPTE 2085, Y'D'zD'x
	//   "COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL" -
	// Chromaticity-derived non-constant luminance.
	//   "COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_CL" -
	// Chromaticity-derived constant luminance.
	//   "COLOR_MATRIX_COEFFICIENTS_ICTCP" - ITU-R BT.[HDR-TV] ICtCp
	MatrixCoefficients string `json:"matrixCoefficients,omitempty"`

	// Possible values:
	//   "COLOR_PRIMARIES_BT709" - Also ITU-R BT1361 / IEC 61966-2-4 / SMPTE
	// RP177 Annex B.
	//   "COLOR_PRIMARIES_UNSPECIFIED"
	//   "COLOR_PRIMARIES_BT470M"
	//   "COLOR_PRIMARIES_BT470BG" - Also ITU-R BT601-6 625 / ITU-R BT1358
	// 625 / ITU-R BT1700 625 PAL & SECAM.
	//   "COLOR_PRIMARIES_SMPTE170M" - Also ITU-R BT601-6 525 / ITU-R BT1358
	// 525 / ITU-R BT1700 NTSC.
	//   "COLOR_PRIMARIES_SMPTE240M" - Functionally identical to above.
	//   "COLOR_PRIMARIES_FILM" - Color filters using Illuminant C.
	//   "COLOR_PRIMARIES_BT2020" - ITU-R BT2020.
	//   "COLOR_PRIMARIES_SMPTEST428_1" - SMPTE ST428-1.
	//   "COLOR_PRIMARIES_SMPTE431" - SMPTE ST431-2
	//   "COLOR_PRIMARIES_SMPTE432" - SMPTE ST432-1
	//   "COLOR_PRIMARIES_JEDEC_P22" - JEDEC P22 phosphors
	Primaries string `json:"primaries,omitempty"`

	// Possible values:
	//   "COLOR_RANGE_UNSPECIFIED"
	//   "COLOR_RANGE_MPEG" - The normal 219*2^(n-8) "MPEG" YUV ranges.
	//   "COLOR_RANGE_JPEG" - The normal 2^n-1 "JPEG" YUV ranges.
	Range string `json:"range,omitempty"`

	// Possible values:
	//   "COLOR_TRANSFER_CHARACTERISTICS_BT709" - Also ITU-R BT1361.
	//   "COLOR_TRANSFER_CHARACTERISTICS_UNSPECIFIED"
	//   "COLOR_TRANSFER_CHARACTERISTICS_GAMMA22" - Also ITU-R BT470M /
	// ITU-R BT1700 625 PAL & SECAM.
	//   "COLOR_TRANSFER_CHARACTERISTICS_GAMMA28" - Also ITU-R BT470BG.
	//   "COLOR_TRANSFER_CHARACTERISTICS_SMPTE170M" - Also ITU-R BT601-6 525
	// or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC.
	//   "COLOR_TRANSFER_CHARACTERISTICS_SMPTE240M"
	//   "COLOR_TRANSFER_CHARACTERISTICS_LINEAR" - Linear transfer
	// characteristics.
	//   "COLOR_TRANSFER_CHARACTERISTICS_LOG" - Logarithmic transfer
	// characteristic (100:1 range).
	//   "COLOR_TRANSFER_CHARACTERISTICS_LOG_SQRT" - Logarithmic transfer
	// characteristic (100 * Sqrt(10) : 1 range).
	//   "COLOR_TRANSFER_CHARACTERISTICS_IEC61966_2_4" - IEC 61966-2-4.
	//   "COLOR_TRANSFER_CHARACTERISTICS_BT1361_ECG" - ITU-R BT1361 Extended
	// Colour Gamut.
	//   "COLOR_TRANSFER_CHARACTERISTICS_IEC61966_2_1" - IEC 61966-2-1 (sRGB
	// or sYCC).
	//   "COLOR_TRANSFER_CHARACTERISTICS_BT2020_10" - ITU-R BT2020 for 10
	// bit system.
	//   "COLOR_TRANSFER_CHARACTERISTICS_BT2020_12" - ITU-R BT2020 for 12
	// bit system.
	//   "COLOR_TRANSFER_CHARACTERISTICS_SMPTEST2084" - SMPTE ST 2084 for
	// 10, 12, 14 and 16 bit systems.
	//   "COLOR_TRANSFER_CHARACTERISTICS_SMPTEST428_1" - SMPTE ST 428-1.
	//   "COLOR_TRANSFER_CHARACTERISTICS_ARIB_STD_B67" - ARIB STD-B67, known
	// as "Hybrid log-gamma".
	TransferCharacteristics string `json:"transferCharacteristics,omitempty"`

	// ForceSendFields is a list of field names (e.g. "MatrixCoefficients")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MatrixCoefficients") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileColorInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileColorInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileContentLightLevel: A message holding the equivalent of the
// content light level information in HEVC or its representation in
// matroska/webm. This gives coarse stats on the luminance levels in the
// content and may be used as a hint by algorithms & displays to tone
// map.
type VideoFileContentLightLevel struct {
	// MaxContentLightLevel: Defines the maximum content light level (in
	// cd/m^2) over the entire video.
	MaxContentLightLevel int64 `json:"maxContentLightLevel,omitempty"`

	// MaxFrameAverageLightLevel: The maximum (over entire video) of the
	// frame average light level.
	MaxFrameAverageLightLevel int64 `json:"maxFrameAverageLightLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "MaxContentLightLevel") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "MaxContentLightLevel") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileContentLightLevel) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileContentLightLevel
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileFramePackingArrangement: Information on Frame Packing
// arrangement
type VideoFileFramePackingArrangement struct {
	// GridOffset0Horizontal: Grid positions
	GridOffset0Horizontal int64 `json:"gridOffset0Horizontal,omitempty"`

	GridOffset0Vertical int64 `json:"gridOffset0Vertical,omitempty"`

	GridOffset1Horizontal int64 `json:"gridOffset1Horizontal,omitempty"`

	GridOffset1Vertical int64 `json:"gridOffset1Vertical,omitempty"`

	// Interpretation: Content interpretation
	//
	// Possible values:
	//   "FPA_INTERPRET_UNKNOWN"
	//   "FPA_INTERPRET_LEFT_FIRST"
	//   "FPA_INTERPRET_RIGHT_FIRST"
	Interpretation string `json:"interpretation,omitempty"`

	// QuincunxSampling: Quincunx sampling flag indicating if quincunx
	// sampling is used
	QuincunxSampling bool `json:"quincunxSampling,omitempty"`

	// Type: Arrangement type
	//
	// Possible values:
	//   "FPA_NONE"
	//   "FPA_CHECKERBOARD"
	//   "FPA_COL_ALTERNATION"
	//   "FPA_ROW_ALTERNATION"
	//   "FPA_SIDE_BY_SIDE"
	//   "FPA_TOP_TO_BOTTOM"
	//   "FPA_FRAME_ALTERNATION"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GridOffset0Horizontal") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "GridOffset0Horizontal") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileFramePackingArrangement) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileFramePackingArrangement
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileHDR10PlusStats: Stats on HDR10+ (SMPTE 2094-40:2016
// standard) over video frames.
type VideoFileHDR10PlusStats struct {
	// ApplicationVersion: Application version is set to max version over
	// all frames.
	ApplicationVersion int64 `json:"applicationVersion,omitempty"`

	// AverageTargetedSystemDisplayMaximumLuminance: The average of the
	// nominal maximum display luminance of the targeted system display over
	// all frames.
	AverageTargetedSystemDisplayMaximumLuminance float64 `json:"averageTargetedSystemDisplayMaximumLuminance,omitempty"`

	// MasteringDisplayActualPeakLuminanceFlag: This flag is set if any
	// frame has it.
	MasteringDisplayActualPeakLuminanceFlag bool `json:"masteringDisplayActualPeakLuminanceFlag,omitempty"`

	MaxNumWindows int64 `json:"maxNumWindows,omitempty"`

	// TargetedSystemDisplayActualPeakLuminanceFlag: This flag is set if any
	// frame has it.
	TargetedSystemDisplayActualPeakLuminanceFlag bool `json:"targetedSystemDisplayActualPeakLuminanceFlag,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ApplicationVersion")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ApplicationVersion") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileHDR10PlusStats) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileHDR10PlusStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoFileHDR10PlusStats) UnmarshalJSON(data []byte) error {
	type NoMethod VideoFileHDR10PlusStats
	var s1 struct {
		AverageTargetedSystemDisplayMaximumLuminance gensupport.JSONFloat64 `json:"averageTargetedSystemDisplayMaximumLuminance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageTargetedSystemDisplayMaximumLuminance = float64(s1.AverageTargetedSystemDisplayMaximumLuminance)
	return nil
}

// VideoFileMasteringDisplayMetadata: A message holding information
// about the mastering display color volume. This metadata can be used
// when tone mapping an HDR signal to a display with a different gamut
// or brightness characteristics than the mastering display. This
// message is capable of containing SMPTE 2086 metadata.
type VideoFileMasteringDisplayMetadata struct {
	// Blue: Coordinates of the blue primary of the mastering display.
	Blue *VideoFileMasteringDisplayMetadataCIE1931Coordinate `json:"blue,omitempty"`

	// Green: Coordinates of the green primary of the mastering display.
	Green *VideoFileMasteringDisplayMetadataCIE1931Coordinate `json:"green,omitempty"`

	// MaxLuminance: Maximum luminance of the display (in cd/m^2).
	MaxLuminance float64 `json:"maxLuminance,omitempty"`

	// MinLuminance: Minimum luminance of the display (in cd/m^2).
	MinLuminance float64 `json:"minLuminance,omitempty"`

	// Red: Coordinates of the red primary of the mastering display.
	Red *VideoFileMasteringDisplayMetadataCIE1931Coordinate `json:"red,omitempty"`

	// WhitePoint: Coordinates of the white point of the mastering display.
	WhitePoint *VideoFileMasteringDisplayMetadataCIE1931Coordinate `json:"whitePoint,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Blue") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Blue") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileMasteringDisplayMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileMasteringDisplayMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoFileMasteringDisplayMetadata) UnmarshalJSON(data []byte) error {
	type NoMethod VideoFileMasteringDisplayMetadata
	var s1 struct {
		MaxLuminance gensupport.JSONFloat64 `json:"maxLuminance"`
		MinLuminance gensupport.JSONFloat64 `json:"minLuminance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxLuminance = float64(s1.MaxLuminance)
	s.MinLuminance = float64(s1.MinLuminance)
	return nil
}

// VideoFileMasteringDisplayMetadataCIE1931Coordinate: Representation of
// a color coordinate in CIE1931 color space.
type VideoFileMasteringDisplayMetadataCIE1931Coordinate struct {
	X float64 `json:"x,omitempty"`

	Y float64 `json:"y,omitempty"`

	// ForceSendFields is a list of field names (e.g. "X") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "X") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileMasteringDisplayMetadataCIE1931Coordinate) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileMasteringDisplayMetadataCIE1931Coordinate
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoFileMasteringDisplayMetadataCIE1931Coordinate) UnmarshalJSON(data []byte) error {
	type NoMethod VideoFileMasteringDisplayMetadataCIE1931Coordinate
	var s1 struct {
		X gensupport.JSONFloat64 `json:"x"`
		Y gensupport.JSONFloat64 `json:"y"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.X = float64(s1.X)
	s.Y = float64(s1.Y)
	return nil
}

// VideoFileSphericalMetadata: Globally allowed spherical meta data.
type VideoFileSphericalMetadata struct {
	// ClampedOptimalFovBounds: Like above, but with high-pass motion
	// filtering applied and yaw rotation limited to +/- 15-degrees
	ClampedOptimalFovBounds *VideoFileSphericalMetadataFOVBounds `json:"clampedOptimalFovBounds,omitempty"`

	Cubemap *VideoFileSphericalMetadataCubemapProjection `json:"cubemap,omitempty"`

	DeprecatedCroppedArea *VideoFileSphericalMetadataCroppedArea `json:"deprecatedCroppedArea,omitempty"`

	// DeprecatedInitialView: InitialView is from v1 spec, and is more or
	// less equivalent to Pose from v2 spec. Therefore, InitialView found in
	// xml metadata would populate the pose field in this proto.
	DeprecatedInitialView *VideoFileSphericalMetadataViewDirection `json:"deprecatedInitialView,omitempty"`

	Equirect *VideoFileSphericalMetadataEquirectProjection `json:"equirect,omitempty"`

	FullPanoHeightPixels int64 `json:"fullPanoHeightPixels,omitempty"`

	// FullPanoWidthPixels: Dimensions of the full video frame.
	FullPanoWidthPixels int64 `json:"fullPanoWidthPixels,omitempty"`

	Mesh *VideoFileSphericalMetadataMeshProjection `json:"mesh,omitempty"`

	// MetadataSource: Metadata source v2(svhd)
	MetadataSource string `json:"metadataSource,omitempty"`

	// OptimalFovBounds: If video contains Wally-sanitized mesh and camera
	// motion metadata (see go/wally-format ), this contains the optimal FOV
	// (smallest FOV that encompass all combinations of input mesh FOV and
	// rotations). This field will only be present if full FfmpegAnalyze is
	// performed.
	OptimalFovBounds *VideoFileSphericalMetadataFOVBounds `json:"optimalFovBounds,omitempty"`

	Pose *VideoFileSphericalMetadataPose `json:"pose,omitempty"`

	// ProjectionType: Mapping type used to map the sphere to the
	// rectangular video E.g., "equirectangular",
	// http://en.wikipedia.org/wiki/Equirectangular_projection This is kept
	// as string so that we can retain values that are unknown to us.
	ProjectionType string `json:"projectionType,omitempty"`

	// SourceCount: The number of camera sources used to generate this
	// video.
	SourceCount int64 `json:"sourceCount,omitempty"`

	// Spherical: Whether the video is spherical or not.
	Spherical bool `json:"spherical,omitempty"`

	// StereoMode: The stereo mode.
	//
	// Possible values:
	//   "STEREO_MODE_UNKNOWN"
	//   "STEREO_MODE_MONO"
	//   "STEREO_MODE_LEFT_RIGHT"
	//   "STEREO_MODE_TOP_BOTTOM"
	StereoMode string `json:"stereoMode,omitempty"`

	// Stitched: Whether the video has already been stitched.
	Stitched bool `json:"stitched,omitempty"`

	// StitchingSoftware: The stitching software.
	StitchingSoftware string `json:"stitchingSoftware,omitempty"`

	// Timestamp: Epoch Timestamp of when the first frame in the video was
	// recorded
	Timestamp int64 `json:"timestamp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "ClampedOptimalFovBounds") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ClampedOptimalFovBounds")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileSphericalMetadataCroppedArea: The cropping coordinates, in
// pixels.
type VideoFileSphericalMetadataCroppedArea struct {
	Height int64 `json:"height,omitempty"`

	Left int64 `json:"left,omitempty"`

	Top int64 `json:"top,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataCroppedArea) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataCroppedArea
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileSphericalMetadataCubemapProjection: Specifies usage of
// cubemap projection.
type VideoFileSphericalMetadataCubemapProjection struct {
	// Layout: Values 0 to 255 are reserved for current and future layouts.
	// Value of 0 corresponds to a grid with 3 columns and 2 rows as
	// follows: | right face | left face | up face | | down face | front
	// face | back face |
	Layout int64 `json:"layout,omitempty"`

	// Padding: Number of pixels to pad from the edge of each cube face
	Padding int64 `json:"padding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Layout") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Layout") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataCubemapProjection) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataCubemapProjection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileSphericalMetadataEquirectProjection: Specifies usage of
// equirectangular projection. More specifically, these are the
// proportion of projection cropped from each edge not covered by the
// video frame. For uncropped frame, all values are 0. For v1 metadata,
// this contains CroppedArea information (CroppedAreaLeftPixels,
// CroppedAreaTopPixels, CroppedAreaImageWidthPixels,
// CroppedAreaImageHeightPixels)
type VideoFileSphericalMetadataEquirectProjection struct {
	ProjectionBoundsBottom int64 `json:"projectionBoundsBottom,omitempty"`

	ProjectionBoundsLeft int64 `json:"projectionBoundsLeft,omitempty"`

	ProjectionBoundsRight int64 `json:"projectionBoundsRight,omitempty"`

	ProjectionBoundsTop int64 `json:"projectionBoundsTop,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ProjectionBoundsBottom") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProjectionBoundsBottom")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataEquirectProjection) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataEquirectProjection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoFileSphericalMetadataFOVBounds struct {
	EndTiltInDegrees float64 `json:"endTiltInDegrees,omitempty"`

	EndYawInDegrees float64 `json:"endYawInDegrees,omitempty"`

	StartTiltInDegrees float64 `json:"startTiltInDegrees,omitempty"`

	StartYawInDegrees float64 `json:"startYawInDegrees,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTiltInDegrees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndTiltInDegrees") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataFOVBounds) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataFOVBounds
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoFileSphericalMetadataFOVBounds) UnmarshalJSON(data []byte) error {
	type NoMethod VideoFileSphericalMetadataFOVBounds
	var s1 struct {
		EndTiltInDegrees   gensupport.JSONFloat64 `json:"endTiltInDegrees"`
		EndYawInDegrees    gensupport.JSONFloat64 `json:"endYawInDegrees"`
		StartTiltInDegrees gensupport.JSONFloat64 `json:"startTiltInDegrees"`
		StartYawInDegrees  gensupport.JSONFloat64 `json:"startYawInDegrees"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.EndTiltInDegrees = float64(s1.EndTiltInDegrees)
	s.EndYawInDegrees = float64(s1.EndYawInDegrees)
	s.StartTiltInDegrees = float64(s1.StartTiltInDegrees)
	s.StartYawInDegrees = float64(s1.StartYawInDegrees)
	return nil
}

// VideoFileSphericalMetadataMeshProjection: Specifies usage of mesh
// projection. "content" contains the mshp atom: version/flags, CRC,
// compression method, description of the mesh(es) (vertices,
// coordinates corresponding to each vertex, and vertex lists to
// describe the projection). See go/pir-spec for mshp atom data layout.
type VideoFileSphericalMetadataMeshProjection struct {
	// Bounds: Once mesh is analyzed, this field contains the bounds of the
	// mesh(es) In case of stereo mesh, this will be the aggregate of both
	// eye meshes
	Bounds *VideoFileSphericalMetadataFOVBounds `json:"bounds,omitempty"`

	Content string `json:"content,omitempty"`

	// Type: The mesh type field will only be populated when we have done
	// analysis on the mesh. If this field is missing, mesh analysis has not
	// been done.
	//
	// Possible values:
	//   "MESH_TYPE_UNKNOWN"
	//   "MESH_TYPE_WALLY_FISHEYE" - Wally mesh: see go/wally-format and
	// go/wallymesh.
	//   "MESH_TYPE_WALLY_CROPPED_EQUIRECT"
	//   "MESH_TYPE_WALLY_FOVEATED" - go/wally-foveated-mesh-dd
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bounds") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bounds") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataMeshProjection) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataMeshProjection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoFileSphericalMetadataPose: Specifies the compass heading, pitch
// & roll for the origin of the projection. The origin for the
// "equirectangular" projection is the center of the image. The origin
// for the other projection types is defined as the location in the
// image that corresponds to the origin of an "equirectangular"
// projection.
type VideoFileSphericalMetadataPose struct {
	HeadingDegrees float64 `json:"headingDegrees,omitempty"`

	PitchDegrees float64 `json:"pitchDegrees,omitempty"`

	RollDegrees float64 `json:"rollDegrees,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HeadingDegrees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HeadingDegrees") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataPose) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataPose
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoFileSphericalMetadataPose) UnmarshalJSON(data []byte) error {
	type NoMethod VideoFileSphericalMetadataPose
	var s1 struct {
		HeadingDegrees gensupport.JSONFloat64 `json:"headingDegrees"`
		PitchDegrees   gensupport.JSONFloat64 `json:"pitchDegrees"`
		RollDegrees    gensupport.JSONFloat64 `json:"rollDegrees"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.HeadingDegrees = float64(s1.HeadingDegrees)
	s.PitchDegrees = float64(s1.PitchDegrees)
	s.RollDegrees = float64(s1.RollDegrees)
	return nil
}

type VideoFileSphericalMetadataViewDirection struct {
	HeadingDegrees int64 `json:"headingDegrees,omitempty"`

	PitchDegrees int64 `json:"pitchDegrees,omitempty"`

	RollDegrees int64 `json:"rollDegrees,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HeadingDegrees") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HeadingDegrees") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoFileSphericalMetadataViewDirection) MarshalJSON() ([]byte, error) {
	type NoMethod VideoFileSphericalMetadataViewDirection
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoLegosLegosAnnotationsSet struct {
	FeatureSetName string `json:"featureSetName,omitempty"`

	LegosAnnotations *YoutubeDiscoveryLegosLegosAnnotations `json:"legosAnnotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FeatureSetName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FeatureSetName") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoLegosLegosAnnotationsSet) MarshalJSON() ([]byte, error) {
	type NoMethod VideoLegosLegosAnnotationsSet
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoLegosLegosAnnotationsSets struct {
	AnnotationsSet []*VideoLegosLegosAnnotationsSet `json:"annotationsSet,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnnotationsSet") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnnotationsSet") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoLegosLegosAnnotationsSets) MarshalJSON() ([]byte, error) {
	type NoMethod VideoLegosLegosAnnotationsSets
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoMediaInfo: Feel free to ignore this lint warning if only the
// trivia (e.g., comments) is is changed. LINT.IfChange
type VideoMediaInfo struct {
	// AudioStream: Each entry corresponds to one audio stream in the
	// original media file.
	AudioStream []*VideoAudioStream `json:"audioStream,omitempty"`

	// ContainerId: Container type of the file, e.g. FLV, H264, MP3. Uses
	// the numeric value corresponding to the ContainerId enum objects, in
	// order to avoid the dependency on vsi/videostreaminfo.proto.
	// http://cs/symbol:ContainerId%20f:google3/video/vidproc/vsi/videostreaminfo.proto
	ContainerId int64 `json:"containerId,omitempty"`

	// FileSize: Media file size in bytes.
	FileSize int64 `json:"fileSize,omitempty,string"`

	// Overview: This is a high-level description of the media. It does not
	// contain PII.
	Overview *VideoMediaOverview `json:"overview,omitempty"`

	// VideoStream: Each entry corresponds to one video stream (usually just
	// one) in the original media file.
	VideoStream []*VideoVideoStream `json:"videoStream,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioStream") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioStream") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoMediaOverview: Next ID: 19 IMPORTANT: This file is used in
// scattered directories, such that it is risky to add values to any
// enumerated type. (First of all, compilation breaks on switch
// statements without default clauses.) Run a global tap presubmit:
// tap_presubmit -p all --train -c before submitting. Also check out the
// blame layer of previous updates for hints on what other files to
// changes.
type VideoMediaOverview struct {
	// Possible values:
	//   "ASPECT_RATIO_UNKNOWN"
	//   "ASPECT_RATIO_1_1"
	//   "ASPECT_RATIO_3_2"
	//   "ASPECT_RATIO_4_3"
	//   "ASPECT_RATIO_16_9"
	AspectRatio string `json:"aspectRatio,omitempty"`

	AudioOverview []*VideoMediaOverviewAudioOverview `json:"audioOverview,omitempty"`

	// Possible values:
	//   "AUTHORING_TOOL_UNKNOWN"
	//   "AUTHORING_TOOL_GWD" - Google Web Designer
	AuthoringTool string `json:"authoringTool,omitempty"`

	// Possible values:
	//   "COLOR_DYNAMIC_RANGE_UNKNOWN"
	//   "COLOR_DYNAMIC_RANGE_STANDARD"
	//   "COLOR_DYNAMIC_RANGE_HIGH"
	ColorDynamicRange string `json:"colorDynamicRange,omitempty"`

	// CreationTimeStampUsec: Creation timestamp of this media_info, in Unix
	// timestamp since epoch.
	CreationTimeStampUsec int64 `json:"creationTimeStampUsec,omitempty,string"`

	DataOverview []*VideoMediaOverviewDataOverview `json:"dataOverview,omitempty"`

	// Possible values:
	//   "FRAME_RATE_UNKNOWN"
	//   "FRAME_RATE_STANDARD" - less than 40 fps.
	//   "FRAME_RATE_HIGH" - 40 <= fps < 80
	//   "FRAME_RATE_ULTRA_HIGH" - 80 <= fps
	FrameRate string `json:"frameRate,omitempty"`

	// HasChapters: Currently used by originals replacement pipeline to
	// exclude all videos containing chapter info.
	HasChapters bool `json:"hasChapters,omitempty"`

	MediaClipInfoOverview *VideoMediaOverviewMediaClipInfoOverview `json:"mediaClipInfoOverview,omitempty"`

	// Possible values:
	//   "ORIENTATION_UNKNOWN"
	//   "ORIENTATION_PORTRAIT"
	//   "ORIENTATION_LANDSCAPE"
	Orientation string `json:"orientation,omitempty"`

	// Possible values:
	//   "ORIGIN_UNKNOWN"
	//   "ORIGIN_CLIENT" - Provided by the client.
	//   "ORIGIN_UPLOAD" - Assessed during upload before all bytes are
	// available.
	//   "ORIGIN_PROCESSING" - Assessed during processing.
	Origin string `json:"origin,omitempty"`

	// Possible values:
	//   "PROJECTION_UNKNOWN"
	//   "PROJECTION_RECTANGULAR" - a regular, non projected video
	//   "PROJECTION_SPHERICAL" - 360 content
	//   "PROJECTION_PARTIALLY_SPHERICAL" - go/3d180
	Projection string `json:"projection,omitempty"`

	// Possible values:
	//   "RESOLUTION_UNKNOWN"
	//   "RESOLUTION_ULTRA_LOW" - Common Interchange Format or smaller.
	//   "RESOLUTION_LOW" - Below standard definition, larger than CIF.
	//   "RESOLUTION_SD" - Ever-larger levels of resolution. Check multiple
	// values to check "1080p or higher", for example.
	//   "RESOLUTION_720P"
	//   "RESOLUTION_1080P"
	//   "RESOLUTION_2K"
	//   "RESOLUTION_4K"
	//   "RESOLUTION_8K"
	Resolution string `json:"resolution,omitempty"`

	// Possible values:
	//   "SPATIAL_AUDIO_MODE_UNKNOWN"
	//   "SPATIAL_AUDIO_MODE_NON_SPATIAL"
	//   "SPATIAL_AUDIO_MODE_SPATIAL"
	SpatialAudioMode string `json:"spatialAudioMode,omitempty"`

	// Possible values:
	//   "STEREO_MODE_UNKNOWN"
	//   "STEREO_MODE_TWO_D"
	//   "STEREO_MODE_SIDE_BY_SIDE" - 3-D. Always left-to-right.
	//   "STEREO_MODE_TOP_BOTTOM" - 3-D. Bottom-to-top not supported.
	StereoMode string `json:"stereoMode,omitempty"`

	TimedtextOverview []*VideoMediaOverviewTimedTextOverview `json:"timedtextOverview,omitempty"`

	VideoOverview []*VideoMediaOverviewVideoOverview `json:"videoOverview,omitempty"`

	// WallyMeshType: This only applies when: projection =
	// PROJECTION_PARTIALLY_SPHERICAL
	//
	// Possible values:
	//   "MESH_TYPE_UNKNOWN"
	//   "MESH_TYPE_WALLY_FISHEYE" - Wally mesh: see go/wally-format and
	// go/wallymesh.
	//   "MESH_TYPE_WALLY_CROPPED_EQUIRECT"
	WallyMeshType string `json:"wallyMeshType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AspectRatio") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AspectRatio") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaOverview) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaOverview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoMediaOverviewAudioOverview: Audio stream description with no
// PII.
type VideoMediaOverviewAudioOverview struct {
	// Channels: Number of audio channels.
	Channels int64 `json:"channels,omitempty"`

	// ContentType: Content type of the audio track extracted from VSI. This
	// is only populated with valid "acont" xtag values at the moment, i.e.,
	// if VSI reports an invalid string, we ignore it. Supported acont xtag
	// values can be found in
	// google3/video/storage/common/xtag_validation.cc. Examples:
	// "original", "dubbed", "descriptive", "commentary", etc.
	ContentType string `json:"contentType,omitempty"`

	// Language: Language of the audio track extracted from VSI. Populated
	// if it's deemed a valid code by ISO639-2b, ISO639-2t or III library.
	Language string `json:"language,omitempty"`

	Loudness1770Lkfs float64 `json:"loudness1770Lkfs,omitempty"`

	// RoundedUpOriginalDurationSec: Approximate audio length, has the same
	// caveats as its video equivalent.
	RoundedUpOriginalDurationSec int64 `json:"roundedUpOriginalDurationSec,omitempty"`

	// Possible values:
	//   "SPATIAL_AUDIO_MODE_UNKNOWN"
	//   "SPATIAL_AUDIO_MODE_NON_SPATIAL"
	//   "SPATIAL_AUDIO_MODE_SPATIAL"
	SpatialAudioMode string `json:"spatialAudioMode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Channels") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Channels") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaOverviewAudioOverview) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaOverviewAudioOverview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoMediaOverviewAudioOverview) UnmarshalJSON(data []byte) error {
	type NoMethod VideoMediaOverviewAudioOverview
	var s1 struct {
		Loudness1770Lkfs gensupport.JSONFloat64 `json:"loudness1770Lkfs"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Loudness1770Lkfs = float64(s1.Loudness1770Lkfs)
	return nil
}

// VideoMediaOverviewDataOverview: Data stream description with no PII.
// Currently used by originals replacement pipeline to exclude all clips
// that have data streams. Fields in proto are used to exclude clips
// with certain types of data streams.
type VideoMediaOverviewDataOverview struct {
	// HasCameraMotionMetadata: Whether the data stream has camera motion
	// metadata (dynamic) or not (static). Some Wally/VR180 videos do.
	HasCameraMotionMetadata bool `json:"hasCameraMotionMetadata,omitempty"`

	// HasOzoAudio: If true, source contains metadata for OZO spatial audio
	// support. See b/62393568 for more information about the OZO spatial
	// audio format. Note that SpatialAudioMode is independent of this
	// format.
	HasOzoAudio bool `json:"hasOzoAudio,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "HasCameraMotionMetadata") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HasCameraMotionMetadata")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaOverviewDataOverview) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaOverviewDataOverview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoMediaOverviewMediaClipInfoOverview: Video clip info description
// with no PII.
type VideoMediaOverviewMediaClipInfoOverview struct {
	// HasGeolocation: Corresponds to
	// vsi.video_clip_info().has_geolocation()
	HasGeolocation bool `json:"hasGeolocation,omitempty"`

	// ForceSendFields is a list of field names (e.g. "HasGeolocation") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "HasGeolocation") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaOverviewMediaClipInfoOverview) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaOverviewMediaClipInfoOverview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoMediaOverviewTimedTextOverview: Timed text stream description
// with no PII. Currently used by originals replacement pipeline to
// exclude all clips that have timed text streams. Add fields to proto
// if we want to only exclude clips with certain types of timed text
// streams in the future.
type VideoMediaOverviewTimedTextOverview struct {
}

// VideoMediaOverviewVideoOverview: Video stream description with no
// PII.
type VideoMediaOverviewVideoOverview struct {
	// Possible values:
	//   "ASPECT_RATIO_UNKNOWN"
	//   "ASPECT_RATIO_1_1"
	//   "ASPECT_RATIO_3_2"
	//   "ASPECT_RATIO_4_3"
	//   "ASPECT_RATIO_16_9"
	AspectRatio string `json:"aspectRatio,omitempty"`

	// AverageFps: Prefer average_fps to match the logic used in transcoder
	// for format profile frame rate checks. First added for Photos, see
	// b/165839654.
	AverageFps float64 `json:"averageFps,omitempty"`

	CodecId int64 `json:"codecId,omitempty"`

	// Possible values:
	//   "COLOR_DYNAMIC_RANGE_UNKNOWN"
	//   "COLOR_DYNAMIC_RANGE_STANDARD"
	//   "COLOR_DYNAMIC_RANGE_HIGH"
	ColorDynamicRange string `json:"colorDynamicRange,omitempty"`

	Fps float64 `json:"fps,omitempty"`

	Height int64 `json:"height,omitempty"`

	// Possible values:
	//   "RESOLUTION_UNKNOWN"
	//   "RESOLUTION_ULTRA_LOW" - Common Interchange Format or smaller.
	//   "RESOLUTION_LOW" - Below standard definition, larger than CIF.
	//   "RESOLUTION_SD" - Ever-larger levels of resolution. Check multiple
	// values to check "1080p or higher", for example.
	//   "RESOLUTION_720P"
	//   "RESOLUTION_1080P"
	//   "RESOLUTION_2K"
	//   "RESOLUTION_4K"
	//   "RESOLUTION_8K"
	Resolution string `json:"resolution,omitempty"`

	// RoundedUpOriginalDurationSec: Approximate video length. Data is
	// rounded up to the next second, to avoid being PII. (Long ago, YTFE
	// set a precedent of rounding up durations, rather than rounding to the
	// closest second.) This value is derived from metadata in the source
	// video, and often differs from the actual duration of any given
	// transcode. In videos without valid timestamps, this value is not
	// calculable, and is reported as zero. Prefer the value from
	// MediaInfo::VideoStream over this value, which was added to resolve
	// b/202864365.
	RoundedUpOriginalDurationSec int64 `json:"roundedUpOriginalDurationSec,omitempty"`

	VideoHasClosedCaptions bool `json:"videoHasClosedCaptions,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AspectRatio") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AspectRatio") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoMediaOverviewVideoOverview) MarshalJSON() ([]byte, error) {
	type NoMethod VideoMediaOverviewVideoOverview
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoMediaOverviewVideoOverview) UnmarshalJSON(data []byte) error {
	type NoMethod VideoMediaOverviewVideoOverview
	var s1 struct {
		AverageFps gensupport.JSONFloat64 `json:"averageFps"`
		Fps        gensupport.JSONFloat64 `json:"fps"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageFps = float64(s1.AverageFps)
	s.Fps = float64(s1.Fps)
	return nil
}

type VideoPerDocData struct {
	CoreSignals *MediaIndexVideoCoreSignals `json:"coreSignals,omitempty"`

	Frames *MediaIndexVideoFrames `json:"frames,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CoreSignals") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CoreSignals") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoPerDocData) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPerDocData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoPipelineViperThumbnailerColumnData struct {
	// FrameBlobRefs: The blobRef where the representative frame is stored.
	// This is repeated in order to support multiple thumbnails in the
	// future.
	FrameBlobRefs []*BlobstoreBlobRef `json:"frameBlobRefs,omitempty"`

	// FrameFileList: Video frame files (based on file_dir_to_save_frames
	// parameter)
	FrameFileList *VideoThumbnailsFrameFileList `json:"frameFileList,omitempty"`

	// FrameTypeGenerated: Frame type generated (VR/360/3D/default).
	//
	// Possible values:
	//   "FRAME_TYPE_DEFAULT"
	//   "FRAME_TYPE_VR"
	//   "FRAME_TYPE_360"
	//   "FRAME_TYPE_3D"
	//   "FRAME_TYPE_VR180_LEFT_RIGHT"
	//   "FRAME_TYPE_VR180_TOP_BOTTOM"
	FrameTypeGenerated string `json:"frameTypeGenerated,omitempty"`

	// GeneratedFromDrishtiThumbnailer: True if the thumbnails are generated
	// from drishti_thumbnailer.
	GeneratedFromDrishtiThumbnailer bool `json:"generatedFromDrishtiThumbnailer,omitempty"`

	HighResPreviewThumbnailGenerated bool `json:"highResPreviewThumbnailGenerated,omitempty"`

	// Hq720Generated: hq720.jpg is a 1280x720 pixel image generated only
	// when the input video resolution is 1280x720 or higher.
	Hq720Generated bool `json:"hq720Generated,omitempty"`

	// HqdefaultGenerated: The flags below indicate whether certain optional
	// thumbnail images were generated. hqdefault.jpg is a 480x360 pixel
	// high quality image which should normally be always generated.
	HqdefaultGenerated bool `json:"hqdefaultGenerated,omitempty"`

	// HvcBackupGenerated: True if a set of backup HVC thumbnails is
	// generated.
	HvcBackupGenerated bool `json:"hvcBackupGenerated,omitempty"`

	// ImprovedVerticalGenerated: True if the thumbnails are generated with
	// background crop and scrim.
	ImprovedVerticalGenerated bool `json:"improvedVerticalGenerated,omitempty"`

	// MaxresdefaultGenerated: maxresdefault.jpg is an image of the same
	// resolution as the input video. It is generated only when the input
	// video is significantly higher-resolution than 640x480.
	MaxresdefaultGenerated bool `json:"maxresdefaultGenerated,omitempty"`

	// MaxresdefaultHeight: Height of the generated maxresdefault thumbnail.
	MaxresdefaultHeight int64 `json:"maxresdefaultHeight,omitempty"`

	// MaxresdefaultWidth: Width of the generated maxresdefault thumbnail.
	MaxresdefaultWidth int64 `json:"maxresdefaultWidth,omitempty"`

	// MovingThumbnailGenerated: True if moving thumbnails are generated.
	MovingThumbnailGenerated bool `json:"movingThumbnailGenerated,omitempty"`

	// PrivateThumbnailsGenerated: True if private thumbnails were generated
	// and stored in the thumbnail database.
	PrivateThumbnailsGenerated bool `json:"privateThumbnailsGenerated,omitempty"`

	// PublicThumbnailsGenerated: True if public thumbnails were generated
	// and stored in the thumbnail database.
	PublicThumbnailsGenerated bool `json:"publicThumbnailsGenerated,omitempty"`

	// RerunStatus: Analysis result of running the rerun thumbnailer
	//
	// Possible values:
	//   "RERUN_FAILED"
	//   "RERUN_NO_ACTION_CUSTOM_THUMB"
	//   "RERUN_NO_ACTION_ALREADY_EXISTS"
	//   "RERUN_NO_ACTION_RECOMPUTE_DISABLED"
	//   "RERUN_NO_ACTION_DEFAULT_THUMBNAILS_MISSING"
	//   "RERUN_NO_ACTION_DEFAULT_THUMBNAILS_TIMESTAMP_MISSING"
	//   "RERUN_NO_ACTION_THUMBNAIL_SERVICE_FAILURE"
	//   "RERUN_NO_ACTION_UNUSUAL_THUMBNAIL_DATA"
	//   "RERUN_PERFORM_EXTRACTION"
	RerunStatus string `json:"rerunStatus,omitempty"`

	// SddefaultGenerated: sddefault.jpg is a 640x480 pixel image generated
	// only when the input video resolution is 640x480 or higher.
	SddefaultGenerated bool `json:"sddefaultGenerated,omitempty"`

	// StoryboardGenerated: This flag indicates if storyboard mosaic images
	// were generated and stored in the thumbnail database.
	StoryboardGenerated bool `json:"storyboardGenerated,omitempty"`

	// StoryboardNumLevels: Number of levels of storyboard generated (0 if
	// policy default).
	StoryboardNumLevels int64 `json:"storyboardNumLevels,omitempty"`

	// StoryboardPolicy: Policy number that governed the storyboard
	// generation. If zero, no policy was used and the storyboard format is
	// not fully specified by the parameters contained in this message.
	StoryboardPolicy int64 `json:"storyboardPolicy,omitempty"`

	// StoryboardVersion: Version of the storyboard.
	StoryboardVersion int64 `json:"storyboardVersion,omitempty"`

	// StoryboardVideoDurationMs: Video duration of the video.
	StoryboardVideoDurationMs int64 `json:"storyboardVideoDurationMs,omitempty"`

	// StoryboardVideoHeight: Height of the video that was storyboarded.
	StoryboardVideoHeight int64 `json:"storyboardVideoHeight,omitempty"`

	// StoryboardVideoWidth: Width of the video that was storyboarded.
	StoryboardVideoWidth int64 `json:"storyboardVideoWidth,omitempty"`

	// WebpGenerated: This flag indicates if images in WebP format were
	// created and stored in the thumbnail database.
	WebpGenerated bool `json:"webpGenerated,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameBlobRefs") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameBlobRefs") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoPipelineViperThumbnailerColumnData) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPipelineViperThumbnailerColumnData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoPipelineViperVSIColumnData struct {
	Info *VideoVideoStreamInfo `json:"info,omitempty"`

	// InputReadTime: Total time taken in seconds to read the input
	InputReadTime float64 `json:"inputReadTime,omitempty"`

	// PartialFile: Was the VSI computed on a partial file ?
	PartialFile bool `json:"partialFile,omitempty"`

	// TotalVsiTime: Total time (of all attempts) taken in seconds to
	// compute VSI
	TotalVsiTime float64 `json:"totalVsiTime,omitempty"`

	VsiStats []*VideoPipelineViperVSIColumnDataVsiStats `json:"vsiStats,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Info") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Info") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoPipelineViperVSIColumnData) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPipelineViperVSIColumnData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoPipelineViperVSIColumnData) UnmarshalJSON(data []byte) error {
	type NoMethod VideoPipelineViperVSIColumnData
	var s1 struct {
		InputReadTime gensupport.JSONFloat64 `json:"inputReadTime"`
		TotalVsiTime  gensupport.JSONFloat64 `json:"totalVsiTime"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.InputReadTime = float64(s1.InputReadTime)
	s.TotalVsiTime = float64(s1.TotalVsiTime)
	return nil
}

// VideoPipelineViperVSIColumnDataVsiStats: The stats of each output
// vsi.
type VideoPipelineViperVSIColumnDataVsiStats struct {
	// PartialVsi: True if the output vsi is a partial vsi.
	PartialVsi bool `json:"partialVsi,omitempty"`

	// VsiTime: The time (in secondes) from vsi_engine init to vsi written
	// to output buffer.
	VsiTime float64 `json:"vsiTime,omitempty"`

	// ForceSendFields is a list of field names (e.g. "PartialVsi") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "PartialVsi") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoPipelineViperVSIColumnDataVsiStats) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPipelineViperVSIColumnDataVsiStats
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoPipelineViperVSIColumnDataVsiStats) UnmarshalJSON(data []byte) error {
	type NoMethod VideoPipelineViperVSIColumnDataVsiStats
	var s1 struct {
		VsiTime gensupport.JSONFloat64 `json:"vsiTime"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.VsiTime = float64(s1.VsiTime)
	return nil
}

type VideoRational32 struct {
	Denominator int64 `json:"denominator,omitempty"`

	Numerator int64 `json:"numerator,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Denominator") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Denominator") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoRational32) MarshalJSON() ([]byte, error) {
	type NoMethod VideoRational32
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoSEIMessage: This SEI message only takes the payload type and the
// sum of the payload sizes for all SEI messages of this type. More
// informations, such as timestamp, payload, may be added in the future.
type VideoSEIMessage struct {
	// Count: message count of each payloadtype
	Count int64 `json:"count,omitempty"`

	// CumulativeSize: If the video stream has multiple SEI messages with
	// the same payload type, this is the sum of all these payloads' sizes.
	CumulativeSize int64 `json:"cumulativeSize,omitempty,string"`

	// Payloadtype: use int type in case there are payload types that are
	// not included in the SEIPayloadType enum below. The enum can be used
	// for lookup
	Payloadtype int64 `json:"payloadtype,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoSEIMessage) MarshalJSON() ([]byte, error) {
	type NoMethod VideoSEIMessage
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoStorageLoudnessData: Measurement of loudness. Next tag = 3
type VideoStorageLoudnessData struct {
	// Itu1770LoudnessDb: Loudness measured using ITU-R BS. 1770
	Itu1770LoudnessDb float64 `json:"itu1770LoudnessDb,omitempty"`

	// PerceptualLoudnessDb: Perceived loudness of audio measured using
	// replaygain.
	PerceptualLoudnessDb float64 `json:"perceptualLoudnessDb,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Itu1770LoudnessDb")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Itu1770LoudnessDb") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoStorageLoudnessData) MarshalJSON() ([]byte, error) {
	type NoMethod VideoStorageLoudnessData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoStorageLoudnessData) UnmarshalJSON(data []byte) error {
	type NoMethod VideoStorageLoudnessData
	var s1 struct {
		Itu1770LoudnessDb    gensupport.JSONFloat64 `json:"itu1770LoudnessDb"`
		PerceptualLoudnessDb gensupport.JSONFloat64 `json:"perceptualLoudnessDb"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Itu1770LoudnessDb = float64(s1.Itu1770LoudnessDb)
	s.PerceptualLoudnessDb = float64(s1.PerceptualLoudnessDb)
	return nil
}

// VideoThumbnailsFrameFile: Individual video frame saved in an image
// file.
type VideoThumbnailsFrameFile struct {
	Filename string `json:"filename,omitempty"`

	Height int64 `json:"height,omitempty"`

	MsOffset int64 `json:"msOffset,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Filename") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Filename") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoThumbnailsFrameFile) MarshalJSON() ([]byte, error) {
	type NoMethod VideoThumbnailsFrameFile
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoThumbnailsFrameFileList: List of individual video frames, each
// saved as an image file
type VideoThumbnailsFrameFileList struct {
	FrameFiles []*VideoThumbnailsFrameFile `json:"frameFiles,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FrameFiles") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FrameFiles") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoThumbnailsFrameFileList) MarshalJSON() ([]byte, error) {
	type NoMethod VideoThumbnailsFrameFileList
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoThumbnailsThumbnailScore: LINT.IfChange Score calculated from a
// thumbnail. NextID: 15
type VideoThumbnailsThumbnailScore struct {
	// Checksum: Checksum of the thumbnail bytes used to identify which
	// image the score belongs to. Only filled when thumbnail version is 0.
	Checksum uint64 `json:"checksum,omitempty,string"`

	// ColorSampling: Color sampling score encoded as uint32. Encode/Decode
	// using youtube::color::RgbToUint / UIntToRgb. Field is only relevant
	// for TYPE_COLOR_SAMPLING.
	ColorSampling int64 `json:"colorSampling,omitempty"`

	// DenseFeatures: Thumbnail dense features.
	DenseFeatures []float64 `json:"denseFeatures,omitempty"`

	// DenseGeneralExtraFeatures: FeatureExtra extension for dense features.
	DenseGeneralExtraFeatures *DrishtiFeatureExtra `json:"denseGeneralExtraFeatures,omitempty"`

	// IsAssigned: If true, score is manually assigned.
	IsAssigned bool `json:"isAssigned,omitempty"`

	// IsInstant: If true, score will be instantly indexed by YouTube search
	// indexer.
	IsInstant bool `json:"isInstant,omitempty"`

	// Possible values:
	//   "MODEL_VERSION_UNKNOWN"
	//   "MODEL_VERSION_ONE" - First version for each score type (except
	// racy_watchpage). Score is calibrated to between [0, 1]
	// (go/improve-yt-thumb-racy-scorer).
	//   "MODEL_VERSION_TWO" - Second version for golden thumbnail features.
	//   "MODEL_VERSION_THREE" - Third version for golden thumbnail
	// features.
	//   "MODEL_VERSION_FOUR" - Fourth version for golden thumbnail
	// features.
	//   "MODEL_RACY_WATCHPAGE_2018_01_15" - Model described here:
	// https://g3doc.corp.google.com/company/teams/safesearch/signals/web/racy_watchpage/index.md
	//   "MODEL_RACY_WATCHPAGE_2020_04_20" - Racy watchpage score v5 using
	// racy watchpage model v2 (go/racy-watchpage-v2).
	//   "MODEL_RACY_WATCHPAGE_2020_04_20A" - Historical: Used before
	// 07/01/2020. Racy watchpage model v2, experimenting calibration to
	// precision.
	//   "MODEL_RACY_WATCHPAGE_2020_04_20_FLAGGED" - Flagged racy watchpage
	// score v5 using racy watchpage model v2.
	//   "MODEL_RACY_WATCHPAGE_2021_05_04" - Racy watchpage score v6 using
	// racy watchpage model v3 (go/racy-watchpage-v3).
	//   "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED" - Flagged racy watchpage
	// score v6 using racy watchpage model v3.
	//   "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_SHORTS" - Flagged racy
	// watchpage score v6 using racy watchpage model v3 and shorts video
	// reports.
	//   "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_HOME" - Flagged racy
	// watchpage score v6 using racy watchpage model v3 calibrated for home.
	//   "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_WATCHNEXT" - Flagged racy
	// watchpage score v6 using racy watchpage model v3 calibrated for
	// watchnext.
	//   "MODEL_RACY_WATCHPAGE_V4" - Racy watchpage model v4
	// (go/racy-watchpage-v4).
	//   "MODEL_RACY_WATCHPAGE_RELEASE" - Racy watchpage release version.
	//   "MODEL_RACY_SHORTS_WATCHPAGE_V1" - Racy shorts watchpage model v1.
	//   "MODEL_RACY_SHORTS_WATCHPAGE_V1_FLAGGED"
	//   "MODEL_RACY_SHORTS_WATCHPAGE_V2" - Racy shorts watchpage model v2.
	//   "MODEL_RACY_SHORTS_WATCHPAGE_V2_FLAGGED"
	//   "MODEL_RACY_SHORTS_WATCHPAGE_RELEASE" - Racy shorts watchpage
	// release version.
	//   "MODEL_RACY_THUMB_2019_04_02" - Racy thumb model which corresponds
	// to https://mldash.corp.google.com/experiments/156747527161891342
	//   "MODEL_RACY_THUMB_2019_08_12" - Racy thumb model V3 based on
	// cotraining.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12A" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 1.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12B" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 2.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12C" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 3.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12D" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12E" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 5.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12_CALIBRATED" - Racy thumb model V3
	// after calibration.
	//   "MODEL_RACY_THUMB_2019_08_12_FLAGGED" - Flagged racy watchpage
	// model using racy thumbnail V3 score.
	//   "MODEL_RACY_THUMB_RELEASE" - Racy thumbnail release version.
	//   "MODEL_QUALITY_2019_09_24" - Quality thumb model V2 trained using
	// search page quality ratings.
	//   "MODEL_QUALITY_2019_11_11"
	//   "MODEL_QUALITY_2020_11_12" - Quality thumb model V3.
	//   "MODEL_RACY_THUMB_2019_08_12_4A" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4A.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12_4B" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4B.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12_4C" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4C.
	// https://mldash.corp.google.com/experiments/2626243069925683800
	//   "MODEL_RACY_THUMB_2019_08_12_UPDATEDSS" - Historical: Used before
	// 05/06/2020. Racy thumb model V3 based on cotraining. Variant for
	// Safesearch Update.
	//   "MODEL_RACY_THUMB_2019_04_02_ABLATE_ALL" - Historical: Used before
	// 03/11/2020.
	//   "MODEL_RACY_THUMB_2019_04_02_ABLATE_V3" - Historical: Used before
	// 03/11/2020.
	//   "MODEL_RACY_THUMB_2019_08_12_ABLATE_HUMAN_RATING" - Historical:
	// Used before 03/11/2020.
	//   "MODEL_RACY_THUMB_2019_08_12_ABLATE_USER_FLAGGING" - Historical:
	// Used before 03/11/2020.
	//   "MODEL_RACY_THUMB_2020_02_24" - Racy thumb model V4 based on
	// unified training.
	//   "MODEL_RACY_THUMB_2020_02_24_CALIBRATED" - Racy thumb model V4
	// based on unified training after calibration with MODEL_VERSION_ONE.
	//   "MODEL_RACY_THUMB_2020_02_24_FLAGGED" - Flagged racy watchpage
	// model using racy thumbnail V4 score.
	//   "MODEL_RACY_THUMB_2020_02_24_EFF" - Historical: Used before
	// 03/25/2020.
	//   "MODEL_RACY_THUMB_V5" - Racy thumb model V5 (go/racy-thumb-v5)
	//   "MODEL_THUMB_EMBEDDING_20201201" - First thumbnail-Query embedding
	// ready for SxS.
	//   "MODEL_PQC_20210816_0" - Porn Query Classifier (go/pqc).
	//   "MODEL_VERSION_TEST" - Model version for test data that shouldn't
	// be used in production.
	ModelVersion string `json:"modelVersion,omitempty"`

	// Possible values:
	//   "REASON_NO_OVERWRITE"
	//   "REASON_UNKNOWN"
	//   "REASON_RACY_WARTCHPAGE_RATING"
	//   "REASON_RACY_THUMBNAIL_RATING" - Overwrite using
	// CorpusTable::kDefaultThumbnailRacyRatingScoreCol.
	//   "REASON_THUMBNAIL_REPORT" - Overwrite using thumbnail user reports
	// and elmo score.
	//   "REASON_VIDEO_REPORT" - Overwrite using video user reports and elmo
	// score.
	//   "REASON_CLUSTER_HEURISTIC" - Overwrite using cluster heuristics
	OverwriteReason string `json:"overwriteReason,omitempty"`

	// QuantizedFeatures: Thumbnail quantized dense features, available in
	// TYPE_STARBURST_COMPRESSED
	QuantizedFeatures string `json:"quantizedFeatures,omitempty"`

	Score float64 `json:"score,omitempty"`

	// SparseFeatures: Thumbnail sparse features, available in
	// TYPE_STARBURST
	SparseFeatures *DrishtiSparseFeatureData `json:"sparseFeatures,omitempty"`

	// Possible values:
	//   "SET_UNKNOWN"
	//   "SET_ONE"
	//   "SET_TWO"
	//   "SET_THREE"
	//   "SET_DEFAULT"
	ThumbnailSet string `json:"thumbnailSet,omitempty"`

	// ThumbnailVersion: Version number of the thumbnail. Should be
	// consistent with the version number in the ytimg_content column
	// family.
	ThumbnailVersion uint64 `json:"thumbnailVersion,omitempty,string"`

	// Possible values:
	//   "TYPE_UNKNOWN"
	//   "TYPE_RACY"
	//   "TYPE_QUALITY"
	//   "TYPE_JOY_FACE"
	//   "TYPE_EYE_OPEN"
	//   "TYPE_FACE_RATIO"
	//   "TYPE_SHARPNESS"
	//   "TYPE_COLORFULNESS"
	//   "TYPE_NIMA" - go/nima.
	//   "TYPE_STARBURST"
	//   "TYPE_RACY_RATING" - go/thumb-safety-continuous-racy-model ("Signal
	// Export").
	//   "TYPE_RACY_WATCHPAGE"
	//   "TYPE_RACY_LOCKUP"
	//   "TYPE_RACY_WATCHPAGE_FLAGGED" - Historical: Used before 05/08/2020.
	//   "TYPE_STARBURST_EMBEDDING"
	//   "TYPE_FACE"
	//   "TYPE_FDENSE_PCA"
	//   "TYPE_FDENSE_PCA_MOE"
	//   "TYPE_FNET_LOGREG"
	//   "TYPE_FNET_TOPICALITY"
	//   "TYPE_LOGO"
	//   "TYPE_NEAR_DUP"
	//   "TYPE_OCR"
	//   "TYPE_OCR_UNIGRAMS"
	//   "TYPE_OCR_UNIGRAMS_NON_TRIVIAL"
	//   "TYPE_PINKY_FRAMING"
	//   "TYPE_PQC_PORN_CHANNEL_DISPLAY_NAME" - Porn Query Classifier
	// (go/pqc) scores.
	//   "TYPE_PQC_PORN_DESCRIPTION"
	//   "TYPE_PQC_PORN_TITLE"
	//   "TYPE_PQC_VIOLENCE_CHANNEL_DISPLAY_NAME"
	//   "TYPE_PQC_VIOLENCE_DESCRIPTION"
	//   "TYPE_PQC_VIOLENCE_TITLE"
	//   "TYPE_SAFESEARCH"
	//   "TYPE_SAFESEARCH_PINKY"
	//   "TYPE_STARBURST_COMPRESSED"
	//   "TYPE_STARBURST_TOKENS"
	//   "TYPE_MACRO_MARKERS"
	//   "TYPE_THUMB_QUERY_EMBEDDING"
	//   "TYPE_COLOR_SAMPLING"
	//   "TYPE_ENGAGINESS"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Checksum") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Checksum") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoThumbnailsThumbnailScore) MarshalJSON() ([]byte, error) {
	type NoMethod VideoThumbnailsThumbnailScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoThumbnailsThumbnailScore) UnmarshalJSON(data []byte) error {
	type NoMethod VideoThumbnailsThumbnailScore
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

type VideoTimedtextS4ALIResults struct {
	// LangResults: The complete list of language scores, sorted from high
	// score to low.
	LangResults []*VideoTimedtextS4LangScore `json:"langResults,omitempty"`

	// SpeechClass: What kind of speech (if any) was detected.
	//
	// Possible values:
	//   "UNKNOWN" - Unspecified, or string label not recognized.
	//   "NO_SPEECH"
	//   "HAS_SPEECH_FOR_ASR" - Currently corresponds to simple speech
	SpeechClass string `json:"speechClass,omitempty"`

	// ForceSendFields is a list of field names (e.g. "LangResults") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "LangResults") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoTimedtextS4ALIResults) MarshalJSON() ([]byte, error) {
	type NoMethod VideoTimedtextS4ALIResults
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoTimedtextS4LangScore struct {
	// Confidence: A score between 0.0 and 1.0; the relative probability
	// that this is the language of the video. This should not be
	// interpreted as an absolute probability. For instance, scores may be
	// calculated for all languages even for videos for which no speech was
	// detected.
	Confidence float64 `json:"confidence,omitempty"`

	// LangCode: The language code for one of the languages supported by
	// automatic language identification.
	LangCode string `json:"langCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoTimedtextS4LangScore) MarshalJSON() ([]byte, error) {
	type NoMethod VideoTimedtextS4LangScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoTimedtextS4LangScore) UnmarshalJSON(data []byte) error {
	type NoMethod VideoTimedtextS4LangScore
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// VideoUserDataRegisteredItuTT35: This message contains user data
// registered itu-t t.35 data
type VideoUserDataRegisteredItuTT35 struct {
	// Count: Counts itu-t t.35 message with the same country code and
	// provider code
	Count int64 `json:"count,omitempty"`

	CountryCode int64 `json:"countryCode,omitempty"`

	ProviderCode int64 `json:"providerCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoUserDataRegisteredItuTT35) MarshalJSON() ([]byte, error) {
	type NoMethod VideoUserDataRegisteredItuTT35
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoUserDataUnregistered: This message contains unregistered user
// data identified by a UUID
type VideoUserDataUnregistered struct {
	// Count: Counts user data with the same uuid and payload If payload
	// size is larger than limit, the payload will be 'Payload size is
	// larger than limit: ' + limit size Count will be for user data with
	// same uuid and payload exceeds limit in this case
	Count int64 `json:"count,omitempty"`

	// Payload: Payload may not be filled in Payload may contain user data
	Payload string `json:"payload,omitempty"`

	Uuid string `json:"uuid,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Count") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoUserDataUnregistered) MarshalJSON() ([]byte, error) {
	type NoMethod VideoUserDataUnregistered
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoClipInfo: VideoClipInfo : meta information extracted from
// video file Next id: 26
type VideoVideoClipInfo struct {
	// Artist: Lists the artist of the original subject of the file.
	Artist string `json:"artist,omitempty"`

	// AudioVendorId: Audio vendor ID
	AudioVendorId string `json:"audioVendorId,omitempty"`

	// Author: Different containers use different video clip info. The
	// following fields include info from popular formats: AVI, MOV, and
	// WMV.
	Author string `json:"author,omitempty"`

	Comment string `json:"comment,omitempty"`

	// Commissioned: Lists the name of the person or organization that
	// commissioned the subject of the file.
	Commissioned string `json:"commissioned,omitempty"`

	// Copyright: Records the copyright information for the file.
	Copyright string `json:"copyright,omitempty"`

	DigitizationTime string `json:"digitizationTime,omitempty"`

	Director string `json:"director,omitempty"`

	// Engineer: The engineer who worked on the file.
	Engineer string `json:"engineer,omitempty"`

	// Geolocation: Optional geo-location information in WGS 84.
	Geolocation *VideoVideoGeoLocation `json:"geolocation,omitempty"`

	Info string `json:"info,omitempty"`

	// Keywords: Provides a list of keywords that refer to the file or
	// subject of the file.
	Keywords string `json:"keywords,omitempty"`

	// Make: The camera make such as Apple, Samsung etc.
	Make string `json:"make,omitempty"`

	// Medium: Describes the original subject of the file.
	Medium string `json:"medium,omitempty"`

	// Metadata: Container level metadata
	Metadata []*VideoClipInfo `json:"metadata,omitempty"`

	// Model: The camera model such as iPhone7 or Pixel, etc.
	Model string `json:"model,omitempty"`

	Performer string `json:"performer,omitempty"`

	Producer string `json:"producer,omitempty"`

	Requirements string `json:"requirements,omitempty"`

	// Software: Identifies the name of the software packages used to create
	// the file.
	Software string `json:"software,omitempty"`

	// SourceProvider: Identifies the name of the person or organization who
	// supplied the original subject of the file.
	SourceProvider string `json:"sourceProvider,omitempty"`

	// Subject: Describes the contents of the file.
	Subject string `json:"subject,omitempty"`

	// Technician: Identifies the technician who digitized the subject file.
	Technician string `json:"technician,omitempty"`

	Title string `json:"title,omitempty"`

	// VideoVendorId: Video vendor ID
	VideoVendorId string `json:"videoVendorId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Artist") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Artist") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoClipInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoClipInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoGeoLocation: Generic geo-location information. This is
// error-prone due to the fact that is uses signed integer fields, which
// are not supported by proto1 API and are cast to unsigned integers.
// Consider using the metadata_util function directly, which fills out a
// version 2 API proto.
type VideoVideoGeoLocation struct {
	// AltitudeE2: Altitude is in meters and multiplied by 100 (i.e., in
	// centimeters). Up till 10 km this fits in 3 bytes.
	AltitudeE2 int64 `json:"altitudeE2,omitempty"`

	// LatitudeE7: Latitude and longitude are in degrees and multiplied by
	// 10^7. This gives the worst precision of about 1 cm at the equator.
	LatitudeE7 int64 `json:"latitudeE7,omitempty"`

	LongitudeE7 int64 `json:"longitudeE7,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AltitudeE2") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AltitudeE2") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoGeoLocation) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoGeoLocation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoVideoStream struct {
	// Bitrate: Video bitrate in bits/s.
	Bitrate int64 `json:"bitrate,omitempty,string"`

	// CodecId: Video codec ID. Uses the numeric value corresponding to the
	// CodecId enum object, in order to avoid the dependency on
	// vsi/videostreaminfo.proto.
	// http://cs/symbol:CodecId%20f:google3/video/vidproc/vsi/videostreaminfo.proto
	CodecId int64 `json:"codecId,omitempty"`

	// Fps: Video frame per second, obtained by parsing video header
	// information. The value can be inaccurate for some types of codecs.
	// See comments at
	// http://cs/symbol:video_fps%20f:google3/video/vidproc/vsi/videostreaminfo.proto
	Fps float64 `json:"fps,omitempty"`

	Height int64 `json:"height,omitempty"`

	// LengthSec: Video length, in seconds. This value is derived from
	// metadata in the source video, and often differs from the actual
	// duration of any given transcode. In videos without valid timestamps,
	// this value is not calculable, and is reported as zero.
	LengthSec float64 `json:"lengthSec,omitempty"`

	// StreamIndex: Index of the stream in the file, 0-based.
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// Width: video width and height.
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Bitrate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Bitrate") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoVideoStream) UnmarshalJSON(data []byte) error {
	type NoMethod VideoVideoStream
	var s1 struct {
		Fps       gensupport.JSONFloat64 `json:"fps"`
		LengthSec gensupport.JSONFloat64 `json:"lengthSec"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Fps = float64(s1.Fps)
	s.LengthSec = float64(s1.LengthSec)
	return nil
}

// VideoVideoStreamInfo: Note that when a VSI is from a user video, the
// information reflects the info in that source. Fields like lengths,
// fps, etc. are not guaranteed to be the same as those of transcodes.
// If the relevant info in source is too broken, the corresponding
// fields (e.g., lengths) could be unset or with the default value,
// meaning VSI cannot compute them from the given info. Next id: 82
type VideoVideoStreamInfo struct {
	// AudioBitrate: audio bitrate in bits/s
	AudioBitrate float64 `json:"audioBitrate,omitempty"`

	// AudioChannels: audio channels
	AudioChannels int64 `json:"audioChannels,omitempty"`

	// AudioCodecId: Primary audio codec information Fields 15-20, 41-42,
	// 48, 52-53 for audio will be obsolete soon. Please start using the new
	// repeated audio_stream and video_stream. For now, audio_stream(0) will
	// match these fields. Primary audio codec information starts:
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	AudioCodecId string `json:"audioCodecId,omitempty"`

	AudioEndTimestamp int64 `json:"audioEndTimestamp,omitempty,string"`

	// AudioFrameSize: audio frame size
	AudioFrameSize int64 `json:"audioFrameSize,omitempty,string"`

	// AudioLength: audio length in seconds Note that when the VSI is from
	// users videos, it is not guaranteed to be the same as transcode
	// lengths and it could be 0 when the full VSI cannot compute the length
	// from the source header and timestamps (for example when header and
	// timestamps are too broken).
	AudioLength float64 `json:"audioLength,omitempty"`

	// AudioNumberOfFrames: Number of audio frames. Ffmpeg does not report
	// the number of frames accurately.
	// video::TranscodedVideoFileInformation calls Google's analyzer to get
	// information of both audio and video frame numbers.
	AudioNumberOfFrames int64 `json:"audioNumberOfFrames,omitempty,string"`

	// AudioSampleRate: audio sample rate
	AudioSampleRate int64 `json:"audioSampleRate,omitempty,string"`

	// AudioSampleSize: Number of meaningful bits per decoded audio sample.
	// This is an implicit conceptual meaning. This is *NOT* the same as
	// ffmpeg's internal sample format that is used when actually decoding
	// with ffmpeg.
	AudioSampleSize int64 `json:"audioSampleSize,omitempty"`

	AudioStartTimestamp int64 `json:"audioStartTimestamp,omitempty,string"`

	AudioStream []*VideoVideoStreamInfoAudioStream `json:"audioStream,omitempty"`

	AudioStreamCodecTag int64 `json:"audioStreamCodecTag,omitempty,string"`

	// AvDistance: Audio-Video interleaving distance between packets (in
	// bytes)
	AvDistance int64 `json:"avDistance,omitempty"`

	// AvLength: Audio and video length in seconds. It's the max of the
	// audio and video length. Note that when the VSI is from users videos,
	// it is not guaranteed to be the same as transcode lengths and it could
	// be 0 when the full VSI cannot compute the length from the source
	// header and timestamps (for example when header and timestamps are too
	// broken).
	AvLength float64 `json:"avLength,omitempty"`

	// AverageVideoFps: Average video fps from analyzing entire file.
	AverageVideoFps float64 `json:"averageVideoFps,omitempty"`

	// BuildLabel: Build label of the VSI mpm.
	BuildLabel string `json:"buildLabel,omitempty"`

	// ContainerId: Container Id.
	//
	// Possible values:
	//   "CONTAINER_ID_NONE"
	//   "CONTAINER_ID_FOURXM"
	//   "CONTAINER_ID_AIFF"
	//   "CONTAINER_ID_AMR"
	//   "CONTAINER_ID_ASF"
	//   "CONTAINER_ID_AU"
	//   "CONTAINER_ID_AUDIO"
	//   "CONTAINER_ID_AVI"
	//   "CONTAINER_ID_AVISYNTH"
	//   "CONTAINER_ID_AVS"
	//   "CONTAINER_ID_DAUD"
	//   "CONTAINER_ID_DC1394"
	//   "CONTAINER_ID_DSICIN"
	//   "CONTAINER_ID_DV1394"
	//   "CONTAINER_ID_DV"
	//   "CONTAINER_ID_EA"
	//   "CONTAINER_ID_FFM"
	//   "CONTAINER_ID_FLIC"
	//   "CONTAINER_ID_FLV"
	//   "CONTAINER_ID_GIF"
	//   "CONTAINER_ID_VIDEO_GRAB_DEVICE"
	//   "CONTAINER_ID_GXF"
	//   "CONTAINER_ID_IDCIN"
	//   "CONTAINER_ID_ROQ"
	//   "CONTAINER_ID_IMAGE2"
	//   "CONTAINER_ID_IMAGE2PIPE"
	//   "CONTAINER_ID_IMAGE"
	//   "CONTAINER_ID_IMAGEPIPE"
	//   "CONTAINER_ID_IPMOVIE"
	//   "CONTAINER_ID_MATROSKA"
	//   "CONTAINER_ID_MM"
	//   "CONTAINER_ID_MMF"
	//   "CONTAINER_ID_MOV" - Note: CONTAINER_ID_MOV refers to any MPEG 4
	// variant. Currently VideoStreamInfo does not have enough information
	// to distinguish between the variants.
	//   "CONTAINER_ID_MP3"
	//   "CONTAINER_ID_MPEGPS"
	//   "CONTAINER_ID_MPEGTS"
	//   "CONTAINER_ID_MTV"
	//   "CONTAINER_ID_MXF"
	//   "CONTAINER_ID_NSV"
	//   "CONTAINER_ID_NUT"
	//   "CONTAINER_ID_NUV"
	//   "CONTAINER_ID_OGG"
	//   "CONTAINER_ID_STR"
	//   "CONTAINER_ID_SHORTEN"
	//   "CONTAINER_ID_FLAC"
	//   "CONTAINER_ID_AC3"
	//   "CONTAINER_ID_DTS" - Note: CONTAINER_ID_DTS refers to the format
	// for DTS audio codec. It does NOT refer to ADTS container for AAC
	// codec.
	//   "CONTAINER_ID_AAC" - Note: CONTAINER_ID_AAC refers to the ADTS
	// format for AAC codec.
	//   "CONTAINER_ID_H261"
	//   "CONTAINER_ID_H263"
	//   "CONTAINER_ID_M4V"
	//   "CONTAINER_ID_H264"
	//   "CONTAINER_ID_MPEGVIDEO"
	//   "CONTAINER_ID_MJPEG"
	//   "CONTAINER_ID_INGENIENT"
	//   "CONTAINER_ID_PCM_S16LE"
	//   "CONTAINER_ID_PCM_S16BE"
	//   "CONTAINER_ID_PCM_U16LE"
	//   "CONTAINER_ID_PCM_U16BE"
	//   "CONTAINER_ID_PCM_S8"
	//   "CONTAINER_ID_PCM_U8"
	//   "CONTAINER_ID_PCM_MULAW"
	//   "CONTAINER_ID_PCM_ALAW"
	//   "CONTAINER_ID_RAWVIDEO"
	//   "CONTAINER_ID_RM"
	//   "CONTAINER_ID_SDP"
	//   "CONTAINER_ID_REDIR"
	//   "CONTAINER_ID_SEGAFILM"
	//   "CONTAINER_ID_VMD"
	//   "CONTAINER_ID_SMACKER"
	//   "CONTAINER_ID_SOL"
	//   "CONTAINER_ID_SWF"
	//   "CONTAINER_ID_TTA"
	//   "CONTAINER_ID_V4L2"
	//   "CONTAINER_ID_VOC"
	//   "CONTAINER_ID_WAV"
	//   "CONTAINER_ID_WC3"
	//   "CONTAINER_ID_WSAUD"
	//   "CONTAINER_ID_WSVQA"
	//   "CONTAINER_ID_WV"
	//   "CONTAINER_ID_YUV4MPEGPIPE"
	//   "CONTAINER_ID_TIERTEXSEQ"
	//   "CONTAINER_ID_WEBM"
	//   "CONTAINER_ID_EAC3"
	//   "CONTAINER_ID_AA"
	//   "CONTAINER_ID_ACM"
	//   "CONTAINER_ID_ACT"
	//   "CONTAINER_ID_ADF"
	//   "CONTAINER_ID_ADP"
	//   "CONTAINER_ID_ADS"
	//   "CONTAINER_ID_ADX"
	//   "CONTAINER_ID_AEA"
	//   "CONTAINER_ID_AFC"
	//   "CONTAINER_ID_AIX"
	//   "CONTAINER_ID_ANM"
	//   "CONTAINER_ID_APC"
	//   "CONTAINER_ID_APE"
	//   "CONTAINER_ID_APNG"
	//   "CONTAINER_ID_AQTITLE"
	//   "CONTAINER_ID_ASF_O"
	//   "CONTAINER_ID_ASS"
	//   "CONTAINER_ID_AST"
	//   "CONTAINER_ID_AVR"
	//   "CONTAINER_ID_BETHSOFTVID"
	//   "CONTAINER_ID_BFI"
	//   "CONTAINER_ID_BIN"
	//   "CONTAINER_ID_BINK"
	//   "CONTAINER_ID_BIT"
	//   "CONTAINER_ID_BMV"
	//   "CONTAINER_ID_BFSTM"
	//   "CONTAINER_ID_BRSTM"
	//   "CONTAINER_ID_BOA"
	//   "CONTAINER_ID_C93"
	//   "CONTAINER_ID_CAF"
	//   "CONTAINER_ID_CAVSVIDEO"
	//   "CONTAINER_ID_CDG"
	//   "CONTAINER_ID_CDXL"
	//   "CONTAINER_ID_CINE"
	//   "CONTAINER_ID_CONCAT"
	//   "CONTAINER_ID_DATA"
	//   "CONTAINER_ID_DCSTR"
	//   "CONTAINER_ID_DFA"
	//   "CONTAINER_ID_DIRAC"
	//   "CONTAINER_ID_DNXHD"
	//   "CONTAINER_ID_DSF"
	//   "CONTAINER_ID_DSS"
	//   "CONTAINER_ID_DTSHD"
	//   "CONTAINER_ID_DVBSUB"
	//   "CONTAINER_ID_DVBTXT"
	//   "CONTAINER_ID_DXA"
	//   "CONTAINER_ID_EA_CDATA"
	//   "CONTAINER_ID_EPAF"
	//   "CONTAINER_ID_FFMETADATA"
	//   "CONTAINER_ID_FILMSTRIP"
	//   "CONTAINER_ID_FITS"
	//   "CONTAINER_ID_FRM"
	//   "CONTAINER_ID_FSB"
	//   "CONTAINER_ID_G722"
	//   "CONTAINER_ID_G723_1"
	//   "CONTAINER_ID_G726"
	//   "CONTAINER_ID_G726LE"
	//   "CONTAINER_ID_G729"
	//   "CONTAINER_ID_GDV"
	//   "CONTAINER_ID_GENH"
	//   "CONTAINER_ID_GSM"
	//   "CONTAINER_ID_HEVC"
	//   "CONTAINER_ID_HNM"
	//   "CONTAINER_ID_ICO"
	//   "CONTAINER_ID_IDF"
	//   "CONTAINER_ID_IFF"
	//   "CONTAINER_ID_ILBC"
	//   "CONTAINER_ID_ALIAS_PIX"
	//   "CONTAINER_ID_BRENDER_PIX"
	//   "CONTAINER_ID_IRCAM"
	//   "CONTAINER_ID_ISS"
	//   "CONTAINER_ID_IV8"
	//   "CONTAINER_ID_IVF"
	//   "CONTAINER_ID_IVR"
	//   "CONTAINER_ID_JACOSUB"
	//   "CONTAINER_ID_JV"
	//   "CONTAINER_ID_LMLM4"
	//   "CONTAINER_ID_LOAS"
	//   "CONTAINER_ID_LRC"
	//   "CONTAINER_ID_LVF"
	//   "CONTAINER_ID_LXF"
	//   "CONTAINER_ID_MGSTS"
	//   "CONTAINER_ID_MICRODVD"
	//   "CONTAINER_ID_MJPEG_2000"
	//   "CONTAINER_ID_MLP"
	//   "CONTAINER_ID_MLV"
	//   "CONTAINER_ID_MPC"
	//   "CONTAINER_ID_MPC8"
	//   "CONTAINER_ID_MPEGTSRAW"
	//   "CONTAINER_ID_MPJPEG"
	//   "CONTAINER_ID_MPL2"
	//   "CONTAINER_ID_MPSUB"
	//   "CONTAINER_ID_MSF"
	//   "CONTAINER_ID_MSNWCTCP"
	//   "CONTAINER_ID_MTAF"
	//   "CONTAINER_ID_MUSX"
	//   "CONTAINER_ID_MV"
	//   "CONTAINER_ID_MVI"
	//   "CONTAINER_ID_MXG"
	//   "CONTAINER_ID_NC"
	//   "CONTAINER_ID_NISTSPHERE"
	//   "CONTAINER_ID_OMA"
	//   "CONTAINER_ID_PAF"
	//   "CONTAINER_ID_ALAW"
	//   "CONTAINER_ID_MULAW"
	//   "CONTAINER_ID_F64BE"
	//   "CONTAINER_ID_F64LE"
	//   "CONTAINER_ID_F32BE"
	//   "CONTAINER_ID_F32LE"
	//   "CONTAINER_ID_S32BE"
	//   "CONTAINER_ID_S32LE"
	//   "CONTAINER_ID_S24BE"
	//   "CONTAINER_ID_S24LE"
	//   "CONTAINER_ID_S16BE"
	//   "CONTAINER_ID_S16LE"
	//   "CONTAINER_ID_S8"
	//   "CONTAINER_ID_U32BE"
	//   "CONTAINER_ID_U32LE"
	//   "CONTAINER_ID_U24BE"
	//   "CONTAINER_ID_U24LE"
	//   "CONTAINER_ID_U16BE"
	//   "CONTAINER_ID_U16LE"
	//   "CONTAINER_ID_U8"
	//   "CONTAINER_ID_PJS"
	//   "CONTAINER_ID_PMP"
	//   "CONTAINER_ID_PVA"
	//   "CONTAINER_ID_PVF"
	//   "CONTAINER_ID_QCP"
	//   "CONTAINER_ID_R3D"
	//   "CONTAINER_ID_REALTEXT"
	//   "CONTAINER_ID_REDSPARK"
	//   "CONTAINER_ID_RL2"
	//   "CONTAINER_ID_RPL"
	//   "CONTAINER_ID_RSD"
	//   "CONTAINER_ID_RSO"
	//   "CONTAINER_ID_RTP"
	//   "CONTAINER_ID_RTSP"
	//   "CONTAINER_ID_S337M"
	//   "CONTAINER_ID_SAMI"
	//   "CONTAINER_ID_SAP"
	//   "CONTAINER_ID_SBG"
	//   "CONTAINER_ID_SCC"
	//   "CONTAINER_ID_SDR2"
	//   "CONTAINER_ID_SDS"
	//   "CONTAINER_ID_SDX"
	//   "CONTAINER_ID_FILM_CPK"
	//   "CONTAINER_ID_SHN"
	//   "CONTAINER_ID_SIFF"
	//   "CONTAINER_ID_SLN"
	//   "CONTAINER_ID_SMJPEG"
	//   "CONTAINER_ID_SMUSH"
	//   "CONTAINER_ID_SOX"
	//   "CONTAINER_ID_SPDIF"
	//   "CONTAINER_ID_SRT"
	//   "CONTAINER_ID_STL"
	//   "CONTAINER_ID_SUBVIEWER1"
	//   "CONTAINER_ID_SUBVIEWER"
	//   "CONTAINER_ID_SUP"
	//   "CONTAINER_ID_SVAG"
	//   "CONTAINER_ID_TAK"
	//   "CONTAINER_ID_TEDCAPTIONS"
	//   "CONTAINER_ID_THP"
	//   "CONTAINER_ID_3DOSTR"
	//   "CONTAINER_ID_TMV"
	//   "CONTAINER_ID_TRUEHD"
	//   "CONTAINER_ID_TXD"
	//   "CONTAINER_ID_V210"
	//   "CONTAINER_ID_V210X"
	//   "CONTAINER_ID_VAG"
	//   "CONTAINER_ID_VC1"
	//   "CONTAINER_ID_VC1TEST"
	//   "CONTAINER_ID_VIVO"
	//   "CONTAINER_ID_VOBSUB"
	//   "CONTAINER_ID_VPK"
	//   "CONTAINER_ID_VPLAYER"
	//   "CONTAINER_ID_VQF"
	//   "CONTAINER_ID_W64"
	//   "CONTAINER_ID_WC3MOVIE"
	//   "CONTAINER_ID_WEBM_DASH_MANIFEST"
	//   "CONTAINER_ID_WEBVTT"
	//   "CONTAINER_ID_WSD"
	//   "CONTAINER_ID_WTV"
	//   "CONTAINER_ID_WVE"
	//   "CONTAINER_ID_XA"
	//   "CONTAINER_ID_XBIN"
	//   "CONTAINER_ID_XMV"
	//   "CONTAINER_ID_XVAG"
	//   "CONTAINER_ID_XWMA"
	//   "CONTAINER_ID_YOP"
	//   "CONTAINER_ID_AMRNB"
	//   "CONTAINER_ID_AMRWB"
	//   "CONTAINER_ID_APTX"
	//   "CONTAINER_ID_NSP"
	//   "CONTAINER_ID_TY"
	//   "CONTAINER_ID_APTX_HD"
	//   "CONTAINER_ID_AVS2"
	//   "CONTAINER_ID_CODEC2"
	//   "CONTAINER_ID_CODEC2RAW"
	//   "CONTAINER_ID_SBC"
	//   "CONTAINER_ID_SER"
	//   "CONTAINER_ID_GOOGLE_INDEX" - Google Proto types Detects ASCII
	// Proto of video_pipeline::MediaProcessingFfmpegInput
	//   "CONTAINER_ID_MEDIASAMPLE" - A stream of video_file::Mediasamples.
	// google3/video/vidproc/ffmpeg/formats/streaming_mediasample_format.h
	//   "CONTAINER_ID_TOOTHLESS" - Binary proto of
	// video::toothless::ToothlessStreamManifest format currently has no
	// probe in ffmpeg and cannot be detected by VSI.
	// google3/video/vidproc/ffmpeg/formats/toothless_demuxer.proto
	//   "CONTAINER_ID_MEDIASAMPLE_DEPRECATED"
	ContainerId string `json:"containerId,omitempty"`

	// ContainerType: Name of the container format guessed by ffmpeg.
	ContainerType string `json:"containerType,omitempty"`

	// ContainsChapters: If the video contains chapters info.
	ContainsChapters bool `json:"containsChapters,omitempty"`

	DataStream []*VideoVideoStreamInfoDataStream `json:"dataStream,omitempty"`

	DisplayHeight int64 `json:"displayHeight,omitempty"`

	// DisplayWidth: final display video width and height if explicitly set
	// in the video otherwise this can be calculated from source
	// width/height and video_pixel_aspect_ratio
	DisplayWidth int64 `json:"displayWidth,omitempty"`

	// FileHeaderFingerprint: Input file header fingerprint
	FileHeaderFingerprint uint64 `json:"fileHeaderFingerprint,omitempty,string"`

	// FileMagic: The file type string returned by libmagic, a third party
	// library. It might accidentally include some user content. Some normal
	// file_magic examples: -- RIFF (little-endian) data, AVI, 1016 x 696,
	// 30.00 fps, video: XviD, audio: (stereo, 48000 Hz) -- MPEG sequence,
	// v2, program multiplex -- ISO Media, MPEG v4 system, iTunes AVC-LC --
	// Microsoft Windows Movie Maker project file
	FileMagic string `json:"fileMagic,omitempty"`

	// FileModifiedTime: Input file modification time
	FileModifiedTime int64 `json:"fileModifiedTime,omitempty,string"`

	// FileName: Input file name. DEPRECATED; don't expect the file name to
	// be correct.
	FileName string `json:"fileName,omitempty"`

	// FileSize: Input file size in bytes
	FileSize int64 `json:"fileSize,omitempty,string"`

	// FileType: High-level file type guessed by looking at the file headers
	// and libmagic.
	FileType int64 `json:"fileType,omitempty"`

	ImageStream []*VideoVideoStreamInfoVideoStream `json:"imageStream,omitempty"`

	// IsAsf: True if the video is likely to be an ASF file.
	IsAsf bool `json:"isAsf,omitempty"`

	// IsImageFile: True if the video is actually an image file (JPEG, PNG,
	// GIF, etc) and not a video file.
	IsImageFile bool `json:"isImageFile,omitempty"`

	// IsVideoInsaneSize: Check if a video size insane or not. It is set if
	// the input file is an MOV file.
	IsVideoInsaneSize bool `json:"isVideoInsaneSize,omitempty"`

	Level int64 `json:"level,omitempty"`

	Metadata *VideoVideoStreamInfoMetadata `json:"metadata,omitempty"`

	// NumAudioStreams: Total number of audio streams in the file
	NumAudioStreams int64 `json:"numAudioStreams,omitempty"`

	// NumDataStreams: Total number of data streams in the file
	NumDataStreams int64 `json:"numDataStreams,omitempty"`

	// NumImageStreams: Total number of image streams in the file
	NumImageStreams int64 `json:"numImageStreams,omitempty"`

	// NumTimedtextStreams: Total number of timedtext streams in the file
	NumTimedtextStreams int64 `json:"numTimedtextStreams,omitempty"`

	// NumVideoStreams: Total number of video streams in the file
	NumVideoStreams int64 `json:"numVideoStreams,omitempty"`

	// ParsedByFfmpeg: If this field is not set, then only base video file
	// information has been generated (and ffmpeg parsing hasn't yet been
	// done). If this is set to 'false', then ffmpeg failed to parse the
	// file - otherwise it will set to 'true'
	ParsedByFfmpeg bool `json:"parsedByFfmpeg,omitempty"`

	// PartialFile: By default we assume that the entire file was given
	// computing the VSI - if that is not true this flag should be set to
	// true.
	PartialFile bool `json:"partialFile,omitempty"`

	// PixFmt: Pixel format for the video stream.
	//
	// Possible values:
	//   "PIX_FMT_NONE"
	//   "PIX_FMT_YUV420P"
	//   "PIX_FMT_YUYV422"
	//   "PIX_FMT_RGB24"
	//   "PIX_FMT_BGR24"
	//   "PIX_FMT_YUV422P"
	//   "PIX_FMT_YUV444P"
	//   "PIX_FMT_RGB32"
	//   "PIX_FMT_YUV410P"
	//   "PIX_FMT_YUV411P"
	//   "PIX_FMT_RGB565"
	//   "PIX_FMT_RGB555"
	//   "PIX_FMT_GRAY8"
	//   "PIX_FMT_MONOWHITE"
	//   "PIX_FMT_MONOBLACK"
	//   "PIX_FMT_PAL8"
	//   "PIX_FMT_YUVJ420P"
	//   "PIX_FMT_YUVJ422P"
	//   "PIX_FMT_YUVJ444P"
	//   "PIX_FMT_XVMC_MPEG2_MC"
	//   "PIX_FMT_XVMC_MPEG2_IDCT"
	//   "PIX_FMT_UYVY422"
	//   "PIX_FMT_UYYVYY411"
	//   "PIX_FMT_BGR32"
	//   "PIX_FMT_BGR565"
	//   "PIX_FMT_BGR555"
	//   "PIX_FMT_BGR8"
	//   "PIX_FMT_BGR4"
	//   "PIX_FMT_BGR4_BYTE"
	//   "PIX_FMT_RGB8"
	//   "PIX_FMT_RGB4"
	//   "PIX_FMT_RGB4_BYTE"
	//   "PIX_FMT_NV12"
	//   "PIX_FMT_NV21"
	//   "PIX_FMT_RGB32_1"
	//   "PIX_FMT_BGR32_1"
	//   "PIX_FMT_GRAY16BE"
	//   "PIX_FMT_GRAY16LE"
	//   "PIX_FMT_YUV440P"
	//   "PIX_FMT_YUVJ440P"
	//   "PIX_FMT_YUVA420P"
	//   "PIX_FMT_VDPAU_H264"
	//   "PIX_FMT_VDPAU_MPEG1"
	//   "PIX_FMT_VDPAU_MPEG2"
	//   "PIX_FMT_VDPAU_WMV3"
	//   "PIX_FMT_VDPAU_VC1"
	//   "PIX_FMT_RGB48BE"
	//   "PIX_FMT_RGB48LE"
	//   "PIX_FMT_RGB565BE"
	//   "PIX_FMT_RGB555BE"
	//   "PIX_FMT_BGR565BE"
	//   "PIX_FMT_BGR555BE"
	//   "PIX_FMT_VAAPI_MOCO"
	//   "PIX_FMT_VAAPI_IDCT"
	//   "PIX_FMT_VAAPI_VLD"
	//   "PIX_FMT_YUV420P16LE"
	//   "PIX_FMT_YUV420P16BE"
	//   "PIX_FMT_YUV422P16LE"
	//   "PIX_FMT_YUV422P16BE"
	//   "PIX_FMT_YUV444P16LE"
	//   "PIX_FMT_YUV444P16BE"
	//   "PIX_FMT_VDPAU_MPEG4"
	//   "PIX_FMT_DXVA2_VLD"
	//   "PIX_FMT_RGB444LE"
	//   "PIX_FMT_RGB444BE"
	//   "PIX_FMT_BGR444LE"
	//   "PIX_FMT_BGR444BE"
	//   "PIX_FMT_GRAY8A"
	//   "PIX_FMT_BGR48BE"
	//   "PIX_FMT_BGR48LE"
	//   "PIX_FMT_YUV420P9BE"
	//   "PIX_FMT_YUV420P9LE"
	//   "PIX_FMT_YUV420P10BE"
	//   "PIX_FMT_YUV420P10LE"
	//   "PIX_FMT_YUV422P10BE"
	//   "PIX_FMT_YUV422P10LE"
	//   "PIX_FMT_YUV444P9BE"
	//   "PIX_FMT_YUV444P9LE"
	//   "PIX_FMT_YUV444P10BE"
	//   "PIX_FMT_YUV444P10LE"
	//   "PIX_FMT_YUV422P9BE"
	//   "PIX_FMT_YUV422P9LE"
	//   "PIX_FMT_VDA_VLD"
	//   "PIX_FMT_RGBA64BE"
	//   "PIX_FMT_RGBA64LE"
	//   "PIX_FMT_BGRA64BE"
	//   "PIX_FMT_BGRA64LE"
	//   "PIX_FMT_GBRP"
	//   "PIX_FMT_GBRP9BE"
	//   "PIX_FMT_GBRP9LE"
	//   "PIX_FMT_GBRP10BE"
	//   "PIX_FMT_GBRP10LE"
	//   "PIX_FMT_GBRP16BE"
	//   "PIX_FMT_GBRP16LE"
	//   "PIX_FMT_0RGB"
	//   "PIX_FMT_RGB0"
	//   "PIX_FMT_0BGR"
	//   "PIX_FMT_BGR0"
	//   "PIX_FMT_YUVA444P"
	//   "PIX_FMT_YUVA422P"
	//   "PIX_FMT_YUV420P12BE"
	//   "PIX_FMT_YUV420P12LE"
	//   "PIX_FMT_YUV420P14BE"
	//   "PIX_FMT_YUV420P14LE"
	//   "PIX_FMT_YUV422P12BE"
	//   "PIX_FMT_YUV422P12LE"
	//   "PIX_FMT_YUV422P14BE"
	//   "PIX_FMT_YUV422P14LE"
	//   "PIX_FMT_YUV444P12BE"
	//   "PIX_FMT_YUV444P12LE"
	//   "PIX_FMT_YUV444P14BE"
	//   "PIX_FMT_YUV444P14LE"
	//   "PIX_FMT_GBRP12BE"
	//   "PIX_FMT_GBRP12LE"
	//   "PIX_FMT_GBRP14BE"
	//   "PIX_FMT_GBRP14LE"
	//   "PIX_FMT_ARGB"
	//   "PIX_FMT_RGBA"
	//   "PIX_FMT_ABGR"
	//   "PIX_FMT_BGRA"
	//   "PIX_FMT_RGB565LE"
	//   "PIX_FMT_RGB555LE"
	//   "PIX_FMT_BGR565LE"
	//   "PIX_FMT_BGR555LE"
	//   "PIX_FMT_VAAPI"
	//   "PIX_FMT_YA8"
	//   "PIX_FMT_Y400A"
	//   "PIX_FMT_YUVA420P9BE"
	//   "PIX_FMT_YUVA420P9LE"
	//   "PIX_FMT_YUVA422P9BE"
	//   "PIX_FMT_YUVA422P9LE"
	//   "PIX_FMT_YUVA444P9BE"
	//   "PIX_FMT_YUVA444P9LE"
	//   "PIX_FMT_YUVA420P10BE"
	//   "PIX_FMT_YUVA420P10LE"
	//   "PIX_FMT_YUVA422P10BE"
	//   "PIX_FMT_YUVA422P10LE"
	//   "PIX_FMT_YUVA444P10BE"
	//   "PIX_FMT_YUVA444P10LE"
	//   "PIX_FMT_YUVA420P16BE"
	//   "PIX_FMT_YUVA420P16LE"
	//   "PIX_FMT_YUVA422P16BE"
	//   "PIX_FMT_YUVA422P16LE"
	//   "PIX_FMT_YUVA444P16BE"
	//   "PIX_FMT_YUVA444P16LE"
	//   "PIX_FMT_VDPAU"
	//   "PIX_FMT_XYZ12LE"
	//   "PIX_FMT_XYZ12BE"
	//   "PIX_FMT_NV16"
	//   "PIX_FMT_NV20LE"
	//   "PIX_FMT_NV20BE"
	//   "PIX_FMT_YVYU422"
	//   "PIX_FMT_VDA"
	//   "PIX_FMT_YA16BE"
	//   "PIX_FMT_YA16LE"
	//   "PIX_FMT_GBRAP"
	//   "PIX_FMT_GBRAP16BE"
	//   "PIX_FMT_GBRAP16LE"
	//   "PIX_FMT_QSV"
	//   "PIX_FMT_MMAL"
	//   "PIX_FMT_D3D11VA_VLD"
	//   "PIX_FMT_CUDA"
	//   "PIX_FMT_YUVJ411P"
	//   "PIX_FMT_BAYER_BGGR8"
	//   "PIX_FMT_BAYER_RGGB8"
	//   "PIX_FMT_BAYER_GBRG8"
	//   "PIX_FMT_BAYER_GRBG8"
	//   "PIX_FMT_BAYER_BGGR16LE"
	//   "PIX_FMT_BAYER_BGGR16BE"
	//   "PIX_FMT_BAYER_RGGB16LE"
	//   "PIX_FMT_BAYER_RGGB16BE"
	//   "PIX_FMT_BAYER_GBRG16LE"
	//   "PIX_FMT_BAYER_GBRG16BE"
	//   "PIX_FMT_BAYER_GRBG16LE"
	//   "PIX_FMT_BAYER_GRBG16BE"
	//   "PIX_FMT_XVMC"
	//   "PIX_FMT_YUV440P10LE"
	//   "PIX_FMT_YUV440P10BE"
	//   "PIX_FMT_YUV440P12LE"
	//   "PIX_FMT_YUV440P12BE"
	//   "PIX_FMT_AYUV64LE"
	//   "PIX_FMT_AYUV64BE"
	//   "PIX_FMT_VIDEOTOOLBOX"
	//   "PIX_FMT_P010LE"
	//   "PIX_FMT_P010BE"
	//   "PIX_FMT_GBRAP12BE"
	//   "PIX_FMT_GBRAP12LE"
	//   "PIX_FMT_GBRAP10BE"
	//   "PIX_FMT_GBRAP10LE"
	//   "PIX_FMT_MEDIACODEC"
	//   "PIX_FMT_GRAY12BE"
	//   "PIX_FMT_GRAY12LE"
	//   "PIX_FMT_GRAY10BE"
	//   "PIX_FMT_GRAY10LE"
	//   "PIX_FMT_P016LE"
	//   "PIX_FMT_P016BE"
	//   "PIX_FMT_D3D11"
	//   "PIX_FMT_GRAY9BE"
	//   "PIX_FMT_GRAY9LE"
	//   "PIX_FMT_GBRPF32BE"
	//   "PIX_FMT_GBRPF32LE"
	//   "PIX_FMT_GBRAPF32BE"
	//   "PIX_FMT_GBRAPF32LE"
	//   "PIX_FMT_DRM_PRIME"
	//   "PIX_FMT_GACCEL"
	//   "PIX_FMT_OPENCL"
	//   "PIX_FMT_GRAY14BE"
	//   "PIX_FMT_GRAY14LE"
	//   "PIX_FMT_GRAYF32BE"
	//   "PIX_FMT_GRAYF32LE"
	//   "PIX_FMT_VULKAN"
	//   "PIX_FMT_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in
	// the mapping between this enum and libavcodec's
	PixFmt string `json:"pixFmt,omitempty"`

	// Profile: video profile
	//
	// Possible values:
	//   "PROFILE_UNKNOWN"
	//   "PROFILE_AAC_MAIN"
	//   "PROFILE_AAC_LOW"
	//   "PROFILE_AAC_SSR"
	//   "PROFILE_AAC_LTP"
	//   "PROFILE_AAC_HE"
	//   "PROFILE_AAC_HE_V2"
	//   "PROFILE_AAC_LD"
	//   "PROFILE_AAC_ELD"
	//   "PROFILE_AVC_CONSTRAINED" - (1 << 8) constrained mode set bit
	//   "PROFILE_AVC_INTRA" - (1 << 11) intra mode set bit
	//   "PROFILE_AVC_BASELINE"
	//   "PROFILE_AVC_CONSTRAINED_BASELINE" -
	// PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE |
	// PROFILE_AVC_CONSTRAINED
	//   "PROFILE_AVC_MAIN"
	//   "PROFILE_AVC_EXTENDED"
	//   "PROFILE_AVC_HIGH"
	//   "PROFILE_AVC_HIGH10"
	//   "PROFILE_AVC_HIGH10_INTRA" - PROFILE_AVC_HIGH10_INTRA =
	// PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH422"
	//   "PROFILE_AVC_HIGH422_INTRA" - PROFILE_AVC_HIGH422_INTRA =
	// PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH444"
	//   "PROFILE_HIGH444_PREDICTIVE"
	//   "PROFILE_AVC_HIGH444_INTRA" - PROFILE_AVC_HIGH444_INTRA =
	// PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_CAVLC444"
	//   "PROFILE_VP9_0" - Since profile IDs might collide from different
	// codecs, the profile IDs listed below are not identical to the numeric
	// numbers defined in the spec due to collision. Next Profile ID: 10008
	// PROFILES for VP9. 0
	//   "PROFILE_VP9_1" - 1
	//   "PROFILE_VP9_2" - 2
	//   "PROFILE_VP9_3" - 3
	//   "PROFILE_HEVC_MAIN" - 1
	//   "PROFILE_HEVC_MAIN_10" - 2
	//   "PROFILE_HEVC_MAIN_STILL_PICTURE" - 3
	//   "PROFILE_HEVC_REXT" - 4
	//   "PROFILE_DOVI_5" - DOVI Profile 5 can only be played as Dolby
	// Vision so it has its own Profile.
	Profile string `json:"profile,omitempty"`

	TimedtextStream []*VideoVideoStreamInfoTimedTextStream `json:"timedtextStream,omitempty"`

	// VideoBitrate: video bitrate in bits/s
	VideoBitrate float64 `json:"videoBitrate,omitempty"`

	// VideoClipInfo: Video clip information, such as copyright, title, and
	// author.
	VideoClipInfo *VideoVideoClipInfo `json:"videoClipInfo,omitempty"`

	// VideoCodecId: Primary video codec information Fields 1-2, 4-10, 28,
	// 37, 44, 49, 51, 54-55, 57-62, 69 will be obsolete soon. Please start
	// using the new repeated video_stream. For now, video_stream(0) will
	// match these fields. Note however that some of the fields in
	// VideoStream are not populated correctly yet in videostreaminfo.cc,
	// but that will be handled gradually.
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	VideoCodecId string `json:"videoCodecId,omitempty"`

	VideoEndTimestamp int64 `json:"videoEndTimestamp,omitempty,string"`

	// VideoFps: video frame per second, obtained by parsing video header
	// information. It could be inaccurate for some types of codecs,
	// notably, WMV, ASF, and FLV. It will be inaccurate for videos that
	// does not have constant frame rate since it is the smallest framerate
	// that can accurately represent all timestamps (see ffmpeg doc for
	// AVStream.r_frame_rate). Also frame rate can be parsed from headers
	// and can be wrong if it is not available there since ffmpeg uses a
	// heuristic for determining it.
	VideoFps float64 `json:"videoFps,omitempty"`

	// VideoFrameSize: video frame size
	VideoFrameSize int64 `json:"videoFrameSize,omitempty,string"`

	// VideoHasBFrames: video has b frames
	VideoHasBFrames bool `json:"videoHasBFrames,omitempty"`

	// VideoHasFragments: video (MOV) has fragments
	VideoHasFragments bool `json:"videoHasFragments,omitempty"`

	// VideoHasLeadingMoovAtom: video (MOV) has moov atom before mdat atom
	// allowing streaming transcoding
	VideoHasLeadingMoovAtom bool `json:"videoHasLeadingMoovAtom,omitempty"`

	// VideoHasNonMonotonicDts: video has non-monotonic DTS (potential
	// problem)
	VideoHasNonMonotonicDts bool `json:"videoHasNonMonotonicDts,omitempty"`

	// VideoHasNonMonotonicPts: video has non-monotonic PTS.
	VideoHasNonMonotonicPts bool `json:"videoHasNonMonotonicPts,omitempty"`

	// VideoHasNonZeroStartEditList: video (MOV) has a possibly av desync
	// issue due to edit lists not starting at 0
	VideoHasNonZeroStartEditList bool `json:"videoHasNonZeroStartEditList,omitempty"`

	// VideoHasPossibleOpenGop: video has possible open GOP
	VideoHasPossibleOpenGop bool `json:"videoHasPossibleOpenGop,omitempty"`

	// VideoHasVariableAspectRatio: video has frames with different aspect
	// ratios.
	VideoHasVariableAspectRatio bool `json:"videoHasVariableAspectRatio,omitempty"`

	VideoHeight int64 `json:"videoHeight,omitempty"`

	// VideoInterlace: Information on interlaced video.
	//
	// Possible values:
	//   "INTERLACE_NONE" - No interlace
	//   "INTERLACE_PIC_AFF" - Adaptive frame-field coding in picture level
	//   "INTERLACE_MB_AFF" - Adaptive frame-field coding in macroblock
	// level
	VideoInterlace string `json:"videoInterlace,omitempty"`

	// VideoLength: video length in seconds Note that when the VSI is from
	// users videos, it is not guaranteed to be the same as transcode
	// lengths and it could be 0 when the full VSI cannot compute the length
	// from the source header and timestamps (for example when header and
	// timestamps are too broken).
	VideoLength float64 `json:"videoLength,omitempty"`

	// VideoNumberOfFrames: Number of Video frames Warning: running
	// video::FfmpegVideoFileInformation() won't set this info Ffmpeg tool
	// does not report the number of frames accurately. We can't rely on fps
	// and video length. So we will set this after we processed every frame
	// using the filter framework
	VideoNumberOfFrames int64 `json:"videoNumberOfFrames,omitempty,string"`

	// VideoNumberOfInvisibleFrames: Invisible frame count Keep a count of
	// frames that are not displayed should the full frame count be needed
	// for the video stream. The only codec currently reporting this value
	// is VP8 with alternate reference frames enabled
	VideoNumberOfInvisibleFrames int64 `json:"videoNumberOfInvisibleFrames,omitempty"`

	// VideoPixelAspectRatio: video pixel aspect ratio
	VideoPixelAspectRatio float64 `json:"videoPixelAspectRatio,omitempty"`

	// VideoRotation: Is the video rotated ?
	//
	// Possible values:
	//   "ROTATION_NONE" - No rotation
	//   "ROTATION_OTHER" - Unspecified non-identity rotation
	//   "ROTATION_CW_90" - Rotate clockwise by 90 degrees
	//   "ROTATION_CCW_90" - Rotate counter-clockwise by 90 degrees
	//   "ROTATION_180" - Rotate 180 degrees
	VideoRotation string `json:"videoRotation,omitempty"`

	// VideoStartTimestamp: Start/end timestamps of audio/video in ms.
	VideoStartTimestamp int64 `json:"videoStartTimestamp,omitempty,string"`

	VideoStream []*VideoVideoStreamInfoVideoStream `json:"videoStream,omitempty"`

	VideoStreamCodecTag int64 `json:"videoStreamCodecTag,omitempty"`

	// VideoWidth: source video width and height
	VideoWidth int64 `json:"videoWidth,omitempty"`

	// VideostreaminfoVersion: Version number of the videostreaminfo
	// application that generated this protobuf.
	VideostreaminfoVersion int64 `json:"videostreaminfoVersion,omitempty"`

	// YPsnr: Luma PSNR of the transcoded file.
	YPsnr float64 `json:"yPsnr,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AudioBitrate") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AudioBitrate") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfo) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoVideoStreamInfo) UnmarshalJSON(data []byte) error {
	type NoMethod VideoVideoStreamInfo
	var s1 struct {
		AudioBitrate          gensupport.JSONFloat64 `json:"audioBitrate"`
		AudioLength           gensupport.JSONFloat64 `json:"audioLength"`
		AvLength              gensupport.JSONFloat64 `json:"avLength"`
		AverageVideoFps       gensupport.JSONFloat64 `json:"averageVideoFps"`
		VideoBitrate          gensupport.JSONFloat64 `json:"videoBitrate"`
		VideoFps              gensupport.JSONFloat64 `json:"videoFps"`
		VideoLength           gensupport.JSONFloat64 `json:"videoLength"`
		VideoPixelAspectRatio gensupport.JSONFloat64 `json:"videoPixelAspectRatio"`
		YPsnr                 gensupport.JSONFloat64 `json:"yPsnr"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AudioBitrate = float64(s1.AudioBitrate)
	s.AudioLength = float64(s1.AudioLength)
	s.AvLength = float64(s1.AvLength)
	s.AverageVideoFps = float64(s1.AverageVideoFps)
	s.VideoBitrate = float64(s1.VideoBitrate)
	s.VideoFps = float64(s1.VideoFps)
	s.VideoLength = float64(s1.VideoLength)
	s.VideoPixelAspectRatio = float64(s1.VideoPixelAspectRatio)
	s.YPsnr = float64(s1.YPsnr)
	return nil
}

// VideoVideoStreamInfoAudioStream: Next id: 25
type VideoVideoStreamInfoAudioStream struct {
	// Ambisonics: Optional ambisonics metadata.
	Ambisonics *VideoAmbisonicsAmbisonicsMetadata `json:"ambisonics,omitempty"`

	// Bitrate: audio bitrate in bits/s
	Bitrate int64 `json:"bitrate,omitempty,string"`

	// Possible values:
	//   "CHANNEL_UNKNOWN"
	//   "CHANNEL_FRONT_LEFT"
	//   "CHANNEL_FRONT_RIGHT"
	//   "CHANNEL_FRONT_CENTER"
	//   "CHANNEL_LOW_FREQUENCY"
	//   "CHANNEL_BACK_LEFT"
	//   "CHANNEL_BACK_RIGHT"
	//   "CHANNEL_FRONT_LEFT_OF_CENTER"
	//   "CHANNEL_FRONT_RIGHT_OF_CENTER"
	//   "CHANNEL_BACK_CENTER"
	//   "CHANNEL_SIDE_LEFT"
	//   "CHANNEL_SIDE_RIGHT"
	//   "CHANNEL_TOP_CENTER"
	//   "CHANNEL_TOP_FRONT_LEFT"
	//   "CHANNEL_TOP_FRONT_CENTER"
	//   "CHANNEL_TOP_FRONT_RIGHT"
	//   "CHANNEL_TOP_BACK_LEFT"
	//   "CHANNEL_TOP_BACK_CENTER"
	//   "CHANNEL_TOP_BACK_RIGHT"
	//   "CHANNEL_STEREO_LEFT"
	//   "CHANNEL_STEREO_RIGHT"
	//   "CHANNEL_WIDE_LEFT"
	//   "CHANNEL_WIDE_RIGHT"
	//   "CHANNEL_SURROUND_DIRECT_LEFT"
	//   "CHANNEL_SURROUND_DIRECT_RIGHT"
	//   "CHANNEL_LOW_FREQUENCY_2"
	ChannelPosition []string `json:"channelPosition,omitempty"`

	// Channels: number of audio channels
	Channels int64 `json:"channels,omitempty"`

	// ClockDiscontinuityUs: some container allows for a clock
	// discontinuity. In this case, the end_timestamp may not be the correct
	// DTS of the stream.
	ClockDiscontinuityUs int64 `json:"clockDiscontinuityUs,omitempty,string"`

	CodecFourcc string `json:"codecFourcc,omitempty"`

	// CodecId: Primary audio codec information
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	CodecId string `json:"codecId,omitempty"`

	// CodecString: RFC6381 Codec string.
	CodecString string `json:"codecString,omitempty"`

	// ContentType: Specifies the content_type of the audio stream as given
	// in the metadata.
	ContentType string `json:"contentType,omitempty"`

	// DecodeOffset: The bytes offset of the end of the first decodable
	// packet.
	DecodeOffset int64 `json:"decodeOffset,omitempty,string"`

	EndTimestamp int64 `json:"endTimestamp,omitempty,string"`

	// FrameSize: audio frame size
	FrameSize int64 `json:"frameSize,omitempty,string"`

	// Language: Specifies the language of the audio stream as given in the
	// metadata.
	Language string `json:"language,omitempty"`

	// Length: audio length in seconds Note that when the VSI is from users
	// videos, it is not guaranteed to be the same as transcode lengths and
	// it could be 0 when the full VSI cannot compute the length from the
	// source header and timestamps (for example when header and timestamps
	// are too broken).
	Length float64 `json:"length,omitempty"`

	// Metadata: Metadata for audio elementary stream;
	Metadata []*VideoClipInfo `json:"metadata,omitempty"`

	// NumberOfFrames: Number of audio frames.
	NumberOfFrames int64 `json:"numberOfFrames,omitempty,string"`

	// Possible values:
	//   "PROFILE_UNKNOWN"
	//   "PROFILE_AAC_MAIN"
	//   "PROFILE_AAC_LOW"
	//   "PROFILE_AAC_SSR"
	//   "PROFILE_AAC_LTP"
	//   "PROFILE_AAC_HE"
	//   "PROFILE_AAC_HE_V2"
	//   "PROFILE_AAC_LD"
	//   "PROFILE_AAC_ELD"
	//   "PROFILE_AVC_CONSTRAINED" - (1 << 8) constrained mode set bit
	//   "PROFILE_AVC_INTRA" - (1 << 11) intra mode set bit
	//   "PROFILE_AVC_BASELINE"
	//   "PROFILE_AVC_CONSTRAINED_BASELINE" -
	// PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE |
	// PROFILE_AVC_CONSTRAINED
	//   "PROFILE_AVC_MAIN"
	//   "PROFILE_AVC_EXTENDED"
	//   "PROFILE_AVC_HIGH"
	//   "PROFILE_AVC_HIGH10"
	//   "PROFILE_AVC_HIGH10_INTRA" - PROFILE_AVC_HIGH10_INTRA =
	// PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH422"
	//   "PROFILE_AVC_HIGH422_INTRA" - PROFILE_AVC_HIGH422_INTRA =
	// PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH444"
	//   "PROFILE_HIGH444_PREDICTIVE"
	//   "PROFILE_AVC_HIGH444_INTRA" - PROFILE_AVC_HIGH444_INTRA =
	// PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_CAVLC444"
	//   "PROFILE_VP9_0" - Since profile IDs might collide from different
	// codecs, the profile IDs listed below are not identical to the numeric
	// numbers defined in the spec due to collision. Next Profile ID: 10008
	// PROFILES for VP9. 0
	//   "PROFILE_VP9_1" - 1
	//   "PROFILE_VP9_2" - 2
	//   "PROFILE_VP9_3" - 3
	//   "PROFILE_HEVC_MAIN" - 1
	//   "PROFILE_HEVC_MAIN_10" - 2
	//   "PROFILE_HEVC_MAIN_STILL_PICTURE" - 3
	//   "PROFILE_HEVC_REXT" - 4
	//   "PROFILE_DOVI_5" - DOVI Profile 5 can only be played as Dolby
	// Vision so it has its own Profile.
	Profile string `json:"profile,omitempty"`

	// SampleRate: audio sample rate
	SampleRate int64 `json:"sampleRate,omitempty,string"`

	// SampleSize: Number of meaningful bits per decoded audio sample. This
	// is an implicit conceptual meaning. This is *NOT* the same as ffmpeg's
	// internal sample format that is used when actually decoding with
	// ffmpeg.
	SampleSize int64 `json:"sampleSize,omitempty"`

	// StartTimestamp: Start/end timestamps of audio in ms.
	StartTimestamp int64 `json:"startTimestamp,omitempty,string"`

	StreamCodecTag int64 `json:"streamCodecTag,omitempty,string"`

	// StreamIndex: Index of the stream in the file. it is 0 based.
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Ambisonics") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Ambisonics") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoAudioStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoAudioStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoVideoStreamInfoAudioStream) UnmarshalJSON(data []byte) error {
	type NoMethod VideoVideoStreamInfoAudioStream
	var s1 struct {
		Length gensupport.JSONFloat64 `json:"length"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Length = float64(s1.Length)
	return nil
}

// VideoVideoStreamInfoDataStream: Data streams refer to additional data
// separate from audio and video streams For example: camera motion
// metadata (see http://go/wally-format) Available tags: 4+
type VideoVideoStreamInfoDataStream struct {
	CodecFourcc string `json:"codecFourcc,omitempty"`

	// CodecId: Codec information
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	CodecId string `json:"codecId,omitempty"`

	StreamCodecTag int64 `json:"streamCodecTag,omitempty,string"`

	// StreamIndex: Index of the stream in the file
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CodecFourcc") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CodecFourcc") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoDataStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoDataStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoVideoStreamInfoMetadata struct {
	Luts *VideoVideoStreamInfoMetadataLutAttachments `json:"luts,omitempty"`

	// VideoFpa: Information on Frame Packing arrangement
	VideoFpa *VideoFileFramePackingArrangement `json:"videoFpa,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Luts") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Luts") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoStreamInfoMetadataLutAttachments: An attached 3D look up
// table
type VideoVideoStreamInfoMetadataLutAttachments struct {
	Lut []*VideoVideoStreamInfoMetadataLutAttachmentsLut3D `json:"lut,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Lut") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Lut") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoMetadataLutAttachments) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoMetadataLutAttachments
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoStreamInfoMetadataLutAttachmentsLut3D: Description and
// encoding of a 3d lut.
type VideoVideoStreamInfoMetadataLutAttachmentsLut3D struct {
	// Data: Lut data, sanitized and encoded in google's binary coded form
	// of 3D look-up tables.
	Data string `json:"data,omitempty"`

	// FileName: Original file name of the lut (present in the original
	// file)
	FileName string `json:"fileName,omitempty"`

	// Size: The size (in each dimension) of the lut. For a 3D cube of size
	// NxNxN, this will be N. If the value is -1, then the file was
	// determined to be invalid. This is useful for logging files where the
	// input could not be parsed, and is useful for to indicate info of the
	// 3D lut without having to decode/inspect the binary data.
	Size int64 `json:"size,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Data") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Data") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoMetadataLutAttachmentsLut3D) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoMetadataLutAttachmentsLut3D
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoStreamInfoTimedTextStream: Timed text streams refer to the
// streams that are separated from audio and video streams. Closed
// caption streams embedded in video streams (e.g. MPEG-2 - Line 21) do
// not belong here.
type VideoVideoStreamInfoTimedTextStream struct {
	// CodecId: Codec information.
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	CodecId string `json:"codecId,omitempty"`

	// Metadata: Metadata for the stream.
	Metadata []*VideoClipInfo `json:"metadata,omitempty"`

	StreamCodecTag int64 `json:"streamCodecTag,omitempty,string"`

	// StreamIndex: Index of the stream in the file. it is 0 based.
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "CodecId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CodecId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoTimedTextStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoTimedTextStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoVideoStreamInfoVideoStream: TODO(yanghu) add 25/50/75
// percentiles of FPS to have a 5 number summary. Next id: 48
type VideoVideoStreamInfoVideoStream struct {
	// AverageFps: This represents the canonical frame rate of the video.
	// This is named average_fps for historical reasons, and may not
	// actually be the arithmetic mean. For variable frame rate videos, the
	// algorithm may change again in future. Currently, full vsi set it with
	// arithmetic mean, and partial vsi set it with median.
	AverageFps float64 `json:"averageFps,omitempty"`

	// Bitrate: video bitrate in bits/s
	Bitrate int64 `json:"bitrate,omitempty,string"`

	// BitstreamColorInfo: Contains the color information obtained after
	// inspection of the bitstream in cases where there may be
	// inconsistencies between container and coded bitstream that are
	// resolved in favor of the container.
	BitstreamColorInfo *VideoFileColorInfo `json:"bitstreamColorInfo,omitempty"`

	CleanAperture *VideoVideoStreamInfoVideoStreamCleanAperture `json:"cleanAperture,omitempty"`

	// ClockDiscontinuityUs: some container allows for a clock
	// discontinuity. In this case, the end_timestamp may not be the correct
	// DTS of the stream.
	ClockDiscontinuityUs int64 `json:"clockDiscontinuityUs,omitempty,string"`

	ClosedCaptions *VideoClosedCaptions `json:"closedCaptions,omitempty"`

	// ClosedGopSize: closed_gop_size refers to chunkable boundaries for
	// each specified codec and may actually contain one or more GOPs, e.g.
	// for H.264, closed_gop_size will denote the distance (frame count)
	// between two IDR frames.
	ClosedGopSize *VideoVideoStreamInfoVideoStreamStatistics `json:"closedGopSize,omitempty"`

	CodecFourcc string `json:"codecFourcc,omitempty"`

	// CodecId: Primary video codec information
	//
	// Possible values:
	//   "CODEC_ID_NONE"
	//   "CODEC_ID_MPEG1VIDEO"
	//   "CODEC_ID_MPEG2VIDEO"
	//   "CODEC_ID_MPEG2VIDEO_XVMC"
	//   "CODEC_ID_H261"
	//   "CODEC_ID_H263"
	//   "CODEC_ID_RV10"
	//   "CODEC_ID_RV20"
	//   "CODEC_ID_MJPEG"
	//   "CODEC_ID_MJPEGB"
	//   "CODEC_ID_LJPEG"
	//   "CODEC_ID_SP5X"
	//   "CODEC_ID_JPEGLS"
	//   "CODEC_ID_MPEG4"
	//   "CODEC_ID_RAWVIDEO"
	//   "CODEC_ID_MSMPEG4V1"
	//   "CODEC_ID_MSMPEG4V2"
	//   "CODEC_ID_MSMPEG4V3"
	//   "CODEC_ID_WMV1"
	//   "CODEC_ID_WMV2"
	//   "CODEC_ID_H263P"
	//   "CODEC_ID_H263I"
	//   "CODEC_ID_FLV1"
	//   "CODEC_ID_SVQ1"
	//   "CODEC_ID_SVQ3"
	//   "CODEC_ID_DVVIDEO"
	//   "CODEC_ID_HUFFYUV"
	//   "CODEC_ID_CYUV"
	//   "CODEC_ID_H264"
	//   "CODEC_ID_INDEO3"
	//   "CODEC_ID_VP3"
	//   "CODEC_ID_THEORA"
	//   "CODEC_ID_ASV1"
	//   "CODEC_ID_ASV2"
	//   "CODEC_ID_FFV1"
	//   "CODEC_ID_4XM"
	//   "CODEC_ID_VCR1"
	//   "CODEC_ID_CLJR"
	//   "CODEC_ID_MDEC"
	//   "CODEC_ID_ROQ"
	//   "CODEC_ID_INTERPLAY_VIDEO"
	//   "CODEC_ID_XAN_WC3"
	//   "CODEC_ID_XAN_WC4"
	//   "CODEC_ID_RPZA"
	//   "CODEC_ID_CINEPAK"
	//   "CODEC_ID_WS_VQA"
	//   "CODEC_ID_MSRLE"
	//   "CODEC_ID_MSVIDEO1"
	//   "CODEC_ID_IDCIN"
	//   "CODEC_ID_8BPS"
	//   "CODEC_ID_SMC"
	//   "CODEC_ID_FLIC"
	//   "CODEC_ID_TRUEMOTION1"
	//   "CODEC_ID_VMDVIDEO"
	//   "CODEC_ID_MSZH"
	//   "CODEC_ID_ZLIB"
	//   "CODEC_ID_QTRLE"
	//   "CODEC_ID_SNOW"
	//   "CODEC_ID_TSCC"
	//   "CODEC_ID_ULTI"
	//   "CODEC_ID_QDRAW"
	//   "CODEC_ID_VIXL"
	//   "CODEC_ID_QPEG"
	//   "CODEC_ID_XVID" - deprecated: use CODEC_ID_MPEG4
	//   "CODEC_ID_PNG"
	//   "CODEC_ID_PPM"
	//   "CODEC_ID_PBM"
	//   "CODEC_ID_PGM"
	//   "CODEC_ID_PGMYUV"
	//   "CODEC_ID_PAM"
	//   "CODEC_ID_FFVHUFF"
	//   "CODEC_ID_RV30"
	//   "CODEC_ID_RV40"
	//   "CODEC_ID_VC1"
	//   "CODEC_ID_WMV3"
	//   "CODEC_ID_LOCO"
	//   "CODEC_ID_WNV1"
	//   "CODEC_ID_AASC"
	//   "CODEC_ID_INDEO2"
	//   "CODEC_ID_FRAPS"
	//   "CODEC_ID_TRUEMOTION2"
	//   "CODEC_ID_BMP"
	//   "CODEC_ID_CSCD"
	//   "CODEC_ID_MMVIDEO"
	//   "CODEC_ID_ZMBV"
	//   "CODEC_ID_AVS"
	//   "CODEC_ID_SMACKVIDEO"
	//   "CODEC_ID_NUV"
	//   "CODEC_ID_KMVC"
	//   "CODEC_ID_FLASHSV"
	//   "CODEC_ID_CAVS"
	//   "CODEC_ID_JPEG2000"
	//   "CODEC_ID_VMNC"
	//   "CODEC_ID_VP5"
	//   "CODEC_ID_VP6"
	//   "CODEC_ID_VP6F"
	//   "CODEC_ID_TARGA" - deprecated: removed from upstream
	//   "CODEC_ID_DSICINVIDEO"
	//   "CODEC_ID_TIERTEXSEQVIDEO"
	//   "CODEC_ID_TIFF"
	//   "CODEC_ID_GIF"
	//   "CODEC_ID_FFH264" - deprecated: removed from upstream
	//   "CODEC_ID_DXA"
	//   "CODEC_ID_DNXHD"
	//   "CODEC_ID_THP"
	//   "CODEC_ID_SGI"
	//   "CODEC_ID_C93"
	//   "CODEC_ID_BETHSOFTVID"
	//   "CODEC_ID_PTX"
	//   "CODEC_ID_TXD"
	//   "CODEC_ID_VP6A"
	//   "CODEC_ID_AMV"
	//   "CODEC_ID_VB"
	//   "CODEC_ID_PCX"
	//   "CODEC_ID_SUNRAST"
	//   "CODEC_ID_INDEO4"
	//   "CODEC_ID_INDEO5"
	//   "CODEC_ID_MIMIC"
	//   "CODEC_ID_RL2"
	//   "CODEC_ID_8SVX_EXP" - moved to audio codecs section in upstream
	//   "CODEC_ID_8SVX_FIB" - moved to audio codecs section in upstream
	//   "CODEC_ID_ESCAPE124"
	//   "CODEC_ID_DIRAC"
	//   "CODEC_ID_BFI"
	//   "CODEC_ID_CMV"
	//   "CODEC_ID_MOTIONPIXELS"
	//   "CODEC_ID_TGV"
	//   "CODEC_ID_TGQ"
	//   "CODEC_ID_TQI"
	//   "CODEC_ID_AURA"
	//   "CODEC_ID_AURA2"
	//   "CODEC_ID_V210X"
	//   "CODEC_ID_TMV"
	//   "CODEC_ID_V210"
	//   "CODEC_ID_DPX"
	//   "CODEC_ID_MAD"
	//   "CODEC_ID_FRWU"
	//   "CODEC_ID_VP8"
	//   "CODEC_ID_APPLE_PRORES_NQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_HQ" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_FLASHSV2"
	//   "CODEC_ID_CDGRAPHICS"
	//   "CODEC_ID_R210"
	//   "CODEC_ID_ANM"
	//   "CODEC_ID_BINKVIDEO"
	//   "CODEC_ID_IFF_ILBM"
	//   "CODEC_ID_IFF_BYTERUN1"
	//   "CODEC_ID_KGV1"
	//   "CODEC_ID_YOP"
	//   "CODEC_ID_PICTOR"
	//   "CODEC_ID_APPLE_PRORES_LT" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_PROXY" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PRORES_4444" - deprecated: use CODEC_ID_PRORES
	//   "CODEC_ID_APPLE_PIXLET"
	//   "CODEC_ID_G2M"
	//   "CODEC_ID_PRORES"
	//   "CODEC_ID_ANSI"
	//   "CODEC_ID_A64_MULTI"
	//   "CODEC_ID_A64_MULTI5"
	//   "CODEC_ID_R10K"
	//   "CODEC_ID_MXPEG"
	//   "CODEC_ID_LAGARITH"
	//   "CODEC_ID_JV"
	//   "CODEC_ID_DFA"
	//   "CODEC_ID_WMV3IMAGE"
	//   "CODEC_ID_VC1IMAGE"
	//   "CODEC_ID_UTVIDEO"
	//   "CODEC_ID_BMV_VIDEO"
	//   "CODEC_ID_VBLE"
	//   "CODEC_ID_DXTORY"
	//   "CODEC_ID_V410"
	//   "CODEC_ID_XWD"
	//   "CODEC_ID_CDXL"
	//   "CODEC_ID_XBM"
	//   "CODEC_ID_ZEROCODEC"
	//   "CODEC_ID_MSS1"
	//   "CODEC_ID_MSA1"
	//   "CODEC_ID_TSCC2"
	//   "CODEC_ID_MTS2"
	//   "CODEC_ID_CLLC"
	//   "CODEC_ID_MSS2"
	//   "CODEC_ID_Y41P"
	//   "CODEC_ID_ESCAPE130"
	//   "CODEC_ID_EXR"
	//   "CODEC_ID_AVRP"
	//   "CODEC_ID_AVUI"
	//   "CODEC_ID_AYUV"
	//   "CODEC_ID_V308"
	//   "CODEC_ID_V408"
	//   "CODEC_ID_YUV4"
	//   "CODEC_ID_SANM"
	//   "CODEC_ID_PAF_VIDEO"
	//   "CODEC_ID_AVRN"
	//   "CODEC_ID_CPIA"
	//   "CODEC_ID_VP9"
	//   "CODEC_ID_H265"
	//   "CODEC_ID_CFHD"
	//   "CODEC_ID_AV1"
	//   "CODEC_ID_AIC"
	//   "CODEC_ID_ALIAS_PIX"
	//   "CODEC_ID_APNG"
	//   "CODEC_ID_BRENDER_PIX"
	//   "CODEC_ID_CLEARVIDEO"
	//   "CODEC_ID_DDS"
	//   "CODEC_ID_DXV"
	//   "CODEC_ID_FIC"
	//   "CODEC_ID_FITS"
	//   "CODEC_ID_FMVC"
	//   "CODEC_ID_GDV"
	//   "CODEC_ID_HAP"
	//   "CODEC_ID_HNM4_VIDEO"
	//   "CODEC_ID_HQ_HQA"
	//   "CODEC_ID_HQX"
	//   "CODEC_ID_M101"
	//   "CODEC_ID_MAGICYUV"
	//   "CODEC_ID_MSCC"
	//   "CODEC_ID_MVC1"
	//   "CODEC_ID_MVC2"
	//   "CODEC_ID_PIXLET"
	//   "CODEC_ID_PSD"
	//   "CODEC_ID_RSCC"
	//   "CODEC_ID_SCPR"
	//   "CODEC_ID_SCREENPRESSO"
	//   "CODEC_ID_SGIRLE"
	//   "CODEC_ID_SHEERVIDEO"
	//   "CODEC_ID_SMVJPEG"
	//   "CODEC_ID_SPEEDHQ"
	//   "CODEC_ID_SRGC"
	//   "CODEC_ID_TARGA_Y216"
	//   "CODEC_ID_TDSC"
	//   "CODEC_ID_TRUEMOTION2RT"
	//   "CODEC_ID_VP7"
	//   "CODEC_ID_BITPACKED"
	//   "CODEC_ID_WEBP"
	//   "CODEC_ID_XFACE"
	//   "CODEC_ID_XPM"
	//   "CODEC_ID_YLC"
	//   "CODEC_ID_012V"
	//   "CODEC_ID_AVS2"
	//   "CODEC_ID_IMM4"
	//   "CODEC_ID_MWSC"
	//   "CODEC_ID_PROSUMER"
	//   "CODEC_ID_RASC"
	//   "CODEC_ID_WCMV"
	//   "CODEC_ID_UNKNOWN"
	//   "CODEC_ID_PCM_S16LE" - various pcm "codecs"
	//   "CODEC_ID_PCM_S16BE"
	//   "CODEC_ID_PCM_U16LE"
	//   "CODEC_ID_PCM_U16BE"
	//   "CODEC_ID_PCM_S8"
	//   "CODEC_ID_PCM_U8"
	//   "CODEC_ID_PCM_MULAW"
	//   "CODEC_ID_PCM_ALAW"
	//   "CODEC_ID_PCM_S32LE"
	//   "CODEC_ID_PCM_S32BE"
	//   "CODEC_ID_PCM_U32LE"
	//   "CODEC_ID_PCM_U32BE"
	//   "CODEC_ID_PCM_S24LE"
	//   "CODEC_ID_PCM_S24BE"
	//   "CODEC_ID_PCM_U24LE"
	//   "CODEC_ID_PCM_U24BE"
	//   "CODEC_ID_PCM_S24DAUD"
	//   "CODEC_ID_PCM_ZORK"
	//   "CODEC_ID_PCM_S16LE_PLANAR"
	//   "CODEC_ID_PCM_DVD"
	//   "CODEC_ID_PCM_F32BE"
	//   "CODEC_ID_PCM_F32LE"
	//   "CODEC_ID_PCM_F64BE"
	//   "CODEC_ID_PCM_F64LE"
	//   "CODEC_ID_PCM_BLURAY"
	//   "CODEC_ID_PCM_LXF"
	//   "CODEC_ID_S302M"
	//   "CODEC_ID_PCM_S8_PLANAR"
	//   "CODEC_ID_PCM_S24LE_PLANAR"
	//   "CODEC_ID_PCM_S32LE_PLANAR"
	//   "CODEC_ID_PCM_S16BE_PLANAR"
	//   "CODEC_ID_PCM_S64LE"
	//   "CODEC_ID_PCM_S64BE"
	//   "CODEC_ID_PCM_F16LE"
	//   "CODEC_ID_PCM_F24LE"
	//   "CODEC_ID_ADPCM_IMA_QT" - various adpcm codecs
	//   "CODEC_ID_ADPCM_IMA_WAV"
	//   "CODEC_ID_ADPCM_IMA_DK3"
	//   "CODEC_ID_ADPCM_IMA_DK4"
	//   "CODEC_ID_ADPCM_IMA_WS"
	//   "CODEC_ID_ADPCM_IMA_SMJPEG"
	//   "CODEC_ID_ADPCM_MS"
	//   "CODEC_ID_ADPCM_4XM"
	//   "CODEC_ID_ADPCM_XA"
	//   "CODEC_ID_ADPCM_ADX"
	//   "CODEC_ID_ADPCM_EA"
	//   "CODEC_ID_ADPCM_G726"
	//   "CODEC_ID_ADPCM_CT"
	//   "CODEC_ID_ADPCM_SWF"
	//   "CODEC_ID_ADPCM_YAMAHA"
	//   "CODEC_ID_ADPCM_SBPRO_4"
	//   "CODEC_ID_ADPCM_SBPRO_3"
	//   "CODEC_ID_ADPCM_SBPRO_2"
	//   "CODEC_ID_ADPCM_THP"
	//   "CODEC_ID_ADPCM_IMA_AMV"
	//   "CODEC_ID_ADPCM_EA_R1"
	//   "CODEC_ID_ADPCM_EA_R3"
	//   "CODEC_ID_ADPCM_EA_R2"
	//   "CODEC_ID_ADPCM_IMA_EA_SEAD"
	//   "CODEC_ID_ADPCM_IMA_EA_EACS"
	//   "CODEC_ID_ADPCM_EA_XAS"
	//   "CODEC_ID_ADPCM_EA_MAXIS_XA"
	//   "CODEC_ID_ADPCM_IMA_ISS"
	//   "CODEC_ID_ADPCM_G722"
	//   "CODEC_ID_ADPCM_IMA_APC"
	//   "CODEC_ID_VIMA"
	//   "CODEC_ID_ADPCM_AFC"
	//   "CODEC_ID_ADPCM_IMA_OKI"
	//   "CODEC_ID_ADPCM_DTK"
	//   "CODEC_ID_ADPCM_IMA_RAD"
	//   "CODEC_ID_ADPCM_G726LE"
	//   "CODEC_ID_ADPCM_THP_LE"
	//   "CODEC_ID_ADPCM_PSX"
	//   "CODEC_ID_ADPCM_AICA"
	//   "CODEC_ID_ADPCM_IMA_DAT4"
	//   "CODEC_ID_ADPCM_MTAF"
	//   "CODEC_ID_ADPCM_VIMA"
	//   "CODEC_ID_AMR_NB" - AMR
	//   "CODEC_ID_AMR_WB"
	//   "CODEC_ID_RA_144" - RealAudio codecs
	//   "CODEC_ID_RA_288"
	//   "CODEC_ID_ROQ_DPCM" - various DPCM codecs
	//   "CODEC_ID_INTERPLAY_DPCM"
	//   "CODEC_ID_XAN_DPCM"
	//   "CODEC_ID_SOL_DPCM"
	//   "CODEC_ID_GREMLIN_DPCM"
	//   "CODEC_ID_SDX2_DPCM"
	//   "CODEC_ID_MP2" - audio codecs
	//   "CODEC_ID_MP3" - preferred ID for MPEG Audio layer 1, 2 or 3
	//   "CODEC_ID_AAC"
	//   "CODEC_ID_MPEG4AAC_DEPRECATED" - Use CODEC_ID_AAC instead
	//   "CODEC_ID_AC3"
	//   "CODEC_ID_DTS"
	//   "CODEC_ID_VORBIS"
	//   "CODEC_ID_DVAUDIO"
	//   "CODEC_ID_WMAV1"
	//   "CODEC_ID_WMAV2"
	//   "CODEC_ID_MACE3"
	//   "CODEC_ID_MACE6"
	//   "CODEC_ID_VMDAUDIO"
	//   "CODEC_ID_SONIC"
	//   "CODEC_ID_SONIC_LS"
	//   "CODEC_ID_FLAC"
	//   "CODEC_ID_MP3ADU"
	//   "CODEC_ID_MP3ON4"
	//   "CODEC_ID_SHORTEN"
	//   "CODEC_ID_ALAC"
	//   "CODEC_ID_WESTWOOD_SND1"
	//   "CODEC_ID_GSM"
	//   "CODEC_ID_QDM2"
	//   "CODEC_ID_COOK"
	//   "CODEC_ID_TRUESPEECH"
	//   "CODEC_ID_TTA"
	//   "CODEC_ID_SMACKAUDIO"
	//   "CODEC_ID_QCELP"
	//   "CODEC_ID_WAVPACK"
	//   "CODEC_ID_DSICINAUDIO"
	//   "CODEC_ID_ASAO" - Not in ffmpeg as of rev 20544.
	//   "CODEC_ID_NELLYMOSER" - Start of out of order with ffmpeg
	//   "CODEC_ID_WMAVOICE"
	//   "CODEC_ID_WMAPRO"
	//   "CODEC_ID_WMALOSSLESS"
	//   "CODEC_ID_IMC"
	//   "CODEC_ID_MUSEPACK7"
	//   "CODEC_ID_MLP"
	//   "CODEC_ID_GSM_MS"
	//   "CODEC_ID_ATRAC3"
	//   "CODEC_ID_VOXWARE"
	//   "CODEC_ID_APE" - End of out of order with ffmpeg
	//   "CODEC_ID_MUSEPACK8"
	//   "CODEC_ID_SPEEX"
	//   "CODEC_ID_ATRAC3P"
	//   "CODEC_ID_EAC3"
	//   "CODEC_ID_SIPR"
	//   "CODEC_ID_MP1"
	//   "CODEC_ID_TWINVQ"
	//   "CODEC_ID_TRUEHD"
	//   "CODEC_ID_MP4ALS"
	//   "CODEC_ID_ATRAC1"
	//   "CODEC_ID_BINKAUDIO_RDFT"
	//   "CODEC_ID_BINKAUDIO_DCT"
	//   "CODEC_ID_AAC_LATM"
	//   "CODEC_ID_QDMC"
	//   "CODEC_ID_CELT"
	//   "CODEC_ID_G723_1"
	//   "CODEC_ID_G729"
	//   "CODEC_ID_BMV_AUDIO"
	//   "CODEC_ID_RALF"
	//   "CODEC_ID_IAC"
	//   "CODEC_ID_ILBC"
	//   "CODEC_ID_FFWAVESYNTH"
	//   "CODEC_ID_8SVX_RAW"
	//   "CODEC_ID_PAF_AUDIO"
	//   "CODEC_ID_OPUS"
	//   "CODEC_ID_ATRAC3AL"
	//   "CODEC_ID_ATRAC3PAL"
	//   "CODEC_ID_DOLBY_E"
	//   "CODEC_ID_DSD_LSBF"
	//   "CODEC_ID_DSD_MSBF"
	//   "CODEC_ID_DSD_LSBF_PLANAR"
	//   "CODEC_ID_DSD_MSBF_PLANAR"
	//   "CODEC_ID_DSS_SP"
	//   "CODEC_ID_DST"
	//   "CODEC_ID_EVRC"
	//   "CODEC_ID_INTERPLAY_ACM"
	//   "CODEC_ID_METASOUND"
	//   "CODEC_ID_ON2AVC"
	//   "CODEC_ID_TAK"
	//   "CODEC_ID_XMA1"
	//   "CODEC_ID_XMA2"
	//   "CODEC_ID_COMFORT_NOISE"
	//   "CODEC_ID_APTX"
	//   "CODEC_ID_APTX_HD"
	//   "CODEC_ID_SBC"
	//   "CODEC_ID_ATRAC9"
	//   "CODEC_ID_CODEC2"
	//   "CODEC_ID_OGGTHEORA_DEPRECATED" - Removed in ffmpeg rev 5877.
	//   "CODEC_ID_DVD_SUBTITLE" - subtitle codecs
	//   "CODEC_ID_DVB_SUBTITLE"
	//   "CODEC_ID_TEXT"
	//   "CODEC_ID_XSUB"
	//   "CODEC_ID_SSA"
	//   "CODEC_ID_MOV_TEXT"
	//   "CODEC_ID_HDMV_PGS_SUBTITLE"
	//   "CODEC_ID_DVB_TELETEXT"
	//   "CODEC_ID_SRT"
	//   "CODEC_ID_MICRODVD"
	//   "CODEC_ID_EIA_608"
	//   "CODEC_ID_JACOSUB"
	//   "CODEC_ID_SAMI"
	//   "CODEC_ID_REALTEXT"
	//   "CODEC_ID_SUBVIEWER"
	//   "CODEC_ID_SUBRIP"
	//   "CODEC_ID_WEBVTT"
	//   "CODEC_ID_ASS"
	//   "CODEC_ID_MPL2"
	//   "CODEC_ID_PJS"
	//   "CODEC_ID_STL"
	//   "CODEC_ID_SUBVIEWER1"
	//   "CODEC_ID_VPLAYER"
	//   "CODEC_ID_TTML"
	//   "CODEC_ID_TTF" - other specific kind of codecs (generally used for
	// attachments)
	//   "CODEC_ID_BINTEXT"
	//   "CODEC_ID_XBIN"
	//   "CODEC_ID_IDF"
	//   "CODEC_ID_OTF"
	//   "CODEC_ID_PROBE" - < codec_id is not known (like CODEC_ID_NONE) but
	// lavf should attempt to identify it
	//   "CODEC_ID_MPEG2TS" - _FAKE_ codec to indicate a raw MPEG2 transport
	// stream (only used by libavformat)
	//   "CODEC_ID_MPEG4SYSTEMS" - _FAKE_ codec to indicate a MPEG-4 Systems
	// stream (only used by libavformat)
	//   "CODEC_ID_FFMETADATA" - Dummy codec for streams containing only
	// metadata information.
	//   "CODEC_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in the
	// mapping between this enum and libavcodec's
	//   "CODEC_ID_WRAPPED_AVFRAME" - AVFrames wrapped in AVPacket
	//   "CODEC_ID_CAMM" - Camera motion metadata (http://go/wally-format)
	CodecId string `json:"codecId,omitempty"`

	// CodecString: RFC6381 Codec string.
	CodecString string `json:"codecString,omitempty"`

	ColorInfo *VideoFileColorInfo `json:"colorInfo,omitempty"`

	ContentLightLevel *VideoFileContentLightLevel `json:"contentLightLevel,omitempty"`

	// DecodeOffset: The bytes offset of the end of the first decodable
	// packet.
	DecodeOffset int64 `json:"decodeOffset,omitempty,string"`

	DisplayHeight int64 `json:"displayHeight,omitempty"`

	// DisplayWidth: final display video width and height if explicitly set
	// in the video otherwise this can be calculated from source
	// width/height and video_pixel_aspect_ratio
	DisplayWidth int64 `json:"displayWidth,omitempty"`

	// DoviConfiguration: Dolby Vision configuration if stream is
	// compatible.
	DoviConfiguration *VideoDoViDecoderConfiguration `json:"doviConfiguration,omitempty"`

	EndTimestamp int64 `json:"endTimestamp,omitempty,string"`

	// Flip: Should the video be mirrored horizontally / vertically? When
	// rotation and flip both are present for a video, it is assumed that
	// the flip is applied first, and then the rotation.
	//
	// Possible values:
	//   "FLIP_NONE" - No mirroring.
	//   "FLIP_HORIZONTAL" - Frame should be mirrored horizontally when
	// displayed.
	//   "FLIP_VERTICAL" - Frame should be mirrored vertically when
	// displayed.
	Flip string `json:"flip,omitempty"`

	// Fps: video frame per second, obtained by parsing video header
	// information. It could be inaccurate for some types of codecs,
	// notably, WMV, ASF, and FLV. It will be inaccurate for videos that
	// does not have constant frame rate since it is the smallest framerate
	// that can accurately represent all timestamps (see ffmpeg doc for
	// AVStream.r_frame_rate). Also frame rate can be parsed from headers
	// and can be wrong if it is not available there since ffmpeg uses a
	// heuristic for determining it.
	Fps float64 `json:"fps,omitempty"`

	// FrameSize: video frame size
	FrameSize int64 `json:"frameSize,omitempty,string"`

	// GopSize: Statistics about gop sizes of the video.
	GopSize *VideoVideoStreamInfoVideoStreamStatistics `json:"gopSize,omitempty"`

	// HasBFrames: video has b frames
	HasBFrames bool `json:"hasBFrames,omitempty"`

	// Hdr10PlusStats: Stats on HDR10+ over video frames.
	Hdr10PlusStats *VideoFileHDR10PlusStats `json:"hdr10PlusStats,omitempty"`

	Height int64 `json:"height,omitempty"`

	// Interlace: Information on interlaced video.
	//
	// Possible values:
	//   "INTERLACE_NONE" - No interlace
	//   "INTERLACE_PIC_AFF" - Adaptive frame-field coding in picture level
	//   "INTERLACE_MB_AFF" - Adaptive frame-field coding in macroblock
	// level
	Interlace string `json:"interlace,omitempty"`

	// IsInsaneSize: Check if a video size insane or not. It is set if the
	// input file is an MOV file.
	IsInsaneSize bool `json:"isInsaneSize,omitempty"`

	// ItuTT35: User data registered Itu-T T.35 SEI message
	ItuTT35 []*VideoUserDataRegisteredItuTT35 `json:"ituTT35,omitempty"`

	// Length: video length in seconds Note that when the VSI is from users
	// videos, it is not guaranteed to be the same as transcode lengths and
	// it could be 0 when the full VSI cannot compute the length from the
	// source header and timestamps (for example when header and timestamps
	// are too broken).
	Length float64 `json:"length,omitempty"`

	Level int64 `json:"level,omitempty"`

	MasteringDisplayMetadata *VideoFileMasteringDisplayMetadata `json:"masteringDisplayMetadata,omitempty"`

	// MaxFps: Maximum instantaneous frame rate seen from analyzing the
	// entire stream.
	MaxFps float64 `json:"maxFps,omitempty"`

	// Metadata: Metadata for video elementary stream;
	Metadata []*VideoClipInfo `json:"metadata,omitempty"`

	// MinFps: Minimum instantaneous frame rate seen from analyzing the
	// entire stream.
	MinFps float64 `json:"minFps,omitempty"`

	// NumberOfFrames: Number of video frames.
	NumberOfFrames int64 `json:"numberOfFrames,omitempty,string"`

	// NumberOfInvisibleFrames: Invisible frame count Keep a count of frames
	// that are not displayed should the full frame count be needed for the
	// video stream. The only codec currently reporting this value is VP8
	// with alternate reference frames enabled
	NumberOfInvisibleFrames int64 `json:"numberOfInvisibleFrames,omitempty"`

	// PixFmt: Pixel format for the video stream.
	//
	// Possible values:
	//   "PIX_FMT_NONE"
	//   "PIX_FMT_YUV420P"
	//   "PIX_FMT_YUYV422"
	//   "PIX_FMT_RGB24"
	//   "PIX_FMT_BGR24"
	//   "PIX_FMT_YUV422P"
	//   "PIX_FMT_YUV444P"
	//   "PIX_FMT_RGB32"
	//   "PIX_FMT_YUV410P"
	//   "PIX_FMT_YUV411P"
	//   "PIX_FMT_RGB565"
	//   "PIX_FMT_RGB555"
	//   "PIX_FMT_GRAY8"
	//   "PIX_FMT_MONOWHITE"
	//   "PIX_FMT_MONOBLACK"
	//   "PIX_FMT_PAL8"
	//   "PIX_FMT_YUVJ420P"
	//   "PIX_FMT_YUVJ422P"
	//   "PIX_FMT_YUVJ444P"
	//   "PIX_FMT_XVMC_MPEG2_MC"
	//   "PIX_FMT_XVMC_MPEG2_IDCT"
	//   "PIX_FMT_UYVY422"
	//   "PIX_FMT_UYYVYY411"
	//   "PIX_FMT_BGR32"
	//   "PIX_FMT_BGR565"
	//   "PIX_FMT_BGR555"
	//   "PIX_FMT_BGR8"
	//   "PIX_FMT_BGR4"
	//   "PIX_FMT_BGR4_BYTE"
	//   "PIX_FMT_RGB8"
	//   "PIX_FMT_RGB4"
	//   "PIX_FMT_RGB4_BYTE"
	//   "PIX_FMT_NV12"
	//   "PIX_FMT_NV21"
	//   "PIX_FMT_RGB32_1"
	//   "PIX_FMT_BGR32_1"
	//   "PIX_FMT_GRAY16BE"
	//   "PIX_FMT_GRAY16LE"
	//   "PIX_FMT_YUV440P"
	//   "PIX_FMT_YUVJ440P"
	//   "PIX_FMT_YUVA420P"
	//   "PIX_FMT_VDPAU_H264"
	//   "PIX_FMT_VDPAU_MPEG1"
	//   "PIX_FMT_VDPAU_MPEG2"
	//   "PIX_FMT_VDPAU_WMV3"
	//   "PIX_FMT_VDPAU_VC1"
	//   "PIX_FMT_RGB48BE"
	//   "PIX_FMT_RGB48LE"
	//   "PIX_FMT_RGB565BE"
	//   "PIX_FMT_RGB555BE"
	//   "PIX_FMT_BGR565BE"
	//   "PIX_FMT_BGR555BE"
	//   "PIX_FMT_VAAPI_MOCO"
	//   "PIX_FMT_VAAPI_IDCT"
	//   "PIX_FMT_VAAPI_VLD"
	//   "PIX_FMT_YUV420P16LE"
	//   "PIX_FMT_YUV420P16BE"
	//   "PIX_FMT_YUV422P16LE"
	//   "PIX_FMT_YUV422P16BE"
	//   "PIX_FMT_YUV444P16LE"
	//   "PIX_FMT_YUV444P16BE"
	//   "PIX_FMT_VDPAU_MPEG4"
	//   "PIX_FMT_DXVA2_VLD"
	//   "PIX_FMT_RGB444LE"
	//   "PIX_FMT_RGB444BE"
	//   "PIX_FMT_BGR444LE"
	//   "PIX_FMT_BGR444BE"
	//   "PIX_FMT_GRAY8A"
	//   "PIX_FMT_BGR48BE"
	//   "PIX_FMT_BGR48LE"
	//   "PIX_FMT_YUV420P9BE"
	//   "PIX_FMT_YUV420P9LE"
	//   "PIX_FMT_YUV420P10BE"
	//   "PIX_FMT_YUV420P10LE"
	//   "PIX_FMT_YUV422P10BE"
	//   "PIX_FMT_YUV422P10LE"
	//   "PIX_FMT_YUV444P9BE"
	//   "PIX_FMT_YUV444P9LE"
	//   "PIX_FMT_YUV444P10BE"
	//   "PIX_FMT_YUV444P10LE"
	//   "PIX_FMT_YUV422P9BE"
	//   "PIX_FMT_YUV422P9LE"
	//   "PIX_FMT_VDA_VLD"
	//   "PIX_FMT_RGBA64BE"
	//   "PIX_FMT_RGBA64LE"
	//   "PIX_FMT_BGRA64BE"
	//   "PIX_FMT_BGRA64LE"
	//   "PIX_FMT_GBRP"
	//   "PIX_FMT_GBRP9BE"
	//   "PIX_FMT_GBRP9LE"
	//   "PIX_FMT_GBRP10BE"
	//   "PIX_FMT_GBRP10LE"
	//   "PIX_FMT_GBRP16BE"
	//   "PIX_FMT_GBRP16LE"
	//   "PIX_FMT_0RGB"
	//   "PIX_FMT_RGB0"
	//   "PIX_FMT_0BGR"
	//   "PIX_FMT_BGR0"
	//   "PIX_FMT_YUVA444P"
	//   "PIX_FMT_YUVA422P"
	//   "PIX_FMT_YUV420P12BE"
	//   "PIX_FMT_YUV420P12LE"
	//   "PIX_FMT_YUV420P14BE"
	//   "PIX_FMT_YUV420P14LE"
	//   "PIX_FMT_YUV422P12BE"
	//   "PIX_FMT_YUV422P12LE"
	//   "PIX_FMT_YUV422P14BE"
	//   "PIX_FMT_YUV422P14LE"
	//   "PIX_FMT_YUV444P12BE"
	//   "PIX_FMT_YUV444P12LE"
	//   "PIX_FMT_YUV444P14BE"
	//   "PIX_FMT_YUV444P14LE"
	//   "PIX_FMT_GBRP12BE"
	//   "PIX_FMT_GBRP12LE"
	//   "PIX_FMT_GBRP14BE"
	//   "PIX_FMT_GBRP14LE"
	//   "PIX_FMT_ARGB"
	//   "PIX_FMT_RGBA"
	//   "PIX_FMT_ABGR"
	//   "PIX_FMT_BGRA"
	//   "PIX_FMT_RGB565LE"
	//   "PIX_FMT_RGB555LE"
	//   "PIX_FMT_BGR565LE"
	//   "PIX_FMT_BGR555LE"
	//   "PIX_FMT_VAAPI"
	//   "PIX_FMT_YA8"
	//   "PIX_FMT_Y400A"
	//   "PIX_FMT_YUVA420P9BE"
	//   "PIX_FMT_YUVA420P9LE"
	//   "PIX_FMT_YUVA422P9BE"
	//   "PIX_FMT_YUVA422P9LE"
	//   "PIX_FMT_YUVA444P9BE"
	//   "PIX_FMT_YUVA444P9LE"
	//   "PIX_FMT_YUVA420P10BE"
	//   "PIX_FMT_YUVA420P10LE"
	//   "PIX_FMT_YUVA422P10BE"
	//   "PIX_FMT_YUVA422P10LE"
	//   "PIX_FMT_YUVA444P10BE"
	//   "PIX_FMT_YUVA444P10LE"
	//   "PIX_FMT_YUVA420P16BE"
	//   "PIX_FMT_YUVA420P16LE"
	//   "PIX_FMT_YUVA422P16BE"
	//   "PIX_FMT_YUVA422P16LE"
	//   "PIX_FMT_YUVA444P16BE"
	//   "PIX_FMT_YUVA444P16LE"
	//   "PIX_FMT_VDPAU"
	//   "PIX_FMT_XYZ12LE"
	//   "PIX_FMT_XYZ12BE"
	//   "PIX_FMT_NV16"
	//   "PIX_FMT_NV20LE"
	//   "PIX_FMT_NV20BE"
	//   "PIX_FMT_YVYU422"
	//   "PIX_FMT_VDA"
	//   "PIX_FMT_YA16BE"
	//   "PIX_FMT_YA16LE"
	//   "PIX_FMT_GBRAP"
	//   "PIX_FMT_GBRAP16BE"
	//   "PIX_FMT_GBRAP16LE"
	//   "PIX_FMT_QSV"
	//   "PIX_FMT_MMAL"
	//   "PIX_FMT_D3D11VA_VLD"
	//   "PIX_FMT_CUDA"
	//   "PIX_FMT_YUVJ411P"
	//   "PIX_FMT_BAYER_BGGR8"
	//   "PIX_FMT_BAYER_RGGB8"
	//   "PIX_FMT_BAYER_GBRG8"
	//   "PIX_FMT_BAYER_GRBG8"
	//   "PIX_FMT_BAYER_BGGR16LE"
	//   "PIX_FMT_BAYER_BGGR16BE"
	//   "PIX_FMT_BAYER_RGGB16LE"
	//   "PIX_FMT_BAYER_RGGB16BE"
	//   "PIX_FMT_BAYER_GBRG16LE"
	//   "PIX_FMT_BAYER_GBRG16BE"
	//   "PIX_FMT_BAYER_GRBG16LE"
	//   "PIX_FMT_BAYER_GRBG16BE"
	//   "PIX_FMT_XVMC"
	//   "PIX_FMT_YUV440P10LE"
	//   "PIX_FMT_YUV440P10BE"
	//   "PIX_FMT_YUV440P12LE"
	//   "PIX_FMT_YUV440P12BE"
	//   "PIX_FMT_AYUV64LE"
	//   "PIX_FMT_AYUV64BE"
	//   "PIX_FMT_VIDEOTOOLBOX"
	//   "PIX_FMT_P010LE"
	//   "PIX_FMT_P010BE"
	//   "PIX_FMT_GBRAP12BE"
	//   "PIX_FMT_GBRAP12LE"
	//   "PIX_FMT_GBRAP10BE"
	//   "PIX_FMT_GBRAP10LE"
	//   "PIX_FMT_MEDIACODEC"
	//   "PIX_FMT_GRAY12BE"
	//   "PIX_FMT_GRAY12LE"
	//   "PIX_FMT_GRAY10BE"
	//   "PIX_FMT_GRAY10LE"
	//   "PIX_FMT_P016LE"
	//   "PIX_FMT_P016BE"
	//   "PIX_FMT_D3D11"
	//   "PIX_FMT_GRAY9BE"
	//   "PIX_FMT_GRAY9LE"
	//   "PIX_FMT_GBRPF32BE"
	//   "PIX_FMT_GBRPF32LE"
	//   "PIX_FMT_GBRAPF32BE"
	//   "PIX_FMT_GBRAPF32LE"
	//   "PIX_FMT_DRM_PRIME"
	//   "PIX_FMT_GACCEL"
	//   "PIX_FMT_OPENCL"
	//   "PIX_FMT_GRAY14BE"
	//   "PIX_FMT_GRAY14LE"
	//   "PIX_FMT_GRAYF32BE"
	//   "PIX_FMT_GRAYF32LE"
	//   "PIX_FMT_VULKAN"
	//   "PIX_FMT_ID_FFMPEG_OUT_OF_SYNC" - this one indicates an error in
	// the mapping between this enum and libavcodec's
	PixFmt string `json:"pixFmt,omitempty"`

	// PixelAspectRatio: video pixel aspect ratio
	PixelAspectRatio float64 `json:"pixelAspectRatio,omitempty"`

	// Possible values:
	//   "PROFILE_UNKNOWN"
	//   "PROFILE_AAC_MAIN"
	//   "PROFILE_AAC_LOW"
	//   "PROFILE_AAC_SSR"
	//   "PROFILE_AAC_LTP"
	//   "PROFILE_AAC_HE"
	//   "PROFILE_AAC_HE_V2"
	//   "PROFILE_AAC_LD"
	//   "PROFILE_AAC_ELD"
	//   "PROFILE_AVC_CONSTRAINED" - (1 << 8) constrained mode set bit
	//   "PROFILE_AVC_INTRA" - (1 << 11) intra mode set bit
	//   "PROFILE_AVC_BASELINE"
	//   "PROFILE_AVC_CONSTRAINED_BASELINE" -
	// PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE |
	// PROFILE_AVC_CONSTRAINED
	//   "PROFILE_AVC_MAIN"
	//   "PROFILE_AVC_EXTENDED"
	//   "PROFILE_AVC_HIGH"
	//   "PROFILE_AVC_HIGH10"
	//   "PROFILE_AVC_HIGH10_INTRA" - PROFILE_AVC_HIGH10_INTRA =
	// PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH422"
	//   "PROFILE_AVC_HIGH422_INTRA" - PROFILE_AVC_HIGH422_INTRA =
	// PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_HIGH444"
	//   "PROFILE_HIGH444_PREDICTIVE"
	//   "PROFILE_AVC_HIGH444_INTRA" - PROFILE_AVC_HIGH444_INTRA =
	// PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA
	//   "PROFILE_AVC_CAVLC444"
	//   "PROFILE_VP9_0" - Since profile IDs might collide from different
	// codecs, the profile IDs listed below are not identical to the numeric
	// numbers defined in the spec due to collision. Next Profile ID: 10008
	// PROFILES for VP9. 0
	//   "PROFILE_VP9_1" - 1
	//   "PROFILE_VP9_2" - 2
	//   "PROFILE_VP9_3" - 3
	//   "PROFILE_HEVC_MAIN" - 1
	//   "PROFILE_HEVC_MAIN_10" - 2
	//   "PROFILE_HEVC_MAIN_STILL_PICTURE" - 3
	//   "PROFILE_HEVC_REXT" - 4
	//   "PROFILE_DOVI_5" - DOVI Profile 5 can only be played as Dolby
	// Vision so it has its own Profile.
	Profile string `json:"profile,omitempty"`

	// RationalFps: The nominal frame rate ('fps' field) represented as a
	// fraction.
	RationalFps *VideoRational32 `json:"rationalFps,omitempty"`

	// Rotation: Is the video rotated ?
	//
	// Possible values:
	//   "ROTATION_NONE" - No rotation
	//   "ROTATION_OTHER" - Unspecified non-identity rotation
	//   "ROTATION_CW_90" - Rotate clockwise by 90 degrees
	//   "ROTATION_CCW_90" - Rotate counter-clockwise by 90 degrees
	//   "ROTATION_180" - Rotate 180 degrees
	Rotation string `json:"rotation,omitempty"`

	// SeiMessage: video SEI payload types and total payload size of a type
	// this is only for H.264 and H.265
	SeiMessage []*VideoSEIMessage `json:"seiMessage,omitempty"`

	// Spherical: Optional spherical video information.
	Spherical *VideoFileSphericalMetadata `json:"spherical,omitempty"`

	// StartTimestamp: Start/end timestamps of audio/video in ms.
	StartTimestamp int64 `json:"startTimestamp,omitempty,string"`

	StreamCodecTag int64 `json:"streamCodecTag,omitempty,string"`

	// StreamIndex: Index of the stream in the file. it is 0 based.
	StreamIndex int64 `json:"streamIndex,omitempty,string"`

	// UserDataUnregistered: User data unregistered SEI message
	UserDataUnregistered []*VideoUserDataUnregistered `json:"userDataUnregistered,omitempty"`

	// Width: source video width and height
	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AverageFps") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AverageFps") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoVideoStream) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoVideoStream
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoVideoStreamInfoVideoStream) UnmarshalJSON(data []byte) error {
	type NoMethod VideoVideoStreamInfoVideoStream
	var s1 struct {
		AverageFps       gensupport.JSONFloat64 `json:"averageFps"`
		Fps              gensupport.JSONFloat64 `json:"fps"`
		Length           gensupport.JSONFloat64 `json:"length"`
		MaxFps           gensupport.JSONFloat64 `json:"maxFps"`
		MinFps           gensupport.JSONFloat64 `json:"minFps"`
		PixelAspectRatio gensupport.JSONFloat64 `json:"pixelAspectRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageFps = float64(s1.AverageFps)
	s.Fps = float64(s1.Fps)
	s.Length = float64(s1.Length)
	s.MaxFps = float64(s1.MaxFps)
	s.MinFps = float64(s1.MinFps)
	s.PixelAspectRatio = float64(s1.PixelAspectRatio)
	return nil
}

type VideoVideoStreamInfoVideoStreamCleanAperture struct {
	Height int64 `json:"height,omitempty"`

	HorizontalOffset int64 `json:"horizontalOffset,omitempty"`

	VerticalOffset int64 `json:"verticalOffset,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Height") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Height") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoVideoStreamCleanAperture) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoVideoStreamCleanAperture
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type VideoVideoStreamInfoVideoStreamStatistics struct {
	Max int64 `json:"max,omitempty,string"`

	Mean float64 `json:"mean,omitempty"`

	Min int64 `json:"min,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Max") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Max") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoVideoStreamInfoVideoStreamStatistics) MarshalJSON() ([]byte, error) {
	type NoMethod VideoVideoStreamInfoVideoStreamStatistics
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoVideoStreamInfoVideoStreamStatistics) UnmarshalJSON(data []byte) error {
	type NoMethod VideoVideoStreamInfoVideoStreamStatistics
	var s1 struct {
		Mean gensupport.JSONFloat64 `json:"mean"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Mean = float64(s1.Mean)
	return nil
}

type VideoYoutubeCommentsClassificationProtoSmartSuggestion struct {
	// DiversificationThreshold: Diversification threshold used in
	// prediction. Additional responses which are closer than the threshold
	// to the already selected responses will be skipped.
	DiversificationThreshold float64 `json:"diversificationThreshold,omitempty"`

	// LikelihoodBiasWeight: Bias weight used in prediction.
	LikelihoodBiasWeight float64 `json:"likelihoodBiasWeight,omitempty"`

	// ReplyContent: Content of the reply snippet (could include emoji as
	// well as text).
	ReplyContent string `json:"replyContent,omitempty"`

	// Score: Model score for the predicted reply snippet.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DiversificationThreshold") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DiversificationThreshold")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoYoutubeCommentsClassificationProtoSmartSuggestion) MarshalJSON() ([]byte, error) {
	type NoMethod VideoYoutubeCommentsClassificationProtoSmartSuggestion
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *VideoYoutubeCommentsClassificationProtoSmartSuggestion) UnmarshalJSON(data []byte) error {
	type NoMethod VideoYoutubeCommentsClassificationProtoSmartSuggestion
	var s1 struct {
		DiversificationThreshold gensupport.JSONFloat64 `json:"diversificationThreshold"`
		LikelihoodBiasWeight     gensupport.JSONFloat64 `json:"likelihoodBiasWeight"`
		Score                    gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DiversificationThreshold = float64(s1.DiversificationThreshold)
	s.LikelihoodBiasWeight = float64(s1.LikelihoodBiasWeight)
	s.Score = float64(s1.Score)
	return nil
}

// VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply:
// Smart reply suggestions for comment.
type VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply struct {
	// SmartSuggestions: The order of the reply snippets in the list
	// determines how they should be displayed in the UI and the client is
	// not supposed to re-order the list using the scores.
	SmartSuggestions []*VideoYoutubeCommentsClassificationProtoSmartSuggestion `json:"smartSuggestions,omitempty"`

	// SuggestionListIdentifier: Identifier (language_code, channel_id, etc)
	// for the suggestion list from which the top k suggestions are
	// selected.
	SuggestionListIdentifier string `json:"suggestionListIdentifier,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SmartSuggestions") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SmartSuggestions") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply) MarshalJSON() ([]byte, error) {
	type NoMethod VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// VideoYoutubeCommentsRankingCTRMetrics: Used for stanza KV pair. Next
// tag: 7.
type VideoYoutubeCommentsRankingCTRMetrics struct {
	Downvotes int64 `json:"downvotes,omitempty,string"`

	Impressions int64 `json:"impressions,omitempty,string"`

	// Possible values:
	//   "UNKNOWN"
	//   "THREE_DAYS"
	//   "SEVEN_DAYS"
	//   "FULL_HISTORY"
	MeasureWindow string `json:"measureWindow,omitempty"`

	TeaserClicks int64 `json:"teaserClicks,omitempty,string"`

	TeaserImpressions int64 `json:"teaserImpressions,omitempty,string"`

	Upvotes int64 `json:"upvotes,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Downvotes") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Downvotes") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *VideoYoutubeCommentsRankingCTRMetrics) MarshalJSON() ([]byte, error) {
	type NoMethod VideoYoutubeCommentsRankingCTRMetrics
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WWWDocInfo: Some per-doc info is returned for all www DocInfo
// requests. Next id: 94
type WWWDocInfo struct {
	// AdditionalSafesearchStats: Additional stats output by SafeSearch. See
	// classifier/porn/public/porn-attachments.h.
	AdditionalSafesearchStats []int64 `json:"additionalSafesearchStats,omitempty"`

	// AuthMethod: Sometimes called secureid
	AuthMethod int64 `json:"authMethod,omitempty"`

	// BadMetadescription: Bad meta flag
	BadMetadescription bool `json:"badMetadescription,omitempty"`

	// BodySize: Size of document
	BodySize int64 `json:"bodySize,omitempty"`

	BodyTitleLanguages []string `json:"bodyTitleLanguages,omitempty"`

	BoilerplateMetadescription bool `json:"boilerplateMetadescription,omitempty"`

	// ColorDetectionResult: Detected color in the image in RGB565 format in
	// the lower 16 bits.
	ColorDetectionResult int64 `json:"colorDetectionResult,omitempty"`

	// ContentType: If not present, then the type
	ContentType int64 `json:"contentType,omitempty,string"`

	// CoupledUrl: Url of coupled doc (e.g. image)
	CoupledUrl string `json:"coupledUrl,omitempty"`

	CoupledUrlEncoding int64 `json:"coupledUrlEncoding,omitempty"`

	// CrawlTime: Last time this doc crawled
	CrawlTime int64 `json:"crawlTime,omitempty,string"`

	// CropData: Thumbnail cropping information.
	CropData int64 `json:"cropData,omitempty"`

	DataVersion string `json:"dataVersion,omitempty"`

	// DocVersionId: Fields generated by the docserver, but whose meaning is
	// unclear. Sometimes last crawl time
	DocVersionId int64 `json:"docVersionId,omitempty,string"`

	Encoding int64 `json:"encoding,omitempty,string"`

	// FailsSafeSearch: fails_safe_search is never filled in production.
	FailsSafeSearch int64 `json:"failsSafeSearch,omitempty,string"`

	// FileTypeId: If converted to TEXT or HTML
	FileTypeId int64 `json:"fileTypeId,omitempty,string"`

	// ForeignMetadescription: Indicate if the meta description in a
	// different language than its page.
	ForeignMetadescription bool `json:"foreignMetadescription,omitempty"`

	FuzzyMetadescription bool `json:"fuzzyMetadescription,omitempty"`

	// GoogleLabelData: Addition to support google label per-search-result
	// annotation.
	GoogleLabelData string `json:"googleLabelData,omitempty"`

	// HasBadSslCertificate: If true, the original document has a bad SSL
	// certificate.
	HasBadSslCertificate bool `json:"hasBadSslCertificate,omitempty"`

	// ImageHeight: image height
	ImageHeight int64 `json:"imageHeight,omitempty"`

	// ImageLicenseInfo: Image license info such as license url and how to
	// acquire the license.
	ImageLicenseInfo *ImageSearchImageLicenseInfo `json:"imageLicenseInfo,omitempty"`

	ImagePublisher string `json:"imagePublisher,omitempty"`

	// ImageSize: size in bytes;
	ImageSize int64 `json:"imageSize,omitempty"`

	// ImageWidth: image width
	ImageWidth int64 `json:"imageWidth,omitempty"`

	// IndexingTs: The timestamp (the time since the Epoch, in microseconds)
	// when the docjoin is exported from indexing. This is mainly exported
	// and used by Youtube Search. See MustangBasicInfo.indexing_ts for more
	// details.
	IndexingTs int64 `json:"indexingTs,omitempty,string"`

	// Ip: If ipaddr is set, ip should be ignored (it should not be set).
	// Ipaddr should be either 4- or 16-byte string for IPv4 or IPv6
	// addresses. If ipaddr is not set, ip is set to the IPv4 address for
	// the host.
	Ip int64 `json:"ip,omitempty"`

	Ipaddr string `json:"ipaddr,omitempty"`

	// IsAnimated: Is this image animated?
	IsAnimated bool `json:"isAnimated,omitempty"`

	// IsHostedImage: Hosted Images related fields.
	IsHostedImage bool `json:"isHostedImage,omitempty"`

	// IsPorn: Doc porn classification.
	IsPorn bool `json:"isPorn,omitempty"`

	// IsRoboted: Is disallowed for crawling according to host's robots.txt.
	IsRoboted bool `json:"isRoboted,omitempty"`

	// IsSitePorn: Consider the page classification is_porn as an
	// alternative for is_site_porn, and talk to safesearch@google.com for
	// additional information if needed.
	IsSitePorn bool `json:"isSitePorn,omitempty"`

	// IsSoftporn: Doc softporn classification.
	IsSoftporn bool `json:"isSoftporn,omitempty"`

	// Language: go/iii-td b/130371355
	Language int64 `json:"language,omitempty,string"`

	// LanguageTag: This returns the most probable language for the
	// document. The complete set of languages is in the
	// GenericSearchResponse. (If some future use requires all languages
	// from the doc request, note that fetching that will require decoding
	// the entire per-doc data attachment, which is a performance hit) Use
	// docinfo-util.h to set & read language fields. Language tag as defined
	// by http://www.unicode.org/reports/tr35/#Identifiers and
	// https://tools.ietf.org/html/bcp47 If not present, then use language.
	LanguageTag string `json:"languageTag,omitempty"`

	// LastModTime: Unused by gws
	LastModTime int64 `json:"lastModTime,omitempty,string"`

	// LicensedWebImagesOptInState: Indicates the web-master opt-in state of
	// this image. This project is still in MVP stage, please contact us
	// licensed-media-team@ before use.
	//
	// Possible values:
	//   "IMAGES_OPTIN_NONE" - DEFAULT
	//   "IMAGES_OPTIN_FULL"
	//   "PAGE_SNIPPET_CONTROL_SIZE_NONE" - Followings are extracted from
	// page snippet restriction. Publisher explicitly requires a no-image
	// treatment.
	//   "PAGE_SNIPPET_CONTROL_SIZE_STANDARD" - Translates to 50k pixels.
	//   "PAGE_SNIPPET_CONTROL_SIZE_LARGE" - Translates to 300k pixels.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_NONE" - Followings are extracted
	// from per image tag snippet restriction. Publisher explicitly requires
	// a no-image treatment.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_STANDARD" - Translates to 50k
	// pixels.
	//   "IMAGE_TAG_SNIPPET_CONTROL_SIZE_LARGE" - Translates to 300k pixels.
	LicensedWebImagesOptInState string `json:"licensedWebImagesOptInState,omitempty"`

	LowQualityMetadescription bool `json:"lowQualityMetadescription,omitempty"`

	// MetaDescriptionLanguages: If meta description/body title were
	// detected to be in a different language from the document language
	// (the 'language' field above) in RosettaLanguageAnnotator, the
	// detected languages are populated here. Note: as of ariane/154728, no
	// more than one language is populated for each field.
	MetaDescriptionLanguages []string `json:"metaDescriptionLanguages,omitempty"`

	// NearbyText: Nearby text of the image on landing page. Used to
	// construct Scroll to Image urls.
	NearbyText string `json:"nearbyText,omitempty"`

	// Noimageframeoverlayreason: If not 0, we should not show the image in
	// overlay mode in image snippets.
	Noimageframeoverlayreason int64 `json:"noimageframeoverlayreason,omitempty"`

	// NsrSitechunk: Sitechunk used by NSR. For most pages this is
	// equivalent HOST_LEVEL_V3 sitechunk. Main difference is that, for
	// sites like youtube.com and vimeo.com, nsr_sitechunks are channel
	// level (based on schema.org markup, not url alone). See go/nsr-chunks
	// for more details.
	NsrSitechunk string `json:"nsrSitechunk,omitempty"`

	PartialBoilerplateMetadescription bool `json:"partialBoilerplateMetadescription,omitempty"`

	// PornStats: 'porn_stats' is used in porn demotion and filtering. See
	// classifier/porn/public/porn-attachments.h.
	PornStats int64 `json:"pornStats,omitempty"`

	// QualityWithoutAdjustment: Quality score (also known as QScore, see
	// go/qscore-faq).
	QualityWithoutAdjustment float64 `json:"qualityWithoutAdjustment,omitempty"`

	// ReferrerUrl: Url of referring doc
	ReferrerUrl string `json:"referrerUrl,omitempty"`

	Relatedimages []*WWWDocInfoRelatedImages `json:"relatedimages,omitempty"`

	// RootpageDuplicateMetadescription: True if the meta-description is
	// duplicated on many other pages and this page is the rootpage of such
	// pages which have the same meta-description.
	RootpageDuplicateMetadescription bool `json:"rootpageDuplicateMetadescription,omitempty"`

	// SeenNoarchive: Has noarchive meta robots flag
	SeenNoarchive bool `json:"seenNoarchive,omitempty"`

	// SeenNoindex: Has noindex meta robots flag
	SeenNoindex bool `json:"seenNoindex,omitempty"`

	// SeenNoodp: NOTE(kinoue): ODP/GWD snippet is unlaunched as of June
	// 2017. This is no longer used.
	SeenNoodp bool `json:"seenNoodp,omitempty"`

	// SeenNopreview: Has nopreview meta robots flag
	SeenNopreview bool `json:"seenNopreview,omitempty"`

	// SeenNosnippet: Has nosnippet meta robots flag
	SeenNosnippet bool `json:"seenNosnippet,omitempty"`

	// SeenNotranslate: Has notranslate meta robots flag
	SeenNotranslate bool `json:"seenNotranslate,omitempty"`

	ShoppingAttachment *QualityShoppingShoppingAttachment `json:"shoppingAttachment,omitempty"`

	// ShoppingOffers: Shopping offer info from Inventory & Policy Service.
	ShoppingOffers []*ImageMustangShoppingOffer `json:"shoppingOffers,omitempty"`

	// Subindex: Subindex id of the document should be one of the values
	// defined by enum CompositeDoc::SubIndexType. Used for superroot/gws
	// logging if a shard has documents from multiple indices.
	Subindex int64 `json:"subindex,omitempty"`

	// ThumbHeight: thumbnail height
	ThumbHeight int64 `json:"thumbHeight,omitempty"`

	// ThumbWidth: Additions for image search.
	ThumbWidth int64 `json:"thumbWidth,omitempty"`

	Thumbnail []*WWWDocInfoThumbnail `json:"thumbnail,omitempty"`

	// Title: Landing page title.
	Title string `json:"title,omitempty"`

	UnionBuildTime int64 `json:"unionBuildTime,omitempty,string"`

	// Url: Url
	Url string `json:"url,omitempty"`

	// UrlAfterRedirects: empty => same as url
	UrlAfterRedirects string `json:"urlAfterRedirects,omitempty"`

	// UrlEncoding: See webutil/urlencoding
	UrlEncoding int64 `json:"urlEncoding,omitempty"`

	// VisibleImage: If an image request, was the coupled image visible on
	// the page?
	VisibleImage bool `json:"visibleImage,omitempty"`

	// VisualType: Is this doc visual RTL? See enum VisualType in
	// visualtype.h. Default is NOT_VISUAL_DOCUMENT.
	VisualType int64 `json:"visualType,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalSafesearchStats") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AdditionalSafesearchStats") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWDocInfo) MarshalJSON() ([]byte, error) {
	type NoMethod WWWDocInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *WWWDocInfo) UnmarshalJSON(data []byte) error {
	type NoMethod WWWDocInfo
	var s1 struct {
		QualityWithoutAdjustment gensupport.JSONFloat64 `json:"qualityWithoutAdjustment"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.QualityWithoutAdjustment = float64(s1.QualityWithoutAdjustment)
	return nil
}

// WWWDocInfoRelatedImages: Return related images.
type WWWDocInfoRelatedImages struct {
	ImageDocid uint64 `json:"imageDocid,omitempty,string"`

	ThumbHeight int64 `json:"thumbHeight,omitempty"`

	// Possible values:
	//   "THUMBNAIL_TYPE_DEFAULT" - DEPRECATED - use THUMBNAIL_TYPE_AREA_50K
	// if possible. The default thumbnail type is deprecated and no longer
	// served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you
	// must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.
	//   "THUMBNAIL_TYPE_AREA_50K" - This is the most common thumbnail type,
	// used in image search results. It is defined to have 50625 pixels (=
	// 225 x 225).
	//   "THUMBNAIL_TYPE_400" - This refers to a thumbnail that fits in a
	// 400x400 box.
	//   "THUMBNAIL_TYPE_800" - This refers to a thumbnail that fits in a
	// 800x800 box.
	//   "THUMBNAIL_TYPE_ORIGINAL" - This refers to re-encoding original
	// image to JPEG at the same size (up to 10000x10000). Output quality
	// may be lower.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ" - Re-encode image at the same size as
	// original (up to 10000x10000) but with high-quality (q=90). This was
	// introduced by TYPHOON client and is expected only for very few images
	// in our table (under 10k). If you plan to use this contact amarna-dev@
	// and/or crt@
	//   "THUMBNAIL_TYPE_FAVICON_16" - These refer to favicon thumbnails of
	// 16x16, 32x32 or 64x64. If the original image is an ico file
	// containing multiple embedded images including 16x16, 32x32 or 64x64,
	// these thumbnails are derived from the embedded image of the
	// corresponding size. (If no such embedded image is found, prefer the
	// closest size that's larger. If still no such size exists, prefer
	// largest.) If no such size exists, these thumbnails are rescaled to an
	// image whose maximum dimension is 16, 28, 32 or 64.
	//   "THUMBNAIL_TYPE_FAVICON_28"
	//   "THUMBNAIL_TYPE_FAVICON_32"
	//   "THUMBNAIL_TYPE_FAVICON_64"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL" - This type of favicon will
	// preserve the size of the original image.
	//   "THUMBNAIL_TYPE_FAVICON_16_DARK" - These refer to favicon
	// thumbnails for dark mode. This triggers dark mode on the SVG decoding
	// (and otherwise, the same as the above favicon types)
	//   "THUMBNAIL_TYPE_FAVICON_28_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_32_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_64_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK"
	//   "THUMBNAIL_TYPE_1080" - This refers to a thumbnail that fits in a
	// 1080x1080 box.
	//   "THUMBNAIL_TYPE_1600_HQ" - This refers to a thumbnail that fits in
	// a 1600x1600 box and is encoded with high-quality (q=90). Contact
	// amarna-dev@/crt@/bingwang@ for using it.
	//   "THUMBNAIL_TYPE_AREA_300K" - This uses the same MaxAreaSizer as
	// THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (=
	// 640 x 480).
	//   "THUMBNAIL_TYPE_AREA_50K_ALPHA" - This is like
	// THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.
	//   "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA" - DEPRECATED - Please do
	// not introduce new requests for this type. It will be eliminated soon.
	// Until then, it will behave like the AREA_50K_ALPHA type -- use that
	// instead.
	//   "THUMBNAIL_TYPE_AREA_2M" - This refers to a thumbnail with at most
	// 2073600 pixels (=1920*1080). The image will be scaled down to 2M
	// while preserving the aspect ratio if it's too large. If the thumbnail
	// is in JPEG format, it is encoded with quality = 85. Besides, it
	// supports alpha channel by default and does not convert lossless
	// formats to JPEG.
	//   "THUMBNAIL_TYPE_AREA_2M_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_800_ALPHA_WHITE" - In alpha-white thumbs, colors
	// are remapped in RGBA to be more transparent the closer they are to
	// white. This is for use with white-background images, so that the
	// perceived background color can be darkened by rendering over gray.
	// See go/alpha-white-thumbs for details and limitations. Sizing matches
	// non-ALPHA_WHITE equivalents.
	//   "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE"
	//   "THUMBNAIL_TYPE_ANIMATED_H144" - Height-scaled animated thumb
	// types, encoded as H264 previews. Suffix gives height, e.g. _H144
	// indicates height 144. Width is a scaled multiple-of-8 value so the
	// thumb has approximately the same aspect ratio as the original. For
	// more info, see http://go/animated-thumbs.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED" - New thumbnail type for
	// licensed contents. From a thumbnail generation perspective this
	// behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a
	// separate thumbnail type to enable takedowns requested by owner.
	// WARNING: This type is primarily used by go/licensed-media-service and
	// is subject to policy changes. Please contact
	// g/license-media-service-team before using.
	//   "THUMBNAIL_TYPE_TENOR_250K_GIF" - Tenor gifs
	// go/tenor-integration-binary-serving-discussion
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF"
	//   "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF"
	//   "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF"
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP" - Similar to THUMBNAIL_TYPE_AREA_2M
	// but pre-transcoded to WebP and AVIF format, as those two format can
	// be slow to transcode in serving time. Currently only generated for
	// AMP images. These two thumbnails are static images despite that their
	// formats support animation.
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF" - AVIF is not yet a supported input
	// for SCS serving time thumbnailing, trying to do so will give errors.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_50K_WEBP" - WebP format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_AREA_50K_AVIF" - AVIF format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" - WARNING: This type is dedicated
	// to KG_IMAGE client. http://b/234653726
	ThumbType string `json:"thumbType,omitempty"`

	ThumbWidth int64 `json:"thumbWidth,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageDocid") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageDocid") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWDocInfoRelatedImages) MarshalJSON() ([]byte, error) {
	type NoMethod WWWDocInfoRelatedImages
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type WWWDocInfoThumbnail struct {
	ExpirationTimestampMicros int64 `json:"expirationTimestampMicros,omitempty,string"`

	Height int64 `json:"height,omitempty"`

	// Type: The type here corresponds to image_base::ThumbnailType defined
	// in image/base/thumbnail-type.proto.
	Type int64 `json:"type,omitempty"`

	Width int64 `json:"width,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "ExpirationTimestampMicros") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "ExpirationTimestampMicros") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. However, any field with an empty value appearing in
	// NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWDocInfoThumbnail) MarshalJSON() ([]byte, error) {
	type NoMethod WWWDocInfoThumbnail
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WWWMetaTag: We can return the content attribute for some or all meta
// tags.
type WWWMetaTag struct {
	Content string `json:"content,omitempty"`

	Name string `json:"name,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Content") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Content") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWMetaTag) MarshalJSON() ([]byte, error) {
	type NoMethod WWWMetaTag
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WWWResultInfoSubImageDocInfo: The following message contains info of
// sub image docs, it is populated in query_state and consumed in web
// image boost twiddler: (go/WebImageBoostTwiddler).
type WWWResultInfoSubImageDocInfo struct {
	AdditionalSafesearchSignals []int64 `json:"additionalSafesearchSignals,omitempty"`

	// BestThumbnailType: The best thumbnail type is either 300K or 50K.
	//
	// Possible values:
	//   "THUMBNAIL_TYPE_DEFAULT" - DEPRECATED - use THUMBNAIL_TYPE_AREA_50K
	// if possible. The default thumbnail type is deprecated and no longer
	// served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you
	// must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.
	//   "THUMBNAIL_TYPE_AREA_50K" - This is the most common thumbnail type,
	// used in image search results. It is defined to have 50625 pixels (=
	// 225 x 225).
	//   "THUMBNAIL_TYPE_400" - This refers to a thumbnail that fits in a
	// 400x400 box.
	//   "THUMBNAIL_TYPE_800" - This refers to a thumbnail that fits in a
	// 800x800 box.
	//   "THUMBNAIL_TYPE_ORIGINAL" - This refers to re-encoding original
	// image to JPEG at the same size (up to 10000x10000). Output quality
	// may be lower.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ" - Re-encode image at the same size as
	// original (up to 10000x10000) but with high-quality (q=90). This was
	// introduced by TYPHOON client and is expected only for very few images
	// in our table (under 10k). If you plan to use this contact amarna-dev@
	// and/or crt@
	//   "THUMBNAIL_TYPE_FAVICON_16" - These refer to favicon thumbnails of
	// 16x16, 32x32 or 64x64. If the original image is an ico file
	// containing multiple embedded images including 16x16, 32x32 or 64x64,
	// these thumbnails are derived from the embedded image of the
	// corresponding size. (If no such embedded image is found, prefer the
	// closest size that's larger. If still no such size exists, prefer
	// largest.) If no such size exists, these thumbnails are rescaled to an
	// image whose maximum dimension is 16, 28, 32 or 64.
	//   "THUMBNAIL_TYPE_FAVICON_28"
	//   "THUMBNAIL_TYPE_FAVICON_32"
	//   "THUMBNAIL_TYPE_FAVICON_64"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL" - This type of favicon will
	// preserve the size of the original image.
	//   "THUMBNAIL_TYPE_FAVICON_16_DARK" - These refer to favicon
	// thumbnails for dark mode. This triggers dark mode on the SVG decoding
	// (and otherwise, the same as the above favicon types)
	//   "THUMBNAIL_TYPE_FAVICON_28_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_32_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_64_DARK"
	//   "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK"
	//   "THUMBNAIL_TYPE_1080" - This refers to a thumbnail that fits in a
	// 1080x1080 box.
	//   "THUMBNAIL_TYPE_1600_HQ" - This refers to a thumbnail that fits in
	// a 1600x1600 box and is encoded with high-quality (q=90). Contact
	// amarna-dev@/crt@/bingwang@ for using it.
	//   "THUMBNAIL_TYPE_AREA_300K" - This uses the same MaxAreaSizer as
	// THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (=
	// 640 x 480).
	//   "THUMBNAIL_TYPE_AREA_50K_ALPHA" - This is like
	// THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.
	//   "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA" - DEPRECATED - Please do
	// not introduce new requests for this type. It will be eliminated soon.
	// Until then, it will behave like the AREA_50K_ALPHA type -- use that
	// instead.
	//   "THUMBNAIL_TYPE_AREA_2M" - This refers to a thumbnail with at most
	// 2073600 pixels (=1920*1080). The image will be scaled down to 2M
	// while preserving the aspect ratio if it's too large. If the thumbnail
	// is in JPEG format, it is encoded with quality = 85. Besides, it
	// supports alpha channel by default and does not convert lossless
	// formats to JPEG.
	//   "THUMBNAIL_TYPE_AREA_2M_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_800_ALPHA_WHITE" - In alpha-white thumbs, colors
	// are remapped in RGBA to be more transparent the closer they are to
	// white. This is for use with white-background images, so that the
	// perceived background color can be darkened by rendering over gray.
	// See go/alpha-white-thumbs for details and limitations. Sizing matches
	// non-ALPHA_WHITE equivalents.
	//   "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE"
	//   "THUMBNAIL_TYPE_ANIMATED_H144" - Height-scaled animated thumb
	// types, encoded as H264 previews. Suffix gives height, e.g. _H144
	// indicates height 144. Width is a scaled multiple-of-8 value so the
	// thumb has approximately the same aspect ratio as the original. For
	// more info, see http://go/animated-thumbs.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED" - New thumbnail type for
	// licensed contents. From a thumbnail generation perspective this
	// behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a
	// separate thumbnail type to enable takedowns requested by owner.
	// WARNING: This type is primarily used by go/licensed-media-service and
	// is subject to policy changes. Please contact
	// g/license-media-service-team before using.
	//   "THUMBNAIL_TYPE_TENOR_250K_GIF" - Tenor gifs
	// go/tenor-integration-binary-serving-discussion
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF"
	//   "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF"
	//   "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF"
	//   "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF"
	//   "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF"
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP" - Similar to THUMBNAIL_TYPE_AREA_2M
	// but pre-transcoded to WebP and AVIF format, as those two format can
	// be slow to transcode in serving time. Currently only generated for
	// AMP images. These two thumbnails are static images despite that their
	// formats support animation.
	//   "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF" - AVIF is not yet a supported input
	// for SCS serving time thumbnailing, trying to do so will give errors.
	//   "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA" - Similar to
	// THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata
	// propagated.
	//   "THUMBNAIL_TYPE_AREA_50K_WEBP" - WebP format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_AREA_50K_AVIF" - AVIF format. Currently only
	// generated for navboost images.
	//   "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" - WARNING: This type is dedicated
	// to KG_IMAGE client. http://b/234653726
	BestThumbnailType string `json:"bestThumbnailType,omitempty"`

	Crops int64 `json:"crops,omitempty"`

	// DeepCropBytes: Deepcrop thumbnail cropping hints.
	DeepCropBytes string `json:"deepCropBytes,omitempty"`

	Docid uint64 `json:"docid,omitempty,string"`

	DocumentTrust float64 `json:"documentTrust,omitempty"`

	// EqStar: EQ* is a unified signal to capture the emotional quality
	// (e.g. inspiration, lifestyle, context, etc.) of an image. For more
	// information, please refer to go/image-inspiration-ranking-framework.
	EqStar float64 `json:"eqStar,omitempty"`

	// EstRelevance: Estimated Image Relevance ranging between 0.0
	// (Off-Topic) to 1.0 (Very Useful).
	EstRelevance float64 `json:"estRelevance,omitempty"`

	FlowOutput *ImageContentFlowProtoProd `json:"flowOutput,omitempty"`

	Height int64 `json:"height,omitempty"`

	Height50k int64 `json:"height50k,omitempty"`

	// HumanModelScore: DeepTags human model score.
	// go/VisualShoppingImageAttributes
	HumanModelScore float64 `json:"humanModelScore,omitempty"`

	ImageUrl string `json:"imageUrl,omitempty"`

	PamirNormalizedScore float64 `json:"pamirNormalizedScore,omitempty"`

	// PornSignals: Encoded Safe Search annotations of the image. See
	// image/safesearch/overall/public/image_porn_attachments.h for decoding
	// functions.
	PornSignals int64 `json:"pornSignals,omitempty"`

	// SafeForUniversal: Result is not on the Images Universal blacklist.
	// For more comprehensive filtering of IU images, including this bit,
	// see
	// superroot/impls/images/quality/safesearch/iu_inappropriate_filter_lib.
	// h
	SafeForUniversal bool `json:"safeForUniversal,omitempty"`

	// Salience: Salient score, indicating how important an image is to the
	// page it's on. Check go/salient-images-design-doc for details.
	Salience float64 `json:"salience,omitempty"`

	// SalientColorInfo: 4-bytes: (low order on the left) RRRRRRRR GGGGGGGG
	// BBBBBBBB SS where R: 8-bits encoding color 'r' G: 8-bits encoding
	// color 'g' B: 8-bits encoding color 'b' S: 2-bits encoding the color
	// source - 00 = from color detection result - 01 = from cairo This
	// field has the salient color information.
	SalientColorInfo int64 `json:"salientColorInfo,omitempty"`

	Score float64 `json:"score,omitempty"`

	// TqStar: TQ* is a signal to capture the technical quality (e.g.
	// exposure, sharpness, composition, etc.) of an image. For more
	// information, please refer to go/tqstar.
	TqStar float64 `json:"tqStar,omitempty"`

	TradFrac float64 `json:"tradFrac,omitempty"`

	Width int64 `json:"width,omitempty"`

	// Width50k: Width and height of the AREA_50K thumbnail for this image.
	Width50k int64 `json:"width50k,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AdditionalSafesearchSignals") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "AdditionalSafesearchSignals") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted
	// from API requests. However, any field with an empty value appearing
	// in NullFields will be sent to the server as null. It is an error if a
	// field in this list has a non-empty value. This may be used to include
	// null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWResultInfoSubImageDocInfo) MarshalJSON() ([]byte, error) {
	type NoMethod WWWResultInfoSubImageDocInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *WWWResultInfoSubImageDocInfo) UnmarshalJSON(data []byte) error {
	type NoMethod WWWResultInfoSubImageDocInfo
	var s1 struct {
		DocumentTrust        gensupport.JSONFloat64 `json:"documentTrust"`
		EqStar               gensupport.JSONFloat64 `json:"eqStar"`
		EstRelevance         gensupport.JSONFloat64 `json:"estRelevance"`
		HumanModelScore      gensupport.JSONFloat64 `json:"humanModelScore"`
		PamirNormalizedScore gensupport.JSONFloat64 `json:"pamirNormalizedScore"`
		Salience             gensupport.JSONFloat64 `json:"salience"`
		Score                gensupport.JSONFloat64 `json:"score"`
		TqStar               gensupport.JSONFloat64 `json:"tqStar"`
		TradFrac             gensupport.JSONFloat64 `json:"tradFrac"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DocumentTrust = float64(s1.DocumentTrust)
	s.EqStar = float64(s1.EqStar)
	s.EstRelevance = float64(s1.EstRelevance)
	s.HumanModelScore = float64(s1.HumanModelScore)
	s.PamirNormalizedScore = float64(s1.PamirNormalizedScore)
	s.Salience = float64(s1.Salience)
	s.Score = float64(s1.Score)
	s.TqStar = float64(s1.TqStar)
	s.TradFrac = float64(s1.TradFrac)
	return nil
}

// WWWSnippetResponse: Per-document response for a www DocInfo request.
// Next field position: 55
type WWWSnippetResponse struct {
	// AnswerDocMatches: A list of answers that had at least one hit in the
	// document. Answers are identified by their index into the
	// QRewriteQueryParams_AnswerSnippetInfo array (see
	// //query/proto/query-params.proto).
	AnswerDocMatches []int64 `json:"answerDocMatches,omitempty"`

	// ChosenBodyTidbits: Tidbits chosen from the document body. Consists of
	// repeated [begin, end) half-open ranges in token offsets from the
	// beginning of the document.
	ChosenBodyTidbits []int64 `json:"chosenBodyTidbits,omitempty"`

	DocInfo *WWWDocInfo `json:"docInfo,omitempty"`

	// DocPreviewRestrictions: DocPreviewRestrictions for canonical url.
	DocPreviewRestrictions *QualityDniDocPreviewRestrictions `json:"docPreviewRestrictions,omitempty"`

	// DocPreviewRestrictionsForAmp: DocPreviewRestrictions for amp result.
	DocPreviewRestrictionsForAmp *QualityDniDocPreviewRestrictions `json:"docPreviewRestrictionsForAmp,omitempty"`

	// Events: Bitfield of snippet events and the various events. See
	// SnippetEvents in ./snippets/defines.h for details on the contents.
	Events uint64 `json:"events,omitempty,string"`

	// ExtraInfo: If requested, the extra snippet info
	ExtraInfo *ExtraSnippetInfoResponse `json:"extraInfo,omitempty"`

	// FindyTidbits: A bitvector of the tidbits in the snippet that are
	// appropriate for the Quick Scroll (Findy) Chrome extension. Typically
	// these contain "extra body matches", i.e., important query items not
	// in the title.
	FindyTidbits int64 `json:"findyTidbits,omitempty"`

	// HasMessageType: Additional available data (message type ids)
	HasMessageType []int64 `json:"hasMessageType,omitempty"`

	// Info: Additional data. Currently, this is used for sitelinks,
	// localinfo, manybox, discussion metadata, richsnippets, similarpages
	// and breadcrumbs.
	Info *Proto2BridgeMessageSet `json:"info,omitempty"`

	// IsLoginPage: True if the document represents a login page.
	IsLoginPage bool `json:"isLoginPage,omitempty"`

	// IsValidResult: Assume this is true unless we discover that the result
	// doesn't match the the query, in which case this result is invalid
	// despite having returned docinfo.
	IsValidResult bool `json:"isValidResult,omitempty"`

	// Keyword: Document keywords
	Keyword []string `json:"keyword,omitempty"`

	// ListSnippet: List snippet data.
	ListSnippet *ListSnippetResponse `json:"listSnippet,omitempty"`

	// ListSummary: List summary phrase for list pages.
	ListSummary string `json:"listSummary,omitempty"`

	// LongStructuredSnippet: Returned if want_long_structured_snippets. If
	// present, caller should ignore the normal snippet.
	LongStructuredSnippet *LongStructuredSnippet `json:"longStructuredSnippet,omitempty"`

	// MatchesBitmapEncoded: Bitmap representing matches to leaf query terms
	// within document (body section and url). It gets populated if
	// query_matches_info = true.
	MatchesBitmapEncoded string `json:"matchesBitmapEncoded,omitempty"`

	MatchesBitmapSize int64 `json:"matchesBitmapSize,omitempty"`

	// MetaTags: Meta tags
	MetaTags []*WWWMetaTag `json:"metaTags,omitempty"`

	// NumTokensSkippedByInDocRestrictionsInPrinting: Similar to
	// num_tokens_skipped_by_in_doc_restrictions_in_scoring, but this number
	// is for tokens skipped during printing, since printer owns its own
	// token info manager which populates tokens.
	NumTokensSkippedByInDocRestrictionsInPrinting int64 `json:"numTokensSkippedByInDocRestrictionsInPrinting,omitempty"`

	// NumTokensSkippedByInDocRestrictionsInScoring: Number of tokens that
	// is skipped because of in doc restrictions during scoring. This is an
	// estimate, as the list of tokens is cached in TokenInfoManager. We
	// should only monitor the cases where this number is too big or
	// non-zero.
	NumTokensSkippedByInDocRestrictionsInScoring int64 `json:"numTokensSkippedByInDocRestrictionsInScoring,omitempty"`

	NumberOfPages int64 `json:"numberOfPages,omitempty"`

	// ObsoleteLocalinfo: LocalWWWInfo
	ObsoleteLocalinfo string `json:"obsoleteLocalinfo,omitempty"`

	// ObsoleteManybox: ManyboxData
	ObsoleteManybox string `json:"obsoleteManybox,omitempty"`

	// ObsoleteSitemap: These fields were previously optional messages, but
	// CL 2388905 moved them into the MessageSet. However, at this time, old
	// Mustang binaries are still deployed in production and probably will
	// be around for awhile. So, servers which need to talk to old binaries
	// and need to use these fields need to check both the obsolete versions
	// and the MessageSet version. Sitemap
	ObsoleteSitemap string `json:"obsoleteSitemap,omitempty"`

	// Odp: Was odp used in the snippets? DEPRECATED - this is no longer
	// populated as of June 2017.
	Odp bool `json:"odp,omitempty"`

	// OrionEntities: DEPRECATED If requested, the orion entities
	OrionEntities *OrionDocEntitiesProto `json:"orionEntities,omitempty"`

	// ScienceInfo: Abbreviated bibliographic data from Google Scholar.
	ScienceInfo *ScienceIndexSignal `json:"scienceInfo,omitempty"`

	SectionHeadingAnchorName string `json:"sectionHeadingAnchorName,omitempty"`

	// SectionHeadingText: If requested, the snippet generator may take note
	// of query items present in an entry in an on-page table-of-contents
	// (i.e. a series of on-page links to named anchors.) If so, these two
	// fields contain the formatted and highlighted entry and the name of
	// the on-page anchor it links to, respectively. This may be used by GWS
	// to show a direct link to that named anchor on the page.
	SectionHeadingText string `json:"sectionHeadingText,omitempty"`

	// SeenNotTerm: Did a negative query term match the meta description?
	SeenNotTerm bool `json:"seenNotTerm,omitempty"`

	// SentimentSnippets: DEPRECATED Sentiment snippets
	SentimentSnippets []*RepositoryAnnotationsMustangSentimentSnippetAnnotations `json:"sentimentSnippets,omitempty"`

	// SiteDisplayName: The display name of the document's domain used as
	// the first part of VisUrl, e.g, "Google > play > store" is the VisUrl
	// of "https://play.google.com/store/". Wherein, "Google" is
	// site_display_name of the domain "google.com". See
	// go/site-display-name for more details.
	SiteDisplayName string `json:"siteDisplayName,omitempty"`

	// SnippetBylineDate: Byline date for time sensitive snippets. Most of
	// the time it originates from quality_timebased::SyntacticDate and it
	// is floored to PT midnight.
	SnippetBylineDate int64 `json:"snippetBylineDate,omitempty,string"`

	SnippetExtraInfo *SnippetExtraInfo `json:"snippetExtraInfo,omitempty"`

	// SnippetHighlightMatchesBitmap: List of bitmaps representing matches
	// to leaf query terms within each of the highlighted snippet text
	// fragments. Consecutive bitmaps correspond to consecutive text
	// fragments. It gets populated iff
	// return_query_snippet_highlight_matches = true. Example: document body
	// section: "This cafe has pet friendly patio." squery: (a (o dog :o pet
	// :syn:general) friendly :o (o restaurant :o cafe :syn:general)) Let's
	// assume the returned snippet text contains the whole document body
	// section where two fragments get highlighted as follows: "This *cafe*
	// has *pet friendly* patio." Then, the returned
	// snippet_highlight_matches_bitmap[] list will have two bitmaps:
	// bitmap[0] = <"cafe" -> leaf term with index 4> = {encoded:
	// DenseEncode("00001"), size: 5} bitmap[1] = <"pet" and "friendly" ->
	// leaf terms with indexes 1 and 2> = {encoded: DenseEncode("011"),
	// size: 3}
	SnippetHighlightMatchesBitmap []*WWWSnippetResponseBitmapPB `json:"snippetHighlightMatchesBitmap,omitempty"`

	// SnippetPageNumber: If requested the page number on which the snippet
	// begins. (Only for documents such as PDFs where page numbers are
	// well-defined.)
	SnippetPageNumber int64 `json:"snippetPageNumber,omitempty"`

	// SnippetPrefixCharCount: Character counts of snippet prefix, if any.
	// E.g. section heading, list summary, byline date.
	SnippetPrefixCharCount int64 `json:"snippetPrefixCharCount,omitempty"`

	// SnippetRenderedToken: How tokens are rendered in generating snippet.
	SnippetRenderedToken []*MustangSnippetsRenderedToken `json:"snippetRenderedToken,omitempty"`

	// Snippethash: A hash for duplicate detection. Two results with the
	// same content can return different snippets if, for example, one has
	// an ODP entry and the other does not. Gws can use this value reliably
	// to filter duplicates. It is a hash of body only tidbits.
	Snippethash int64 `json:"snippethash,omitempty,string"`

	// SnippetsRanklabFeatures: Records features to analyze titles/snippets
	// in ranklab.
	SnippetsRanklabFeatures *MustangReposWwwSnippetsSnippetsRanklabFeatures `json:"snippetsRanklabFeatures,omitempty"`

	// SqueryFingerprint: This field is never set.
	SqueryFingerprint uint64 `json:"squeryFingerprint,omitempty,string"`

	// TitleLengthAdjustedForBrowserWidth: True if the title length is
	// already adjusted for the browser width. If it is true, GWS needs not
	// truncate the title.
	TitleLengthAdjustedForBrowserWidth bool `json:"titleLengthAdjustedForBrowserWidth,omitempty"`

	// TitleRenderedToken: How tokens are rendered in generating title.
	// Note: In rendering a title, the page title part and the
	// site/host/domain title part can be flipped after initial rendering.
	// The flip, if happend, may not be reflected in this field. That is,
	// this field may contain the tokens in the original, pre-flip, order.
	TitleRenderedToken []*MustangSnippetsRenderedToken `json:"titleRenderedToken,omitempty"`

	// TitleSizeParams: Will only be set when `title_use_num_of_chars` is
	// false.
	TitleSizeParams *TitleSizeParams `json:"titleSizeParams,omitempty"`

	// TruncatedTitle: Only for desktop web search. Please refer to
	// Title.keep_original_title_and_populate_truncated_one for more
	// details.
	TruncatedTitle string `json:"truncatedTitle,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnswerDocMatches") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnswerDocMatches") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *WWWSnippetResponse) MarshalJSON() ([]byte, error) {
	type NoMethod WWWSnippetResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WWWSnippetResponseBitmapPB: Encoded bitmap.
type WWWSnippetResponseBitmapPB struct {
	Encoded string `json:"encoded,omitempty"`

	Size int64 `json:"size,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Encoded") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Encoded") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WWWSnippetResponseBitmapPB) MarshalJSON() ([]byte, error) {
	type NoMethod WWWSnippetResponseBitmapPB
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type WatchpageLanguageWatchPageLanguageResult struct {
	// WatchpageLanguage: The language predicted by the WatchPage Language
	// model.
	//
	// Possible values:
	//   "ENGLISH"
	//   "DANISH"
	//   "DUTCH"
	//   "FINNISH"
	//   "FRENCH"
	//   "GERMAN"
	//   "HEBREW"
	//   "ITALIAN"
	//   "JAPANESE"
	//   "KOREAN"
	//   "NORWEGIAN" - "Norwegian" = "no" normally implies Bokmål ("nb").
	// See also NORWEGIAN_N. Consider using IsNorwegianLanguage().
	//   "POLISH"
	//   "PORTUGUESE" - WARNING: "Portuguese" in the enum Language implies
	// the Iberian variant, while Google and industry standard practice is
	// for "pt" to imply Brazilian, for the much larger population. The old
	// LanguageCode() function returns "pt" for legacy reasons. The III
	// LanguageEnumLanguageCodeConverter converts it to "pt-PT" to preserve
	// the semantics. Converting between this legacy enum and
	// industry-standard language tags cannot preserve the distinction
	// between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider
	// using IsPortugueseLanguage().
	//   "RUSSIAN"
	//   "SPANISH"
	//   "SWEDISH"
	//   "CHINESE" - "Chinese" normally implies simplified Han characters
	// ("zh-Hans"). See also CHINESE_T. Consider using IsChineseLanguage().
	//   "CZECH"
	//   "GREEK"
	//   "ICELANDIC"
	//   "LATVIAN"
	//   "LITHUANIAN"
	//   "ROMANIAN" - Avoid making a distinction between ROMANIAN and
	// MOLDAVIAN. Consider using IsRomanianLanguage().
	//   "HUNGARIAN"
	//   "ESTONIAN"
	//   "TG_UNKNOWN_LANGUAGE"
	//   "UNKNOWN_LANGUAGE"
	//   "BULGARIAN"
	//   "CROATIAN"
	//   "SERBIAN" - Serbian is commonly written in two scripts. The default
	// is Cyrillic ("sr" = "sr-Cyrl"). It is also often written with Latin
	// letters ("sr-Latn"). This enum does not convey that distinction.
	//   "IRISH"
	//   "GALICIAN"
	//   "TAGALOG" - TAGALOG is used to mean both Tagalog (tl) and Filipino
	// (fil). These are nearly the same; Filipino is the official language,
	// and "fil" is normally used for UI settings etc. The old
	// LanguageCode() function returns "tl".
	//   "TURKISH"
	//   "UKRAINIAN"
	//   "HINDI"
	//   "MACEDONIAN"
	//   "BENGALI"
	//   "INDONESIAN"
	//   "LATIN"
	//   "MALAY"
	//   "MALAYALAM"
	//   "WELSH"
	//   "NEPALI"
	//   "TELUGU"
	//   "ALBANIAN"
	//   "TAMIL"
	//   "BELARUSIAN"
	//   "JAVANESE"
	//   "OCCITAN"
	//   "URDU"
	//   "BIHARI" - "Bihari" is not a language: There are several different
	// languages spoken in and around the Indian state of Bihar. This is
	// like saying "Swiss" to mean German+French+Italian+Romansh.
	//   "GUJARATI"
	//   "THAI"
	//   "ARABIC"
	//   "CATALAN"
	//   "ESPERANTO"
	//   "BASQUE"
	//   "INTERLINGUA" - UI only.
	//   "KANNADA"
	//   "PUNJABI"
	//   "SCOTS_GAELIC"
	//   "SWAHILI"
	//   "SLOVENIAN"
	//   "MARATHI"
	//   "MALTESE"
	//   "VIETNAMESE"
	//   "FRISIAN"
	//   "SLOVAK"
	//   "CHINESE_T" - Chinese written in traditional Han characters
	// ("zh-Hant"). See also CHINESE. Consider using IsChineseLanguage().
	//   "FAROESE"
	//   "SUNDANESE"
	//   "UZBEK"
	//   "AMHARIC"
	//   "AZERBAIJANI"
	//   "GEORGIAN"
	//   "TIGRINYA" - UI only.
	//   "PERSIAN"
	//   "BOSNIAN" - UI only. LangId language: CROATIAN (28)
	//   "SINHALESE"
	//   "NORWEGIAN_N" - Norwegian Nynorsk ("nn"). See also NORWEGIAN.
	// Consider using IsNorwegianLanguage(). UI only. LangId language:
	// NORWEGIAN (10)
	//   "PORTUGUESE_P" - Portuguese in Portugal ("pt-PT"). See the WARNING
	// at PORTUGUESE. Avoid a distinction between PORTUGUESE and
	// PORTUGUESE_P. Relying on it is a bug. Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "PORTUGUESE_B" - Portuguese in Brazil ("pt-BR"). Consider using
	// IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)
	//   "XHOSA" - UI only.
	//   "ZULU" - UI only.
	//   "GUARANI" - UI only.
	//   "SESOTHO" - UI only.
	//   "TURKMEN" - UI only.
	//   "KYRGYZ"
	//   "BRETON"
	//   "TWI" - UI only.
	//   "YIDDISH" - UI only.
	//   "SERBO_CROATIAN" - UI only. LangId language: SERBIAN (29)
	//   "SOMALI" - UI only.
	//   "UIGHUR"
	//   "KURDISH" - This has been documented as "Kurmanji (kmr) + Sorani
	// (ckb) + Kurdish (ku)". There are several kinds of Kurdish languages.
	// "ku" normally implies Northern Kurdish = Kurmanji (kmr) which is
	// normally written in Latin letters. "ckb" is Central Kurdish (largely
	// in Iraq) which is normally written in Arabic letters (thus
	// right-to-left).
	//   "MONGOLIAN"
	//   "ARMENIAN"
	//   "LAOTHIAN"
	//   "SINDHI"
	//   "RHAETO_ROMANCE" - UI only.
	//   "AFRIKAANS"
	//   "LUXEMBOURGISH"
	//   "BURMESE"
	//   "KHMER"
	//   "TIBETAN"
	//   "DHIVEHI" - sometimes spelled Divehi; lang of Maldives
	//   "CHEROKEE"
	//   "SYRIAC"
	//   "LIMBU" - UI only.
	//   "ORIYA"
	//   "ASSAMESE" - UI only.
	//   "CORSICAN"
	//   "INTERLINGUE" - UI only.
	//   "KAZAKH"
	//   "LINGALA" - UI only.
	//   "MOLDAVIAN" - "Moldavian" is the same language as Romanian. In
	// language tags, "ro-MD" can be used but is not normally necessary.
	// Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider
	// using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)
	//   "PASHTO"
	//   "QUECHUA"
	//   "SHONA" - UI only.
	//   "TAJIK"
	//   "TATAR"
	//   "TONGA"
	//   "YORUBA"
	//   "CREOLES_AND_PIDGINS_ENGLISH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_FRENCH_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_PORTUGUESE_BASED" - This is a vague group of
	// languages, not one language. UI only.
	//   "CREOLES_AND_PIDGINS_OTHER" - This is a vague group of languages,
	// not one language. UI only.
	//   "MAORI"
	//   "WOLOF" - UI only.
	//   "ABKHAZIAN" - UI only.
	//   "AFAR" - UI only.
	//   "AYMARA" - UI only.
	//   "BASHKIR" - UI only.
	//   "BISLAMA" - UI only.
	//   "DZONGKHA" - UI only.
	//   "FIJIAN" - UI only.
	//   "GREENLANDIC" - UI only.
	//   "HAUSA" - UI only.
	//   "HAITIAN_CREOLE"
	//   "INUPIAK" - UI only.
	//   "INUKTITUT"
	//   "KASHMIRI" - UI only.
	//   "KINYARWANDA" - UI only.
	//   "MALAGASY" - UI only.
	//   "NAURU" - UI only.
	//   "OROMO" - UI only.
	//   "RUNDI" - UI only.
	//   "SAMOAN" - UI only.
	//   "SANGO" - UI only.
	//   "SANSKRIT"
	//   "SISWANT" - UI only.
	//   "TSONGA" - UI only.
	//   "TSWANA" - UI only.
	//   "VOLAPUK" - UI only.
	//   "ZHUANG" - UI only.
	//   "KHASI" - UI only.
	//   "SCOTS" - UI only.
	//   "GANDA" - UI only. More commonly called Luganda.
	//   "MANX" - UI only.
	//   "MONTENEGRIN" - UI only. LangId language: SERBIAN (29)
	//   "AKAN" - UI only.
	//   "IGBO" - UI only.
	//   "MAURITIAN_CREOLE" - UI only.
	//   "HAWAIIAN" - UI only.
	//   "CEBUANO" - Translate only.
	//   "EWE" - CLD only.
	//   "GA" - CLD only.
	//   "HMONG" - Translate only.
	//   "KRIO" - CLD only.
	//   "LOZI" - CLD only.
	//   "LUBA_LULUA" - CLD only.
	//   "LUO_KENYA_AND_TANZANIA" - CLD only.
	//   "NEWARI" - Translate only.
	//   "NYANJA" - CLD only.
	//   "OSSETIAN" - Translate only.
	//   "PAMPANGA" - Translate only.
	//   "PEDI" - CLD only.
	//   "RAJASTHANI" - Translate only.
	//   "SESELWA_CREOLE_FRENCH" - CLD only.
	//   "TUMBUKA" - CLD only.
	//   "VENDA" - CLD only.
	//   "WARAY_PHILIPPINES" - Translate only.
	//   "NUM_LANGUAGES" - Always keep this at the end. It is not a
	WatchpageLanguage string `json:"watchpageLanguage,omitempty"`

	// ForceSendFields is a list of field names (e.g. "WatchpageLanguage")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "WatchpageLanguage") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *WatchpageLanguageWatchPageLanguageResult) MarshalJSON() ([]byte, error) {
	type NoMethod WatchpageLanguageWatchPageLanguageResult
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WeboftrustLiveResultDocBoostData: Page boosting using Live Results
// data. Attaching this proto to a document indicates that a Live Result
// feed exists for that document, and that this feed has sufficient
// reliability to warrant potential boosting of the document rank. Next
// ID: 3
type WeboftrustLiveResultDocBoostData struct {
	// BoostLevel: Identifies the degree to which the existence of this
	// LiveResult should boost a query's score (when the query is performed
	// within the hot_times range). This field is always in the range [0,1].
	// A missing field, a value of 0, or a value outside the legal range
	// indicates that no boosting is performed. A value of 1 indicates that
	// the maximum level of boosting will be applied. This field will be
	// updated from time to time based on CTR and other signals.
	BoostLevel float64 `json:"boostLevel,omitempty"`

	// HotTimes: Specifies the time range within which this LiveResult is
	// relevant. Used for deciding whether the rank of the corresponding
	// page should be boosted. For example, this range can be set to
	// encompass a few days before and after a sports game to which the page
	// refers. If this field is missing, no boosting is performed.
	// Specifying that a page should always be boosted is not recommended,
	// but can be accomplished by setting hot_times.start_unix_time=0 and
	// hot_time.end_unix_time=0x7fffffff. Note that multiple time ranges can
	// be implemented by adding several LiveResultDocBoostData messages to
	// the LiveResultsDocAttachments proto. If overlapping time ranges are
	// used, the proto containing the highest boost level will be used.
	HotTimes *WeboftrustTimeRange `json:"hotTimes,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BoostLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BoostLevel") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WeboftrustLiveResultDocBoostData) MarshalJSON() ([]byte, error) {
	type NoMethod WeboftrustLiveResultDocBoostData
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *WeboftrustLiveResultDocBoostData) UnmarshalJSON(data []byte) error {
	type NoMethod WeboftrustLiveResultDocBoostData
	var s1 struct {
		BoostLevel gensupport.JSONFloat64 `json:"boostLevel"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BoostLevel = float64(s1.BoostLevel)
	return nil
}

// WeboftrustLiveResultProviderDocAttachment: Per-provider attachment of
// a LiveResult. Used to identify pages for which result-based
// triggering of Live Results should appear. Theoretically there can be
// more than one attachment per web document, so we keep them as a
// repeated field of the LiveResultsDocAttachment. Next ID: 4
type WeboftrustLiveResultProviderDocAttachment struct {
	ProviderId uint64 `json:"providerId,omitempty,string"`

	// Tag: Tag that specifies the use-case within provider's data. It
	// appears as a string in Alexandria signal and in the DocJoins. During
	// the indexing stage this field will be converted to a 64-bit
	// fingerprint to save space. See the "tag_fp" field, below.
	Tag string `json:"tag,omitempty"`

	// TagFp: A fingerprint of the "tag" field, automatically calculated
	// during the indexing stage. Will be used as a key for fetching the
	// data.
	TagFp uint64 `json:"tagFp,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "ProviderId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ProviderId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WeboftrustLiveResultProviderDocAttachment) MarshalJSON() ([]byte, error) {
	type NoMethod WeboftrustLiveResultProviderDocAttachment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WeboftrustLiveResultsDocAttachments: Message to which we attach to
// web documents in order to decide which LiveResult to trigger. Next
// ID: 3
type WeboftrustLiveResultsDocAttachments struct {
	// DocBoost: Information about potential rank boosting for the document
	// by virtue of its Live Result feed.
	DocBoost []*WeboftrustLiveResultDocBoostData `json:"docBoost,omitempty"`

	// ProviderAttachment: Identifies a Live Result which is to be attached
	// to the document.
	ProviderAttachment []*WeboftrustLiveResultProviderDocAttachment `json:"providerAttachment,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DocBoost") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DocBoost") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WeboftrustLiveResultsDocAttachments) MarshalJSON() ([]byte, error) {
	type NoMethod WeboftrustLiveResultsDocAttachments
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WeboftrustTimeRange: Time range (start time and end time). Used to
// indicate the times in which a LiveResult is considered "hot" and thus
// a potential for boosting. Specified as Unix time (seconds since
// midnight, January 1, 1970). Time zone is same as that for
// query_start_time (i.e., GMT). Next ID: 3
type WeboftrustTimeRange struct {
	EndUnixTime int64 `json:"endUnixTime,omitempty,string"`

	// StartUnixTime: Start and end times should always appear. Marked as
	// optional to avoid breaking code.
	StartUnixTime int64 `json:"startUnixTime,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndUnixTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndUnixTime") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WeboftrustTimeRange) MarshalJSON() ([]byte, error) {
	type NoMethod WeboftrustTimeRange
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WebutilHtmlTypesSafeHtmlProto: IMPORTANT: It is unsafe to accept this
// message from an untrusted source, since it's trivial for an attacker
// to forge serialized messages that don't fulfill the type's safety
// contract -- for example, it could contain attacker controlled script.
// A system which receives a SafeHtmlProto implicitly trusts the
// producer of the SafeHtmlProto. So, it's generally safe to return this
// message in RPC responses, but generally unsafe to accept it in RPC
// requests.
type WebutilHtmlTypesSafeHtmlProto struct {
	// PrivateDoNotAccessOrElseSafeHtmlWrappedValue: IMPORTANT: Never set or
	// read this field, even from tests, it is private. See documentation at
	// the top of .proto file for programming language packages with which
	// to create or read this message.
	PrivateDoNotAccessOrElseSafeHtmlWrappedValue string `json:"privateDoNotAccessOrElseSafeHtmlWrappedValue,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "PrivateDoNotAccessOrElseSafeHtmlWrappedValue") to unconditionally
	// include in API requests. By default, fields with empty or default
	// values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g.
	// "PrivateDoNotAccessOrElseSafeHtmlWrappedValue") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WebutilHtmlTypesSafeHtmlProto) MarshalJSON() ([]byte, error) {
	type NoMethod WebutilHtmlTypesSafeHtmlProto
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

type WirelessTranscoderFetchFetchMetadata struct {
	Name string `json:"name,omitempty"`

	Value string `json:"value,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Name") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Name") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WirelessTranscoderFetchFetchMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod WirelessTranscoderFetchFetchMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// WirelessTranscoderFetchFetchSourceInfo: To tag which fetcher
// satisfied this fetch request with optional detail.
type WirelessTranscoderFetchFetchSourceInfo struct {
	// Detail: Provides fetcher-specific detail about how source satisfied
	// the request.
	Detail string `json:"detail,omitempty"`

	// Source: The fetcher that ultimately satisfied this fetch request.
	Source string `json:"source,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Detail") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Detail") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *WirelessTranscoderFetchFetchSourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod WirelessTranscoderFetchFetchSourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeBackstageSuperVodCommentInfo: Contains information about
// comment that is posted through a Super VOD purchase. Next ID: 6
type YoutubeBackstageSuperVodCommentInfo struct {
	// CurrencyCode: Currency code the user uses to purchase this Super VOD
	// item.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// EntitlementId: The ID of the Super VOD entitlement. It uniquely
	// identifies a Super VOD purchase.
	EntitlementId string `json:"entitlementId,omitempty"`

	// PriceInMicros: Price of Super VOD item the user purchases in micros.
	PriceInMicros uint64 `json:"priceInMicros,omitempty,string"`

	// SuperVodItemId: The Super VOD item the user purchases, it represents
	// price tier.
	SuperVodItemId string `json:"superVodItemId,omitempty"`

	// Version: Which version of experiment this Super VOD comment is posted
	// in.
	//
	// Possible values:
	//   "UNSPECIFIED_VERSION"
	//   "V1_DEFAULT_MESSAGE" - DEPRECATED since decorated comments are
	// fully launched. Comments previously posted with this enum value will
	// continue to exist. Undecorated Comment. When user buys a Super VOD, a
	// comment with default message will be automatically posted on behalf
	// of the user.
	//   "V2_DECORATED_DEFAULT_MESSAGE" - Decorated Comment. When user buys
	// a Super VOD, a comment with default message and a special decoration
	// will be automatically posted on behalf of the user.
	// https://screenshot.googleplex.com/6aYvGnX5Bp9bT9Q
	//   "V3_USER_GENERATED_MESSAGE" - UGC. When user buys a Super VOD, they
	// can write their own UGC comment which will be decorated and
	// automatically posted on behalf of the user.
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CurrencyCode") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeBackstageSuperVodCommentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeBackstageSuperVodCommentInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeCommentsClusteringMiniStanza: Intended to be simpler to work
// with than the ExportedStanza it's derived from See documentation:
// https://g3doc.corp.google.com/company/teams/youtube/community_intelligence/eng_resources/data_sources.md#ministanza
// Next available: 77
type YoutubeCommentsClusteringMiniStanza struct {
	// AnsibleScores: TnS Ansible scores map. Keyed by various model names.
	AnsibleScores map[string]float64 `json:"ansibleScores,omitempty"`

	// AutomodScores: Automod scores map. Keyed by various model names.
	AutomodScores map[string]float64 `json:"automodScores,omitempty"`

	// BlarneyStoneScore: The blarney stone score.
	BlarneyStoneScore *YoutubeDistillerBlarneyStoneScores `json:"blarneyStoneScore,omitempty"`

	// ChannelDiscussionId: The channel this channel discussion comment
	// belongs to. Note that this will match channel_id for such comments.
	ChannelDiscussionId string `json:"channelDiscussionId,omitempty"`

	// ChannelId: The channel of the video this comment belongs to.
	ChannelId string `json:"channelId,omitempty"`

	// ChannelProfileQualityScores: Channel profile quality scores map.
	// Keyed by various model names.
	ChannelProfileQualityScores map[string]float64 `json:"channelProfileQualityScores,omitempty"`

	// CharEntropy: Char entropy of the comment.
	CharEntropy float64 `json:"charEntropy,omitempty"`

	// CommentClassification: Comment classification mapping all secondary
	// keys to values. E.g. {"joke_v1":0.8, "joke_v2":0.7,
	// "question_v1":0.3}.
	CommentClassification map[string]float64 `json:"commentClassification,omitempty"`

	// CommentClassificationBuckets: List of pre-defined classification
	// score buckets to which the comment belongs. E.g.
	// satisfaction_v1_percentile_80.
	CommentClassificationBuckets []string `json:"commentClassificationBuckets,omitempty"`

	// CommentClassificationRanking: Comment classification for ranking
	// mapping all secondary keys to values. E.g. {"joke_v1":0.8,
	// "joke_v2":0.7, "question_v1":0.3}.
	CommentClassificationRanking map[string]float64 `json:"commentClassificationRanking,omitempty"`

	// CommentType: Whether the comment is on a video, post, or other
	// product.
	//
	// Possible values:
	//   "UNKNOWN_PRODUCT_TYPE"
	//   "UNSUPPORTED_PRODUCT_TYPE" - Product which the model currently does
	// not support for moderation.
	//   "YT_VIDEO_COMMENT" - YouTube video comments.
	//   "YT_CHANNEL_DISCUSSION" - YouTube channel discussions.
	//   "YT_BACKSTAGE_COMMENT" - YouTube backstage comments.
	//   "YT_LIVE_CHAT" - YouTube live chat messages.
	//   "YT_LIVE_CHAT_CONFIG" - YouTube live chat configurations: contains
	// the kv pair indicating whether auto moderation is enabled.
	//   "YT_CHANNEL_CONFIG" - YouTube channel configurations: contains
	// channel configured badwords and moderators.
	//   "YT_POST_COMMENT" - YouTube post comments (using the unified
	// comment system).
	CommentType string `json:"commentType,omitempty"`

	// Content: The text content of the comment.
	Content string `json:"content,omitempty"`

	// ContentUpdateTimestamp: The stanza content last update timestamp, as
	// observed by the server. Note that for many comments older than Nov.
	// 2014 this is unset in the original stanza. MiniStanza tries to be
	// consistent with the original so for such comments it remains unset in
	// MiniStanza. If you use this field you should check
	// has_content_update_timestamp().
	ContentUpdateTimestamp string `json:"contentUpdateTimestamp,omitempty"`

	// CoverageSamplingEligible: Whether or not this comment is eligible for
	// comment classifier coverage sampling (in Kapla). Refer to
	// go/coverage-monitoring-for-kapla-comment-classifiers for more
	// information.
	CoverageSamplingEligible bool `json:"coverageSamplingEligible,omitempty"`

	// CreationDevice: The creation device. Derived from
	// shares:yt_creation_device
	//
	// Possible values:
	//   "UNKNOWN_INTERFACE"
	//   "WEB" - Targeted for desktop. youtube.com
	//   "WEB_GAMING"
	//   "WEB_MUSIC" - Legacy YouTube Music playback page for shares.
	// Deprecated with
	//   "WEB_MUSIC_EMBEDDED_PLAYER" - unbundling (2017). For
	// music.youtube.com, see WEB_REMIX. YouTube Music embedded web player.
	//   "WEB_REMIX" - YouTube Music web app.
	//   "WEB_EXPERIMENTS"
	//   "WEB_MOVIES" - Play Movies: go/avi.
	//   "WEB_HEROES" - YT Heroes: go/yt-heroes.
	//   "WEB_CREATOR" - YouTube Creator Studio Desktop app.
	//   "WEB_LIVE_STREAMING" - YouTube Live Streaming Desktop app
	// (go/rotom).
	//   "WEB_KIDS" - YouTube Kids web app.
	//   "WEB_INTERNAL_ANALYTICS" - YouTube Internal Analytics
	//   "WEB_PARENT_TOOLS" - YT Parent Tools web app (go/parent-zone-prd).
	//   "WEB_PHONE_VERIFICATION" - YouTube Phone Verification web app
	//   "WEB_EMBEDDED_PLAYER" - (go/wexit-phone-verify).
	//   "WEB_UNPLUGGED" - Unplugged web clients. Sign-in, member experience
	// (Polymer app).
	//   "WEB_UNPLUGGED_ONBOARDING" - Onboarding web app.
	//   "WEB_UNPLUGGED_OPS" - Unplugged ops tools.
	//   "WEB_UNPLUGGED_PUBLIC" - Public web experience (e.g. browse).
	//   "MWEB" - Targeted for mobile and/or tablet devices. m.youtube.com
	// for smart phones and tablets
	//   "MWEB_TIER_2" - MWEB_TIER_2 is deprecated, turned down August 2019,
	// go/future-of-v2
	//   "ANDROID" - Android Main app
	//   "ANDROID_CASUAL"
	//   "ANDROID_CREATOR"
	//   "ANDROID_GAMING"
	//   "ANDROID_KIDS"
	//   "ANDROID_INSTANT"
	//   "ANDROID_MUSIC"
	//   "ANDROID_TESTSUITE"
	//   "ANDROID_UNPLUGGED"
	//   "ANDROID_VR"
	//   "ANDROID_WITNESS"
	//   "ANDROID_SPORTS" - DO NOT USE
	//   "ANDROID_LITE"
	//   "ANDROID_MOVIES" - Play Movies: go/avi.
	//   "ANDROID_EMBEDDED_PLAYER"
	//   "ANDROID_PRODUCER" - Producer: go/yt-producer
	//   "IOSAPPLE" - Apple-controlled app for iOS, deprecated in ~2013
	//   "IOS" - iOS Main App (YouTube-controlled)
	//   "IOS_CREATOR"
	//   "IOS_DIRECTOR" - DO NOT USE
	//   "IOS_GAMING"
	//   "IOS_INSTANT"
	//   "IOS_KIDS"
	//   "IOS_LIVE_CREATION_EXTENSION"
	//   "IOS_MESSAGES_EXTENSION" - YT integration for Apple's iMessage.
	// go/ytios-imessage-extension-design
	//   "IOS_MUSIC" - TL bgoodrich@
	//   "IOS_TABLOID" - DO NOT USE
	//   "IOS_UNPLUGGED"
	//   "IOS_WITNESS"
	//   "IOS_SPORTS" - DO NOT USE
	//   "IOS_EMBEDDED_PLAYER" - go/ytios-embedded-player
	//   "IOS_MOVIES" - Play Movies: go/avi.
	//   "IOS_PILOT_STUDIO" - go/pilot
	//   "IOS_UPTIME" - go/uptime
	//   "IOS_PRODUCER" - Producer: go/yt-producer
	//   "OTHERAPP" - ANDROID_EMBEDDED_PLAYER used to be OTHERAPP. Android
	// embeds viewed on devices that have not upgraded the YouTube Main App
	// in a long time still report as OTHERAPP. (Legacy embeds use the
	// ClientName ANDROID and the SoftwareInterface OTHERAPP.) This may have
	// been used in other contexts in the past (e.g. players created by
	// third-parties), but the third-party case is unsupported today. Do not
	// use this client name for new apps.
	//   "TVHTML5" - Targeted for TV and/or game console devices.
	// youtube.com/tv
	//   "TVHTML5_AUDIO" - youtube.com/tv, on display-less Cast receivers.
	//   "TVHTML5_CAST" - youtube.com/tv, on Cast Receivers.
	//   "TVHTML5_KIDS" - Kids youtube app.
	//   "TVHTML5_FOR_KIDS" - Kids mode within the TVHTML5 app.
	//   "TVHTML5_MOVIES" - Play Movies: go/avi.
	//   "TVHTML5_SIMPLY" - go/yt-simply.
	//   "TVHTML5_SIMPLY_EMBEDDED_PLAYER" - go/yt-simply-embedded-design
	//   "TVHTML5_UNPLUGGED" - Unplugged Living Room app.
	//   "TVHTML5_VR" - NOT USED, /tv based VR devices log TVHTML5.
	//   "TVHTML5_YONGLE" - go/yongle go/yongle-playback.
	//   "TVLITE" - youtube.com/leanbacklite
	//   "TV_UNPLUGGED_CAST" - Unplugged Chromecast app
	//   "TV_UNPLUGGED_ANDROID" - Unplugged Android TV app
	//   "XL" - youtube.com/xl. No longer available.
	//   "ROKU_MOVIES" - Play Movies: go/avi.
	//   "CC_MOVIES" - Chromecast Play Movies: go/avi.
	//   "TVANDROID" - Old Google TV app. No longer available.
	//   "ANDROID_TV" - Android TV app, introduced at I/O 2014.
	//   "ANDROID_TV_KIDS" - Kids Android TV app.
	//   "ANDROID_TV_MOVIES" - Play Movies: go/avi.
	//   "XBOX" - Silverlight Xbox 360 app. No longer available.
	//   "XBOXONEGUIDE" - Xbox One launcher app.
	//   "CLIENTX" - clientx.corp.google.com
	//   "TVAPPLE" - Apple TV app
	//   "TVAPPLE_MOVIES" - Play Movies: go/avi.
	//   "AIRPLAY_MOVIES" - Play Movies: go/avi.
	//   "WEB_MUSIC_ANALYTICS" - Music Analytics (charts.youtube.com)
	//   "MUSIC_INTEGRATIONS" - Music Integrations (go/music-integrations).
	//   "WEB_HANGOUTS_MEET" - Hangouts meet broadcast
	// (go/yt-thor-broadcast)
	//   "KAIOS_LAUNCHER" - YouTube Launcher on KaiOS phones.
	//   "WEB_GVP_ADS" - GVP clients (IMA and GMA SDKs) go/gvp-sdk These are
	// ad SDKs used by non-YouTube publishers to play ads, including YouTube
	// hosted ads. The main interaction with YouTube is for TrueView, which
	// increments YouTube viewcount of the ad video after the delay is
	// reached. Thus, the ad SDKs send requests to the viewcount/VSS
	// pipeline. IMA SDK
	//   "ANDROID_GVP_ADS" - GMA SDK Android
	//   "IOS_GVP_ADS" - GMA SDK iOS
	//   "VAST_GVP_ADS" - VAST based SDKs
	//   "GOOGLE_ASSISTANT" - Middleware or Frontend Server Clients Google
	// Assistant integration with Voz
	//   "GOOGLE_LIST_RECS" - List Recs Service Clients
	//   "GOOGLE_MEDIA_ACTIONS" - Media Actions Service Clients
	//   "MEDIA_CONNECT_FRONTEND" - YouTube Media Connect Frontend (YMCFE)
	//   "GOOGLE_TV" - Google TV clients New Google TV devices
	// (go/gtv-deck). This is added to support go/gtv-ads.
	CreationDevice string `json:"creationDevice,omitempty"`

	// CreationTimeInSeconds: The time when the comment is created.
	CreationTimeInSeconds int64 `json:"creationTimeInSeconds,omitempty,string"`

	// DetailedLanguageCode: The language code with extra script details.
	// This is derived from detailed_language_code if it's populated,
	// otherwise the same as language_code. E.g. mr-Latn
	DetailedLanguageCode string `json:"detailedLanguageCode,omitempty"`

	// DistillerEngagements: All distiller engagements like reports and
	// downvotes.
	DistillerEngagements *AppsPeopleActivityStreamqualityDistillerEngagements `json:"distillerEngagements,omitempty"`

	// EligibleQualifiedTeaserFilters: The qualified comment teaser filters
	// that this comment is eligible for. Refer to go/comment-teaser-design
	// for more information.
	EligibleQualifiedTeaserFilters []string `json:"eligibleQualifiedTeaserFilters,omitempty"`

	// EmpiricalCtrs: Comments empirical CTRs.
	EmpiricalCtrs *VideoYoutubeCommentsRankingCTRMetrics `json:"empiricalCtrs,omitempty"`

	// Fds: Fountain Discovery Score, which represents the reputation of the
	// author.
	Fds float64 `json:"fds,omitempty"`

	// HasCreatorHeart: Indicator for whether there is creator heart on this
	// comment.
	HasCreatorHeart bool `json:"hasCreatorHeart,omitempty"`

	// HasCreatorReply: If the comment has a creator reply.
	HasCreatorReply bool `json:"hasCreatorReply,omitempty"`

	// IsAuthorSponsor: If the author is a channel member (sponsor).
	IsAuthorSponsor bool `json:"isAuthorSponsor,omitempty"`

	// IsDeleted: Whether a comment is from deleted shares. See
	// stanza_restrictions for more specific information and
	// is_publicly_visible for comments which are allowed to be seen by
	// everyone.
	IsDeleted bool `json:"isDeleted,omitempty"`

	// IsPinned: Whether the comment is pinned. This is derived from the
	// DestinationStreamDump.
	IsPinned bool `json:"isPinned,omitempty"`

	// IsPubliclyVisible: If the post is publicly visible.
	IsPubliclyVisible bool `json:"isPubliclyVisible,omitempty"`

	// IsReply: Whether the comment is a reply.
	IsReply bool `json:"isReply,omitempty"`

	// IsSubscriber: If the comment author is publicly subscribed to the
	// channel.
	IsSubscriber bool `json:"isSubscriber,omitempty"`

	// LanguageCode: Unicode CLDR language code of the segments, as
	// implemented by
	// //depot/google3/java/com/google/i18n/identifiers/LanguageCode.java
	// This is derived from user_content and should be considered the
	// canonical language code of the comment.
	LanguageCode string `json:"languageCode,omitempty"`

	// LastReplyTimestampUsec: The time when last reply is created.
	LastReplyTimestampUsec int64 `json:"lastReplyTimestampUsec,omitempty,string"`

	// LowQualityDecisions: Low quality decisions. Keyed by decision types
	// corresponding to secondary keys.
	LowQualityDecisions map[string]bool `json:"lowQualityDecisions,omitempty"`

	// MentionedTimestampCommentSecond: Timed comments for the "mentioned"
	// secondary key.
	MentionedTimestampCommentSecond int64 `json:"mentionedTimestampCommentSecond,omitempty"`

	// MisinfoScores: Misinfo scores map. Keyed by various model names.
	MisinfoScores map[string]float64 `json:"misinfoScores,omitempty"`

	// NumDislikes: Number of dislikes the comment has.
	NumDislikes int64 `json:"numDislikes,omitempty"`

	// NumLikes: Number of likes the comment has.
	NumLikes int64 `json:"numLikes,omitempty"`

	// NumRepliers: Number of different repliers the comment has.
	NumRepliers int64 `json:"numRepliers,omitempty"`

	// NumReplies: Number of non-abusive replies the comment has.
	NumReplies int64 `json:"numReplies,omitempty"`

	// NumSubscribersBucket: Bucketed number of subscribers held by comment
	// author.
	NumSubscribersBucket int64 `json:"numSubscribersBucket,omitempty"`

	// OfflineEngagementScores: Offline engagement scores map. Keyed by
	// various model names.
	OfflineEngagementScores map[string]float64 `json:"offlineEngagementScores,omitempty"`

	// ParentId: The parent stanza's stanza_id, empty for top-level posts
	// (non-replies). Prefer is_reply field for checking if a comment is a
	// reply since that is unaffected by surrogatization. For replies to
	// replies, this is the root stanza_id (not guaranteed AFAIK).
	ParentId string `json:"parentId,omitempty"`

	// PostId: The post this comment belongs to.
	PostId string `json:"postId,omitempty"`

	// RankingPostLanguage: The language code stored in the KV pair
	// ranking:post_language. This should usually be the same as
	// language_code but is not guaranteed to be identical. The KV pair is
	// needed because ranking can't consume user_content.
	RankingPostLanguage string `json:"rankingPostLanguage,omitempty"`

	// Segments: A textual content for the context.
	Segments *SocialCommonSegments `json:"segments,omitempty"`

	// SensitivityScores: Sensitivity scores map for smart reply sensitivity
	// scores. Keyed by model names. See
	// (g3doc/company/teams/expander/research/conversation/sensitive.md) for
	// more information on sensitivity scores.
	SensitivityScores map[string]float64 `json:"sensitivityScores,omitempty"`

	// Sentiment: Sentiment. This omits entity_sentiment and keeps only the
	// polarity, magnitude, and score. Sentiment as currently implemented is
	// not debiased and has limited language coverage. Please read
	// go/comments-sentiment-access before using.
	Sentiment *YoutubeCommentsSentimentSentiment `json:"sentiment,omitempty"`

	// ShortReplyVideoId: Associated Short Reply video ID if the comment
	// represents a Short Reply. See go/yt-comment-sticker-m2.
	ShortReplyVideoId string `json:"shortReplyVideoId,omitempty"`

	// SmartReplies: Smart replies for this comment. Keyed by model names.
	SmartReplies map[string]VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply `json:"smartReplies,omitempty"`

	// StanzaId: Refers to the stanza this data is derived from.
	StanzaId string `json:"stanzaId,omitempty"`

	// StanzaRestrictions: Contains various restriction information about a
	// stanza.
	StanzaRestrictions []*SocialStanzaStanzaRestriction `json:"stanzaRestrictions,omitempty"`

	// Subject: The author of the comment
	Subject *SecurityCredentialsPrincipalProto `json:"subject,omitempty"`

	// SubjectIsVideoOwner: Whether the comment is authored by the creator.
	SubjectIsVideoOwner bool `json:"subjectIsVideoOwner,omitempty"`

	// SubscriptionTimestamp: The timestamp (in seconds) when the author
	// subscribed to the channel.
	SubscriptionTimestamp int64 `json:"subscriptionTimestamp,omitempty,string"`

	// SuperThanksInfo: Super Thanks related info if a comment is posted
	// through a Super Thanks purchase.
	SuperThanksInfo *YoutubeBackstageSuperVodCommentInfo `json:"superThanksInfo,omitempty"`

	// TextEmbedding: Comment text embedding.
	TextEmbedding map[string]YoutubeCommentsRankingYouTubeCommentTextEmbedding `json:"textEmbedding,omitempty"`

	// TextLength: Text length of the comment.
	TextLength int64 `json:"textLength,omitempty"`

	// TextQualityScores: Predicted probability of the comment being flagged
	// based on the text.
	TextQualityScores *YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation `json:"textQualityScores,omitempty"`

	// TextQualityScores2: Predicted probability of the comment being
	// flagged based on the text. For testing the new annotation process
	// only.
	TextQualityScores2 *YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation `json:"textQualityScores2,omitempty"`

	// VideoId: The video this comment belongs to.
	VideoId string `json:"videoId,omitempty"`

	// VideoTimestamps: Unique video timestamps in seconds sorted by
	// timestamp. This is derived from text Segments, not from a KV. These
	// may exceed the length of the video since that isn't checked at
	// segmentation time. The segmentation rules have changed over time e.g.
	// in the past "10:00 PM" was treated as a timestamp.
	VideoTimestamps []int64 `json:"videoTimestamps,omitempty"`

	// WordEntropy: Word entropy of the comment.
	WordEntropy float64 `json:"wordEntropy,omitempty"`

	// YtAuthorChannelId: The youtube channel id of the comment author.
	YtAuthorChannelId string `json:"ytAuthorChannelId,omitempty"`

	// YtCommentQualityScore: Existing quality corpus scores.
	YtCommentQualityScore float64 `json:"ytCommentQualityScore,omitempty"`

	YtCommentQualityScore2 float64 `json:"ytCommentQualityScore2,omitempty"`

	YtCommentQualityScore3 float64 `json:"ytCommentQualityScore3,omitempty"`

	// YtReplyToItemId: For replies to replies, this contains the parent
	// reply's id. The parent_id field is actually the root stanza_id (not
	// guaranteed AFAIK).
	YtReplyToItemId string `json:"ytReplyToItemId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AnsibleScores") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AnsibleScores") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsClusteringMiniStanza) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsClusteringMiniStanza
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeCommentsClusteringMiniStanza) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeCommentsClusteringMiniStanza
	var s1 struct {
		CharEntropy            gensupport.JSONFloat64 `json:"charEntropy"`
		Fds                    gensupport.JSONFloat64 `json:"fds"`
		WordEntropy            gensupport.JSONFloat64 `json:"wordEntropy"`
		YtCommentQualityScore  gensupport.JSONFloat64 `json:"ytCommentQualityScore"`
		YtCommentQualityScore2 gensupport.JSONFloat64 `json:"ytCommentQualityScore2"`
		YtCommentQualityScore3 gensupport.JSONFloat64 `json:"ytCommentQualityScore3"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.CharEntropy = float64(s1.CharEntropy)
	s.Fds = float64(s1.Fds)
	s.WordEntropy = float64(s1.WordEntropy)
	s.YtCommentQualityScore = float64(s1.YtCommentQualityScore)
	s.YtCommentQualityScore2 = float64(s1.YtCommentQualityScore2)
	s.YtCommentQualityScore3 = float64(s1.YtCommentQualityScore3)
	return nil
}

// YoutubeCommentsRankingYouTubeCommentTextEmbedding: Comment text
// embedding.
type YoutubeCommentsRankingYouTubeCommentTextEmbedding struct {
	// TextEmbedding: Comment text embedding.
	TextEmbedding []float64 `json:"textEmbedding,omitempty"`

	// ForceSendFields is a list of field names (e.g. "TextEmbedding") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TextEmbedding") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsRankingYouTubeCommentTextEmbedding) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsRankingYouTubeCommentTextEmbedding
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation: Text
// quality scores for a single comment.
type YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation struct {
	// FlagPredictionScore: Score produced by the user flag prediction
	// model.
	FlagPredictionScore float64 `json:"flagPredictionScore,omitempty"`

	// FlagPredictionVersion: Version identifier of the flag prediction
	// model.
	FlagPredictionVersion string `json:"flagPredictionVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FlagPredictionScore")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FlagPredictionScore") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation
	var s1 struct {
		FlagPredictionScore gensupport.JSONFloat64 `json:"flagPredictionScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FlagPredictionScore = float64(s1.FlagPredictionScore)
	return nil
}

// YoutubeCommentsSentimentSentiment: Sentiment information extracted
// from the annotated content by Goldmine. This mirrors
// nlp_sentiment.SentimentAnnotation. Next tag: 5.
type YoutubeCommentsSentimentSentiment struct {
	EntitySentiment []*YoutubeCommentsSentimentSentimentEntitySentimentAnnotation `json:"entitySentiment,omitempty"`

	// Magnitude: Total magnitude of the sentiment. A positive number
	// representing the total intensity of sentiment regardless of positive
	// vs negative polarity.
	Magnitude float64 `json:"magnitude,omitempty"`

	// Polarity: Polarity of the sentiment. Value is between -1.0 and 1.0
	// inclusive, with larger numbers representing more positive sentiment
	// and negative numbers representing negative sentiment.
	Polarity float64 `json:"polarity,omitempty"`

	// Score: The average score over sentences. This combines the polarity
	// and magnitude signals into one value. Bounded between -1.0 and 1.0.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntitySentiment") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntitySentiment") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsSentimentSentiment) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsSentimentSentiment
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeCommentsSentimentSentiment) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeCommentsSentimentSentiment
	var s1 struct {
		Magnitude gensupport.JSONFloat64 `json:"magnitude"`
		Polarity  gensupport.JSONFloat64 `json:"polarity"`
		Score     gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Magnitude = float64(s1.Magnitude)
	s.Polarity = float64(s1.Polarity)
	s.Score = float64(s1.Score)
	return nil
}

// YoutubeCommentsSentimentSentimentEntitySentimentAnnotation: An entity
// level sentiment annotation containing the sentiment values aggregated
// over all mentions of an entity. Next tag: 7.
type YoutubeCommentsSentimentSentimentEntitySentimentAnnotation struct {
	// EntityName: The representative entity name. This can be blank for
	// cases when there is no explicit name like "I" or "it". The mentions'
	// tokens can be used to get more details about each entity.
	EntityName string `json:"entityName,omitempty"`

	// Magnitude: Total magnitude of the sentiment.
	Magnitude float64 `json:"magnitude,omitempty"`

	MentionSentiment []*YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation `json:"mentionSentiment,omitempty"`

	// Mid: MID for this entity, if available.
	Mid string `json:"mid,omitempty"`

	// Polarity: Polarity of the sentiment. See above for detail.
	Polarity float64 `json:"polarity,omitempty"`

	// Score: The per entity score between -1.0 and 1.0. Combines the signal
	// from polarity and magnitude values.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EntityName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EntityName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsSentimentSentimentEntitySentimentAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsSentimentSentimentEntitySentimentAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeCommentsSentimentSentimentEntitySentimentAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeCommentsSentimentSentimentEntitySentimentAnnotation
	var s1 struct {
		Magnitude gensupport.JSONFloat64 `json:"magnitude"`
		Polarity  gensupport.JSONFloat64 `json:"polarity"`
		Score     gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Magnitude = float64(s1.Magnitude)
	s.Polarity = float64(s1.Polarity)
	s.Score = float64(s1.Score)
	return nil
}

// YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSenti
// mentAnnotation: A mention level sentiment annotation containing the
// sentiment values for a single entity mention. // Next tag: 6.
type YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation struct {
	// EndToken: Token end index in corresponding SAFT document (inclusive).
	EndToken int64 `json:"endToken,omitempty,string"`

	// Magnitude: Total magnitude of the sentiment.
	Magnitude float64 `json:"magnitude,omitempty"`

	// Polarity: Polarity of the sentiment. See above for detail.
	Polarity float64 `json:"polarity,omitempty"`

	// Score: The per mention score between -1.0 and 1.0. Combines the
	// signal from polarity and magnitude values.
	Score float64 `json:"score,omitempty"`

	// StartToken: Token start index in corresponding SAFT document.
	StartToken int64 `json:"startToken,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "EndToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "EndToken") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation
	var s1 struct {
		Magnitude gensupport.JSONFloat64 `json:"magnitude"`
		Polarity  gensupport.JSONFloat64 `json:"polarity"`
		Score     gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Magnitude = float64(s1.Magnitude)
	s.Polarity = float64(s1.Polarity)
	s.Score = float64(s1.Score)
	return nil
}

// YoutubeDiscoveryLegosLegosAnnotation: The annotation of a document by
// a given entity, for a given type of relationship.
type YoutubeDiscoveryLegosLegosAnnotation struct {
	// Entity: The entity annotating the document.
	Entity *YoutubeDiscoveryLegosLegosEntity `json:"entity,omitempty"`

	// Format: The annotation is a format annotation, i.e. it tells the
	// format of the video.
	Format *YoutubeDiscoveryLegosLegosFormatRelationship `json:"format,omitempty"`

	// Present: The annotation is present in the video. Semantic Legos and
	// Presence Legos naturally overlap and can contain the same entities.
	// However, we do not enforce a strict subset relation.
	Present *YoutubeDiscoveryLegosLegosPresentRelationship `json:"present,omitempty"`

	// Semantic: The annotation is a semantic annotation, i.e. it tells what
	// the document is about and what the reasons to watch the video are.
	// The annotation should be valid for the complete annotated document,
	// not simply a part of the document such as a video segment.
	Semantic *YoutubeDiscoveryLegosLegosSemanticRelationship `json:"semantic,omitempty"`

	// Taxonomic: The annotation is a taxonomic annotation, i.e. it tells to
	// which class of the Legos taxonomy the document belongs to.
	Taxonomic *YoutubeDiscoveryLegosLegosTaxonomicRelationship `json:"taxonomic,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Entity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Entity") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosAnnotation) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosAnnotation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeDiscoveryLegosLegosAnnotations: A collection of annotations
// returned by Legos for a document.
type YoutubeDiscoveryLegosLegosAnnotations struct {
	// Annotations: The annotations for this document. For a given (entity,
	// relationship type) pair, there will be at most one annotation. The
	// list has no particular order.
	Annotations []*YoutubeDiscoveryLegosLegosAnnotation `json:"annotations,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Annotations") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Annotations") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosAnnotations) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosAnnotations
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeDiscoveryLegosLegosEntity: The identification of a Knowledge
// Graph (KG) entity in Legos.
type YoutubeDiscoveryLegosLegosEntity struct {
	// DebugName: DO NOT USE THIS FIELD. The entity name here can be random
	// garbage and when it's actually a name it will be in a random language
	// (most of the time English but not always). This field is going away
	// soon. For a replacement you should probably use the following RPC:
	// cs/symbol:Ytpedia.GetNames please read go/ytks-calling details on how
	// to call it and don't hesitate to write to us for help with this (or
	// in any case before starting to send real traffic to us) at:
	// g/yt-knowledge-service
	DebugName string `json:"debugName,omitempty"`

	// KgId: The ID of the Knowledge Graph entity. Note: this is the primary
	// ID at generation time. See
	// https://sites.google.com/a/google.com/knowledge-graph/data/primary_ids
	KgId string `json:"kgId,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DebugName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DebugName") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosEntity) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosEntity
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeDiscoveryLegosLegosFormatRelationship: Description of a format
// Legos annotation. http://go/legos/formats.md
type YoutubeDiscoveryLegosLegosFormatRelationship struct {
	// Confidence: Format classification confidence score, in the 0-1 range.
	// A score of XX% means that we expect at least XX% of the documents
	// annotated with this format to be correctly annotated; i.e.
	// thresholding at XX% yields a precision of at least XX%.
	Confidence float64 `json:"confidence,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosFormatRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosFormatRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDiscoveryLegosLegosFormatRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDiscoveryLegosLegosFormatRelationship
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// YoutubeDiscoveryLegosLegosPresentRelationship: Description of a
// present Legos annotation.
type YoutubeDiscoveryLegosLegosPresentRelationship struct {
	// Confidence: Confidence score. Thresholding at the confidence score at
	// 0.XX yields annotations of precision of at least XX%.
	Confidence float64 `json:"confidence,omitempty"`

	// Contexts: Extra context about how the entity relates to the document.
	// Typically vertical-specific. Please refrain from populating this
	// field as we're working on migrating most of the use cases to the
	// LegosEntity proto so clients don't have to scan all relationships to
	// know which annotations they may be interested in.
	Contexts []*YoutubeDiscoveryLegosLegosSemanticRelationshipContext `json:"contexts,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosPresentRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosPresentRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDiscoveryLegosLegosPresentRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDiscoveryLegosLegosPresentRelationship
	var s1 struct {
		Confidence gensupport.JSONFloat64 `json:"confidence"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	return nil
}

// YoutubeDiscoveryLegosLegosSemanticRelationship: Description of a
// semantic Legos annotation.
// http://go/legos/project.md#semantic-intent-annotations
type YoutubeDiscoveryLegosLegosSemanticRelationship struct {
	// Confidence: Confidence score. Thresholding at the confidence score at
	// 0.XX yields annotations of precision of at least XX%. Only filled in
	// the intent definition Legos. Please use
	// IsSemanticAnnotationAtConfidenceThreshold() from
	// video/youtube/discovery/legos/annotations/public/legos_annotations_uti
	// l.h to obtain only intent definition Legos. For more information on
	// the migration please look at go/legos-intent-migration.
	Confidence float64 `json:"confidence,omitempty"`

	Contexts []*YoutubeDiscoveryLegosLegosSemanticRelationshipContext `json:"contexts,omitempty"`

	// TopicalityScore: DEPRECATED. Please use confidence instead. Will be
	// set to the same value as confidence in early January 2019. See
	// go/legos-intent-migration for more information.
	TopicalityScore float64 `json:"topicalityScore,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Confidence") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Confidence") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosSemanticRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosSemanticRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDiscoveryLegosLegosSemanticRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDiscoveryLegosLegosSemanticRelationship
	var s1 struct {
		Confidence      gensupport.JSONFloat64 `json:"confidence"`
		TopicalityScore gensupport.JSONFloat64 `json:"topicalityScore"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Confidence = float64(s1.Confidence)
	s.TopicalityScore = float64(s1.TopicalityScore)
	return nil
}

// YoutubeDiscoveryLegosLegosSemanticRelationshipContext: Extra context
// about how the entity relates to the document. Typically
// vertical-specific.
type YoutubeDiscoveryLegosLegosSemanticRelationshipContext struct {
	// Subject: The subject of the semantic relationship. This is set when
	// the relationship is derived from some other entity. The exact meaning
	// of this field depends on the ContextType.
	Subject *YoutubeDiscoveryLegosLegosEntity `json:"subject,omitempty"`

	// Type: The type of semantic relationship between the document and the
	// entity. This allows one to retrieve vertical-specific fine-grained
	// information about the document.
	//
	// Possible values:
	//   "UNKNOWN_CONTEXT_TYPE"
	//   "MUSIC_RECORDING_CLUSTER" - The entity refers to the recording
	// cluster featured on the video. We will always create a supplementary
	// RECORDING_CLUSTER when an EXACT_RECORDING annotation is present by
	// denormalizing KG data.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should be
	// empty.
	//   "MUSIC_EXACT_RECORDING" - The mid refers to exact recording
	// featured on the video.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster. The subject can be empty, if no
	// recording cluster exists.
	//   "MUSIC_PRIMARY_RECORDING" - The entity refers to the
	// primary_recording of the recording cluster featured on the video.
	// This exists only for backward compatibility until WebRef, QRef and
	// all its clients migrate to /music/recording_cluster.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster.
	//   "MUSIC_RECORDING_ARTIST" - The entity refers to the musical artist
	// performing a recording featured on the video.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster of the featured recording, if known.
	//   "MUSIC_FEATURED_ARTIST" - The entity refers to the featured artist
	// relationship mined from KG, featured on the video.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster of the featured recording, if known.
	//   "MUSIC_COMPOSITION" - The entity refers to composition of the
	// recording featured on the video.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster of the featured recording, if known.
	//   "MUSIC_ORIGINAL_ARTIST_OF_COVER" - The entity refers to the
	// original musical artist for which the recording is a cover of.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the recording cluster of the cover recording, if known.
	//   "MUSIC_ORIGINAL_RECORDING_CLUSTER_OF_COVER" - The entity refers to
	// the original musical recording cluster for which the recording is a
	// cover of. LegosAnnotation.LegosSemanticRelationship.Context.subject
	// should point to the recording cluster of the cover recording, if
	// known.
	//   "MUSIC_OFFICIAL_VIDEO" - The entity refers to the musical recording
	// cluster for which the recording is an official video of.
	//   "MUSIC_OFFICIAL_AUDIO" - The entity refers to the musical recording
	// cluster for which the recording is an official audio-only (no
	// visuals) video of. Typically an Art Track.
	//   "MUSIC_OFFICIAL_EXACT_RECORDING_WITHOUT_CLUSTER" - The mid refers
	// to exact recording for which the video is an official video. The
	// subject is empty because the recording cluster does not exist yet.
	// This context should only exist in the beginning of the lifetime of a
	// recording.
	//   "MUSIC_LYRICS_VIDEO" - The entity refers to the musical recording
	// cluster for which the recording is a lyrics video of.
	//   "MUSIC_LIVE_RECORDING" - The entity refers to the musical recording
	// cluster and the video is featuring a live recording of this recording
	// cluster.
	//   "MUSIC_REMIX_RECORDING" - The entity refers to the musical
	// recording cluster and the video features a remix recording of this
	// recording cluster.
	//   "MUSIC_KARAOKE_VERSION" - The entity refers to the original musical
	// recording cluster for which the recording is a karaoke version of.
	//   "MUSIC_INSTRUMENTAL_RECORDING" - The entity refers to the original
	// musical recording cluster for which the recording is an instrumental
	// version of.
	//   "MUSIC_REMIX_ARTIST" - The entity refers to the remix artist
	// relationship mined from KG, doing the remix and only exists for a
	// recording. LegosAnnotation.LegosSemanticRelationship.Context.subject
	// should point to the recording made by this remixer, if known.
	//   "MUSIC_BOLLYWOOD_ACTOR" - The entity refers to /film/actor that are
	// associated with music videos from allowed Bollywood music channels.
	// Allowlist:
	// google3/googledata/video/youtube/discovery/metadata_aggregation/lists/
	// bollywood_music_channels.txt
	//   "MUSIC_UGC_SONG" - Information whether a song is user generated
	// content or not. This information was originally carried with a Legos
	// extension but since it's getting deprecated (b/153987502), context is
	// now used for this.
	//   "MUSIC_ART_TRACK_OR_PREMIUM_CLAIM" - Information whether the song
	// was an art-track or the song was found in a premium claim on the
	// video (the content owner is the owner of the video). This context is
	// used to replace Disco2 Detours extension which is getting deprecated
	// (b/153987502).
	//   "SHORT_VIDEO_BACKGROUND_MUSIC" - The entity refers to the recording
	// cluster featured on a Short form video, where the music is playing in
	// the background. This context is an equivalent of
	// MUSIC_RECORDING_CLUSTER for background music on Shorts.
	//   "SHORT_VIDEO_BACKGROUND_MUSIC_COMPOSITION" - The entity refers to a
	// composition present on a Short form video, where the music is playing
	// in the background.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the SHORT_VIDEO_BACKGROUND_MUSIC recording cluster of the
	// featured recording, if known. This context is an equivalent of
	// MUSIC_COMPOSITION for background music on Shorts.
	//   "SHORT_VIDEO_BACKGROUND_MUSIC_EXACT_RECORDING" - The entity refers
	// to an exact recording featured on a Short form video, where the music
	// is playing in the background.
	// LegosAnnotation.LegosSemanticRelationship.Context.subject should
	// point to the SHORT_VIDEO_BACKGROUND_MUSIC recording cluster of the
	// featured recording, if known. This context is an equivalent of
	// MUSIC_EXACT_RECORDING for background music on Shorts.
	//   "MUSIC_BASS_TOP_LEVEL_GENRE" - Context for music genres that come
	// from Music Classification team.
	//   "MUSIC_BASS_SUBGENRE"
	//   "CREATOR_OFFICIAL_CHANNEL" - The entity refers to a creator who has
	// uploaded this video on their verified official channel.
	// go/avg-use-cases go/artist-channels contact:
	// ytm-classification-eng@google.com
	//   "CREATOR_VEVO_SINGLE_CHANNEL" - The entity refers to a creator who
	// has uploaded this video on a VEVO channel with no other creators.
	// go/avg-use-cases go/artist-channels contact:
	// ytm-classification-eng@google.com
	//   "CREATOR_OTHER_SINGLE_CHANNEL" - The entity refers to a creator who
	// has uploaded this video on a channel that they are verified to
	// control, but not their official channel go/avg-use-cases
	// go/artist-channels contact: ytm-classification-eng@google.com
	//   "CREATOR_MULTIPLE_CHANNEL" - The entity refers to a creator who has
	// uploaded this video on a channel that they are verified to be related
	// to, but may not control exclusively go/avg-use-cases
	// go/artist-channels contact: ytm-classification-eng@google.com
	//   "TV_SHOW_FOOTAGE" - Deprecated. The context is currently unused and
	// very sparse populated. We plan to delete it.
	//   "TV_SHOW_GENRE" - The entity refers to a TV show genre added from a
	// TV show annotated on this video. Note that this does not imply that
	// TV_SHOW_FOOTAGE is present on any annotation for this video; the show
	// may have been obtained using metadata methods and we don't know for
	// sure that footage is present.
	//   "MOVIE_GENRE" - The entity refers to a movie genre added from a
	// movie annotated on this video. Note that this might also trigger for
	// shoulder content such as trailers or interviews.
	//   "GAMING_TOP_VIDEO_GAME" - The entity refers to the top scored game
	// title(s) for a particular gaming related video.
	//   "GAMING_IS_ITEM_EQUIPPED_BY" - Deprecated. The experiment on top of
	// this has not launched.
	//   "GAMING_IS_ITEM_USED_BY" - Deprecated. The experiment on top of
	// this has not launched.
	//   "GAMING_IS_ALLIED_CHARACTER_OF" - Deprecated. The experiment on top
	// of this has not launched.
	//   "GAMING_IS_CHARACTER_CONTROLLED_BY" - Deprecated. The experiment on
	// top of this has not launched.
	//   "LEGOS_OVERRIDE_LIVE_SPORTS" - The entity refers to a Legos
	// annotation that is manually requested by the live discovery team for
	// sports live streams.
	//   "KG_SOCIAL_MEDIA_PROFILE" - The entity refers to a creator who has
	// uploaded this video on one of their channels that is present as a
	// social profile in KG, e.g.
	// https://screenshot.googleplex.com/RCNN3YPizpe.png. Annotations with
	// this context may overlap with CREATOR_OFFICIAL_CHANNEL which is
	// Disco3 specific.
	//   "PERSON_CREATOR" - Deprecated context, do not use.
	//   "PREMIUM_TVOD_MOVIE" - The video is a premium TVOD
	// (Transaction-based Video On Demand) movie described by the entity.
	// Premium movies and shows are owned by the YT Popcorn team
	// (go/popcorn).
	//   "PREMIUM_AVOD_MOVIE" - The video is a premium AVOD
	// (Advertisement-based Video On Demand) movie described by the entity.
	// Premium movies and shows are owned by the YT Popcorn team
	// (go/popcorn).
	//   "PREMIUM_TVOD_SHOW" - The video is a premium TVOD
	// (Transaction-based Video On Demand) show described by the entity.
	// Premium movies and shows are owned by the YT Popcorn team
	// (go/popcorn).
	//   "PREMIUM_MOVIE_ACTOR" - The entity is a genre, actor or director
	// mid that has been inferred from the presence of a movie mid, in a
	// premium movie. See go/legos-premium-movie-associations. Premium
	// movies and shows are owned by the YT Popcorn team (go/popcorn).
	//   "PREMIUM_MOVIE_DIRECTOR"
	//   "PREMIUM_MOVIE_GENRE"
	//   "PUBLIC_FIGURE_UPLOADER" - The video is by the public figure who
	// owns the uploading channel.
	//   "PUBLIC_FIGURE_ABOUT" - The entity owns a channel part of the
	// Public Figure corpus.
	//   "RESPONSIBILITY_CLARIFICATION_NEEDED" - The video needs
	// clarification about the entity. This typically means we should
	// display a message establishing facts or scientific consensus about
	// the entity next to the video. NOTE: this is not a public context type
	// yet. Please reach out to
	// yt-knowledge-responsibility-features@google.com before using it. Its
	// semantics and precision are very specific and subject to change
	// without warning.
	//   "CLARIFY_TFX_MODEL" - Deprecated context, do not use.
	//   "DENORM_VIDEO_GAME_TO_VIDEO_GAME_GENRES" - Video game genre entity
	// that has been denormalized from a video game.
	//   "DENORM_VIDEO_GAME_TO_VIDEO_GAME_SERIES" - Video game series entity
	// that has been denormalized from a video game.
	//   "DENORM_PRODUCT_LINE_TO_BRAND" - Brand entity that has been
	// denormalized by a product-related entity.
	//   "DENORM_ORGANIZATION_TO_BRAND" - Brand entity that has been
	// denormalized by an organization entity.
	//   "DENORM_PODCAST_SERIES_TO_PODCAST" - Podcast entity that has been
	// denormalized from a base Podcast by KG type.
	//   "DENORM_COVID_VACCINE" - Covid vaccine entity denormalized from a
	// particular vaccine (e.g. Sputnik).
	//   "DENORM_PRODUCT_TO_DOMINANT_PRODUCT_CATEGORY" - Dominant product
	// category denormalized from a particular product.
	//   "DENORM_PRODUCT_TO_PRODUCT_CATEGORY" - Product category
	// denormalized from a particular product.
	//   "DENORMALIZATIONS" - Generic KG denormalization, scored by doc
	// cooccurrence. For testing only! If it looks good it should be
	// launched with its own context. In the meantime you can see the type
	// in the debugger trace.
	//   "SHOPPING_PRODUCT" - This context indicates when a Legos is of type
	// /business/variant_cluster. Further product related KG types will be
	// added in the future and the context will stop corresponding to a
	// single KG type. Furthermore, the context is only applied, if the
	// entity passes additional filtering (e.g. requiring a name).
	//   "SHOPPING_PRODUCT_LINE" - This context indicates that a Legos
	// annotation is of a product line See
	// go/shopping-kg-schema#product-lines.
	//   "SHOPPING_BRAND" - This context indicates that a Legos annotation
	// is of a shopping brand. See go/shopping-kg-schema#brands.
	//   "SHOPPING_CATEGORY" - This context indicates that a Legos
	// annotation is of a shopping category. See
	// go/shopping-kg-schema#product-categories.
	//   "CREATOR_SHOPPING_PRODUCT" - This context indicates that a Legos
	// annotation comes from a creator shopping product annotation
	// (go/shoptube).
	//   "VSU_SHOPPING_PRODUCT" - This context indicates that a Legos
	// annotation was output by VSU.
	//   "GEO_TYPE_RESTAURANT_OR_CAFE" - Deprecated. See b/244583433.
	// Instead, consider relying on GEO_TYPE and looking up individual KG
	// types in YTKS.
	//   "GEO_TYPE_ESTABLISHMENT_POI" - Deprecated. See b/244583433.
	// Instead, consider relying on GEO_TYPE and looking up individual KG
	// types in YTKS.
	//   "GEO_TYPES_COLLECTION_TRAVEL_AND_TOURISM" - Deprecated. See
	// b/244583433. Instead, consider relying on GEO_TYPE and looking up
	// individual KG types in YTKS.
	//   "GEO_TYPE_ENTERTAINMENT_AND_RECREATION" - Deprecated. See
	// b/244583433. Instead, consider relying on GEO_TYPE and looking up
	// individual KG types in YTKS.
	//   "GEO_TYPES_COLLECTION_BUSINESSES" - Deprecated. See b/244583433.
	// Instead, consider relying on GEO_TYPE and looking up individual KG
	// types in YTKS.
	//   "GEO_TYPES_COLLECTION_POTENTIALLY_SENSITIVE" - Deprecated. See
	// b/244583433. Instead, consider relying on GEO_TYPE and looking up
	// individual KG types in YTKS.
	//   "GEO_TYPE" - Context used by Geo that indicates if an entity is a
	// geo feature.
	//   "GEO_TYPES_COLLECTION_SMALL_POLITICALS" - Deprecated. See
	// b/244583433. Instead, consider relying on GEO_TYPE and looking up
	// individual KG types in YTKS.
	//   "ADDED_DURING_GEO_ENTITIES_PROMOTION" - Deprecated. See
	// b/244583433. Instead, consider relying on GEO_TYPE and looking up
	// individual KG types in YTKS.
	//   "DENORM_LOCATION_TO_CONTAINING_COUNTRY" - Assigned to an entity
	// that has been denormalized from an entity which it geographically
	// contains according to the containing entity's type.
	//   "DENORM_LOCATION_TO_CONTAINING_REGION"
	//   "DENORM_LOCATION_TO_CONTAINING_CITY"
	//   "MOVIE" - This context indicates that a Legos annotation is of a
	// movie.
	//   "TV_SHOW" - This context indicates that a Legos annotation is of a
	// tv show.
	//   "SPORT_TEAM" - This context indicates that a Legos annotation is of
	// a sport team.
	//   "SPORT_LEAGUE" - This context indicates that a Legos annotation is
	// of a sport league.
	//   "ELECTIONS_ANNOTATION_PRE_RULES" - To help with monitoring: marks
	// preexisting annotations before applying rules that increase recall
	// for this mid.
	//   "HAS_A_VOTING_MID"
	//   "GEO_LEGOS_TEST_SET_V2_POLITICAL" - To use in Geo Legos launch
	// report. Each context defines a slice of docs to subsample in a test.
	//   "GEO_LEGOS_TEST_SET_V2_TRAVEL_DESTINATIONS"
	//   "GEO_LEGOS_TEST_SET_V2_DINING"
	//   "GEO_LEGOS_TEST_SET_V2_HOTEL"
	Type string `json:"type,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Subject") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Subject") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosSemanticRelationshipContext) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosSemanticRelationshipContext
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// YoutubeDiscoveryLegosLegosTaxonomicRelationship: Description of a
// taxonomic Legos annotation.
// http://go/legos/project.md#taxonomy-annotations
type YoutubeDiscoveryLegosLegosTaxonomicRelationship struct {
	// IsRedundant: Set to true if the taxonomy annotation is redundant
	// amongst the set of other taxonomy annotations for the same document,
	// i.e. if there is at least one other taxonomy annotation that is a
	// child node of this one.
	IsRedundant bool `json:"isRedundant,omitempty"`

	// Score: A score, in the 0-1 range, used to rank taxonomy annotations.
	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsRedundant") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsRedundant") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDiscoveryLegosLegosTaxonomicRelationship) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDiscoveryLegosLegosTaxonomicRelationship
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDiscoveryLegosLegosTaxonomicRelationship) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDiscoveryLegosLegosTaxonomicRelationship
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// YoutubeDistillerBlarneyStoneScores: Blarney Stone classification
// scores: go/blarneystone Next available ID: 6
type YoutubeDistillerBlarneyStoneScores struct {
	FamilySafeV1Score float64 `json:"familySafeV1Score,omitempty"`

	MildHateHarassV1Score float64 `json:"mildHateHarassV1Score,omitempty"`

	MildHateHarassV2Score float64 `json:"mildHateHarassV2Score,omitempty"`

	// ModelScores: The scores corresponds to each of the abe_models in
	// /cns/yk-d/home/blarneystone/model0/config-2015-11-20.pbtxt
	ModelScores []*YoutubeDistillerModelScore `json:"modelScores,omitempty"`

	SevereHateHarassV1Score float64 `json:"severeHateHarassV1Score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FamilySafeV1Score")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "FamilySafeV1Score") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDistillerBlarneyStoneScores) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDistillerBlarneyStoneScores
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDistillerBlarneyStoneScores) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDistillerBlarneyStoneScores
	var s1 struct {
		FamilySafeV1Score       gensupport.JSONFloat64 `json:"familySafeV1Score"`
		MildHateHarassV1Score   gensupport.JSONFloat64 `json:"mildHateHarassV1Score"`
		MildHateHarassV2Score   gensupport.JSONFloat64 `json:"mildHateHarassV2Score"`
		SevereHateHarassV1Score gensupport.JSONFloat64 `json:"severeHateHarassV1Score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FamilySafeV1Score = float64(s1.FamilySafeV1Score)
	s.MildHateHarassV1Score = float64(s1.MildHateHarassV1Score)
	s.MildHateHarassV2Score = float64(s1.MildHateHarassV2Score)
	s.SevereHateHarassV1Score = float64(s1.SevereHateHarassV1Score)
	return nil
}

// YoutubeDistillerModelScore: Next available ID: 4
type YoutubeDistillerModelScore struct {
	// Classifier: The classifier trained with tensor flow.
	//
	// Possible values:
	//   "UNKNOWN"
	//   "OFFENSIVE_NON_POLICY"
	//   "OFFENSIVE_YT_POLICY"
	//   "COMMERCIAL_INTENT"
	Classifier string `json:"classifier,omitempty"`

	// Model: The model trained with dist belief [going to be deprecated].
	//
	// Possible values:
	//   "UNKNOWN"
	//   "HATE"
	//   "HARASSMENT"
	//   "HATE_OR_HARASSMENT"
	//   "COMMERCIAL_INTENT"
	//   "SEVERE_HATE_HARASSMENT"
	//   "MILD_HATE_HARASSMENT"
	//   "MILD_HATE_HARASSMENT_V2"
	Model string `json:"model,omitempty"`

	Score float64 `json:"score,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Classifier") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Classifier") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *YoutubeDistillerModelScore) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeDistillerModelScore
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

func (s *YoutubeDistillerModelScore) UnmarshalJSON(data []byte) error {
	type NoMethod YoutubeDistillerModelScore
	var s1 struct {
		Score gensupport.JSONFloat64 `json:"score"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Score = float64(s1.Score)
	return nil
}

// method id "contentwarehouse.projects.fetchAcl":

type ProjectsFetchAclCall struct {
	s                                            *Service
	resource                                     string
	googlecloudcontentwarehousev1fetchaclrequest *GoogleCloudContentwarehouseV1FetchAclRequest
	urlParams_                                   gensupport.URLParams
	ctx_                                         context.Context
	header_                                      http.Header
}

// FetchAcl: Gets the access control policy for a resource. Returns
// NOT_FOUND error if the resource does not exist. Returns an empty
// policy if the resource exists but does not have a policy set.
//
//   - resource: REQUIRED: The resource for which the policy is being
//     requested. Format for document:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d}. Format for project: projects/{project_number}.
func (r *ProjectsService) FetchAcl(resource string, googlecloudcontentwarehousev1fetchaclrequest *GoogleCloudContentwarehouseV1FetchAclRequest) *ProjectsFetchAclCall {
	c := &ProjectsFetchAclCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.googlecloudcontentwarehousev1fetchaclrequest = googlecloudcontentwarehousev1fetchaclrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsFetchAclCall) Fields(s ...googleapi.Field) *ProjectsFetchAclCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsFetchAclCall) Context(ctx context.Context) *ProjectsFetchAclCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsFetchAclCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsFetchAclCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1fetchaclrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:fetchAcl")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.fetchAcl" call.
// Exactly one of *GoogleCloudContentwarehouseV1FetchAclResponse or
// error will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1FetchAclResponse.ServerResponse.Header
// or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsFetchAclCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1FetchAclResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1FetchAclResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.",
	//   "flatPath": "v1/projects/{projectsId}:fetchAcl",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.fetchAcl",
	//   "parameterOrder": [
	//     "resource"
	//   ],
	//   "parameters": {
	//     "resource": {
	//       "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+resource}:fetchAcl",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1FetchAclRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1FetchAclResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.setAcl":

type ProjectsSetAclCall struct {
	s                                          *Service
	resource                                   string
	googlecloudcontentwarehousev1setaclrequest *GoogleCloudContentwarehouseV1SetAclRequest
	urlParams_                                 gensupport.URLParams
	ctx_                                       context.Context
	header_                                    http.Header
}

// SetAcl: Sets the access control policy for a resource. Replaces any
// existing policy.
//
//   - resource: REQUIRED: The resource for which the policy is being
//     requested. Format for document:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d}. Format for project: projects/{project_number}.
func (r *ProjectsService) SetAcl(resource string, googlecloudcontentwarehousev1setaclrequest *GoogleCloudContentwarehouseV1SetAclRequest) *ProjectsSetAclCall {
	c := &ProjectsSetAclCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.googlecloudcontentwarehousev1setaclrequest = googlecloudcontentwarehousev1setaclrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsSetAclCall) Fields(s ...googleapi.Field) *ProjectsSetAclCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsSetAclCall) Context(ctx context.Context) *ProjectsSetAclCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsSetAclCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsSetAclCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1setaclrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setAcl")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.setAcl" call.
// Exactly one of *GoogleCloudContentwarehouseV1SetAclResponse or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1SetAclResponse.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsSetAclCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SetAclResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SetAclResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Sets the access control policy for a resource. Replaces any existing policy.",
	//   "flatPath": "v1/projects/{projectsId}:setAcl",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.setAcl",
	//   "parameterOrder": [
	//     "resource"
	//   ],
	//   "parameters": {
	//     "resource": {
	//       "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+resource}:setAcl",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1SetAclRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SetAclResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.initialize":

type ProjectsLocationsInitializeCall struct {
	s                                                     *Service
	location                                              string
	googlecloudcontentwarehousev1initializeprojectrequest *GoogleCloudContentwarehouseV1InitializeProjectRequest
	urlParams_                                            gensupport.URLParams
	ctx_                                                  context.Context
	header_                                               http.Header
}

// Initialize: Provisions resources for given tenant project. Returns a
// long running operation.
//
//   - location: The location to be initialized Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsService) Initialize(location string, googlecloudcontentwarehousev1initializeprojectrequest *GoogleCloudContentwarehouseV1InitializeProjectRequest) *ProjectsLocationsInitializeCall {
	c := &ProjectsLocationsInitializeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.location = location
	c.googlecloudcontentwarehousev1initializeprojectrequest = googlecloudcontentwarehousev1initializeprojectrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsInitializeCall) Fields(s ...googleapi.Field) *ProjectsLocationsInitializeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsInitializeCall) Context(ctx context.Context) *ProjectsLocationsInitializeCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsInitializeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsInitializeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1initializeprojectrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+location}:initialize")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"location": c.location,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.initialize" call.
// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleLongrunningOperation.ServerResponse.Header or (if a response
// was returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsInitializeCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleLongrunningOperation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Provisions resources for given tenant project. Returns a long running operation.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:initialize",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.initialize",
	//   "parameterOrder": [
	//     "location"
	//   ],
	//   "parameters": {
	//     "location": {
	//       "description": "Required. The location to be initialized Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+location}:initialize",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1InitializeProjectRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleLongrunningOperation"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.runPipeline":

type ProjectsLocationsRunPipelineCall struct {
	s                                               *Service
	name                                            string
	googlecloudcontentwarehousev1runpipelinerequest *GoogleCloudContentwarehouseV1RunPipelineRequest
	urlParams_                                      gensupport.URLParams
	ctx_                                            context.Context
	header_                                         http.Header
}

// RunPipeline: Run a predefined pipeline.
//
//   - name: The resource name which owns the resources of the pipeline.
//     Format: projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsService) RunPipeline(name string, googlecloudcontentwarehousev1runpipelinerequest *GoogleCloudContentwarehouseV1RunPipelineRequest) *ProjectsLocationsRunPipelineCall {
	c := &ProjectsLocationsRunPipelineCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1runpipelinerequest = googlecloudcontentwarehousev1runpipelinerequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRunPipelineCall) Fields(s ...googleapi.Field) *ProjectsLocationsRunPipelineCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRunPipelineCall) Context(ctx context.Context) *ProjectsLocationsRunPipelineCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRunPipelineCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRunPipelineCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1runpipelinerequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:runPipeline")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.runPipeline" call.
// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleLongrunningOperation.ServerResponse.Header or (if a response
// was returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsRunPipelineCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleLongrunningOperation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Run a predefined pipeline.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:runPipeline",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.runPipeline",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The resource name which owns the resources of the pipeline. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:runPipeline",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1RunPipelineRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleLongrunningOperation"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documentSchemas.create":

type ProjectsLocationsDocumentSchemasCreateCall struct {
	s                                           *Service
	parent                                      string
	googlecloudcontentwarehousev1documentschema *GoogleCloudContentwarehouseV1DocumentSchema
	urlParams_                                  gensupport.URLParams
	ctx_                                        context.Context
	header_                                     http.Header
}

// Create: Creates a document schema.
//
// - parent: The parent name.
func (r *ProjectsLocationsDocumentSchemasService) Create(parent string, googlecloudcontentwarehousev1documentschema *GoogleCloudContentwarehouseV1DocumentSchema) *ProjectsLocationsDocumentSchemasCreateCall {
	c := &ProjectsLocationsDocumentSchemasCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1documentschema = googlecloudcontentwarehousev1documentschema
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentSchemasCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentSchemasCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentSchemasCreateCall) Context(ctx context.Context) *ProjectsLocationsDocumentSchemasCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentSchemasCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentSchemasCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1documentschema)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/documentSchemas")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documentSchemas.create" call.
// Exactly one of *GoogleCloudContentwarehouseV1DocumentSchema or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1DocumentSchema.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentSchemasCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1DocumentSchema, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1DocumentSchema{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Creates a document schema.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documentSchemas.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The parent name.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/documentSchemas",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documentSchemas.delete":

type ProjectsLocationsDocumentSchemasDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a document schema. Returns NOT_FOUND if the document
// schema does not exist. Returns BAD_REQUEST if the document schema has
// documents depending on it.
//
// - name: The name of the document schema to delete.
func (r *ProjectsLocationsDocumentSchemasService) Delete(name string) *ProjectsLocationsDocumentSchemasDeleteCall {
	c := &ProjectsLocationsDocumentSchemasDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentSchemasDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentSchemasDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentSchemasDeleteCall) Context(ctx context.Context) *ProjectsLocationsDocumentSchemasDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentSchemasDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentSchemasDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documentSchemas.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentSchemasDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Deletes a document schema. Returns NOT_FOUND if the document schema does not exist. Returns BAD_REQUEST if the document schema has documents depending on it.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
	//   "httpMethod": "DELETE",
	//   "id": "contentwarehouse.projects.locations.documentSchemas.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document schema to delete.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documentSchemas.get":

type ProjectsLocationsDocumentSchemasGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a document schema. Returns NOT_FOUND if the document schema
// does not exist.
//
// - name: The name of the document schema to retrieve.
func (r *ProjectsLocationsDocumentSchemasService) Get(name string) *ProjectsLocationsDocumentSchemasGetCall {
	c := &ProjectsLocationsDocumentSchemasGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentSchemasGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentSchemasGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsDocumentSchemasGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsDocumentSchemasGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentSchemasGetCall) Context(ctx context.Context) *ProjectsLocationsDocumentSchemasGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentSchemasGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentSchemasGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documentSchemas.get" call.
// Exactly one of *GoogleCloudContentwarehouseV1DocumentSchema or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1DocumentSchema.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentSchemasGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1DocumentSchema, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1DocumentSchema{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets a document schema. Returns NOT_FOUND if the document schema does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.documentSchemas.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document schema to retrieve.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documentSchemas.list":

type ProjectsLocationsDocumentSchemasListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists document schemas.
//
//   - parent: The parent, which owns this collection of document schemas.
//     Format: projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsDocumentSchemasService) List(parent string) *ProjectsLocationsDocumentSchemasListCall {
	c := &ProjectsLocationsDocumentSchemasListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number
// of document schemas to return. The service may return fewer than this
// value. If unspecified, at most 50 document schemas will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
func (c *ProjectsLocationsDocumentSchemasListCall) PageSize(pageSize int64) *ProjectsLocationsDocumentSchemasListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token,
// received from a previous `ListDocumentSchemas` call. Provide this to
// retrieve the subsequent page. When paginating, all other parameters
// provided to `ListDocumentSchemas` must match the call that provided
// the page token.
func (c *ProjectsLocationsDocumentSchemasListCall) PageToken(pageToken string) *ProjectsLocationsDocumentSchemasListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentSchemasListCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentSchemasListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsDocumentSchemasListCall) IfNoneMatch(entityTag string) *ProjectsLocationsDocumentSchemasListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentSchemasListCall) Context(ctx context.Context) *ProjectsLocationsDocumentSchemasListCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentSchemasListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentSchemasListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/documentSchemas")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documentSchemas.list" call.
// Exactly one of
// *GoogleCloudContentwarehouseV1ListDocumentSchemasResponse or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1ListDocumentSchemasResponse.ServerRespon
// se.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentSchemasListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1ListDocumentSchemasResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1ListDocumentSchemasResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Lists document schemas.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.documentSchemas.list",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "pageSize": {
	//       "description": "The maximum number of document schemas to return. The service may return fewer than this value. If unspecified, at most 50 document schemas will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
	//       "format": "int32",
	//       "location": "query",
	//       "type": "integer"
	//     },
	//     "pageToken": {
	//       "description": "A page token, received from a previous `ListDocumentSchemas` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDocumentSchemas` must match the call that provided the page token.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "parent": {
	//       "description": "Required. The parent, which owns this collection of document schemas. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/documentSchemas",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsDocumentSchemasListCall) Pages(ctx context.Context, f func(*GoogleCloudContentwarehouseV1ListDocumentSchemasResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

// method id "contentwarehouse.projects.locations.documentSchemas.patch":

type ProjectsLocationsDocumentSchemasPatchCall struct {
	s                                                        *Service
	name                                                     string
	googlecloudcontentwarehousev1updatedocumentschemarequest *GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest
	urlParams_                                               gensupport.URLParams
	ctx_                                                     context.Context
	header_                                                  http.Header
}

// Patch: Updates a Document Schema. Returns INVALID_ARGUMENT if the
// name of the Document Schema is non-empty and does not equal the
// existing name. Supports only appending new properties, adding new
// ENUM possible values, and updating the
// EnumTypeOptions.validation_check_disabled flag for ENUM possible
// values. Updating existing properties will result into
// INVALID_ARGUMENT.
//
//   - name: The name of the document schema to update. Format:
//     projects/{project_number}/locations/{location}/documentSchemas/{docu
//     ment_schema_id}.
func (r *ProjectsLocationsDocumentSchemasService) Patch(name string, googlecloudcontentwarehousev1updatedocumentschemarequest *GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest) *ProjectsLocationsDocumentSchemasPatchCall {
	c := &ProjectsLocationsDocumentSchemasPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1updatedocumentschemarequest = googlecloudcontentwarehousev1updatedocumentschemarequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentSchemasPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentSchemasPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentSchemasPatchCall) Context(ctx context.Context) *ProjectsLocationsDocumentSchemasPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentSchemasPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentSchemasPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1updatedocumentschemarequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documentSchemas.patch" call.
// Exactly one of *GoogleCloudContentwarehouseV1DocumentSchema or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1DocumentSchema.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentSchemasPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1DocumentSchema, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1DocumentSchema{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Updates a Document Schema. Returns INVALID_ARGUMENT if the name of the Document Schema is non-empty and does not equal the existing name. Supports only appending new properties, adding new ENUM possible values, and updating the EnumTypeOptions.validation_check_disabled flag for ENUM possible values. Updating existing properties will result into INVALID_ARGUMENT.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
	//   "httpMethod": "PATCH",
	//   "id": "contentwarehouse.projects.locations.documentSchemas.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document schema to update. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.create":

type ProjectsLocationsDocumentsCreateCall struct {
	s                                                  *Service
	parent                                             string
	googlecloudcontentwarehousev1createdocumentrequest *GoogleCloudContentwarehouseV1CreateDocumentRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// Create: Creates a document.
//
//   - parent: The parent name. Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsDocumentsService) Create(parent string, googlecloudcontentwarehousev1createdocumentrequest *GoogleCloudContentwarehouseV1CreateDocumentRequest) *ProjectsLocationsDocumentsCreateCall {
	c := &ProjectsLocationsDocumentsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1createdocumentrequest = googlecloudcontentwarehousev1createdocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsCreateCall) Context(ctx context.Context) *ProjectsLocationsDocumentsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1createdocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/documents")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.create" call.
// Exactly one of *GoogleCloudContentwarehouseV1CreateDocumentResponse
// or error will be non-nil. Any non-2xx status code is an error.
// Response headers are in either
// *GoogleCloudContentwarehouseV1CreateDocumentResponse.ServerResponse.He
// ader or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1CreateDocumentResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1CreateDocumentResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Creates a document.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/documents",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1CreateDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1CreateDocumentResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.delete":

type ProjectsLocationsDocumentsDeleteCall struct {
	s                                                  *Service
	name                                               string
	googlecloudcontentwarehousev1deletedocumentrequest *GoogleCloudContentwarehouseV1DeleteDocumentRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// Delete: Deletes a document. Returns NOT_FOUND if the document does
// not exist.
//
//   - name: The name of the document to delete. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsService) Delete(name string, googlecloudcontentwarehousev1deletedocumentrequest *GoogleCloudContentwarehouseV1DeleteDocumentRequest) *ProjectsLocationsDocumentsDeleteCall {
	c := &ProjectsLocationsDocumentsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1deletedocumentrequest = googlecloudcontentwarehousev1deletedocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsDeleteCall) Context(ctx context.Context) *ProjectsLocationsDocumentsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1deletedocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:delete")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Deletes a document. Returns NOT_FOUND if the document does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:delete",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:delete",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.fetchAcl":

type ProjectsLocationsDocumentsFetchAclCall struct {
	s                                            *Service
	resource                                     string
	googlecloudcontentwarehousev1fetchaclrequest *GoogleCloudContentwarehouseV1FetchAclRequest
	urlParams_                                   gensupport.URLParams
	ctx_                                         context.Context
	header_                                      http.Header
}

// FetchAcl: Gets the access control policy for a resource. Returns
// NOT_FOUND error if the resource does not exist. Returns an empty
// policy if the resource exists but does not have a policy set.
//
//   - resource: REQUIRED: The resource for which the policy is being
//     requested. Format for document:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d}. Format for project: projects/{project_number}.
func (r *ProjectsLocationsDocumentsService) FetchAcl(resource string, googlecloudcontentwarehousev1fetchaclrequest *GoogleCloudContentwarehouseV1FetchAclRequest) *ProjectsLocationsDocumentsFetchAclCall {
	c := &ProjectsLocationsDocumentsFetchAclCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.googlecloudcontentwarehousev1fetchaclrequest = googlecloudcontentwarehousev1fetchaclrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsFetchAclCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsFetchAclCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsFetchAclCall) Context(ctx context.Context) *ProjectsLocationsDocumentsFetchAclCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsFetchAclCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsFetchAclCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1fetchaclrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:fetchAcl")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.fetchAcl" call.
// Exactly one of *GoogleCloudContentwarehouseV1FetchAclResponse or
// error will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1FetchAclResponse.ServerResponse.Header
// or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsFetchAclCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1FetchAclResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1FetchAclResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:fetchAcl",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.fetchAcl",
	//   "parameterOrder": [
	//     "resource"
	//   ],
	//   "parameters": {
	//     "resource": {
	//       "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+resource}:fetchAcl",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1FetchAclRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1FetchAclResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.get":

type ProjectsLocationsDocumentsGetCall struct {
	s                                               *Service
	name                                            string
	googlecloudcontentwarehousev1getdocumentrequest *GoogleCloudContentwarehouseV1GetDocumentRequest
	urlParams_                                      gensupport.URLParams
	ctx_                                            context.Context
	header_                                         http.Header
}

// Get: Gets a document. Returns NOT_FOUND if the document does not
// exist.
//
//   - name: The name of the document to retrieve. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsService) Get(name string, googlecloudcontentwarehousev1getdocumentrequest *GoogleCloudContentwarehouseV1GetDocumentRequest) *ProjectsLocationsDocumentsGetCall {
	c := &ProjectsLocationsDocumentsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1getdocumentrequest = googlecloudcontentwarehousev1getdocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsGetCall) Context(ctx context.Context) *ProjectsLocationsDocumentsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1getdocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:get")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.get" call.
// Exactly one of *GoogleCloudContentwarehouseV1Document or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1Document.ServerResponse.Header or (if a
// response was returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1Document, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1Document{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets a document. Returns NOT_FOUND if the document does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:get",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:get",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1Document"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.linkedSources":

type ProjectsLocationsDocumentsLinkedSourcesCall struct {
	s                                                     *Service
	parent                                                string
	googlecloudcontentwarehousev1listlinkedsourcesrequest *GoogleCloudContentwarehouseV1ListLinkedSourcesRequest
	urlParams_                                            gensupport.URLParams
	ctx_                                                  context.Context
	header_                                               http.Header
}

// LinkedSources: Return all source document-links from the document.
//
//   - parent: The name of the document, for which all source links are
//     returned. Format:
//     projects/{project_number}/locations/{location}/documents/{source_doc
//     ument_id}.
func (r *ProjectsLocationsDocumentsService) LinkedSources(parent string, googlecloudcontentwarehousev1listlinkedsourcesrequest *GoogleCloudContentwarehouseV1ListLinkedSourcesRequest) *ProjectsLocationsDocumentsLinkedSourcesCall {
	c := &ProjectsLocationsDocumentsLinkedSourcesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1listlinkedsourcesrequest = googlecloudcontentwarehousev1listlinkedsourcesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsLinkedSourcesCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsLinkedSourcesCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsLinkedSourcesCall) Context(ctx context.Context) *ProjectsLocationsDocumentsLinkedSourcesCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsLinkedSourcesCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsLinkedSourcesCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1listlinkedsourcesrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/linkedSources")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.linkedSources" call.
// Exactly one of
// *GoogleCloudContentwarehouseV1ListLinkedSourcesResponse or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1ListLinkedSourcesResponse.ServerResponse
// .Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsLinkedSourcesCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1ListLinkedSourcesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1ListLinkedSourcesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Return all source document-links from the document.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedSources",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.linkedSources",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The name of the document, for which all source links are returned. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/linkedSources",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsDocumentsLinkedSourcesCall) Pages(ctx context.Context, f func(*GoogleCloudContentwarehouseV1ListLinkedSourcesResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.googlecloudcontentwarehousev1listlinkedsourcesrequest.PageToken = pt }(c.googlecloudcontentwarehousev1listlinkedsourcesrequest.PageToken) // reset paging to original point
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.googlecloudcontentwarehousev1listlinkedsourcesrequest.PageToken = x.NextPageToken
	}
}

// method id "contentwarehouse.projects.locations.documents.linkedTargets":

type ProjectsLocationsDocumentsLinkedTargetsCall struct {
	s                                                     *Service
	parent                                                string
	googlecloudcontentwarehousev1listlinkedtargetsrequest *GoogleCloudContentwarehouseV1ListLinkedTargetsRequest
	urlParams_                                            gensupport.URLParams
	ctx_                                                  context.Context
	header_                                               http.Header
}

// LinkedTargets: Return all target document-links from the document.
//
//   - parent: The name of the document, for which all target links are
//     returned. Format:
//     projects/{project_number}/locations/{location}/documents/{target_doc
//     ument_id}.
func (r *ProjectsLocationsDocumentsService) LinkedTargets(parent string, googlecloudcontentwarehousev1listlinkedtargetsrequest *GoogleCloudContentwarehouseV1ListLinkedTargetsRequest) *ProjectsLocationsDocumentsLinkedTargetsCall {
	c := &ProjectsLocationsDocumentsLinkedTargetsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1listlinkedtargetsrequest = googlecloudcontentwarehousev1listlinkedtargetsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsLinkedTargetsCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsLinkedTargetsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsLinkedTargetsCall) Context(ctx context.Context) *ProjectsLocationsDocumentsLinkedTargetsCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsLinkedTargetsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsLinkedTargetsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1listlinkedtargetsrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/linkedTargets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.linkedTargets" call.
// Exactly one of
// *GoogleCloudContentwarehouseV1ListLinkedTargetsResponse or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1ListLinkedTargetsResponse.ServerResponse
// .Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsLinkedTargetsCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1ListLinkedTargetsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1ListLinkedTargetsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Return all target document-links from the document.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedTargets",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.linkedTargets",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The name of the document, for which all target links are returned. Format: projects/{project_number}/locations/{location}/documents/{target_document_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/linkedTargets",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.patch":

type ProjectsLocationsDocumentsPatchCall struct {
	s                                                  *Service
	name                                               string
	googlecloudcontentwarehousev1updatedocumentrequest *GoogleCloudContentwarehouseV1UpdateDocumentRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// Patch: Updates a document. Returns INVALID_ARGUMENT if the name of
// the document is non-empty and does not equal the existing name.
//
//   - name: The name of the document to update. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsService) Patch(name string, googlecloudcontentwarehousev1updatedocumentrequest *GoogleCloudContentwarehouseV1UpdateDocumentRequest) *ProjectsLocationsDocumentsPatchCall {
	c := &ProjectsLocationsDocumentsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1updatedocumentrequest = googlecloudcontentwarehousev1updatedocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsPatchCall) Context(ctx context.Context) *ProjectsLocationsDocumentsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1updatedocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.patch" call.
// Exactly one of *GoogleCloudContentwarehouseV1UpdateDocumentResponse
// or error will be non-nil. Any non-2xx status code is an error.
// Response headers are in either
// *GoogleCloudContentwarehouseV1UpdateDocumentResponse.ServerResponse.He
// ader or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1UpdateDocumentResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1UpdateDocumentResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}",
	//   "httpMethod": "PATCH",
	//   "id": "contentwarehouse.projects.locations.documents.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.search":

type ProjectsLocationsDocumentsSearchCall struct {
	s                                                   *Service
	parent                                              string
	googlecloudcontentwarehousev1searchdocumentsrequest *GoogleCloudContentwarehouseV1SearchDocumentsRequest
	urlParams_                                          gensupport.URLParams
	ctx_                                                context.Context
	header_                                             http.Header
}

// Search: Searches for documents using provided SearchDocumentsRequest.
// This call only returns documents that the caller has permission to
// search against.
//
//   - parent: The parent, which owns this collection of documents.
//     Format: projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsDocumentsService) Search(parent string, googlecloudcontentwarehousev1searchdocumentsrequest *GoogleCloudContentwarehouseV1SearchDocumentsRequest) *ProjectsLocationsDocumentsSearchCall {
	c := &ProjectsLocationsDocumentsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1searchdocumentsrequest = googlecloudcontentwarehousev1searchdocumentsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsSearchCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsSearchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsSearchCall) Context(ctx context.Context) *ProjectsLocationsDocumentsSearchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsSearchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsSearchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1searchdocumentsrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/documents:search")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.search" call.
// Exactly one of *GoogleCloudContentwarehouseV1SearchDocumentsResponse
// or error will be non-nil. Any non-2xx status code is an error.
// Response headers are in either
// *GoogleCloudContentwarehouseV1SearchDocumentsResponse.ServerResponse.H
// eader or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsSearchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SearchDocumentsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SearchDocumentsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Searches for documents using provided SearchDocumentsRequest. This call only returns documents that the caller has permission to search against.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents:search",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.search",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The parent, which owns this collection of documents. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/documents:search",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1SearchDocumentsRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SearchDocumentsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsDocumentsSearchCall) Pages(ctx context.Context, f func(*GoogleCloudContentwarehouseV1SearchDocumentsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.googlecloudcontentwarehousev1searchdocumentsrequest.PageToken = pt }(c.googlecloudcontentwarehousev1searchdocumentsrequest.PageToken) // reset paging to original point
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.googlecloudcontentwarehousev1searchdocumentsrequest.PageToken = x.NextPageToken
	}
}

// method id "contentwarehouse.projects.locations.documents.setAcl":

type ProjectsLocationsDocumentsSetAclCall struct {
	s                                          *Service
	resource                                   string
	googlecloudcontentwarehousev1setaclrequest *GoogleCloudContentwarehouseV1SetAclRequest
	urlParams_                                 gensupport.URLParams
	ctx_                                       context.Context
	header_                                    http.Header
}

// SetAcl: Sets the access control policy for a resource. Replaces any
// existing policy.
//
//   - resource: REQUIRED: The resource for which the policy is being
//     requested. Format for document:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d}. Format for project: projects/{project_number}.
func (r *ProjectsLocationsDocumentsService) SetAcl(resource string, googlecloudcontentwarehousev1setaclrequest *GoogleCloudContentwarehouseV1SetAclRequest) *ProjectsLocationsDocumentsSetAclCall {
	c := &ProjectsLocationsDocumentsSetAclCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.googlecloudcontentwarehousev1setaclrequest = googlecloudcontentwarehousev1setaclrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsSetAclCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsSetAclCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsSetAclCall) Context(ctx context.Context) *ProjectsLocationsDocumentsSetAclCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsSetAclCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsSetAclCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1setaclrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setAcl")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.setAcl" call.
// Exactly one of *GoogleCloudContentwarehouseV1SetAclResponse or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1SetAclResponse.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsSetAclCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SetAclResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SetAclResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Sets the access control policy for a resource. Replaces any existing policy.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:setAcl",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.setAcl",
	//   "parameterOrder": [
	//     "resource"
	//   ],
	//   "parameters": {
	//     "resource": {
	//       "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+resource}:setAcl",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1SetAclRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SetAclResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.documentLinks.create":

type ProjectsLocationsDocumentsDocumentLinksCreateCall struct {
	s                                                      *Service
	parent                                                 string
	googlecloudcontentwarehousev1createdocumentlinkrequest *GoogleCloudContentwarehouseV1CreateDocumentLinkRequest
	urlParams_                                             gensupport.URLParams
	ctx_                                                   context.Context
	header_                                                http.Header
}

// Create: Create a link between a source document and a target
// document.
//
//   - parent: Parent of the document-link to be created. parent of
//     document-link should be a document. Format:
//     projects/{project_number}/locations/{location}/documents/{source_doc
//     ument_id}.
func (r *ProjectsLocationsDocumentsDocumentLinksService) Create(parent string, googlecloudcontentwarehousev1createdocumentlinkrequest *GoogleCloudContentwarehouseV1CreateDocumentLinkRequest) *ProjectsLocationsDocumentsDocumentLinksCreateCall {
	c := &ProjectsLocationsDocumentsDocumentLinksCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1createdocumentlinkrequest = googlecloudcontentwarehousev1createdocumentlinkrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsDocumentLinksCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsDocumentLinksCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsDocumentLinksCreateCall) Context(ctx context.Context) *ProjectsLocationsDocumentsDocumentLinksCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsDocumentLinksCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsDocumentLinksCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1createdocumentlinkrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/documentLinks")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.documentLinks.create" call.
// Exactly one of *GoogleCloudContentwarehouseV1DocumentLink or error
// will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1DocumentLink.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsDocumentLinksCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1DocumentLink, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1DocumentLink{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Create a link between a source document and a target document.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.documentLinks.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. Parent of the document-link to be created. parent of document-link should be a document. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/documentLinks",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1DocumentLink"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.documentLinks.delete":

type ProjectsLocationsDocumentsDocumentLinksDeleteCall struct {
	s                                                      *Service
	name                                                   string
	googlecloudcontentwarehousev1deletedocumentlinkrequest *GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest
	urlParams_                                             gensupport.URLParams
	ctx_                                                   context.Context
	header_                                                http.Header
}

// Delete: Remove the link between the source and target documents.
//
//   - name: The name of the document-link to be deleted. Format:
//     projects/{project_number}/locations/{location}/documents/{source_doc
//     ument_id}/documentLinks/{document_link_id}.
func (r *ProjectsLocationsDocumentsDocumentLinksService) Delete(name string, googlecloudcontentwarehousev1deletedocumentlinkrequest *GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest) *ProjectsLocationsDocumentsDocumentLinksDeleteCall {
	c := &ProjectsLocationsDocumentsDocumentLinksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1deletedocumentlinkrequest = googlecloudcontentwarehousev1deletedocumentlinkrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsDocumentLinksDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsDocumentLinksDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsDocumentLinksDeleteCall) Context(ctx context.Context) *ProjectsLocationsDocumentsDocumentLinksDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsDocumentLinksDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsDocumentLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1deletedocumentlinkrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:delete")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.documentLinks.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentsDocumentLinksDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Remove the link between the source and target documents.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks/{documentLinksId}:delete",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.documentLinks.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document-link to be deleted. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}/documentLinks/{document_link_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+/documentLinks/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:delete",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.referenceId.delete":

type ProjectsLocationsDocumentsReferenceIdDeleteCall struct {
	s                                                  *Service
	name                                               string
	googlecloudcontentwarehousev1deletedocumentrequest *GoogleCloudContentwarehouseV1DeleteDocumentRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// Delete: Deletes a document. Returns NOT_FOUND if the document does
// not exist.
//
//   - name: The name of the document to delete. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsReferenceIdService) Delete(name string, googlecloudcontentwarehousev1deletedocumentrequest *GoogleCloudContentwarehouseV1DeleteDocumentRequest) *ProjectsLocationsDocumentsReferenceIdDeleteCall {
	c := &ProjectsLocationsDocumentsReferenceIdDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1deletedocumentrequest = googlecloudcontentwarehousev1deletedocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsReferenceIdDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsReferenceIdDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsReferenceIdDeleteCall) Context(ctx context.Context) *ProjectsLocationsDocumentsReferenceIdDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsReferenceIdDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsReferenceIdDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1deletedocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:delete")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.referenceId.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentsReferenceIdDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Deletes a document. Returns NOT_FOUND if the document does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:delete",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.referenceId.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:delete",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.referenceId.get":

type ProjectsLocationsDocumentsReferenceIdGetCall struct {
	s                                               *Service
	name                                            string
	googlecloudcontentwarehousev1getdocumentrequest *GoogleCloudContentwarehouseV1GetDocumentRequest
	urlParams_                                      gensupport.URLParams
	ctx_                                            context.Context
	header_                                         http.Header
}

// Get: Gets a document. Returns NOT_FOUND if the document does not
// exist.
//
//   - name: The name of the document to retrieve. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsReferenceIdService) Get(name string, googlecloudcontentwarehousev1getdocumentrequest *GoogleCloudContentwarehouseV1GetDocumentRequest) *ProjectsLocationsDocumentsReferenceIdGetCall {
	c := &ProjectsLocationsDocumentsReferenceIdGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1getdocumentrequest = googlecloudcontentwarehousev1getdocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsReferenceIdGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsReferenceIdGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsReferenceIdGetCall) Context(ctx context.Context) *ProjectsLocationsDocumentsReferenceIdGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsReferenceIdGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsReferenceIdGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1getdocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:get")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.referenceId.get" call.
// Exactly one of *GoogleCloudContentwarehouseV1Document or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1Document.ServerResponse.Header or (if a
// response was returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsDocumentsReferenceIdGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1Document, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1Document{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets a document. Returns NOT_FOUND if the document does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:get",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.documents.referenceId.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}:get",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1Document"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.documents.referenceId.patch":

type ProjectsLocationsDocumentsReferenceIdPatchCall struct {
	s                                                  *Service
	name                                               string
	googlecloudcontentwarehousev1updatedocumentrequest *GoogleCloudContentwarehouseV1UpdateDocumentRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// Patch: Updates a document. Returns INVALID_ARGUMENT if the name of
// the document is non-empty and does not equal the existing name.
//
//   - name: The name of the document to update. Format:
//     projects/{project_number}/locations/{location}/documents/{document_i
//     d} or
//     projects/{project_number}/locations/{location}/documents/referenceId
//     /{reference_id}.
func (r *ProjectsLocationsDocumentsReferenceIdService) Patch(name string, googlecloudcontentwarehousev1updatedocumentrequest *GoogleCloudContentwarehouseV1UpdateDocumentRequest) *ProjectsLocationsDocumentsReferenceIdPatchCall {
	c := &ProjectsLocationsDocumentsReferenceIdPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1updatedocumentrequest = googlecloudcontentwarehousev1updatedocumentrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsDocumentsReferenceIdPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsDocumentsReferenceIdPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsDocumentsReferenceIdPatchCall) Context(ctx context.Context) *ProjectsLocationsDocumentsReferenceIdPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsDocumentsReferenceIdPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsDocumentsReferenceIdPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1updatedocumentrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.documents.referenceId.patch" call.
// Exactly one of *GoogleCloudContentwarehouseV1UpdateDocumentResponse
// or error will be non-nil. Any non-2xx status code is an error.
// Response headers are in either
// *GoogleCloudContentwarehouseV1UpdateDocumentResponse.ServerResponse.He
// ader or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsDocumentsReferenceIdPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1UpdateDocumentResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1UpdateDocumentResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}",
	//   "httpMethod": "PATCH",
	//   "id": "contentwarehouse.projects.locations.documents.referenceId.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.operations.get":

type ProjectsLocationsOperationsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets the latest state of a long-running operation. Clients can
// use this method to poll the operation result at intervals as
// recommended by the API service.
//
// - name: The name of the operation resource.
func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
	c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsOperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.operations.get" call.
// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleLongrunningOperation.ServerResponse.Header or (if a response
// was returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleLongrunningOperation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.operations.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "The name of the operation resource.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleLongrunningOperation"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.ruleSets.create":

type ProjectsLocationsRuleSetsCreateCall struct {
	s                                    *Service
	parent                               string
	googlecloudcontentwarehousev1ruleset *GoogleCloudContentwarehouseV1RuleSet
	urlParams_                           gensupport.URLParams
	ctx_                                 context.Context
	header_                              http.Header
}

// Create: Creates a ruleset.
//
//   - parent: The parent name. Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsRuleSetsService) Create(parent string, googlecloudcontentwarehousev1ruleset *GoogleCloudContentwarehouseV1RuleSet) *ProjectsLocationsRuleSetsCreateCall {
	c := &ProjectsLocationsRuleSetsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1ruleset = googlecloudcontentwarehousev1ruleset
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRuleSetsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsRuleSetsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRuleSetsCreateCall) Context(ctx context.Context) *ProjectsLocationsRuleSetsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRuleSetsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRuleSetsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1ruleset)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/ruleSets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.ruleSets.create" call.
// Exactly one of *GoogleCloudContentwarehouseV1RuleSet or error will be
// non-nil. Any non-2xx status code is an error. Response headers are in
// either *GoogleCloudContentwarehouseV1RuleSet.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsRuleSetsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1RuleSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1RuleSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Creates a ruleset.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.ruleSets.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/ruleSets",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1RuleSet"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1RuleSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.ruleSets.delete":

type ProjectsLocationsRuleSetsDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a ruleset. Returns NOT_FOUND if the document does not
// exist.
//
//   - name: The name of the rule set to delete. Format:
//     projects/{project_number}/locations/{location}/ruleSets/{rule_set_id
//     }.
func (r *ProjectsLocationsRuleSetsService) Delete(name string) *ProjectsLocationsRuleSetsDeleteCall {
	c := &ProjectsLocationsRuleSetsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRuleSetsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsRuleSetsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRuleSetsDeleteCall) Context(ctx context.Context) *ProjectsLocationsRuleSetsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRuleSetsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRuleSetsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.ruleSets.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsRuleSetsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Deletes a ruleset. Returns NOT_FOUND if the document does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
	//   "httpMethod": "DELETE",
	//   "id": "contentwarehouse.projects.locations.ruleSets.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the rule set to delete. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.ruleSets.get":

type ProjectsLocationsRuleSetsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a ruleset. Returns NOT_FOUND if the ruleset does not exist.
//
//   - name: The name of the rule set to retrieve. Format:
//     projects/{project_number}/locations/{location}/ruleSets/{rule_set_id
//     }.
func (r *ProjectsLocationsRuleSetsService) Get(name string) *ProjectsLocationsRuleSetsGetCall {
	c := &ProjectsLocationsRuleSetsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRuleSetsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsRuleSetsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsRuleSetsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsRuleSetsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRuleSetsGetCall) Context(ctx context.Context) *ProjectsLocationsRuleSetsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRuleSetsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRuleSetsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.ruleSets.get" call.
// Exactly one of *GoogleCloudContentwarehouseV1RuleSet or error will be
// non-nil. Any non-2xx status code is an error. Response headers are in
// either *GoogleCloudContentwarehouseV1RuleSet.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsRuleSetsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1RuleSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1RuleSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets a ruleset. Returns NOT_FOUND if the ruleset does not exist.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.ruleSets.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the rule set to retrieve. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1RuleSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.ruleSets.list":

type ProjectsLocationsRuleSetsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists rulesets.
//
//   - parent: The parent, which owns this collection of document. Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsRuleSetsService) List(parent string) *ProjectsLocationsRuleSetsListCall {
	c := &ProjectsLocationsRuleSetsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number
// of rule sets to return. The service may return fewer than this value.
// If unspecified, at most 50 rule sets will be returned. The maximum
// value is 1000; values above 1000 will be coerced to 1000.
func (c *ProjectsLocationsRuleSetsListCall) PageSize(pageSize int64) *ProjectsLocationsRuleSetsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token,
// received from a previous `ListRuleSets` call. Provide this to
// retrieve the subsequent page. When paginating, all other parameters
// provided to `ListRuleSets` must match the call that provided the page
// token.
func (c *ProjectsLocationsRuleSetsListCall) PageToken(pageToken string) *ProjectsLocationsRuleSetsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRuleSetsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsRuleSetsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsRuleSetsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsRuleSetsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRuleSetsListCall) Context(ctx context.Context) *ProjectsLocationsRuleSetsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRuleSetsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRuleSetsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/ruleSets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.ruleSets.list" call.
// Exactly one of *GoogleCloudContentwarehouseV1ListRuleSetsResponse or
// error will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudContentwarehouseV1ListRuleSetsResponse.ServerResponse.Head
// er or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsRuleSetsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1ListRuleSetsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1ListRuleSetsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Lists rulesets.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.ruleSets.list",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "pageSize": {
	//       "description": "The maximum number of rule sets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
	//       "format": "int32",
	//       "location": "query",
	//       "type": "integer"
	//     },
	//     "pageToken": {
	//       "description": "A page token, received from a previous `ListRuleSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRuleSets` must match the call that provided the page token.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "parent": {
	//       "description": "Required. The parent, which owns this collection of document. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/ruleSets",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListRuleSetsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsRuleSetsListCall) Pages(ctx context.Context, f func(*GoogleCloudContentwarehouseV1ListRuleSetsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

// method id "contentwarehouse.projects.locations.ruleSets.patch":

type ProjectsLocationsRuleSetsPatchCall struct {
	s                                                 *Service
	name                                              string
	googlecloudcontentwarehousev1updaterulesetrequest *GoogleCloudContentwarehouseV1UpdateRuleSetRequest
	urlParams_                                        gensupport.URLParams
	ctx_                                              context.Context
	header_                                           http.Header
}

// Patch: Updates a ruleset. Returns INVALID_ARGUMENT if the name of the
// ruleset is non-empty and does not equal the existing name.
//
//   - name: The name of the rule set to update. Format:
//     projects/{project_number}/locations/{location}/ruleSets/{rule_set_id
//     }.
func (r *ProjectsLocationsRuleSetsService) Patch(name string, googlecloudcontentwarehousev1updaterulesetrequest *GoogleCloudContentwarehouseV1UpdateRuleSetRequest) *ProjectsLocationsRuleSetsPatchCall {
	c := &ProjectsLocationsRuleSetsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1updaterulesetrequest = googlecloudcontentwarehousev1updaterulesetrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsRuleSetsPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsRuleSetsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsRuleSetsPatchCall) Context(ctx context.Context) *ProjectsLocationsRuleSetsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsRuleSetsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsRuleSetsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1updaterulesetrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.ruleSets.patch" call.
// Exactly one of *GoogleCloudContentwarehouseV1RuleSet or error will be
// non-nil. Any non-2xx status code is an error. Response headers are in
// either *GoogleCloudContentwarehouseV1RuleSet.ServerResponse.Header or
// (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsRuleSetsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1RuleSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1RuleSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Updates a ruleset. Returns INVALID_ARGUMENT if the name of the ruleset is non-empty and does not equal the existing name.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
	//   "httpMethod": "PATCH",
	//   "id": "contentwarehouse.projects.locations.ruleSets.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the rule set to update. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1UpdateRuleSetRequest"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1RuleSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.synonymSets.create":

type ProjectsLocationsSynonymSetsCreateCall struct {
	s                                       *Service
	parent                                  string
	googlecloudcontentwarehousev1synonymset *GoogleCloudContentwarehouseV1SynonymSet
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// Create: Creates a SynonymSet for a single context. Throws an
// ALREADY_EXISTS exception if a synonymset already exists for the
// context.
//
//   - parent: The parent name. Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsSynonymSetsService) Create(parent string, googlecloudcontentwarehousev1synonymset *GoogleCloudContentwarehouseV1SynonymSet) *ProjectsLocationsSynonymSetsCreateCall {
	c := &ProjectsLocationsSynonymSetsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudcontentwarehousev1synonymset = googlecloudcontentwarehousev1synonymset
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsSynonymSetsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsSynonymSetsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsSynonymSetsCreateCall) Context(ctx context.Context) *ProjectsLocationsSynonymSetsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsSynonymSetsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsSynonymSetsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1synonymset)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/synonymSets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.synonymSets.create" call.
// Exactly one of *GoogleCloudContentwarehouseV1SynonymSet or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1SynonymSet.ServerResponse.Header or (if
// a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsSynonymSetsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SynonymSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SynonymSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Creates a SynonymSet for a single context. Throws an ALREADY_EXISTS exception if a synonymset already exists for the context.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets",
	//   "httpMethod": "POST",
	//   "id": "contentwarehouse.projects.locations.synonymSets.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "parent": {
	//       "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/synonymSets",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1SynonymSet"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SynonymSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.synonymSets.delete":

type ProjectsLocationsSynonymSetsDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a SynonymSet for a given context. Throws a NOT_FOUND
// exception if the SynonymSet is not found.
//
//   - name: The name of the synonymSet to delete Format:
//     projects/{project_number}/locations/{location}/synonymSets/{context}
//     .
func (r *ProjectsLocationsSynonymSetsService) Delete(name string) *ProjectsLocationsSynonymSetsDeleteCall {
	c := &ProjectsLocationsSynonymSetsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsSynonymSetsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsSynonymSetsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsSynonymSetsDeleteCall) Context(ctx context.Context) *ProjectsLocationsSynonymSetsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsSynonymSetsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsSynonymSetsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.synonymSets.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsSynonymSetsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleProtobufEmpty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Deletes a SynonymSet for a given context. Throws a NOT_FOUND exception if the SynonymSet is not found.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
	//   "httpMethod": "DELETE",
	//   "id": "contentwarehouse.projects.locations.synonymSets.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the synonymSet to delete Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.synonymSets.get":

type ProjectsLocationsSynonymSetsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a SynonymSet for a particular context. Throws a NOT_FOUND
// exception if the Synonymset does not exist
//
//   - name: The name of the synonymSet to retrieve Format:
//     projects/{project_number}/locations/{location}/synonymSets/{context}
//     .
func (r *ProjectsLocationsSynonymSetsService) Get(name string) *ProjectsLocationsSynonymSetsGetCall {
	c := &ProjectsLocationsSynonymSetsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsSynonymSetsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsSynonymSetsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsSynonymSetsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsSynonymSetsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsSynonymSetsGetCall) Context(ctx context.Context) *ProjectsLocationsSynonymSetsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsSynonymSetsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsSynonymSetsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.synonymSets.get" call.
// Exactly one of *GoogleCloudContentwarehouseV1SynonymSet or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1SynonymSet.ServerResponse.Header or (if
// a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsSynonymSetsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SynonymSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SynonymSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Gets a SynonymSet for a particular context. Throws a NOT_FOUND exception if the Synonymset does not exist",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.synonymSets.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the synonymSet to retrieve Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SynonymSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "contentwarehouse.projects.locations.synonymSets.list":

type ProjectsLocationsSynonymSetsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Returns all SynonymSets (for all contexts) for the specified
// location.
//
//   - parent: The parent name. Format:
//     projects/{project_number}/locations/{location}.
func (r *ProjectsLocationsSynonymSetsService) List(parent string) *ProjectsLocationsSynonymSetsListCall {
	c := &ProjectsLocationsSynonymSetsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number
// of synonymSets to return. The service may return fewer than this
// value. If unspecified, at most 50 rule sets will be returned. The
// maximum value is 1000; values above 1000 will be coerced to 1000.
func (c *ProjectsLocationsSynonymSetsListCall) PageSize(pageSize int64) *ProjectsLocationsSynonymSetsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token,
// received from a previous `ListSynonymSets` call. Provide this to
// retrieve the subsequent page. When paginating, all other parameters
// provided to `ListSynonymSets` must match the call that provided the
// page token.
func (c *ProjectsLocationsSynonymSetsListCall) PageToken(pageToken string) *ProjectsLocationsSynonymSetsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsSynonymSetsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsSynonymSetsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ProjectsLocationsSynonymSetsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsSynonymSetsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsSynonymSetsListCall) Context(ctx context.Context) *ProjectsLocationsSynonymSetsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsSynonymSetsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsSynonymSetsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/synonymSets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.synonymSets.list" call.
// Exactly one of *GoogleCloudContentwarehouseV1ListSynonymSetsResponse
// or error will be non-nil. Any non-2xx status code is an error.
// Response headers are in either
// *GoogleCloudContentwarehouseV1ListSynonymSetsResponse.ServerResponse.H
// eader or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsSynonymSetsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1ListSynonymSetsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1ListSynonymSetsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Returns all SynonymSets (for all contexts) for the specified location.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets",
	//   "httpMethod": "GET",
	//   "id": "contentwarehouse.projects.locations.synonymSets.list",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "pageSize": {
	//       "description": "The maximum number of synonymSets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
	//       "format": "int32",
	//       "location": "query",
	//       "type": "integer"
	//     },
	//     "pageToken": {
	//       "description": "A page token, received from a previous `ListSynonymSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSynonymSets` must match the call that provided the page token.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "parent": {
	//       "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/synonymSets",
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1ListSynonymSetsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsSynonymSetsListCall) Pages(ctx context.Context, f func(*GoogleCloudContentwarehouseV1ListSynonymSetsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

// method id "contentwarehouse.projects.locations.synonymSets.patch":

type ProjectsLocationsSynonymSetsPatchCall struct {
	s                                       *Service
	name                                    string
	googlecloudcontentwarehousev1synonymset *GoogleCloudContentwarehouseV1SynonymSet
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// Patch: Remove the existing SynonymSet for the context and replaces it
// with a new one. Throws a NOT_FOUND exception if the SynonymSet is not
// found.
//
//   - name: The name of the synonymSet to update Format:
//     projects/{project_number}/locations/{location}/synonymSets/{context}
//     .
func (r *ProjectsLocationsSynonymSetsService) Patch(name string, googlecloudcontentwarehousev1synonymset *GoogleCloudContentwarehouseV1SynonymSet) *ProjectsLocationsSynonymSetsPatchCall {
	c := &ProjectsLocationsSynonymSetsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudcontentwarehousev1synonymset = googlecloudcontentwarehousev1synonymset
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *ProjectsLocationsSynonymSetsPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsSynonymSetsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *ProjectsLocationsSynonymSetsPatchCall) Context(ctx context.Context) *ProjectsLocationsSynonymSetsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *ProjectsLocationsSynonymSetsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsSynonymSetsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudcontentwarehousev1synonymset)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "contentwarehouse.projects.locations.synonymSets.patch" call.
// Exactly one of *GoogleCloudContentwarehouseV1SynonymSet or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudContentwarehouseV1SynonymSet.ServerResponse.Header or (if
// a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *ProjectsLocationsSynonymSetsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudContentwarehouseV1SynonymSet, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudContentwarehouseV1SynonymSet{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
	// {
	//   "description": "Remove the existing SynonymSet for the context and replaces it with a new one. Throws a NOT_FOUND exception if the SynonymSet is not found.",
	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
	//   "httpMethod": "PATCH",
	//   "id": "contentwarehouse.projects.locations.synonymSets.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The name of the synonymSet to update Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
	//       "location": "path",
	//       "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudContentwarehouseV1SynonymSet"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudContentwarehouseV1SynonymSet"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}
