{
  "title": "Cloud Natural Language API",
  "description": "Provides natural language understanding technologies, such as sentiment analysis, entity recognition, entity sentiment analysis, and other text annotations, to developers.",
  "baseUrl": "https://language.googleapis.com/",
  "canonicalName": "Cloud Natural Language",
  "kind": "discovery#restDescription",
  "servicePath": "",
  "fullyEncodeReservedExpansion": true,
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-language": {
          "description": "Apply machine learning models to reveal the structure and meaning of text"
        },
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "version_module": true,
  "discoveryVersion": "v1",
  "resources": {
    "documents": {
      "methods": {
        "analyzeSentiment": {
          "id": "language.documents.analyzeSentiment",
          "path": "v1/documents:analyzeSentiment",
          "flatPath": "v1/documents:analyzeSentiment",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "AnalyzeSentimentRequest"
          },
          "response": {
            "$ref": "AnalyzeSentimentResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Analyzes the sentiment of the provided text."
        },
        "analyzeEntities": {
          "id": "language.documents.analyzeEntities",
          "path": "v1/documents:analyzeEntities",
          "flatPath": "v1/documents:analyzeEntities",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "AnalyzeEntitiesRequest"
          },
          "response": {
            "$ref": "AnalyzeEntitiesResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Finds named entities (currently proper names and common nouns) in the text along with entity types, salience, mentions for each entity, and other properties."
        },
        "analyzeEntitySentiment": {
          "id": "language.documents.analyzeEntitySentiment",
          "path": "v1/documents:analyzeEntitySentiment",
          "flatPath": "v1/documents:analyzeEntitySentiment",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "AnalyzeEntitySentimentRequest"
          },
          "response": {
            "$ref": "AnalyzeEntitySentimentResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Finds entities, similar to AnalyzeEntities in the text and analyzes sentiment associated with each entity and its mentions."
        },
        "analyzeSyntax": {
          "id": "language.documents.analyzeSyntax",
          "path": "v1/documents:analyzeSyntax",
          "flatPath": "v1/documents:analyzeSyntax",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "AnalyzeSyntaxRequest"
          },
          "response": {
            "$ref": "AnalyzeSyntaxResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Analyzes the syntax of the text and provides sentence boundaries and tokenization along with part of speech tags, dependency trees, and other properties."
        },
        "classifyText": {
          "id": "language.documents.classifyText",
          "path": "v1/documents:classifyText",
          "flatPath": "v1/documents:classifyText",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "ClassifyTextRequest"
          },
          "response": {
            "$ref": "ClassifyTextResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Classifies a document into categories."
        },
        "moderateText": {
          "id": "language.documents.moderateText",
          "path": "v1/documents:moderateText",
          "flatPath": "v1/documents:moderateText",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "ModerateTextRequest"
          },
          "response": {
            "$ref": "ModerateTextResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Moderates a document for harmful and sensitive categories."
        },
        "annotateText": {
          "id": "language.documents.annotateText",
          "path": "v1/documents:annotateText",
          "flatPath": "v1/documents:annotateText",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "AnnotateTextRequest"
          },
          "response": {
            "$ref": "AnnotateTextResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-language",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "A convenience method that provides all the features that analyzeSentiment, analyzeEntities, and analyzeSyntax provide in one call."
        }
      }
    }
  },
  "rootUrl": "https://language.googleapis.com/",
  "documentationLink": "https://cloud.google.com/natural-language/",
  "basePath": "",
  "ownerName": "Google",
  "protocol": "rest",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "schemas": {
    "AnalyzeSentimentRequest": {
      "id": "AnalyzeSentimentRequest",
      "description": "The sentiment analysis request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "encodingType": {
          "description": "The encoding type used by the API to calculate sentence offsets.",
          "type": "string",
          "enumDescriptions": [
            "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
          ],
          "enum": [
            "NONE",
            "UTF8",
            "UTF16",
            "UTF32"
          ]
        }
      }
    },
    "Document": {
      "id": "Document",
      "description": "Represents the input to API methods.",
      "type": "object",
      "properties": {
        "type": {
          "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.",
          "type": "string",
          "enumDescriptions": [
            "The content type is not specified.",
            "Plain text",
            "HTML"
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "PLAIN_TEXT",
            "HTML"
          ]
        },
        "content": {
          "description": "The content of the input in string format. Cloud audit logging exempt since it is based on user data.",
          "type": "string"
        },
        "gcsContentUri": {
          "description": "The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.",
          "type": "string"
        },
        "language": {
          "description": "The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.",
          "type": "string"
        }
      }
    },
    "AnalyzeSentimentResponse": {
      "id": "AnalyzeSentimentResponse",
      "description": "The sentiment analysis response message.",
      "type": "object",
      "properties": {
        "documentSentiment": {
          "description": "The overall sentiment of the input document.",
          "$ref": "Sentiment"
        },
        "language": {
          "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
          "type": "string"
        },
        "sentences": {
          "description": "The sentiment for all the sentences in the document.",
          "type": "array",
          "items": {
            "$ref": "Sentence"
          }
        }
      }
    },
    "Sentiment": {
      "id": "Sentiment",
      "description": "Represents the feeling associated with the entire text or entities in the text.",
      "type": "object",
      "properties": {
        "magnitude": {
          "description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).",
          "type": "number",
          "format": "float"
        },
        "score": {
          "description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
          "type": "number",
          "format": "float"
        }
      }
    },
    "Sentence": {
      "id": "Sentence",
      "description": "Represents a sentence in the input document.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The sentence text.",
          "$ref": "TextSpan"
        },
        "sentiment": {
          "description": "For calls to AnalyzeSentiment or if AnnotateTextRequest.Features.extract_document_sentiment is set to true, this field will contain the sentiment for the sentence.",
          "$ref": "Sentiment"
        }
      }
    },
    "TextSpan": {
      "id": "TextSpan",
      "description": "Represents a text span in the input document.",
      "type": "object",
      "properties": {
        "content": {
          "description": "The content of the text span, which is a substring of the document.",
          "type": "string"
        },
        "beginOffset": {
          "description": "The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "AnalyzeEntitiesRequest": {
      "id": "AnalyzeEntitiesRequest",
      "description": "The entity analysis request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "encodingType": {
          "description": "The encoding type used by the API to calculate offsets.",
          "type": "string",
          "enumDescriptions": [
            "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
          ],
          "enum": [
            "NONE",
            "UTF8",
            "UTF16",
            "UTF32"
          ]
        }
      }
    },
    "AnalyzeEntitiesResponse": {
      "id": "AnalyzeEntitiesResponse",
      "description": "The entity analysis response message.",
      "type": "object",
      "properties": {
        "entities": {
          "description": "The recognized entities in the input document.",
          "type": "array",
          "items": {
            "$ref": "Entity"
          }
        },
        "language": {
          "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
          "type": "string"
        }
      }
    },
    "Entity": {
      "id": "Entity",
      "description": "Represents a phrase in the text that is a known entity, such as a person, an organization, or location. The API associates information, such as salience and mentions, with entities.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The representative name for the entity.",
          "type": "string"
        },
        "type": {
          "description": "The entity type.",
          "type": "string",
          "enumDescriptions": [
            "Unknown",
            "Person",
            "Location",
            "Organization",
            "Event",
            "Artwork",
            "Consumer product",
            "Other types of entities",
            "Phone number The metadata lists the phone number, formatted according to local convention, plus whichever additional elements appear in the text: * `number` - the actual number, broken down into sections as per local convention * `national_prefix` - country code, if detected * `area_code` - region or area code, if detected * `extension` - phone extension (to be dialed after connection), if detected",
            "Address The metadata identifies the street number and locality plus whichever additional elements appear in the text: * `street_number` - street number * `locality` - city or town * `street_name` - street/route name, if detected * `postal_code` - postal code, if detected * `country` - country, if detected\u003c * `broad_region` - administrative area, such as the state, if detected * `narrow_region` - smaller administrative area, such as county, if detected * `sublocality` - used in Asian addresses to demark a district within a city, if detected",
            "Date The metadata identifies the components of the date: * `year` - four digit year, if detected * `month` - two digit month number, if detected * `day` - two digit day number, if detected",
            "Number The metadata is the number itself.",
            "Price The metadata identifies the `value` and `currency`."
          ],
          "enum": [
            "UNKNOWN",
            "PERSON",
            "LOCATION",
            "ORGANIZATION",
            "EVENT",
            "WORK_OF_ART",
            "CONSUMER_GOOD",
            "OTHER",
            "PHONE_NUMBER",
            "ADDRESS",
            "DATE",
            "NUMBER",
            "PRICE"
          ]
        },
        "metadata": {
          "description": "Metadata associated with the entity. For most entity types, the metadata is a Wikipedia URL (`wikipedia_url`) and Knowledge Graph MID (`mid`), if they are available. For the metadata associated with other entity types, see the Type table below.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "salience": {
          "description": "The salience score associated with the entity in the [0, 1.0] range. The salience score for an entity provides information about the importance or centrality of that entity to the entire document text. Scores closer to 0 are less salient, while scores closer to 1.0 are highly salient.",
          "type": "number",
          "format": "float"
        },
        "mentions": {
          "description": "The mentions of this entity in the input document. The API currently supports proper noun mentions.",
          "type": "array",
          "items": {
            "$ref": "EntityMention"
          }
        },
        "sentiment": {
          "description": "For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the aggregate sentiment expressed for this entity in the provided document.",
          "$ref": "Sentiment"
        }
      }
    },
    "EntityMention": {
      "id": "EntityMention",
      "description": "Represents a mention for an entity in the text. Currently, proper noun mentions are supported.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The mention text.",
          "$ref": "TextSpan"
        },
        "type": {
          "description": "The type of the entity mention.",
          "type": "string",
          "enumDescriptions": [
            "Unknown",
            "Proper name",
            "Common noun (or noun compound)"
          ],
          "enum": [
            "TYPE_UNKNOWN",
            "PROPER",
            "COMMON"
          ]
        },
        "sentiment": {
          "description": "For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the sentiment expressed for this mention of the entity in the provided document.",
          "$ref": "Sentiment"
        }
      }
    },
    "AnalyzeEntitySentimentRequest": {
      "id": "AnalyzeEntitySentimentRequest",
      "description": "The entity-level sentiment analysis request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "encodingType": {
          "description": "The encoding type used by the API to calculate offsets.",
          "type": "string",
          "enumDescriptions": [
            "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
          ],
          "enum": [
            "NONE",
            "UTF8",
            "UTF16",
            "UTF32"
          ]
        }
      }
    },
    "AnalyzeEntitySentimentResponse": {
      "id": "AnalyzeEntitySentimentResponse",
      "description": "The entity-level sentiment analysis response message.",
      "type": "object",
      "properties": {
        "entities": {
          "description": "The recognized entities in the input document with associated sentiments.",
          "type": "array",
          "items": {
            "$ref": "Entity"
          }
        },
        "language": {
          "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
          "type": "string"
        }
      }
    },
    "AnalyzeSyntaxRequest": {
      "id": "AnalyzeSyntaxRequest",
      "description": "The syntax analysis request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "encodingType": {
          "description": "The encoding type used by the API to calculate offsets.",
          "type": "string",
          "enumDescriptions": [
            "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
          ],
          "enum": [
            "NONE",
            "UTF8",
            "UTF16",
            "UTF32"
          ]
        }
      }
    },
    "AnalyzeSyntaxResponse": {
      "id": "AnalyzeSyntaxResponse",
      "description": "The syntax analysis response message.",
      "type": "object",
      "properties": {
        "sentences": {
          "description": "Sentences in the input document.",
          "type": "array",
          "items": {
            "$ref": "Sentence"
          }
        },
        "tokens": {
          "description": "Tokens, along with their syntactic information, in the input document.",
          "type": "array",
          "items": {
            "$ref": "Token"
          }
        },
        "language": {
          "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
          "type": "string"
        }
      }
    },
    "Token": {
      "id": "Token",
      "description": "Represents the smallest syntactic building block of the text.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The token text.",
          "$ref": "TextSpan"
        },
        "partOfSpeech": {
          "description": "Parts of speech tag for this token.",
          "$ref": "PartOfSpeech"
        },
        "dependencyEdge": {
          "description": "Dependency tree parse for this token.",
          "$ref": "DependencyEdge"
        },
        "lemma": {
          "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.",
          "type": "string"
        }
      }
    },
    "PartOfSpeech": {
      "id": "PartOfSpeech",
      "description": "Represents part of speech information for a token. Parts of speech are as defined in http://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf",
      "type": "object",
      "properties": {
        "tag": {
          "description": "The part of speech tag.",
          "type": "string",
          "enumDescriptions": [
            "Unknown",
            "Adjective",
            "Adposition (preposition and postposition)",
            "Adverb",
            "Conjunction",
            "Determiner",
            "Noun (common and proper)",
            "Cardinal number",
            "Pronoun",
            "Particle or other function word",
            "Punctuation",
            "Verb (all tenses and modes)",
            "Other: foreign words, typos, abbreviations",
            "Affix"
          ],
          "enum": [
            "UNKNOWN",
            "ADJ",
            "ADP",
            "ADV",
            "CONJ",
            "DET",
            "NOUN",
            "NUM",
            "PRON",
            "PRT",
            "PUNCT",
            "VERB",
            "X",
            "AFFIX"
          ]
        },
        "aspect": {
          "description": "The grammatical aspect.",
          "type": "string",
          "enumDescriptions": [
            "Aspect is not applicable in the analyzed language or is not predicted.",
            "Perfective",
            "Imperfective",
            "Progressive"
          ],
          "enum": [
            "ASPECT_UNKNOWN",
            "PERFECTIVE",
            "IMPERFECTIVE",
            "PROGRESSIVE"
          ]
        },
        "case": {
          "description": "The grammatical case.",
          "type": "string",
          "enumDescriptions": [
            "Case is not applicable in the analyzed language or is not predicted.",
            "Accusative",
            "Adverbial",
            "Complementive",
            "Dative",
            "Genitive",
            "Instrumental",
            "Locative",
            "Nominative",
            "Oblique",
            "Partitive",
            "Prepositional",
            "Reflexive",
            "Relative",
            "Vocative"
          ],
          "enum": [
            "CASE_UNKNOWN",
            "ACCUSATIVE",
            "ADVERBIAL",
            "COMPLEMENTIVE",
            "DATIVE",
            "GENITIVE",
            "INSTRUMENTAL",
            "LOCATIVE",
            "NOMINATIVE",
            "OBLIQUE",
            "PARTITIVE",
            "PREPOSITIONAL",
            "REFLEXIVE_CASE",
            "RELATIVE_CASE",
            "VOCATIVE"
          ]
        },
        "form": {
          "description": "The grammatical form.",
          "type": "string",
          "enumDescriptions": [
            "Form is not applicable in the analyzed language or is not predicted.",
            "Adnomial",
            "Auxiliary",
            "Complementizer",
            "Final ending",
            "Gerund",
            "Realis",
            "Irrealis",
            "Short form",
            "Long form",
            "Order form",
            "Specific form"
          ],
          "enum": [
            "FORM_UNKNOWN",
            "ADNOMIAL",
            "AUXILIARY",
            "COMPLEMENTIZER",
            "FINAL_ENDING",
            "GERUND",
            "REALIS",
            "IRREALIS",
            "SHORT",
            "LONG",
            "ORDER",
            "SPECIFIC"
          ]
        },
        "gender": {
          "description": "The grammatical gender.",
          "type": "string",
          "enumDescriptions": [
            "Gender is not applicable in the analyzed language or is not predicted.",
            "Feminine",
            "Masculine",
            "Neuter"
          ],
          "enum": [
            "GENDER_UNKNOWN",
            "FEMININE",
            "MASCULINE",
            "NEUTER"
          ]
        },
        "mood": {
          "description": "The grammatical mood.",
          "type": "string",
          "enumDescriptions": [
            "Mood is not applicable in the analyzed language or is not predicted.",
            "Conditional",
            "Imperative",
            "Indicative",
            "Interrogative",
            "Jussive",
            "Subjunctive"
          ],
          "enum": [
            "MOOD_UNKNOWN",
            "CONDITIONAL_MOOD",
            "IMPERATIVE",
            "INDICATIVE",
            "INTERROGATIVE",
            "JUSSIVE",
            "SUBJUNCTIVE"
          ]
        },
        "number": {
          "description": "The grammatical number.",
          "type": "string",
          "enumDescriptions": [
            "Number is not applicable in the analyzed language or is not predicted.",
            "Singular",
            "Plural",
            "Dual"
          ],
          "enum": [
            "NUMBER_UNKNOWN",
            "SINGULAR",
            "PLURAL",
            "DUAL"
          ]
        },
        "person": {
          "description": "The grammatical person.",
          "type": "string",
          "enumDescriptions": [
            "Person is not applicable in the analyzed language or is not predicted.",
            "First",
            "Second",
            "Third",
            "Reflexive"
          ],
          "enum": [
            "PERSON_UNKNOWN",
            "FIRST",
            "SECOND",
            "THIRD",
            "REFLEXIVE_PERSON"
          ]
        },
        "proper": {
          "description": "The grammatical properness.",
          "type": "string",
          "enumDescriptions": [
            "Proper is not applicable in the analyzed language or is not predicted.",
            "Proper",
            "Not proper"
          ],
          "enum": [
            "PROPER_UNKNOWN",
            "PROPER",
            "NOT_PROPER"
          ]
        },
        "reciprocity": {
          "description": "The grammatical reciprocity.",
          "type": "string",
          "enumDescriptions": [
            "Reciprocity is not applicable in the analyzed language or is not predicted.",
            "Reciprocal",
            "Non-reciprocal"
          ],
          "enum": [
            "RECIPROCITY_UNKNOWN",
            "RECIPROCAL",
            "NON_RECIPROCAL"
          ]
        },
        "tense": {
          "description": "The grammatical tense.",
          "type": "string",
          "enumDescriptions": [
            "Tense is not applicable in the analyzed language or is not predicted.",
            "Conditional",
            "Future",
            "Past",
            "Present",
            "Imperfect",
            "Pluperfect"
          ],
          "enum": [
            "TENSE_UNKNOWN",
            "CONDITIONAL_TENSE",
            "FUTURE",
            "PAST",
            "PRESENT",
            "IMPERFECT",
            "PLUPERFECT"
          ]
        },
        "voice": {
          "description": "The grammatical voice.",
          "type": "string",
          "enumDescriptions": [
            "Voice is not applicable in the analyzed language or is not predicted.",
            "Active",
            "Causative",
            "Passive"
          ],
          "enum": [
            "VOICE_UNKNOWN",
            "ACTIVE",
            "CAUSATIVE",
            "PASSIVE"
          ]
        }
      }
    },
    "DependencyEdge": {
      "id": "DependencyEdge",
      "description": "Represents dependency parse tree information for a token. (For more information on dependency labels, see http://www.aclweb.org/anthology/P13-2017",
      "type": "object",
      "properties": {
        "headTokenIndex": {
          "description": "Represents the head of this token in the dependency tree. This is the index of the token which has an arc going to this token. The index is the position of the token in the array of tokens returned by the API method. If this token is a root token, then the `head_token_index` is its own index.",
          "type": "integer",
          "format": "int32"
        },
        "label": {
          "description": "The parse label for the token.",
          "type": "string",
          "enumDescriptions": [
            "Unknown",
            "Abbreviation modifier",
            "Adjectival complement",
            "Adverbial clause modifier",
            "Adverbial modifier",
            "Adjectival modifier of an NP",
            "Appositional modifier of an NP",
            "Attribute dependent of a copular verb",
            "Auxiliary (non-main) verb",
            "Passive auxiliary",
            "Coordinating conjunction",
            "Clausal complement of a verb or adjective",
            "Conjunct",
            "Clausal subject",
            "Clausal passive subject",
            "Dependency (unable to determine)",
            "Determiner",
            "Discourse",
            "Direct object",
            "Expletive",
            "Goes with (part of a word in a text not well edited)",
            "Indirect object",
            "Marker (word introducing a subordinate clause)",
            "Multi-word expression",
            "Multi-word verbal expression",
            "Negation modifier",
            "Noun compound modifier",
            "Noun phrase used as an adverbial modifier",
            "Nominal subject",
            "Passive nominal subject",
            "Numeric modifier of a noun",
            "Element of compound number",
            "Punctuation mark",
            "Parataxis relation",
            "Participial modifier",
            "The complement of a preposition is a clause",
            "Object of a preposition",
            "Possession modifier",
            "Postverbal negative particle",
            "Predicate complement",
            "Preconjunt",
            "Predeterminer",
            "Prefix",
            "Prepositional modifier",
            "The relationship between a verb and verbal morpheme",
            "Particle",
            "Associative or possessive marker",
            "Quantifier phrase modifier",
            "Relative clause modifier",
            "Complementizer in relative clause",
            "Ellipsis without a preceding predicate",
            "Referent",
            "Remnant",
            "Reparandum",
            "Root",
            "Suffix specifying a unit of number",
            "Suffix",
            "Temporal modifier",
            "Topic marker",
            "Clause headed by an infinite form of the verb that modifies a noun",
            "Vocative",
            "Open clausal complement",
            "Name suffix",
            "Name title",
            "Adverbial phrase modifier",
            "Causative auxiliary",
            "Helper auxiliary",
            "Rentaishi (Prenominal modifier)",
            "Foreign words",
            "Keyword",
            "List for chains of comparable items",
            "Nominalized clause",
            "Nominalized clausal subject",
            "Nominalized clausal passive",
            "Compound of numeric modifier",
            "Copula",
            "Dislocated relation (for fronted/topicalized elements)",
            "Aspect marker",
            "Genitive modifier",
            "Genitive object",
            "Infinitival modifier",
            "Measure",
            "Nominal complement of a noun"
          ],
          "enum": [
            "UNKNOWN",
            "ABBREV",
            "ACOMP",
            "ADVCL",
            "ADVMOD",
            "AMOD",
            "APPOS",
            "ATTR",
            "AUX",
            "AUXPASS",
            "CC",
            "CCOMP",
            "CONJ",
            "CSUBJ",
            "CSUBJPASS",
            "DEP",
            "DET",
            "DISCOURSE",
            "DOBJ",
            "EXPL",
            "GOESWITH",
            "IOBJ",
            "MARK",
            "MWE",
            "MWV",
            "NEG",
            "NN",
            "NPADVMOD",
            "NSUBJ",
            "NSUBJPASS",
            "NUM",
            "NUMBER",
            "P",
            "PARATAXIS",
            "PARTMOD",
            "PCOMP",
            "POBJ",
            "POSS",
            "POSTNEG",
            "PRECOMP",
            "PRECONJ",
            "PREDET",
            "PREF",
            "PREP",
            "PRONL",
            "PRT",
            "PS",
            "QUANTMOD",
            "RCMOD",
            "RCMODREL",
            "RDROP",
            "REF",
            "REMNANT",
            "REPARANDUM",
            "ROOT",
            "SNUM",
            "SUFF",
            "TMOD",
            "TOPIC",
            "VMOD",
            "VOCATIVE",
            "XCOMP",
            "SUFFIX",
            "TITLE",
            "ADVPHMOD",
            "AUXCAUS",
            "AUXVV",
            "DTMOD",
            "FOREIGN",
            "KW",
            "LIST",
            "NOMC",
            "NOMCSUBJ",
            "NOMCSUBJPASS",
            "NUMC",
            "COP",
            "DISLOCATED",
            "ASP",
            "GMOD",
            "GOBJ",
            "INFMOD",
            "MES",
            "NCOMP"
          ]
        }
      }
    },
    "ClassifyTextRequest": {
      "id": "ClassifyTextRequest",
      "description": "The document classification request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "classificationModelOptions": {
          "description": "Optional. Model options to use for classification. Defaults to v1 options if not specified.",
          "$ref": "ClassificationModelOptions"
        }
      }
    },
    "ClassificationModelOptions": {
      "id": "ClassificationModelOptions",
      "description": "Model options available for classification requests.",
      "type": "object",
      "properties": {
        "v1Model": {
          "description": "Setting this field will use the V1 model and V1 content categories version. The V1 model is a legacy model; support for this will be discontinued in the future.",
          "$ref": "ClassificationModelOptionsV1Model"
        },
        "v2Model": {
          "description": "Setting this field will use the V2 model with the appropriate content categories version. The V2 model is a better performing model.",
          "$ref": "ClassificationModelOptionsV2Model"
        }
      }
    },
    "ClassificationModelOptionsV1Model": {
      "id": "ClassificationModelOptionsV1Model",
      "description": "Options for the V1 model.",
      "type": "object",
      "properties": {}
    },
    "ClassificationModelOptionsV2Model": {
      "id": "ClassificationModelOptionsV2Model",
      "description": "Options for the V2 model.",
      "type": "object",
      "properties": {
        "contentCategoriesVersion": {
          "description": "The content categories used for classification.",
          "type": "string",
          "enumDescriptions": [
            "If `ContentCategoriesVersion` is not specified, this option will default to `V1`.",
            "Legacy content categories of our initial launch in 2017.",
            "Updated content categories in 2022."
          ],
          "enum": [
            "CONTENT_CATEGORIES_VERSION_UNSPECIFIED",
            "V1",
            "V2"
          ]
        }
      }
    },
    "ClassifyTextResponse": {
      "id": "ClassifyTextResponse",
      "description": "The document classification response message.",
      "type": "object",
      "properties": {
        "categories": {
          "description": "Categories representing the input document.",
          "type": "array",
          "items": {
            "$ref": "ClassificationCategory"
          }
        }
      }
    },
    "ClassificationCategory": {
      "id": "ClassificationCategory",
      "description": "Represents a category returned from the text classifier.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the category representing the document.",
          "type": "string"
        },
        "confidence": {
          "description": "The classifier's confidence of the category. Number represents how certain the classifier is that this category represents the given text.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "ModerateTextRequest": {
      "id": "ModerateTextRequest",
      "description": "The document moderation request message.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        }
      }
    },
    "ModerateTextResponse": {
      "id": "ModerateTextResponse",
      "description": "The document moderation response message.",
      "type": "object",
      "properties": {
        "moderationCategories": {
          "description": "Harmful and sensitive categories representing the input document.",
          "type": "array",
          "items": {
            "$ref": "ClassificationCategory"
          }
        }
      }
    },
    "AnnotateTextRequest": {
      "id": "AnnotateTextRequest",
      "description": "The request message for the text annotation API, which can perform multiple analysis types (sentiment, entities, and syntax) in one call.",
      "type": "object",
      "properties": {
        "document": {
          "description": "Required. Input document.",
          "$ref": "Document"
        },
        "features": {
          "description": "Required. The enabled features.",
          "$ref": "AnnotateTextRequestFeatures"
        },
        "encodingType": {
          "description": "The encoding type used by the API to calculate offsets.",
          "type": "string",
          "enumDescriptions": [
            "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
            "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
          ],
          "enum": [
            "NONE",
            "UTF8",
            "UTF16",
            "UTF32"
          ]
        }
      }
    },
    "AnnotateTextRequestFeatures": {
      "id": "AnnotateTextRequestFeatures",
      "description": "All available features for sentiment, syntax, and semantic analysis. Setting each one to true will enable that specific analysis for the input.",
      "type": "object",
      "properties": {
        "extractSyntax": {
          "description": "Extract syntax information.",
          "type": "boolean"
        },
        "extractEntities": {
          "description": "Extract entities.",
          "type": "boolean"
        },
        "extractDocumentSentiment": {
          "description": "Extract document-level sentiment.",
          "type": "boolean"
        },
        "extractEntitySentiment": {
          "description": "Extract entities and their associated sentiment.",
          "type": "boolean"
        },
        "classifyText": {
          "description": "Classify the full document into categories.",
          "type": "boolean"
        },
        "moderateText": {
          "description": "Moderate the document for harmful and sensitive categories.",
          "type": "boolean"
        },
        "classificationModelOptions": {
          "description": "Optional. The model options to use for classification. Defaults to v1 options if not specified. Only used if `classify_text` is set to true.",
          "$ref": "ClassificationModelOptions"
        }
      }
    },
    "AnnotateTextResponse": {
      "id": "AnnotateTextResponse",
      "description": "The text annotations response message.",
      "type": "object",
      "properties": {
        "sentences": {
          "description": "Sentences in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.",
          "type": "array",
          "items": {
            "$ref": "Sentence"
          }
        },
        "tokens": {
          "description": "Tokens, along with their syntactic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.",
          "type": "array",
          "items": {
            "$ref": "Token"
          }
        },
        "entities": {
          "description": "Entities, along with their semantic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_entities.",
          "type": "array",
          "items": {
            "$ref": "Entity"
          }
        },
        "documentSentiment": {
          "description": "The overall sentiment for the document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment.",
          "$ref": "Sentiment"
        },
        "language": {
          "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
          "type": "string"
        },
        "categories": {
          "description": "Categories identified in the input document.",
          "type": "array",
          "items": {
            "$ref": "ClassificationCategory"
          }
        },
        "moderationCategories": {
          "description": "Harmful and sensitive categories identified in the input document.",
          "type": "array",
          "items": {
            "$ref": "ClassificationCategory"
          }
        }
      }
    },
    "Status": {
      "id": "Status",
      "description": "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": "object",
      "properties": {
        "code": {
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "description": "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.",
          "type": "string"
        },
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        }
      }
    },
    "XPSBatchPredictResponse": {
      "id": "XPSBatchPredictResponse",
      "type": "object",
      "properties": {
        "exampleSet": {
          "description": "Examples for batch prediction result. Under full API implementation, results are stored in shared RecordIO of AnnotatedExample protobufs, the annotations field of which is populated by XPS backend.",
          "$ref": "XPSExampleSet"
        }
      }
    },
    "XPSExampleSet": {
      "id": "XPSExampleSet",
      "description": "Set of examples or input sources.",
      "type": "object",
      "properties": {
        "fileSpec": {
          "description": "File spec of the examples or input sources.",
          "$ref": "XPSFileSpec"
        },
        "numExamples": {
          "description": "Number of examples.",
          "type": "string",
          "format": "int64"
        },
        "numInputSources": {
          "description": "Number of input sources.",
          "type": "string",
          "format": "int64"
        },
        "fingerprint": {
          "description": "Fingerprint of the example set.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSFileSpec": {
      "id": "XPSFileSpec",
      "description": "Spec of input and output files, on external file systems (for example, Colossus Namespace System or Google Cloud Storage).",
      "type": "object",
      "properties": {
        "fileFormat": {
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "Internal format for parallel text data used by Google Translate.",
            "",
            "Only the lexicographically first file described by the file_spec contains the header line.",
            ""
          ],
          "enumDeprecated": [
            false,
            true,
            false,
            false,
            false,
            false
          ],
          "enum": [
            "FILE_FORMAT_UNKNOWN",
            "FILE_FORMAT_SSTABLE",
            "FILE_FORMAT_TRANSLATION_RKV",
            "FILE_FORMAT_RECORDIO",
            "FILE_FORMAT_RAW_CSV",
            "FILE_FORMAT_RAW_CAPACITOR"
          ]
        },
        "directoryPath": {
          "description": "Deprecated. Use file_spec.",
          "deprecated": true,
          "type": "string"
        },
        "singleFilePath": {
          "description": "Deprecated. Use file_spec.",
          "deprecated": true,
          "type": "string"
        },
        "fileSpec": {
          "description": "Single file path, or file pattern of format \"/path/to/file@shard_count\". E.g. /cns/cell-d/somewhere/file@2 is expanded to two files: /cns/cell-d/somewhere/file-00000-of-00002 and /cns/cell-d/somewhere/file-00001-of-00002.",
          "type": "string"
        }
      }
    },
    "XPSPreprocessResponse": {
      "id": "XPSPreprocessResponse",
      "type": "object",
      "properties": {
        "outputExampleSet": {
          "description": "Preprocessed examples, that are to be imported into AutoML storage. This should point to RecordIO file(s) of PreprocessedExample messages. The PreprocessedExample.mvp_training_data-s returned here are later verbatim passed to Train() call in TrainExample.mvp_training_data.",
          "$ref": "XPSExampleSet"
        },
        "speechPreprocessResp": {
          "$ref": "XPSSpeechPreprocessResponse"
        },
        "translationPreprocessResp": {
          "$ref": "XPSTranslationPreprocessResponse"
        },
        "tablesPreprocessResponse": {
          "$ref": "XPSTablesPreprocessResponse"
        }
      }
    },
    "XPSSpeechPreprocessResponse": {
      "id": "XPSSpeechPreprocessResponse",
      "type": "object",
      "properties": {
        "speechPreprocessStats": {
          "description": "Stats associated with the data.",
          "$ref": "XPSSpeechPreprocessStats"
        },
        "cnsTrainDataPath": {
          "description": "Location of shards of sstables (training data) of DataUtterance protos.",
          "type": "string"
        },
        "cnsTestDataPath": {
          "description": "Location od shards of sstables (test data) of DataUtterance protos.",
          "type": "string"
        },
        "prebuiltModelEvaluationMetrics": {
          "description": "The metrics for prebuilt speech models. They are included here because there is no prebuilt speech models stored in the AutoML.",
          "$ref": "XPSSpeechEvaluationMetrics"
        }
      }
    },
    "XPSSpeechPreprocessStats": {
      "id": "XPSSpeechPreprocessStats",
      "type": "object",
      "properties": {
        "trainExamplesCount": {
          "description": "The number of examples labeled as TRAIN by Speech xps server.",
          "type": "integer",
          "format": "int32"
        },
        "testExamplesCount": {
          "description": "The number of examples labelled as TEST by Speech xps server.",
          "type": "integer",
          "format": "int32"
        },
        "numMachineTranscribedExamples": {
          "description": "The number of rows marked as MACHINE_TRANSCRIBED",
          "type": "integer",
          "format": "int32"
        },
        "numHumanLabeledExamples": {
          "description": "The number of rows marked HUMAN_LABELLED",
          "type": "integer",
          "format": "int32"
        },
        "numLogsExamples": {
          "description": "The number of samples found in the previously recorded logs data.",
          "type": "integer",
          "format": "int32"
        },
        "dataErrors": {
          "description": "Different types of data errors and the counts associated with them.",
          "type": "array",
          "items": {
            "$ref": "XPSDataErrors"
          }
        },
        "trainSentencesCount": {
          "description": "The number of sentences in the training data set.",
          "type": "integer",
          "format": "int32"
        },
        "testSentencesCount": {
          "description": "The number of sentences in the test data set.",
          "type": "integer",
          "format": "int32"
        },
        "trainWordsCount": {
          "description": "The number of words in the training data set.",
          "type": "integer",
          "format": "int32"
        },
        "testWordsCount": {
          "description": "The number of words in the test data set.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "XPSDataErrors": {
      "id": "XPSDataErrors",
      "description": "Different types of errors and the stats associatesd with each error.",
      "type": "object",
      "properties": {
        "errorType": {
          "description": "Type of the error.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Audio format not in the formats by cloud-speech AutoML. Currently only wav and flac file formats are supported.",
            "File format differnt from what is specified in the file name extension.",
            "File too large. Maximum allowed size is 50 MB.",
            "Transcript is missing."
          ],
          "enum": [
            "ERROR_TYPE_UNSPECIFIED",
            "UNSUPPORTED_AUDIO_FORMAT",
            "FILE_EXTENSION_MISMATCH_WITH_AUDIO_FORMAT",
            "FILE_TOO_LARGE",
            "MISSING_TRANSCRIPTION"
          ]
        },
        "count": {
          "description": "Number of records having errors associated with the enum.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "XPSSpeechEvaluationMetrics": {
      "id": "XPSSpeechEvaluationMetrics",
      "type": "object",
      "properties": {
        "subModelEvaluationMetrics": {
          "description": "Evaluation metrics for all submodels contained in this model.",
          "type": "array",
          "items": {
            "$ref": "XPSSpeechEvaluationMetricsSubModelEvaluationMetric"
          }
        }
      }
    },
    "XPSSpeechEvaluationMetricsSubModelEvaluationMetric": {
      "id": "XPSSpeechEvaluationMetricsSubModelEvaluationMetric",
      "type": "object",
      "properties": {
        "wer": {
          "description": "Word error rate (standard error metric used for speech recognition).",
          "type": "number",
          "format": "double"
        },
        "numWords": {
          "description": "Number of words over which the word error rate was computed.",
          "type": "integer",
          "format": "int32"
        },
        "numUtterances": {
          "description": "Number of utterances used in the wer computation.",
          "type": "integer",
          "format": "int32"
        },
        "sentenceAccuracy": {
          "description": "Below fields are used for debugging purposes",
          "type": "number",
          "format": "double"
        },
        "numInsertions": {
          "type": "integer",
          "format": "int32"
        },
        "numSubstitutions": {
          "type": "integer",
          "format": "int32"
        },
        "numDeletions": {
          "type": "integer",
          "format": "int32"
        },
        "biasingModelType": {
          "description": "Type of the biasing model.",
          "type": "string",
          "enumDescriptions": [
            "",
            "Build biasing model on top of COMMAND_AND_SEARCH model",
            "Build biasing model on top of PHONE_CALL model",
            "Build biasing model on top of VIDEO model",
            "Build biasing model on top of DEFAULT model"
          ],
          "enum": [
            "BIASING_MODEL_TYPE_UNSPECIFIED",
            "COMMAND_AND_SEARCH",
            "PHONE_CALL",
            "VIDEO",
            "DEFAULT"
          ]
        },
        "isEnhancedModel": {
          "description": "If true then it means we have an enhanced version of the biasing models.",
          "type": "boolean"
        }
      }
    },
    "XPSTranslationPreprocessResponse": {
      "id": "XPSTranslationPreprocessResponse",
      "description": "Translation preprocess response.",
      "type": "object",
      "properties": {
        "parsedExampleCount": {
          "description": "Total example count parsed.",
          "type": "string",
          "format": "int64"
        },
        "validExampleCount": {
          "description": "Total valid example count.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSTablesPreprocessResponse": {
      "id": "XPSTablesPreprocessResponse",
      "type": "object",
      "properties": {
        "tablesDatasetMetadata": {
          "description": "The table/column id, column_name and the DataTypes of the columns will be populated.",
          "$ref": "XPSTablesDatasetMetadata"
        }
      }
    },
    "XPSTablesDatasetMetadata": {
      "id": "XPSTablesDatasetMetadata",
      "description": "Metadata for a dataset used for AutoML Tables.",
      "type": "object",
      "properties": {
        "primaryTableSpec": {
          "description": "Primary table.",
          "$ref": "XPSTableSpec"
        },
        "targetColumnId": {
          "description": "Id of the primary table column that should be used as the training label.",
          "type": "integer",
          "format": "int32"
        },
        "weightColumnId": {
          "description": "Id of the primary table column that should be used as the weight column.",
          "type": "integer",
          "format": "int32"
        },
        "mlUseColumnId": {
          "description": "Id the column to split the table.",
          "type": "integer",
          "format": "int32"
        },
        "targetColumnCorrelations": {
          "description": "(the column id : its CorrelationStats with target column).",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSCorrelationStats"
          }
        }
      }
    },
    "XPSTableSpec": {
      "id": "XPSTableSpec",
      "type": "object",
      "properties": {
        "timeColumnId": {
          "description": "The id of the time column.",
          "type": "integer",
          "format": "int32"
        },
        "rowCount": {
          "description": "The number of rows in the table.",
          "type": "string",
          "format": "int64"
        },
        "validRowCount": {
          "description": "The number of valid rows.",
          "type": "string",
          "format": "int64"
        },
        "columnSpecs": {
          "description": "Mapping from column id to column spec.",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSColumnSpec"
          }
        },
        "importedDataSizeInBytes": {
          "description": "The total size of imported data of the table.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSColumnSpec": {
      "id": "XPSColumnSpec",
      "type": "object",
      "properties": {
        "columnId": {
          "description": "The unique id of the column. When Preprocess, the Tables BE will popuate the order id of the column, which reflects the order of the column inside the table, i.e. 0 means the first column in the table, N-1 means the last column. AutoML BE will persist this order id in Spanner and set the order id here when calling RefreshTablesStats and Train. Note: it's different than the column_spec_id that is generated in AutoML BE.",
          "type": "integer",
          "format": "int32"
        },
        "displayName": {
          "description": "The display name of the column. It's outputed in Preprocess and a required input for RefreshTablesStats and Train.",
          "type": "string"
        },
        "dataType": {
          "description": "The data type of the column. It's outputed in Preprocess rpc and a required input for RefreshTablesStats and Train.",
          "$ref": "XPSDataType"
        },
        "dataStats": {
          "description": "The data stats of the column. It's outputed in RefreshTablesStats and a required input for Train.",
          "$ref": "XPSDataStats"
        },
        "topCorrelatedColumns": {
          "description": "It's outputed in RefreshTablesStats, and a required input in Train.",
          "type": "array",
          "items": {
            "$ref": "XPSColumnSpecCorrelatedColumn"
          }
        },
        "forecastingMetadata": {
          "$ref": "XPSColumnSpecForecastingMetadata"
        }
      }
    },
    "XPSDataType": {
      "id": "XPSDataType",
      "description": "Indicated the type of data that can be stored in a structured data entity (e.g. a table).",
      "type": "object",
      "properties": {
        "typeCode": {
          "description": "Required. The TypeCode for this type.",
          "type": "string",
          "enumDescriptions": [
            "Not specified. Should not be used.",
            "Encoded as `number`, or the strings `\"NaN\"`, `\"Infinity\"`, or `\"-Infinity\"`.",
            "Must be between 0AD and 9999AD. Encoded as `string` according to time_format, or, if that format is not set, then in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z).",
            "Encoded as `string`.",
            "Encoded as `list`, where the list elements are represented according to list_element_type.",
            "Encoded as `struct`, where field values are represented according to struct_type.",
            "Values of this type are not further understood by AutoML, e.g. AutoML is unable to tell the order of values (as it could with FLOAT64), or is unable to say if one value contains another (as it could with STRING). Encoded as `string` (bytes should be base64-encoded, as described in RFC 4648, section 4)."
          ],
          "enum": [
            "TYPE_CODE_UNSPECIFIED",
            "FLOAT64",
            "TIMESTAMP",
            "STRING",
            "ARRAY",
            "STRUCT",
            "CATEGORY"
          ]
        },
        "nullable": {
          "description": "If true, this DataType can also be `null`.",
          "type": "boolean"
        },
        "listElementType": {
          "description": "If type_code == ARRAY, then `list_element_type` is the type of the elements.",
          "$ref": "XPSDataType"
        },
        "structType": {
          "description": "If type_code == STRUCT, then `struct_type` provides type information for the struct's fields.",
          "$ref": "XPSStructType"
        },
        "timeFormat": {
          "description": "If type_code == TIMESTAMP then `time_format` provides the format in which that time field is expressed. The time_format must be written in `strftime` syntax. If time_format is not set, then the default format as described on the field is used.",
          "type": "string"
        },
        "compatibleDataTypes": {
          "description": "The highly compatible data types to this data type.",
          "type": "array",
          "items": {
            "$ref": "XPSDataType"
          }
        }
      }
    },
    "XPSStructType": {
      "id": "XPSStructType",
      "description": "`StructType` defines the DataType-s of a STRUCT type.",
      "type": "object",
      "properties": {
        "fields": {
          "description": "Unordered map of struct field names to their data types.",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSDataType"
          }
        }
      }
    },
    "XPSDataStats": {
      "id": "XPSDataStats",
      "description": "The data statistics of a series of values that share the same DataType.",
      "type": "object",
      "properties": {
        "distinctValueCount": {
          "description": "The number of distinct values.",
          "type": "string",
          "format": "int64"
        },
        "nullValueCount": {
          "description": "The number of values that are null.",
          "type": "string",
          "format": "int64"
        },
        "validValueCount": {
          "description": "The number of values that are valid.",
          "type": "string",
          "format": "int64"
        },
        "float64Stats": {
          "description": "The statistics for FLOAT64 DataType.",
          "$ref": "XPSFloat64Stats"
        },
        "stringStats": {
          "description": "The statistics for STRING DataType.",
          "$ref": "XPSStringStats"
        },
        "timestampStats": {
          "description": "The statistics for TIMESTAMP DataType.",
          "$ref": "XPSTimestampStats"
        },
        "arrayStats": {
          "description": "The statistics for ARRAY DataType.",
          "$ref": "XPSArrayStats"
        },
        "structStats": {
          "description": "The statistics for STRUCT DataType.",
          "$ref": "XPSStructStats"
        },
        "categoryStats": {
          "description": "The statistics for CATEGORY DataType.",
          "$ref": "XPSCategoryStats"
        }
      }
    },
    "XPSFloat64Stats": {
      "id": "XPSFloat64Stats",
      "description": "The data statistics of a series of FLOAT64 values.",
      "type": "object",
      "properties": {
        "mean": {
          "description": "The mean of the series.",
          "type": "number",
          "format": "double"
        },
        "standardDeviation": {
          "description": "The standard deviation of the series.",
          "type": "number",
          "format": "double"
        },
        "quantiles": {
          "description": "Ordered from 0 to k k-quantile values of the data series of n values. The value at index i is, approximately, the i*n/k-th smallest value in the series; for i = 0 and i = k these are, respectively, the min and max values.",
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "histogramBuckets": {
          "description": "Histogram buckets of the data series. Sorted by the min value of the bucket, ascendingly, and the number of the buckets is dynamically generated. The buckets are non-overlapping and completely cover whole FLOAT64 range with min of first bucket being `\"-Infinity\"`, and max of the last one being `\"Infinity\"`.",
          "type": "array",
          "items": {
            "$ref": "XPSFloat64StatsHistogramBucket"
          }
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        }
      }
    },
    "XPSFloat64StatsHistogramBucket": {
      "id": "XPSFloat64StatsHistogramBucket",
      "description": "A bucket of a histogram.",
      "type": "object",
      "properties": {
        "min": {
          "description": "The minimum value of the bucket, inclusive.",
          "type": "number",
          "format": "double"
        },
        "max": {
          "description": "The maximum value of the bucket, exclusive unless max = `\"Infinity\"`, in which case it's inclusive.",
          "type": "number",
          "format": "double"
        },
        "count": {
          "description": "The number of data values that are in the bucket, i.e. are between min and max values.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSCommonStats": {
      "id": "XPSCommonStats",
      "description": "Common statistics for a column with a specified data type.",
      "type": "object",
      "properties": {
        "distinctValueCount": {
          "type": "string",
          "format": "int64"
        },
        "validValueCount": {
          "type": "string",
          "format": "int64"
        },
        "nullValueCount": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSStringStats": {
      "id": "XPSStringStats",
      "description": "The data statistics of a series of STRING values.",
      "type": "object",
      "properties": {
        "topUnigramStats": {
          "description": "The statistics of the top 20 unigrams, ordered by StringStats.UnigramStats.count.",
          "type": "array",
          "items": {
            "$ref": "XPSStringStatsUnigramStats"
          }
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        }
      }
    },
    "XPSStringStatsUnigramStats": {
      "id": "XPSStringStatsUnigramStats",
      "description": "The statistics of a unigram.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The unigram.",
          "type": "string"
        },
        "count": {
          "description": "The number of occurrences of this unigram in the series.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSTimestampStats": {
      "id": "XPSTimestampStats",
      "description": "The data statistics of a series of TIMESTAMP values.",
      "type": "object",
      "properties": {
        "granularStats": {
          "description": "The string key is the pre-defined granularity. Currently supported: hour_of_day, day_of_week, month_of_year. Granularities finer that the granularity of timestamp data are not populated (e.g. if timestamps are at day granularity, then hour_of_day is not populated).",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSTimestampStatsGranularStats"
          }
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        },
        "medianTimestampNanos": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSTimestampStatsGranularStats": {
      "id": "XPSTimestampStatsGranularStats",
      "description": "Stats split by a defined in context granularity.",
      "type": "object",
      "properties": {
        "buckets": {
          "description": "A map from granularity key to example count for that key. E.g. for hour_of_day `13` means 1pm, or for month_of_year `5` means May).",
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          }
        }
      }
    },
    "XPSArrayStats": {
      "id": "XPSArrayStats",
      "description": "The data statistics of a series of ARRAY values.",
      "type": "object",
      "properties": {
        "memberStats": {
          "description": "Stats of all the values of all arrays, as if they were a single long series of data. The type depends on the element type of the array.",
          "$ref": "XPSDataStats"
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        }
      }
    },
    "XPSStructStats": {
      "id": "XPSStructStats",
      "description": "The data statistics of a series of STRUCT values.",
      "type": "object",
      "properties": {
        "fieldStats": {
          "description": "Map from a field name of the struct to data stats aggregated over series of all data in that field across all the structs.",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSDataStats"
          }
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        }
      }
    },
    "XPSCategoryStats": {
      "id": "XPSCategoryStats",
      "description": "The data statistics of a series of CATEGORY values.",
      "type": "object",
      "properties": {
        "topCategoryStats": {
          "description": "The statistics of the top 20 CATEGORY values, ordered by CategoryStats.SingleCategoryStats.count.",
          "type": "array",
          "items": {
            "$ref": "XPSCategoryStatsSingleCategoryStats"
          }
        },
        "commonStats": {
          "$ref": "XPSCommonStats"
        }
      }
    },
    "XPSCategoryStatsSingleCategoryStats": {
      "id": "XPSCategoryStatsSingleCategoryStats",
      "description": "The statistics of a single CATEGORY value.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The CATEGORY value.",
          "type": "string"
        },
        "count": {
          "description": "The number of occurrences of this value in the series.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSColumnSpecCorrelatedColumn": {
      "id": "XPSColumnSpecCorrelatedColumn",
      "description": "Identifies a table's column, and its correlation with the column this ColumnSpec describes.",
      "type": "object",
      "properties": {
        "columnId": {
          "type": "integer",
          "format": "int32"
        },
        "correlationStats": {
          "$ref": "XPSCorrelationStats"
        }
      }
    },
    "XPSCorrelationStats": {
      "id": "XPSCorrelationStats",
      "description": "A correlation statistics between two series of DataType values. The series may have differing DataType-s, but within a single series the DataType must be the same.",
      "type": "object",
      "properties": {
        "cramersV": {
          "description": "The correlation value using the Cramer's V measure.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "XPSColumnSpecForecastingMetadata": {
      "id": "XPSColumnSpecForecastingMetadata",
      "type": "object",
      "properties": {
        "columnType": {
          "description": "The type of the column for FORECASTING model training purposes.",
          "type": "string",
          "enumDescriptions": [
            "An un-set value of this enum.",
            "Key columns are used to identify timeseries.",
            "This column contains information describing static properties of the entities identified by the key column(s) (e.g. city's ZIP code).",
            "This column contains information for the given entity, at any time poinrt, they are only available in the time series before.",
            "This column contains information for the given entity is known both for the past and the sufficiently far future."
          ],
          "enum": [
            "COLUMN_TYPE_UNSPECIFIED",
            "KEY",
            "KEY_METADATA",
            "TIME_SERIES_AVAILABLE_PAST_ONLY",
            "TIME_SERIES_AVAILABLE_PAST_AND_FUTURE"
          ]
        }
      }
    },
    "XPSTrainResponse": {
      "id": "XPSTrainResponse",
      "type": "object",
      "properties": {
        "modelToken": {
          "description": "Token that represents the trained model. This is considered immutable and is persisted in AutoML. xPS can put their own proto in the byte string, to e.g. point to the model checkpoints. The token is passed to other xPS APIs to refer to the model.",
          "type": "string",
          "format": "byte"
        },
        "speechTrainResp": {
          "$ref": "XPSSpeechModelSpec"
        },
        "tablesTrainResp": {
          "$ref": "XPSTablesTrainResponse"
        },
        "imageObjectDetectionTrainResp": {
          "$ref": "XPSImageObjectDetectionModelSpec"
        },
        "textToSpeechTrainResp": {
          "$ref": "XPSTextToSpeechTrainResponse"
        },
        "videoObjectTrackingTrainResp": {
          "$ref": "XPSVideoObjectTrackingTrainResponse"
        },
        "videoClassificationTrainResp": {
          "$ref": "XPSVideoClassificationTrainResponse"
        },
        "videoActionRecognitionTrainResp": {
          "$ref": "XPSVideoActionRecognitionTrainResponse"
        },
        "imageClassificationTrainResp": {
          "$ref": "XPSImageClassificationTrainResponse"
        },
        "translationTrainResp": {
          "$ref": "XPSTranslationTrainResponse"
        },
        "imageSegmentationTrainResp": {
          "$ref": "XPSImageSegmentationTrainResponse"
        },
        "textTrainResp": {
          "description": "Will only be needed for uCAIP from Beta.",
          "$ref": "XPSTextTrainResponse"
        },
        "evaluationMetricsSet": {
          "description": "The trained model evaluation metrics. This can be optionally returned.",
          "$ref": "XPSEvaluationMetricsSet"
        },
        "evaluatedExampleSet": {
          "description": "Examples used to evaluate the model (usually the test set), with the predicted annotations. The file_spec should point to recordio file(s) of AnnotatedExample. For each returned example, the example_id_token and annotations predicted by the model must be set. The example payload can and is recommended to be omitted.",
          "$ref": "XPSExampleSet"
        },
        "deployedModelSizeBytes": {
          "description": "Estimated model size in bytes once deployed.",
          "type": "string",
          "format": "int64"
        },
        "explanationConfigs": {
          "description": "VisionExplanationConfig for XAI on test set. Optional for when XAI is enable in training request.",
          "deprecated": true,
          "type": "array",
          "items": {
            "$ref": "XPSResponseExplanationSpec"
          }
        },
        "errorAnalysisConfigs": {
          "description": "Optional vision model error analysis configuration. The field is set when model error analysis is enabled in the training request. The results of error analysis will be binded together with evaluation results (in the format of AnnotatedExample).",
          "type": "array",
          "items": {
            "$ref": "XPSVisionErrorAnalysisConfig"
          }
        }
      }
    },
    "XPSSpeechModelSpec": {
      "id": "XPSSpeechModelSpec",
      "type": "object",
      "properties": {
        "subModelSpecs": {
          "description": "Model specs for all submodels contained in this model.",
          "type": "array",
          "items": {
            "$ref": "XPSSpeechModelSpecSubModelSpec"
          }
        },
        "datasetId": {
          "description": "Required for speech xps backend. Speech xps has to use dataset_id and model_id as the primary key in db so that speech API can query the db directly.",
          "type": "string",
          "format": "int64"
        },
        "language": {
          "type": "string"
        }
      }
    },
    "XPSSpeechModelSpecSubModelSpec": {
      "id": "XPSSpeechModelSpecSubModelSpec",
      "type": "object",
      "properties": {
        "clientId": {
          "description": "In S3, Recognition ClientContextId.client_id",
          "type": "string"
        },
        "contextId": {
          "description": "In S3, Recognition ClientContextId.context_id",
          "type": "string"
        },
        "biasingModelType": {
          "description": "Type of the biasing model.",
          "type": "string",
          "enumDescriptions": [
            "",
            "Build biasing model on top of COMMAND_AND_SEARCH model",
            "Build biasing model on top of PHONE_CALL model",
            "Build biasing model on top of VIDEO model",
            "Build biasing model on top of DEFAULT model"
          ],
          "enum": [
            "BIASING_MODEL_TYPE_UNSPECIFIED",
            "COMMAND_AND_SEARCH",
            "PHONE_CALL",
            "VIDEO",
            "DEFAULT"
          ]
        },
        "isEnhancedModel": {
          "description": "If true then it means we have an enhanced version of the biasing models.",
          "type": "boolean"
        }
      }
    },
    "XPSTablesTrainResponse": {
      "id": "XPSTablesTrainResponse",
      "type": "object",
      "properties": {
        "tablesModelColumnInfo": {
          "description": "Output only. Auxiliary information for each of the input_feature_column_specs, with respect to this particular model.",
          "type": "array",
          "items": {
            "$ref": "XPSTablesModelColumnInfo"
          }
        },
        "predictionSampleRows": {
          "description": "Sample rows from the dataset this model was trained.",
          "type": "array",
          "items": {
            "$ref": "XPSRow"
          }
        },
        "trainCostMilliNodeHours": {
          "description": "The actual training cost of the model, expressed in milli node hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not exceed the train budget.",
          "type": "string",
          "format": "int64"
        },
        "modelStructure": {
          "$ref": "XPSTablesModelStructure"
        }
      }
    },
    "XPSTablesModelColumnInfo": {
      "id": "XPSTablesModelColumnInfo",
      "description": "An information specific to given column and Tables Model, in context of the Model and the predictions created by it.",
      "type": "object",
      "properties": {
        "columnId": {
          "description": "The ID of the column.",
          "type": "integer",
          "format": "int32"
        },
        "featureImportance": {
          "description": "When given as part of a Model: Measurement of how much model predictions correctness on the TEST data depend on values in this column. A value between 0 and 1, higher means higher influence. These values are normalized - for all input feature columns of a given model they add to 1. When given back by Predict or Batch Predict: Measurement of how impactful for the prediction returned for the given row the value in this column was. Specifically, the feature importance specifies the marginal contribution that the feature made to the prediction score compared to the baseline score. These values are computed using the Sampled Shapley method.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSRow": {
      "id": "XPSRow",
      "type": "object",
      "properties": {
        "columnIds": {
          "description": "The ids of the columns. Note: The below `values` field must match order of this field, if this field is set.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "values": {
          "description": "The values of the row cells, given in the same order as the column_ids. If column_ids is not set, then in the same order as the input_feature_column_ids in TablesModelMetadata.",
          "type": "array",
          "items": {
            "type": "any"
          }
        }
      }
    },
    "XPSTablesModelStructure": {
      "id": "XPSTablesModelStructure",
      "description": "A description of Tables model structure.",
      "type": "object",
      "properties": {
        "modelParameters": {
          "description": "A list of models.",
          "type": "array",
          "items": {
            "$ref": "XPSTablesModelStructureModelParameters"
          }
        }
      }
    },
    "XPSTablesModelStructureModelParameters": {
      "id": "XPSTablesModelStructureModelParameters",
      "description": "Model hyper-parameters for a model.",
      "type": "object",
      "properties": {
        "hyperparameters": {
          "type": "array",
          "items": {
            "$ref": "XPSTablesModelStructureModelParametersParameter"
          }
        }
      }
    },
    "XPSTablesModelStructureModelParametersParameter": {
      "id": "XPSTablesModelStructureModelParametersParameter",
      "type": "object",
      "properties": {
        "name": {
          "description": "Parameter name.",
          "type": "string"
        },
        "floatValue": {
          "description": "Float type parameter value.",
          "type": "number",
          "format": "double"
        },
        "intValue": {
          "description": "Integer type parameter value.",
          "type": "string",
          "format": "int64"
        },
        "stringValue": {
          "description": "String type parameter value.",
          "type": "string"
        }
      }
    },
    "XPSImageObjectDetectionModelSpec": {
      "id": "XPSImageObjectDetectionModelSpec",
      "type": "object",
      "properties": {
        "modelServingSpec": {
          "$ref": "XPSImageModelServingSpec"
        },
        "exportModelSpec": {
          "$ref": "XPSImageExportModelSpec"
        },
        "trainCostNodeSeconds": {
          "description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
          "type": "string",
          "format": "int64"
        },
        "stopReason": {
          "description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED'.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "Model fully converged, can not be resumbed training.",
            "Model early converged, can be further trained till full convergency."
          ],
          "enum": [
            "TRAIN_STOP_REASON_UNSPECIFIED",
            "TRAIN_STOP_REASON_BUDGET_REACHED",
            "TRAIN_STOP_REASON_MODEL_CONVERGED",
            "TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
          ]
        },
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope.",
          "$ref": "XPSImageModelArtifactSpec"
        },
        "maxBoundingBoxCount": {
          "description": "Max number of bounding box.",
          "type": "string",
          "format": "int64"
        },
        "classCount": {
          "description": "Total number of classes.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSImageModelServingSpec": {
      "id": "XPSImageModelServingSpec",
      "description": "Serving specification for image models.",
      "type": "object",
      "properties": {
        "nodeQps": {
          "description": "An estimated value of how much traffic a node can serve. Populated for AutoMl request only.",
          "type": "number",
          "format": "double"
        },
        "tfRuntimeVersion": {
          "description": "## The fields below are only populated under uCAIP request scope. https://cloud.google.com/ml-engine/docs/runtime-version-list",
          "type": "string"
        },
        "modelThroughputEstimation": {
          "description": "Populate under uCAIP request scope.",
          "type": "array",
          "items": {
            "$ref": "XPSImageModelServingSpecModelThroughputEstimation"
          }
        }
      }
    },
    "XPSImageModelServingSpecModelThroughputEstimation": {
      "id": "XPSImageModelServingSpecModelThroughputEstimation",
      "type": "object",
      "properties": {
        "nodeQps": {
          "description": "The approximate qps a deployed node can serve.",
          "type": "number",
          "format": "double"
        },
        "latencyInMilliseconds": {
          "description": "Estimated latency.",
          "type": "number",
          "format": "double"
        },
        "computeEngineAcceleratorType": {
          "type": "string",
          "enumDescriptions": [
            "",
            "Nvidia Tesla K80 GPU.",
            "Nvidia Tesla P100 GPU.",
            "Nvidia Tesla V100 GPU.",
            "Nvidia Tesla P4 GPU.",
            "Nvidia Tesla T4 GPU.",
            "Nvidia Tesla A100 GPU.",
            "Nvidia A100 80GB GPU.",
            "Nvidia L4 GPU.",
            "Nvidia H100 80Gb GPU.",
            "Nvidia H100 80Gb GPU.",
            "Nvidia H200 141Gb GPU.",
            "Nvidia B200 GPU.",
            "Nvidia GB200 GPU.",
            "TPU v2 (JellyFish).",
            "TPU v3 (DragonFish).",
            "TPU_v4 (PufferFish).",
            "TPU v5 Lite Pods."
          ],
          "enum": [
            "UNSPECIFIED",
            "NVIDIA_TESLA_K80",
            "NVIDIA_TESLA_P100",
            "NVIDIA_TESLA_V100",
            "NVIDIA_TESLA_P4",
            "NVIDIA_TESLA_T4",
            "NVIDIA_TESLA_A100",
            "NVIDIA_A100_80GB",
            "NVIDIA_L4",
            "NVIDIA_H100_80GB",
            "NVIDIA_H100_MEGA_80GB",
            "NVIDIA_H200_141GB",
            "NVIDIA_B200",
            "NVIDIA_GB200",
            "TPU_V2",
            "TPU_V3",
            "TPU_V4_POD",
            "TPU_V5_LITEPOD"
          ]
        },
        "servomaticPartitionType": {
          "type": "string",
          "enumDescriptions": [
            "",
            "The default partition.",
            "It has significantly lower replication than partition-0 and is located in the US only. It also has a larger model size limit and higher default RAM quota than partition-0. Customers with batch traffic, US-based traffic, or very large models should use this partition. Capacity in this partition is significantly cheaper than partition-0.",
            "To be used by customers with Jellyfish-accelerated ops.",
            "The partition used by regionalized servomatic cloud regions.",
            "The partition used for loading models from custom storage."
          ],
          "enum": [
            "PARTITION_TYPE_UNSPECIFIED",
            "PARTITION_ZERO",
            "PARTITION_REDUCED_HOMING",
            "PARTITION_JELLYFISH",
            "PARTITION_CPU",
            "PARTITION_CUSTOM_STORAGE_CPU"
          ]
        }
      }
    },
    "XPSImageExportModelSpec": {
      "id": "XPSImageExportModelSpec",
      "description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Upon receiving ExportModel request from user, AutoMl backend can serve the pre-generated models to user if exists (by copying the files from internal path to user provided location), otherwise, AutoMl backend will call xPS ExportModel API to generate the model on the fly with the requesting format.",
      "type": "object",
      "properties": {
        "exportModelOutputConfig": {
          "description": "Contains the model format and internal location of the model files to be exported/downloaded. Use the Google Cloud Storage bucket name which is provided via TrainRequest.gcs_bucket_name to store the model files.",
          "type": "array",
          "items": {
            "$ref": "XPSExportModelOutputConfig"
          }
        }
      }
    },
    "XPSExportModelOutputConfig": {
      "id": "XPSExportModelOutputConfig",
      "type": "object",
      "properties": {
        "outputGcsUri": {
          "description": "The Google Cloud Storage directory where XPS will output the exported models and related files. Format: gs://bucket/directory",
          "type": "string"
        },
        "outputGcrUri": {
          "description": "The Google Contained Registry path the exported files to be pushed to. This location is set if the exported format is DOCKDER.",
          "type": "string"
        },
        "tfLiteFormat": {
          "$ref": "XPSTfLiteFormat"
        },
        "edgeTpuTfLiteFormat": {
          "$ref": "XPSEdgeTpuTfLiteFormat"
        },
        "tfSavedModelFormat": {
          "$ref": "XPSTfSavedModelFormat"
        },
        "dockerFormat": {
          "$ref": "XPSDockerFormat"
        },
        "coreMlFormat": {
          "$ref": "XPSCoreMlFormat"
        },
        "tfJsFormat": {
          "$ref": "XPSTfJsFormat"
        },
        "exportFirebaseAuxiliaryInfo": {
          "description": "For any model and format: If true, will additionally export FirebaseExportedModelInfo in a firebase.txt file.",
          "type": "boolean"
        }
      }
    },
    "XPSTfLiteFormat": {
      "id": "XPSTfLiteFormat",
      "description": "LINT.IfChange A model format used for mobile and IoT devices. See https://www.tensorflow.org/lite.",
      "type": "object",
      "properties": {}
    },
    "XPSEdgeTpuTfLiteFormat": {
      "id": "XPSEdgeTpuTfLiteFormat",
      "description": "A model format used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.",
      "type": "object",
      "properties": {}
    },
    "XPSTfSavedModelFormat": {
      "id": "XPSTfSavedModelFormat",
      "description": "A tensorflow model format in SavedModel format.",
      "type": "object",
      "properties": {}
    },
    "XPSDockerFormat": {
      "id": "XPSDockerFormat",
      "description": "A model format used for Docker containers. Use the params field to customize the container. The container is verified to work correctly on ubuntu 16.04 operating system.",
      "type": "object",
      "properties": {
        "cpuArchitecture": {
          "description": "Optional. Additional cpu information describing the requirements for the to be exported model files.",
          "type": "string",
          "enumDescriptions": [
            "",
            ""
          ],
          "enum": [
            "CPU_ARCHITECTURE_UNSPECIFIED",
            "CPU_ARCHITECTURE_X86_64"
          ]
        },
        "gpuArchitecture": {
          "description": "Optional. Additional gpu information describing the requirements for the to be exported model files.",
          "type": "string",
          "enumDescriptions": [
            "",
            ""
          ],
          "enum": [
            "GPU_ARCHITECTURE_UNSPECIFIED",
            "GPU_ARCHITECTURE_NVIDIA"
          ]
        }
      }
    },
    "XPSCoreMlFormat": {
      "id": "XPSCoreMlFormat",
      "description": "A model format used for iOS mobile devices.",
      "type": "object",
      "properties": {}
    },
    "XPSTfJsFormat": {
      "id": "XPSTfJsFormat",
      "description": "A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used in the browser and in Node.js using JavaScript.",
      "type": "object",
      "properties": {}
    },
    "XPSImageModelArtifactSpec": {
      "id": "XPSImageModelArtifactSpec",
      "description": "Stores the locations and related metadata of the model artifacts. Populated for uCAIP requests only.",
      "type": "object",
      "properties": {
        "checkpointArtifact": {
          "description": "The Tensorflow checkpoint files. e.g. Used for resumable training.",
          "$ref": "XPSModelArtifactItem"
        },
        "servingArtifact": {
          "description": "The default model binary file used for serving (e.g. online predict, batch predict) via public Cloud AI Platform API.",
          "$ref": "XPSModelArtifactItem"
        },
        "exportArtifact": {
          "description": "The model binary files in different formats for model export.",
          "type": "array",
          "items": {
            "$ref": "XPSModelArtifactItem"
          }
        },
        "tfLiteMetadataGcsUri": {
          "description": "Google Cloud Storage URI of Tensorflow Lite metadata 'tflite_metadata.json'.",
          "type": "string"
        },
        "labelGcsUri": {
          "description": "Google Cloud Storage URI of decoded labels file for model export 'dict.txt'.",
          "type": "string"
        },
        "tfJsBinaryGcsPrefix": {
          "description": "Google Cloud Storage URI prefix of Tensorflow JavaScript binary files 'groupX-shardXofX.bin'. Deprecated.",
          "type": "string"
        }
      }
    },
    "XPSModelArtifactItem": {
      "id": "XPSModelArtifactItem",
      "description": "A single model artifact item.",
      "type": "object",
      "properties": {
        "artifactFormat": {
          "description": "The model artifact format.",
          "type": "string",
          "enumDescriptions": [
            "Should not be used.",
            "The Tensorflow checkpoints. See https://www.tensorflow.org/guide/checkpoint.",
            "The Tensorflow SavedModel binary.",
            "Model artifact in generic TensorFlow Lite (.tflite) format. See https://www.tensorflow.org/lite.",
            "Used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.",
            "A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used in the browser and in Node.js using JavaScript.",
            "Used for iOS mobile devices in (.mlmodel) format. See https://developer.apple.com/documentation/coreml"
          ],
          "enum": [
            "ARTIFACT_FORMAT_UNSPECIFIED",
            "TF_CHECKPOINT",
            "TF_SAVED_MODEL",
            "TF_LITE",
            "EDGE_TPU_TF_LITE",
            "TF_JS",
            "CORE_ML"
          ]
        },
        "gcsUri": {
          "description": "The Google Cloud Storage URI that stores the model binary files.",
          "type": "string"
        }
      }
    },
    "XPSTextToSpeechTrainResponse": {
      "id": "XPSTextToSpeechTrainResponse",
      "description": "TextToSpeech train response",
      "type": "object",
      "properties": {}
    },
    "XPSVideoObjectTrackingTrainResponse": {
      "id": "XPSVideoObjectTrackingTrainResponse",
      "type": "object",
      "properties": {
        "exportModelSpec": {
          "description": "Populated for AutoML request only.",
          "$ref": "XPSVideoExportModelSpec"
        },
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope.",
          "$ref": "XPSVideoModelArtifactSpec"
        },
        "trainCostNodeSeconds": {
          "description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSVideoExportModelSpec": {
      "id": "XPSVideoExportModelSpec",
      "description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Upon receiving ExportModel request from user, AutoMl backend can serve the pre-generated models to user if exists (by copying the files from internal path to user provided location), otherwise, AutoMl backend will call xPS ExportModel API to generate the model on the fly with the requesting format.",
      "type": "object",
      "properties": {
        "exportModelOutputConfig": {
          "description": "Contains the model format and internal location of the model files to be exported/downloaded. Use the Google Cloud Storage bucket name which is provided via TrainRequest.gcs_bucket_name to store the model files.",
          "type": "array",
          "items": {
            "$ref": "XPSExportModelOutputConfig"
          }
        }
      }
    },
    "XPSVideoModelArtifactSpec": {
      "id": "XPSVideoModelArtifactSpec",
      "type": "object",
      "properties": {
        "servingArtifact": {
          "description": "The default model binary file used for serving (e.g. batch predict) via public Cloud AI Platform API.",
          "$ref": "XPSModelArtifactItem"
        },
        "exportArtifact": {
          "description": "The model binary files in different formats for model export.",
          "type": "array",
          "items": {
            "$ref": "XPSModelArtifactItem"
          }
        }
      }
    },
    "XPSVideoClassificationTrainResponse": {
      "id": "XPSVideoClassificationTrainResponse",
      "type": "object",
      "properties": {
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope.",
          "$ref": "XPSVideoModelArtifactSpec"
        },
        "trainCostNodeSeconds": {
          "description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSVideoActionRecognitionTrainResponse": {
      "id": "XPSVideoActionRecognitionTrainResponse",
      "type": "object",
      "properties": {
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope.",
          "$ref": "XPSVideoModelArtifactSpec"
        },
        "trainCostNodeSeconds": {
          "description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSImageClassificationTrainResponse": {
      "id": "XPSImageClassificationTrainResponse",
      "type": "object",
      "properties": {
        "trainCostInNodeTime": {
          "description": "The actual cost to create this model. - For edge type model, the cost is expressed in node hour. - For cloud type model,the cost is expressed in compute hour. - Populated for models created before GA. To be deprecated after GA.",
          "type": "string",
          "format": "google-duration"
        },
        "trainCostNodeSeconds": {
          "description": "The actual training cost, expressed in node seconds. Populated for models trained in node time.",
          "type": "string",
          "format": "int64"
        },
        "stopReason": {
          "description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED', 'MODEL_EARLY_STOPPED'.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "Model fully converged, can not be resumbed training.",
            "Model early converged, can be further trained till full convergency."
          ],
          "enum": [
            "TRAIN_STOP_REASON_UNSPECIFIED",
            "TRAIN_STOP_REASON_BUDGET_REACHED",
            "TRAIN_STOP_REASON_MODEL_CONVERGED",
            "TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
          ]
        },
        "exportModelSpec": {
          "description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Populated for AutoMl requests.",
          "$ref": "XPSImageExportModelSpec"
        },
        "modelServingSpec": {
          "$ref": "XPSImageModelServingSpec"
        },
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope.",
          "$ref": "XPSImageModelArtifactSpec"
        },
        "classCount": {
          "description": "Total number of classes.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSTranslationTrainResponse": {
      "id": "XPSTranslationTrainResponse",
      "description": "Train response for translation.",
      "type": "object",
      "properties": {
        "modelType": {
          "description": "Type of the model.",
          "type": "string",
          "enumDescriptions": [
            "Default",
            "Legacy model. Will be deprecated.",
            "Current model."
          ],
          "enum": [
            "MODEL_TYPE_UNSPECIFIED",
            "LEGACY",
            "CURRENT"
          ]
        }
      }
    },
    "XPSImageSegmentationTrainResponse": {
      "id": "XPSImageSegmentationTrainResponse",
      "type": "object",
      "properties": {
        "modelServingSpec": {
          "$ref": "XPSImageModelServingSpec"
        },
        "exportModelSpec": {
          "description": "NOTE: These fields are not used/needed in EAP but will be set later.",
          "$ref": "XPSImageExportModelSpec"
        },
        "trainCostNodeSeconds": {
          "description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
          "type": "string",
          "format": "int64"
        },
        "stopReason": {
          "description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED'.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "Model fully converged, can not be resumbed training.",
            "Model early converged, can be further trained till full convergency."
          ],
          "enum": [
            "TRAIN_STOP_REASON_UNSPECIFIED",
            "TRAIN_STOP_REASON_BUDGET_REACHED",
            "TRAIN_STOP_REASON_MODEL_CONVERGED",
            "TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
          ]
        },
        "modelArtifactSpec": {
          "description": "## The fields below are only populated under uCAIP request scope. Model artifact spec stores and model gcs pathes and related metadata",
          "$ref": "XPSImageModelArtifactSpec"
        },
        "colorMaps": {
          "description": "Color map of the model.",
          "type": "array",
          "items": {
            "$ref": "XPSColorMap"
          }
        }
      }
    },
    "XPSColorMap": {
      "id": "XPSColorMap",
      "description": "Map from color to display name. Will only be used by Image Segmentation for uCAIP.",
      "type": "object",
      "properties": {
        "color": {
          "description": "This type is deprecated in favor of the IntColor below. This is because google.type.Color represent color has a float which semantically does not reflect discrete classes/categories concept. Moreover, to handle it well we need to have some tolerance when converting to a discretized color. As such, the recommendation is to have API surface still use google.type.Color while internally IntColor is used.",
          "deprecated": true,
          "$ref": "Color"
        },
        "intColor": {
          "$ref": "XPSColorMapIntColor"
        },
        "displayName": {
          "description": "Should be used during preprocessing.",
          "type": "string"
        },
        "annotationSpecIdToken": {
          "description": "Should be used during training.",
          "type": "string"
        }
      }
    },
    "Color": {
      "id": "Color",
      "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and 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 have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. 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 \u003c= 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 \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
      "type": "object",
      "properties": {
        "red": {
          "description": "The amount of red in the color as a value in the interval [0, 1].",
          "type": "number",
          "format": "float"
        },
        "green": {
          "description": "The amount of green in the color as a value in the interval [0, 1].",
          "type": "number",
          "format": "float"
        },
        "blue": {
          "description": "The amount of blue in the color as a value in the interval [0, 1].",
          "type": "number",
          "format": "float"
        },
        "alpha": {
          "description": "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).",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSColorMapIntColor": {
      "id": "XPSColorMapIntColor",
      "description": "RGB color and each channel is represented by an integer.",
      "type": "object",
      "properties": {
        "red": {
          "description": "The value should be in range of [0, 255].",
          "type": "integer",
          "format": "int32"
        },
        "green": {
          "description": "The value should be in range of [0, 255].",
          "type": "integer",
          "format": "int32"
        },
        "blue": {
          "description": "The value should be in range of [0, 255].",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "XPSTextTrainResponse": {
      "id": "XPSTextTrainResponse",
      "type": "object",
      "properties": {
        "componentModel": {
          "description": "Component submodels.",
          "type": "array",
          "items": {
            "$ref": "XPSTextComponentModel"
          }
        }
      }
    },
    "XPSTextComponentModel": {
      "id": "XPSTextComponentModel",
      "description": "Component model.",
      "type": "object",
      "properties": {
        "submodelName": {
          "description": "The name of the trained NL submodel.",
          "type": "string"
        },
        "submodelType": {
          "description": "The type of trained NL submodel",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "Model type for entity extraction.",
            "Model type for relationship extraction.",
            "A composite model represents a set of component models that have to be used together for prediction. A composite model appears to be a single model to the model user. It may contain only one component model.",
            "Model type used to train default, MA, and ATC models in a single batch worker pipeline.",
            "BERT pipeline needs a specific model type, since it uses a different TFX configuration compared with DEFAULT (despite sharing most of the code).",
            "Model type for EncPaLM."
          ],
          "enum": [
            "TEXT_MODEL_TYPE_UNSPECIFIED",
            "TEXT_MODEL_TYPE_DEFAULT",
            "TEXT_MODEL_TYPE_META_ARCHITECT",
            "TEXT_MODEL_TYPE_ATC",
            "TEXT_MODEL_TYPE_CLARA2",
            "TEXT_MODEL_TYPE_CHATBASE",
            "TEXT_MODEL_TYPE_SAFT_SPAN_LABELING",
            "TEXT_MODEL_TYPE_TEXT_EXTRACTION",
            "TEXT_MODEL_TYPE_RELATIONSHIP_EXTRACTION",
            "TEXT_MODEL_TYPE_COMPOSITE",
            "TEXT_MODEL_TYPE_ALL_MODELS",
            "TEXT_MODEL_TYPE_BERT",
            "TEXT_MODEL_TYPE_ENC_PALM"
          ]
        },
        "servoModelName": {
          "description": "The name of servo model. Populated by uCAIP BE as part of online PredictRequest.",
          "type": "string"
        },
        "versionNumber": {
          "description": "The servomatic model version number. Populated by uCAIP BE as part of online PredictRequest.",
          "type": "string",
          "format": "int64"
        },
        "partition": {
          "description": "The partition where the model is deployed. Populated by uCAIP BE as part of online PredictRequest.",
          "type": "string",
          "enumDescriptions": [
            "",
            "The default partition.",
            "It has significantly lower replication than partition-0 and is located in the US only. It also has a larger model size limit and higher default RAM quota than partition-0. Customers with batch traffic, US-based traffic, or very large models should use this partition. Capacity in this partition is significantly cheaper than partition-0.",
            "To be used by customers with Jellyfish-accelerated ops.",
            "The partition used by regionalized servomatic cloud regions.",
            "The partition used for loading models from custom storage."
          ],
          "enum": [
            "PARTITION_TYPE_UNSPECIFIED",
            "PARTITION_ZERO",
            "PARTITION_REDUCED_HOMING",
            "PARTITION_JELLYFISH",
            "PARTITION_CPU",
            "PARTITION_CUSTOM_STORAGE_CPU"
          ]
        },
        "onlinePredictionModelGcsUri": {
          "description": "The Cloud Storage resource path to hold online prediction model.",
          "type": "string"
        },
        "batchPredictionModelGcsUri": {
          "description": "The Cloud Storage resource path to hold batch prediction model.",
          "type": "string"
        },
        "servingArtifact": {
          "description": "The default model binary file used for serving (e.g. online predict, batch predict) via public Cloud Ai Platform API.",
          "$ref": "XPSModelArtifactItem"
        },
        "tfRuntimeVersion": {
          "description": "## The fields below are only populated under uCAIP request scope. https://cloud.google.com/ml-engine/docs/runtime-version-list",
          "type": "string"
        }
      }
    },
    "XPSEvaluationMetricsSet": {
      "id": "XPSEvaluationMetricsSet",
      "description": "Specifies location of model evaluation metrics.",
      "type": "object",
      "properties": {
        "evaluationMetrics": {
          "description": "Inline EvaluationMetrics - should be relatively small. For passing large quantities of exhaustive metrics, use file_spec.",
          "type": "array",
          "items": {
            "$ref": "XPSEvaluationMetrics"
          }
        },
        "fileSpec": {
          "description": "File spec containing evaluation metrics of a model, must point to RecordIO file(s) of intelligence.cloud.automl.xps.EvaluationMetrics messages.",
          "$ref": "XPSFileSpec"
        },
        "numEvaluationMetrics": {
          "description": "Number of the evaluation metrics (usually one per label plus overall).",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSEvaluationMetrics": {
      "id": "XPSEvaluationMetrics",
      "description": "Contains xPS-specific model evaluation metrics either for a single annotation spec (label), or for the model overall. Next tag: 18.",
      "type": "object",
      "properties": {
        "annotationSpecIdToken": {
          "description": "The annotation_spec for which this evaluation metrics instance had been created. Empty iff this is an overall model evaluation (like Tables evaluation metrics), i.e. aggregated across all labels. The value comes from the input annotations in AnnotatedExample. For MVP product or for text sentiment models where annotation_spec_id_token is not available, set label instead.",
          "type": "string"
        },
        "label": {
          "description": "The label for which this evaluation metrics instance had been created. Empty iff this is an overall model evaluation (like Tables evaluation metrics), i.e. aggregated across all labels. The label maps to AnnotationSpec.display_name in Public API protos. Only used by MVP implementation and text sentiment FULL implementation.",
          "type": "string"
        },
        "category": {
          "description": "The integer category label for which this evaluation metric instance had been created. Valid categories are 0 or higher. Overall model evaluation should set this to negative values (rather than implicit zero). Only used for Image Segmentation (prefer to set annotation_spec_id_token instead). Note: uCAIP Image Segmentation should use annotation_spec_id_token.",
          "type": "integer",
          "format": "int32"
        },
        "evaluatedExampleCount": {
          "description": "The number of examples used to create this evaluation metrics instance.",
          "type": "integer",
          "format": "int32"
        },
        "videoClassificationEvalMetrics": {
          "$ref": "XPSClassificationEvaluationMetrics"
        },
        "imageObjectDetectionEvalMetrics": {
          "$ref": "XPSImageObjectDetectionEvaluationMetrics"
        },
        "textExtractionEvalMetrics": {
          "$ref": "XPSTextExtractionEvaluationMetrics"
        },
        "videoObjectTrackingEvalMetrics": {
          "$ref": "XPSVideoObjectTrackingEvaluationMetrics"
        },
        "tablesEvalMetrics": {
          "$ref": "XPSTablesEvaluationMetrics"
        },
        "tablesClassificationEvalMetrics": {
          "$ref": "XPSClassificationEvaluationMetrics"
        },
        "regressionEvalMetrics": {
          "$ref": "XPSRegressionEvaluationMetrics"
        },
        "textClassificationEvalMetrics": {
          "$ref": "XPSClassificationEvaluationMetrics"
        },
        "videoActionRecognitionEvalMetrics": {
          "$ref": "XPSVideoActionRecognitionEvaluationMetrics"
        },
        "translationEvalMetrics": {
          "$ref": "XPSTranslationEvaluationMetrics"
        },
        "imageClassificationEvalMetrics": {
          "$ref": "XPSClassificationEvaluationMetrics"
        },
        "imageSegmentationEvalMetrics": {
          "$ref": "XPSImageSegmentationEvaluationMetrics"
        },
        "textSentimentEvalMetrics": {
          "$ref": "XPSTextSentimentEvaluationMetrics"
        }
      }
    },
    "XPSClassificationEvaluationMetrics": {
      "id": "XPSClassificationEvaluationMetrics",
      "description": "Model evaluation metrics for classification problems. It can be used for image and video classification. Next tag: 9.",
      "type": "object",
      "properties": {
        "auPrc": {
          "description": "The Area under precision recall curve metric.",
          "type": "number",
          "format": "float"
        },
        "baseAuPrc": {
          "description": "The Area under precision recall curve metric based on priors.",
          "type": "number",
          "format": "float"
        },
        "auRoc": {
          "description": "The Area Under Receiver Operating Characteristic curve metric. Micro-averaged for the overall evaluation.",
          "type": "number",
          "format": "float"
        },
        "logLoss": {
          "description": "The Log Loss metric.",
          "type": "number",
          "format": "float"
        },
        "evaluatedExamplesCount": {
          "description": "The number of examples used for model evaluation.",
          "type": "integer",
          "format": "int32"
        },
        "confidenceMetricsEntries": {
          "description": "Metrics that have confidence thresholds. Precision-recall curve can be derived from it.",
          "type": "array",
          "items": {
            "$ref": "XPSConfidenceMetricsEntry"
          }
        },
        "confusionMatrix": {
          "description": "Confusion matrix of the evaluation. Only set for MULTICLASS classification problems where number of annotation specs is no more than 10. Only set for model level evaluation, not for evaluation per label.",
          "$ref": "XPSConfusionMatrix"
        }
      }
    },
    "XPSConfidenceMetricsEntry": {
      "id": "XPSConfidenceMetricsEntry",
      "description": "ConfidenceMetricsEntry includes generic precision, recall, f1 score etc. Next tag: 16.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "Metrics are computed with an assumption that the model never return predictions with score lower than this value.",
          "type": "number",
          "format": "float"
        },
        "positionThreshold": {
          "description": "Metrics are computed with an assumption that the model always returns at most this many predictions (ordered by their score, descendingly), but they all still need to meet the confidence_threshold.",
          "type": "integer",
          "format": "int32"
        },
        "recall": {
          "description": "Recall (true positive rate) for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "precision": {
          "description": "Precision for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "falsePositiveRate": {
          "description": "False Positive Rate for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "f1Score": {
          "description": "The harmonic mean of recall and precision.",
          "type": "number",
          "format": "float"
        },
        "recallAt1": {
          "description": "The recall (true positive rate) when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
          "type": "number",
          "format": "float"
        },
        "precisionAt1": {
          "description": "The precision when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
          "type": "number",
          "format": "float"
        },
        "falsePositiveRateAt1": {
          "description": "The False Positive Rate when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
          "type": "number",
          "format": "float"
        },
        "f1ScoreAt1": {
          "description": "The harmonic mean of recall_at1 and precision_at1.",
          "type": "number",
          "format": "float"
        },
        "truePositiveCount": {
          "description": "The number of model created labels that match a ground truth label.",
          "type": "string",
          "format": "int64"
        },
        "falsePositiveCount": {
          "description": "The number of model created labels that do not match a ground truth label.",
          "type": "string",
          "format": "int64"
        },
        "falseNegativeCount": {
          "description": "The number of ground truth labels that are not matched by a model created label.",
          "type": "string",
          "format": "int64"
        },
        "trueNegativeCount": {
          "description": "The number of labels that were not created by the model, but if they would, they would not match a ground truth label.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSConfusionMatrix": {
      "id": "XPSConfusionMatrix",
      "description": "Confusion matrix of the model running the classification.",
      "type": "object",
      "properties": {
        "annotationSpecIdToken": {
          "description": "For the following three repeated fields, only one is intended to be set. annotation_spec_id_token is preferable to be set. ID tokens of the annotation specs used in the confusion matrix.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sentimentLabel": {
          "description": "Sentiment labels used in the confusion matrix. Set only for text sentiment models. For AutoML Text Revamp, use `annotation_spec_id_token` instead and leave this field empty.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "category": {
          "description": "Category (mainly for segmentation). Set only for image segmentation models. Note: uCAIP Image Segmentation should use annotation_spec_id_token.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "row": {
          "description": "Rows in the confusion matrix. The number of rows is equal to the size of `annotation_spec_id_token`. `row[i].value[j]` is the number of examples that have ground truth of the `annotation_spec_id_token[i]` and are predicted as `annotation_spec_id_token[j]` by the model being evaluated.",
          "type": "array",
          "items": {
            "$ref": "XPSConfusionMatrixRow"
          }
        }
      }
    },
    "XPSConfusionMatrixRow": {
      "id": "XPSConfusionMatrixRow",
      "description": "A row in the confusion matrix.",
      "type": "object",
      "properties": {
        "exampleCount": {
          "description": "Value of the specific cell in the confusion matrix. The number of values each row has (i.e. the length of the row) is equal to the length of the annotation_spec_id_token field.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "count": {
          "description": "Same as above except intended to represent other counts (for e.g. for segmentation this is pixel count). NOTE(params): Only example_count or count is set (oneoff does not support repeated fields unless they are embedded inside another message).",
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        }
      }
    },
    "XPSImageObjectDetectionEvaluationMetrics": {
      "id": "XPSImageObjectDetectionEvaluationMetrics",
      "description": "Model evaluation metrics for image object detection problems. Evaluates prediction quality of labeled bounding boxes.",
      "type": "object",
      "properties": {
        "evaluatedBoundingBoxCount": {
          "description": "The total number of bounding boxes (i.e. summed over all images) the ground truth used to create this evaluation had.",
          "type": "integer",
          "format": "int32"
        },
        "boundingBoxMetricsEntries": {
          "description": "The bounding boxes match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 and each label confidence threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 pair.",
          "type": "array",
          "items": {
            "$ref": "XPSBoundingBoxMetricsEntry"
          }
        },
        "boundingBoxMeanAveragePrecision": {
          "description": "The single metric for bounding boxes evaluation: the mean_average_precision averaged over all bounding_box_metrics_entries.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSBoundingBoxMetricsEntry": {
      "id": "XPSBoundingBoxMetricsEntry",
      "description": "Bounding box matching model metrics for a single intersection-over-union threshold and multiple label match confidence thresholds.",
      "type": "object",
      "properties": {
        "iouThreshold": {
          "description": "The intersection-over-union threshold value used to compute this metrics entry.",
          "type": "number",
          "format": "float"
        },
        "meanAveragePrecision": {
          "description": "The mean average precision.",
          "type": "number",
          "format": "float"
        },
        "confidenceMetricsEntries": {
          "description": "Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
          "type": "array",
          "items": {
            "$ref": "XPSBoundingBoxMetricsEntryConfidenceMetricsEntry"
          }
        }
      }
    },
    "XPSBoundingBoxMetricsEntryConfidenceMetricsEntry": {
      "id": "XPSBoundingBoxMetricsEntryConfidenceMetricsEntry",
      "description": "Metrics for a single confidence threshold.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "The confidence threshold value used to compute the metrics.",
          "type": "number",
          "format": "float"
        },
        "recall": {
          "description": "Recall for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "precision": {
          "description": "Precision for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "f1Score": {
          "description": "The harmonic mean of recall and precision.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSTextExtractionEvaluationMetrics": {
      "id": "XPSTextExtractionEvaluationMetrics",
      "type": "object",
      "properties": {
        "confidenceMetricsEntries": {
          "description": "If the enclosing EvaluationMetrics.label is empty, confidence_metrics_entries is an evaluation of the entire model across all labels. If the enclosing EvaluationMetrics.label is set, confidence_metrics_entries applies to that label.",
          "type": "array",
          "items": {
            "$ref": "XPSConfidenceMetricsEntry"
          }
        },
        "bestF1ConfidenceMetrics": {
          "description": "Values are at the highest F1 score on the precision-recall curve. Only confidence_threshold, recall, precision, and f1_score will be set.",
          "deprecated": true,
          "$ref": "XPSConfidenceMetricsEntry"
        },
        "perLabelConfidenceMetrics": {
          "description": "Only recall, precision, and f1_score will be set.",
          "deprecated": true,
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSConfidenceMetricsEntry"
          }
        },
        "confusionMatrix": {
          "description": "Confusion matrix of the model, at the default confidence threshold (0.0). Only set for whole-model evaluation, not for evaluation per label.",
          "$ref": "XPSConfusionMatrix"
        }
      }
    },
    "XPSVideoObjectTrackingEvaluationMetrics": {
      "id": "XPSVideoObjectTrackingEvaluationMetrics",
      "description": "Model evaluation metrics for ObjectTracking problems. Next tag: 10.",
      "type": "object",
      "properties": {
        "evaluatedFrameCount": {
          "description": "The number of video frames used for model evaluation.",
          "type": "integer",
          "format": "int32"
        },
        "evaluatedBoundingboxCount": {
          "description": "The number of bounding boxes used for model evaluation.",
          "type": "integer",
          "format": "int32"
        },
        "evaluatedTrackCount": {
          "description": "The number of tracks used for model evaluation.",
          "type": "integer",
          "format": "int32"
        },
        "boundingBoxMetricsEntries": {
          "description": "Output only. The bounding boxes match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
          "type": "array",
          "items": {
            "$ref": "XPSBoundingBoxMetricsEntry"
          }
        },
        "trackMetricsEntries": {
          "description": "Output only. The tracks match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
          "type": "array",
          "items": {
            "$ref": "XPSTrackMetricsEntry"
          }
        },
        "boundingBoxMeanAveragePrecision": {
          "description": "Output only. The single metric for bounding boxes evaluation: the mean_average_precision averaged over all bounding_box_metrics_entries.",
          "type": "number",
          "format": "float"
        },
        "trackMeanAveragePrecision": {
          "description": "Output only. The single metric for tracks accuracy evaluation: the mean_average_precision averaged over all track_metrics_entries.",
          "type": "number",
          "format": "float"
        },
        "trackMeanBoundingBoxIou": {
          "description": "Output only. The single metric for tracks bounding box iou evaluation: the mean_bounding_box_iou averaged over all track_metrics_entries.",
          "type": "number",
          "format": "float"
        },
        "trackMeanMismatchRate": {
          "description": "Output only. The single metric for tracking consistency evaluation: the mean_mismatch_rate averaged over all track_metrics_entries.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSTrackMetricsEntry": {
      "id": "XPSTrackMetricsEntry",
      "description": "Track matching model metrics for a single track match threshold and multiple label match confidence thresholds. Next tag: 6.",
      "type": "object",
      "properties": {
        "iouThreshold": {
          "description": "Output only. The intersection-over-union threshold value between bounding boxes across frames used to compute this metric entry.",
          "type": "number",
          "format": "float"
        },
        "meanTrackingAveragePrecision": {
          "description": "Output only. The mean average precision over all confidence thresholds.",
          "type": "number",
          "format": "float"
        },
        "meanBoundingBoxIou": {
          "description": "Output only. The mean bounding box iou over all confidence thresholds.",
          "type": "number",
          "format": "float"
        },
        "meanMismatchRate": {
          "description": "Output only. The mean mismatch rate over all confidence thresholds.",
          "type": "number",
          "format": "float"
        },
        "confidenceMetricsEntries": {
          "description": "Output only. Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99. Precision-recall curve is derived from them.",
          "type": "array",
          "items": {
            "$ref": "XPSTrackMetricsEntryConfidenceMetricsEntry"
          }
        }
      }
    },
    "XPSTrackMetricsEntryConfidenceMetricsEntry": {
      "id": "XPSTrackMetricsEntryConfidenceMetricsEntry",
      "description": "Metrics for a single confidence threshold. Next tag: 6.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "Output only. The confidence threshold value used to compute the metrics.",
          "type": "number",
          "format": "float"
        },
        "trackingPrecision": {
          "description": "Output only. Tracking precision.",
          "type": "number",
          "format": "float"
        },
        "trackingRecall": {
          "description": "Output only. Tracking recall.",
          "type": "number",
          "format": "float"
        },
        "boundingBoxIou": {
          "description": "Output only. Bounding box intersection-over-union precision. Measures how well the bounding boxes overlap between each other (e.g. complete overlap or just barely above iou_threshold).",
          "type": "number",
          "format": "float"
        },
        "mismatchRate": {
          "description": "Output only. Mismatch rate, which measures the tracking consistency, i.e. correctness of instance ID continuity.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSTablesEvaluationMetrics": {
      "id": "XPSTablesEvaluationMetrics",
      "type": "object",
      "properties": {
        "classificationMetrics": {
          "description": "Classification metrics.",
          "$ref": "XPSTablesClassificationMetrics"
        },
        "regressionMetrics": {
          "description": "Regression metrics.",
          "$ref": "XPSTablesRegressionMetrics"
        }
      }
    },
    "XPSTablesClassificationMetrics": {
      "id": "XPSTablesClassificationMetrics",
      "description": "Metrics for Tables classification problems.",
      "type": "object",
      "properties": {
        "curveMetrics": {
          "description": "Metrics building a curve.",
          "type": "array",
          "items": {
            "$ref": "XPSTablesClassificationMetricsCurveMetrics"
          }
        }
      }
    },
    "XPSTablesClassificationMetricsCurveMetrics": {
      "id": "XPSTablesClassificationMetricsCurveMetrics",
      "description": "Metrics curve data point for a single value.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The CATEGORY row value (for ARRAY unnested) the curve metrics are for.",
          "type": "string"
        },
        "positionThreshold": {
          "description": "The position threshold value used to compute the metrics.",
          "type": "integer",
          "format": "int32"
        },
        "confidenceMetricsEntries": {
          "description": "Metrics that have confidence thresholds. Precision-recall curve and ROC curve can be derived from them.",
          "type": "array",
          "items": {
            "$ref": "XPSTablesConfidenceMetricsEntry"
          }
        },
        "aucPr": {
          "description": "The area under the precision-recall curve.",
          "type": "number",
          "format": "double"
        },
        "aucRoc": {
          "description": "The area under receiver operating characteristic curve.",
          "type": "number",
          "format": "double"
        },
        "logLoss": {
          "description": "The Log loss metric.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "XPSTablesConfidenceMetricsEntry": {
      "id": "XPSTablesConfidenceMetricsEntry",
      "description": "Metrics for a single confidence threshold.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "The confidence threshold value used to compute the metrics.",
          "type": "number",
          "format": "double"
        },
        "falsePositiveRate": {
          "description": "FPR = #false positives / (#false positives + #true negatives)",
          "type": "number",
          "format": "double"
        },
        "truePositiveRate": {
          "description": "TPR = #true positives / (#true positives + #false negatvies)",
          "type": "number",
          "format": "double"
        },
        "recall": {
          "description": "Recall = #true positives / (#true positives + #false negatives).",
          "type": "number",
          "format": "double"
        },
        "precision": {
          "description": "Precision = #true positives / (#true positives + #false positives).",
          "type": "number",
          "format": "double"
        },
        "f1Score": {
          "description": "The harmonic mean of recall and precision. (2 * precision * recall) / (precision + recall)",
          "type": "number",
          "format": "double"
        },
        "truePositiveCount": {
          "description": "True positive count.",
          "type": "string",
          "format": "int64"
        },
        "falsePositiveCount": {
          "description": "False positive count.",
          "type": "string",
          "format": "int64"
        },
        "trueNegativeCount": {
          "description": "True negative count.",
          "type": "string",
          "format": "int64"
        },
        "falseNegativeCount": {
          "description": "False negative count.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSTablesRegressionMetrics": {
      "id": "XPSTablesRegressionMetrics",
      "description": "Metrics for Tables regression problems.",
      "type": "object",
      "properties": {
        "rootMeanSquaredError": {
          "description": "Root mean squared error.",
          "type": "number",
          "format": "double"
        },
        "meanAbsoluteError": {
          "description": "Mean absolute error.",
          "type": "number",
          "format": "double"
        },
        "meanAbsolutePercentageError": {
          "description": "Mean absolute percentage error, only set if all of the target column's values are positive.",
          "type": "number",
          "format": "double"
        },
        "rSquared": {
          "description": "R squared.",
          "type": "number",
          "format": "double"
        },
        "rootMeanSquaredLogError": {
          "description": "Root mean squared log error.",
          "type": "number",
          "format": "double"
        },
        "regressionMetricsEntries": {
          "description": "A list of actual versus predicted points for the model being evaluated.",
          "type": "array",
          "items": {
            "$ref": "XPSRegressionMetricsEntry"
          }
        }
      }
    },
    "XPSRegressionMetricsEntry": {
      "id": "XPSRegressionMetricsEntry",
      "description": "A pair of actual & observed values for the model being evaluated.",
      "type": "object",
      "properties": {
        "trueValue": {
          "description": "The actual target value for a row in the dataset.",
          "type": "number",
          "format": "float"
        },
        "predictedValue": {
          "description": "The observed value for a row in the dataset.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSRegressionEvaluationMetrics": {
      "id": "XPSRegressionEvaluationMetrics",
      "description": "Model evaluation metrics for regression problems. It can be used for Tables.",
      "type": "object",
      "properties": {
        "rootMeanSquaredError": {
          "description": "Root Mean Squared Error (RMSE).",
          "type": "number",
          "format": "float"
        },
        "meanAbsoluteError": {
          "description": "Mean Absolute Error (MAE).",
          "type": "number",
          "format": "float"
        },
        "meanAbsolutePercentageError": {
          "description": "Mean absolute percentage error. Only set if all ground truth values are positive.",
          "type": "number",
          "format": "float"
        },
        "rSquared": {
          "description": "R squared.",
          "type": "number",
          "format": "float"
        },
        "rootMeanSquaredLogError": {
          "description": "Root mean squared log error.",
          "type": "number",
          "format": "float"
        },
        "regressionMetricsEntries": {
          "description": "A list of actual versus predicted points for the model being evaluated.",
          "type": "array",
          "items": {
            "$ref": "XPSRegressionMetricsEntry"
          }
        }
      }
    },
    "XPSVideoActionRecognitionEvaluationMetrics": {
      "id": "XPSVideoActionRecognitionEvaluationMetrics",
      "description": "Model evaluation metrics for video action recognition.",
      "type": "object",
      "properties": {
        "evaluatedActionCount": {
          "description": "Output only. The number of ground truth actions used to create this evaluation.",
          "type": "integer",
          "format": "int32"
        },
        "videoActionMetricsEntries": {
          "description": "Output only. The metric entries for precision window lengths: 1s,2s,3s,4s, 5s.",
          "type": "array",
          "items": {
            "$ref": "XPSVideoActionMetricsEntry"
          }
        }
      }
    },
    "XPSVideoActionMetricsEntry": {
      "id": "XPSVideoActionMetricsEntry",
      "description": "The Evaluation metrics entry given a specific precision_window_length.",
      "type": "object",
      "properties": {
        "precisionWindowLength": {
          "description": "This VideoActionMetricsEntry is calculated based on this prediction window length. If the predicted action's timestamp is inside the time window whose center is the ground truth action's timestamp with this specific length, the prediction result is treated as a true positive.",
          "type": "string",
          "format": "google-duration"
        },
        "meanAveragePrecision": {
          "description": "The mean average precision.",
          "type": "number",
          "format": "float"
        },
        "confidenceMetricsEntries": {
          "description": "Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
          "type": "array",
          "items": {
            "$ref": "XPSVideoActionMetricsEntryConfidenceMetricsEntry"
          }
        }
      }
    },
    "XPSVideoActionMetricsEntryConfidenceMetricsEntry": {
      "id": "XPSVideoActionMetricsEntryConfidenceMetricsEntry",
      "description": "Metrics for a single confidence threshold.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "Output only. The confidence threshold value used to compute the metrics.",
          "type": "number",
          "format": "float"
        },
        "recall": {
          "description": "Output only. Recall for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "precision": {
          "description": "Output only. Precision for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "f1Score": {
          "description": "Output only. The harmonic mean of recall and precision.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "XPSTranslationEvaluationMetrics": {
      "id": "XPSTranslationEvaluationMetrics",
      "description": "Evaluation metrics for the dataset.",
      "type": "object",
      "properties": {
        "bleuScore": {
          "description": "BLEU score.",
          "type": "number",
          "format": "double"
        },
        "baseBleuScore": {
          "description": "BLEU score for base model.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "XPSImageSegmentationEvaluationMetrics": {
      "id": "XPSImageSegmentationEvaluationMetrics",
      "description": "Model evaluation metrics for image segmentation problems. Next tag: 4.",
      "type": "object",
      "properties": {
        "confidenceMetricsEntries": {
          "description": "Metrics that have confidence thresholds. Precision-recall curve can be derived from it.",
          "type": "array",
          "items": {
            "$ref": "XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry"
          }
        }
      }
    },
    "XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry": {
      "id": "XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry",
      "description": "Metrics for a single confidence threshold.",
      "type": "object",
      "properties": {
        "confidenceThreshold": {
          "description": "The confidence threshold value used to compute the metrics.",
          "type": "number",
          "format": "float"
        },
        "recall": {
          "description": "Recall for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "precision": {
          "description": "Precision for the given confidence threshold.",
          "type": "number",
          "format": "float"
        },
        "diceScoreCoefficient": {
          "description": "DSC or the F1 score: The harmonic mean of recall and precision.",
          "type": "number",
          "format": "float"
        },
        "iouScore": {
          "description": "IOU score.",
          "type": "number",
          "format": "float"
        },
        "confusionMatrix": {
          "description": "Confusion matrix of the per confidence_threshold evaluation. Pixel counts are set here. Only set for model level evaluation, not for evaluation per label.",
          "$ref": "XPSConfusionMatrix"
        }
      }
    },
    "XPSTextSentimentEvaluationMetrics": {
      "id": "XPSTextSentimentEvaluationMetrics",
      "description": "Model evaluation metrics for text sentiment problems.",
      "type": "object",
      "properties": {
        "precision": {
          "description": "Output only. Precision.",
          "type": "number",
          "format": "float"
        },
        "recall": {
          "description": "Output only. Recall.",
          "type": "number",
          "format": "float"
        },
        "f1Score": {
          "description": "Output only. The harmonic mean of recall and precision.",
          "type": "number",
          "format": "float"
        },
        "meanAbsoluteError": {
          "description": "Output only. Mean absolute error. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
          "type": "number",
          "format": "float"
        },
        "meanSquaredError": {
          "description": "Output only. Mean squared error. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
          "type": "number",
          "format": "float"
        },
        "linearKappa": {
          "description": "Output only. Linear weighted kappa. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
          "type": "number",
          "format": "float"
        },
        "quadraticKappa": {
          "description": "Output only. Quadratic weighted kappa. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
          "type": "number",
          "format": "float"
        },
        "confusionMatrix": {
          "description": "Output only. Confusion matrix of the evaluation. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
          "$ref": "XPSConfusionMatrix"
        }
      }
    },
    "XPSResponseExplanationSpec": {
      "id": "XPSResponseExplanationSpec",
      "deprecated": true,
      "description": "Specification of Model explanation. Feature-based XAI in AutoML Vision ICN is deprecated.",
      "type": "object",
      "properties": {
        "explanationType": {
          "description": "Explanation type. For AutoML Image Classification models, possible values are: * `image-integrated-gradients` * `image-xrai`",
          "type": "string"
        },
        "parameters": {
          "description": "Parameters that configure explaining of the Model's predictions.",
          "$ref": "XPSResponseExplanationParameters"
        },
        "metadata": {
          "description": "Metadata describing the Model's input and output for explanation.",
          "$ref": "XPSResponseExplanationMetadata"
        }
      }
    },
    "XPSResponseExplanationParameters": {
      "id": "XPSResponseExplanationParameters",
      "deprecated": true,
      "type": "object",
      "properties": {
        "integratedGradientsAttribution": {
          "description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
          "$ref": "XPSIntegratedGradientsAttribution"
        },
        "xraiAttribution": {
          "description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead.",
          "$ref": "XPSXraiAttribution"
        }
      }
    },
    "XPSIntegratedGradientsAttribution": {
      "id": "XPSIntegratedGradientsAttribution",
      "deprecated": true,
      "description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "type": "object",
      "properties": {
        "stepCount": {
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "XPSXraiAttribution": {
      "id": "XPSXraiAttribution",
      "deprecated": true,
      "description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Only supports image Models (modality is IMAGE).",
      "type": "object",
      "properties": {
        "stepCount": {
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "XPSResponseExplanationMetadata": {
      "id": "XPSResponseExplanationMetadata",
      "deprecated": true,
      "type": "object",
      "properties": {
        "inputs": {
          "description": "Metadata of the input.",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSResponseExplanationMetadataInputMetadata"
          }
        },
        "outputs": {
          "description": "Metadata of the output.",
          "type": "object",
          "additionalProperties": {
            "$ref": "XPSResponseExplanationMetadataOutputMetadata"
          }
        }
      }
    },
    "XPSResponseExplanationMetadataInputMetadata": {
      "id": "XPSResponseExplanationMetadataInputMetadata",
      "description": "Metadata of the input of a feature.",
      "type": "object",
      "properties": {
        "visualizationConfig": {
          "description": "Visualization configurations for image explanation.",
          "$ref": "XPSVisualization"
        },
        "inputTensorName": {
          "description": "Name of the input tensor for this model. Only needed in train response.",
          "type": "string"
        },
        "modality": {
          "description": "Modality of the feature. Valid values are: numeric, image. Defaults to numeric.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "MODALITY_UNSPECIFIED",
            "NUMERIC",
            "IMAGE",
            "CATEGORICAL"
          ]
        }
      }
    },
    "XPSVisualization": {
      "id": "XPSVisualization",
      "deprecated": true,
      "description": "Visualization configurations for image explanation.",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of the image visualization. Only applicable to Integrated Gradients attribution. OUTLINES shows regions of attribution, while PIXELS shows per-pixel attribution. Defaults to OUTLINES.",
          "type": "string",
          "enumDescriptions": [
            "Should not be used.",
            "Shows which pixel contributed to the image prediction.",
            "Shows which region contributed to the image prediction by outlining the region."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "PIXELS",
            "OUTLINES"
          ]
        },
        "polarity": {
          "description": "Whether to only highlight pixels with positive contributions, negative or both. Defaults to POSITIVE.",
          "type": "string",
          "enumDescriptions": [
            "Default value. This is the same as POSITIVE.",
            "Highlights the pixels/outlines that were most influential to the model's prediction.",
            "Setting polarity to negative highlights areas that does not lead to the models's current prediction.",
            "Shows both positive and negative attributions."
          ],
          "enum": [
            "POLARITY_UNSPECIFIED",
            "POSITIVE",
            "NEGATIVE",
            "BOTH"
          ]
        },
        "colorMap": {
          "description": "The color scheme used for the highlighted areas. Defaults to PINK_GREEN for Integrated Gradients attribution, which shows positive attributions in green and negative in pink. Defaults to VIRIDIS for XRAI attribution, which highlights the most influential regions in yellow and the least influential in blue.",
          "type": "string",
          "enumDescriptions": [
            "Should not be used.",
            "Positive: green. Negative: pink.",
            "Viridis color map: A perceptually uniform color mapping which is easier to see by those with colorblindness and progresses from yellow to green to blue. Positive: yellow. Negative: blue.",
            "Positive: red. Negative: red.",
            "Positive: green. Negative: green.",
            "Positive: green. Negative: red.",
            "PiYG palette."
          ],
          "enum": [
            "COLOR_MAP_UNSPECIFIED",
            "PINK_GREEN",
            "VIRIDIS",
            "RED",
            "GREEN",
            "RED_GREEN",
            "PINK_WHITE_GREEN"
          ]
        },
        "clipPercentUpperbound": {
          "description": "Excludes attributions above the specified percentile from the highlighted areas. Using the clip_percent_upperbound and clip_percent_lowerbound together can be useful for filtering out noise and making it easier to see areas of strong attribution. Defaults to 99.9.",
          "type": "number",
          "format": "float"
        },
        "clipPercentLowerbound": {
          "description": "Excludes attributions below the specified percentile, from the highlighted areas. Defaults to 62.",
          "type": "number",
          "format": "float"
        },
        "overlayType": {
          "description": "How the original image is displayed in the visualization. Adjusting the overlay can help increase visual clarity if the original image makes it difficult to view the visualization. Defaults to NONE.",
          "type": "string",
          "enumDescriptions": [
            "Default value. This is the same as NONE.",
            "No overlay.",
            "The attributions are shown on top of the original image.",
            "The attributions are shown on top of grayscaled version of the original image.",
            "The attributions are used as a mask to reveal predictive parts of the image and hide the un-predictive parts."
          ],
          "enum": [
            "OVERLAY_TYPE_UNSPECIFIED",
            "NONE",
            "ORIGINAL",
            "GRAYSCALE",
            "MASK_BLACK"
          ]
        }
      }
    },
    "XPSResponseExplanationMetadataOutputMetadata": {
      "id": "XPSResponseExplanationMetadataOutputMetadata",
      "description": "Metadata of the prediction output to be explained.",
      "type": "object",
      "properties": {
        "outputTensorName": {
          "description": "Name of the output tensor. Only needed in train response.",
          "type": "string"
        }
      }
    },
    "XPSVisionErrorAnalysisConfig": {
      "id": "XPSVisionErrorAnalysisConfig",
      "description": "The vision model error analysis configuration. Next tag: 3",
      "type": "object",
      "properties": {
        "exampleCount": {
          "description": "The number of query examples in error analysis.",
          "type": "integer",
          "format": "int32"
        },
        "queryType": {
          "description": "The query type used in retrieval. The enum values are frozen in the foreseeable future.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified query type for model error analysis.",
            "Query similar samples across all classes in the dataset.",
            "Query similar samples from the same class of the input sample.",
            "Query dissimilar samples from the same class of the input sample."
          ],
          "enum": [
            "QUERY_TYPE_UNSPECIFIED",
            "QUERY_TYPE_ALL_SIMILAR",
            "QUERY_TYPE_SAME_CLASS_SIMILAR",
            "QUERY_TYPE_SAME_CLASS_DISSIMILAR"
          ]
        }
      }
    },
    "XPSXpsOperationMetadata": {
      "id": "XPSXpsOperationMetadata",
      "type": "object",
      "properties": {
        "reportingMetrics": {
          "description": "Metrics for the operation. By the time the operation is terminated (whether succeeded or failed) as returned from XPS, AutoML BE assumes the metrics are finalized. AutoML BE transparently posts the metrics to Chemist if it's not empty, regardless of the response content or error type. If user is supposed to be charged in case of cancellation/error, this field should be set. In the case where the type of LRO doesn't require any billing, this field should be left unset.",
          "$ref": "XPSReportingMetrics"
        },
        "exampleCount": {
          "description": "Optional. XPS server can opt to provide example count of the long running operation (e.g. training, data importing, batch prediction).",
          "type": "string",
          "format": "int64"
        },
        "tablesTrainingOperationMetadata": {
          "$ref": "XPSTablesTrainingOperationMetadata"
        },
        "videoTrainingOperationMetadata": {
          "$ref": "XPSVideoTrainingOperationMetadata"
        },
        "videoBatchPredictOperationMetadata": {
          "$ref": "XPSVideoBatchPredictOperationMetadata"
        },
        "visionTrainingOperationMetadata": {
          "$ref": "XPSVisionTrainingOperationMetadata"
        }
      }
    },
    "XPSReportingMetrics": {
      "id": "XPSReportingMetrics",
      "type": "object",
      "properties": {
        "metricEntries": {
          "description": "One entry per metric name. The values must be aggregated per metric name.",
          "type": "array",
          "items": {
            "$ref": "XPSMetricEntry"
          }
        },
        "effectiveTrainingDuration": {
          "description": "The effective time training used. If set, this is used for quota management and billing. Deprecated. AutoML BE doesn't use this. Don't set.",
          "deprecated": true,
          "type": "string",
          "format": "google-duration"
        }
      }
    },
    "XPSMetricEntry": {
      "id": "XPSMetricEntry",
      "type": "object",
      "properties": {
        "metricName": {
          "description": "The metric name defined in the service configuration.",
          "type": "string"
        },
        "argentumMetricId": {
          "description": "For billing metrics that are using legacy sku's, set the legacy billing metric id here. This will be sent to Chemist as the \"cloudbilling.googleapis.com/argentum_metric_id\" label. Otherwise leave empty.",
          "type": "string"
        },
        "int64Value": {
          "description": "A signed 64-bit integer value.",
          "type": "string",
          "format": "int64"
        },
        "doubleValue": {
          "description": "A double value.",
          "type": "number",
          "format": "double"
        },
        "systemLabels": {
          "description": "Billing system labels for this (metric, value) pair.",
          "type": "array",
          "items": {
            "$ref": "XPSMetricEntryLabel"
          }
        }
      }
    },
    "XPSMetricEntryLabel": {
      "id": "XPSMetricEntryLabel",
      "type": "object",
      "properties": {
        "labelName": {
          "description": "The name of the label.",
          "type": "string"
        },
        "labelValue": {
          "description": "The value of the label.",
          "type": "string"
        }
      }
    },
    "XPSTablesTrainingOperationMetadata": {
      "id": "XPSTablesTrainingOperationMetadata",
      "type": "object",
      "properties": {
        "topTrials": {
          "description": "This field is for training. When the operation is terminated successfully, AutoML Backend post this field to operation metadata in spanner. If the metadata has no trials returned, the training operation is supposed to be a failure.",
          "type": "array",
          "items": {
            "$ref": "XPSTuningTrial"
          }
        },
        "trainingObjectivePoints": {
          "description": "This field records the training objective value with respect to time, giving insight into how the model architecture search is performing as training time elapses.",
          "type": "array",
          "items": {
            "$ref": "XPSTrainingObjectivePoint"
          }
        },
        "createModelStage": {
          "description": "Current stage of creating model.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified stage.",
            "Prepare the model training pipeline and run data processing.",
            "Training model.",
            "Run evaluation.",
            "Finalizing model training pipeline."
          ],
          "enum": [
            "CREATE_MODEL_STAGE_UNSPECIFIED",
            "DATA_PREPROCESSING",
            "TRAINING",
            "EVALUATING",
            "MODEL_POST_PROCESSING"
          ]
        },
        "optimizationObjective": {
          "description": "The optimization objective for model.",
          "type": "string"
        },
        "trainBudgetMilliNodeHours": {
          "description": "Creating model budget.",
          "type": "string",
          "format": "int64"
        },
        "trainingStartTime": {
          "description": "Timestamp when training process starts.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "XPSTuningTrial": {
      "id": "XPSTuningTrial",
      "description": "Metrics for a tuning job generated, will get forwarded to Stackdriver as model tuning logs. Setting this as a standalone message out of CreateModelMetadata to avoid confusion as we expose this message only to users.",
      "type": "object",
      "properties": {
        "modelStructure": {
          "description": "Model parameters for the trial.",
          "$ref": "XPSTablesModelStructure"
        },
        "trainingObjectivePoint": {
          "description": "The optimization objective evaluation of the eval split data.",
          "$ref": "XPSTrainingObjectivePoint"
        }
      }
    },
    "XPSTrainingObjectivePoint": {
      "id": "XPSTrainingObjectivePoint",
      "type": "object",
      "properties": {
        "value": {
          "description": "The objective value when this point was recorded.",
          "type": "number",
          "format": "float"
        },
        "createTime": {
          "description": "The time at which this point was recorded.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "XPSVideoTrainingOperationMetadata": {
      "id": "XPSVideoTrainingOperationMetadata",
      "type": "object",
      "properties": {
        "trainCostMilliNodeHour": {
          "description": "This is an estimation of the node hours necessary for training a model, expressed in milli node hours (i.e. 1,000 value in this field means 1 node hour). A node hour represents the time a virtual machine spends running your training job. The cost of one node running for one hour is a node hour.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "XPSVideoBatchPredictOperationMetadata": {
      "id": "XPSVideoBatchPredictOperationMetadata",
      "type": "object",
      "properties": {
        "outputExamples": {
          "description": "All the partial batch prediction results that are completed at the moment. Output examples are sorted by completion time. The order will not be changed. Each output example should be the path of a single RecordIO file of AnnotatedExamples.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "XPSVisionTrainingOperationMetadata": {
      "id": "XPSVisionTrainingOperationMetadata",
      "deprecated": true,
      "type": "object",
      "properties": {
        "explanationUsage": {
          "description": "Aggregated infra usage within certain time period, for billing report purpose if XAI is enable in training request.",
          "$ref": "InfraUsage"
        }
      }
    },
    "InfraUsage": {
      "id": "InfraUsage",
      "description": "LINT: LEGACY_NAMES Infra Usage of billing metrics.",
      "type": "object",
      "properties": {
        "cpuMetrics": {
          "description": "Aggregated core metrics since requested start_time.",
          "type": "array",
          "items": {
            "$ref": "CpuMetric"
          }
        },
        "ramMetrics": {
          "description": "Aggregated ram metrics since requested start_time.",
          "type": "array",
          "items": {
            "$ref": "RamMetric"
          }
        },
        "gpuMetrics": {
          "description": "Aggregated gpu metrics since requested start_time.",
          "type": "array",
          "items": {
            "$ref": "GpuMetric"
          }
        },
        "tpuMetrics": {
          "description": "Aggregated tpu metrics since requested start_time.",
          "type": "array",
          "items": {
            "$ref": "TpuMetric"
          }
        },
        "diskMetrics": {
          "description": "Aggregated persistent disk metrics since requested start_time.",
          "type": "array",
          "items": {
            "$ref": "DiskMetric"
          }
        }
      }
    },
    "CpuMetric": {
      "id": "CpuMetric",
      "description": "Metric for billing reports.",
      "type": "object",
      "properties": {
        "cpuType": {
          "description": "Required. Type of cpu, e.g. N2.",
          "type": "string",
          "enumDescriptions": [
            "",
            "GPU-based machine, skip quota reporting.",
            "GPU-based machine, skip quota reporting.",
            "GPU-based machine, skip quota reporting.",
            "GPU-based machine, skip quota reporting.",
            "COMPUTE_OPTIMIZED",
            "",
            "",
            "",
            "GPU-based machine, skip quota reporting.",
            "GPU-based machine, skip quota reporting.",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "MEMORY_OPTIMIZED_UPGRADE_PREMIUM",
            "MEMORY_OPTIMIZED",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_CPU_TYPE",
            "A2",
            "A3",
            "A4",
            "A4X",
            "C2",
            "C2D",
            "CUSTOM",
            "E2",
            "G2",
            "G4",
            "C3",
            "C4",
            "C4A",
            "C4D",
            "N4",
            "N4A",
            "C3D",
            "M2",
            "M1",
            "N1",
            "N2_CUSTOM",
            "N2",
            "N2D"
          ]
        },
        "coreSec": {
          "description": "Required. Total seconds of core usage, e.g. 4.",
          "type": "string",
          "format": "int64"
        },
        "coreNumber": {
          "description": "Required. Number of CPU cores.",
          "type": "string",
          "format": "int64"
        },
        "machineSpec": {
          "description": "Required. Machine spec, e.g. N1_STANDARD_4.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_MACHINE_SPEC",
            "N1_STANDARD_2",
            "N1_STANDARD_4",
            "N1_STANDARD_8",
            "N1_STANDARD_16",
            "N1_STANDARD_32",
            "N1_STANDARD_64",
            "N1_STANDARD_96",
            "N1_HIGHMEM_2",
            "N1_HIGHMEM_4",
            "N1_HIGHMEM_8",
            "N1_HIGHMEM_16",
            "N1_HIGHMEM_32",
            "N1_HIGHMEM_64",
            "N1_HIGHMEM_96",
            "N1_HIGHCPU_2",
            "N1_HIGHCPU_4",
            "N1_HIGHCPU_8",
            "N1_HIGHCPU_16",
            "N1_HIGHCPU_32",
            "N1_HIGHCPU_64",
            "N1_HIGHCPU_96",
            "A2_HIGHGPU_1G",
            "A2_HIGHGPU_2G",
            "A2_HIGHGPU_4G",
            "A2_HIGHGPU_8G",
            "A2_MEGAGPU_16G",
            "A2_ULTRAGPU_1G",
            "A2_ULTRAGPU_2G",
            "A2_ULTRAGPU_4G",
            "A2_ULTRAGPU_8G",
            "A3_HIGHGPU_1G",
            "A3_HIGHGPU_2G",
            "A3_HIGHGPU_4G",
            "A3_HIGHGPU_8G",
            "A3_MEGAGPU_8G",
            "A3_ULTRAGPU_8G",
            "A3_EDGEGPU_8G",
            "A4_HIGHGPU_8G",
            "A4X_HIGHGPU_4G",
            "E2_STANDARD_2",
            "E2_STANDARD_4",
            "E2_STANDARD_8",
            "E2_STANDARD_16",
            "E2_STANDARD_32",
            "E2_HIGHMEM_2",
            "E2_HIGHMEM_4",
            "E2_HIGHMEM_8",
            "E2_HIGHMEM_16",
            "E2_HIGHCPU_2",
            "E2_HIGHCPU_4",
            "E2_HIGHCPU_8",
            "E2_HIGHCPU_16",
            "E2_HIGHCPU_32",
            "N2_STANDARD_2",
            "N2_STANDARD_4",
            "N2_STANDARD_8",
            "N2_STANDARD_16",
            "N2_STANDARD_32",
            "N2_STANDARD_48",
            "N2_STANDARD_64",
            "N2_STANDARD_80",
            "N2_STANDARD_96",
            "N2_STANDARD_128",
            "N2_HIGHMEM_2",
            "N2_HIGHMEM_4",
            "N2_HIGHMEM_8",
            "N2_HIGHMEM_16",
            "N2_HIGHMEM_32",
            "N2_HIGHMEM_48",
            "N2_HIGHMEM_64",
            "N2_HIGHMEM_80",
            "N2_HIGHMEM_96",
            "N2_HIGHMEM_128",
            "N2_HIGHCPU_2",
            "N2_HIGHCPU_4",
            "N2_HIGHCPU_8",
            "N2_HIGHCPU_16",
            "N2_HIGHCPU_32",
            "N2_HIGHCPU_48",
            "N2_HIGHCPU_64",
            "N2_HIGHCPU_80",
            "N2_HIGHCPU_96",
            "N2D_STANDARD_2",
            "N2D_STANDARD_4",
            "N2D_STANDARD_8",
            "N2D_STANDARD_16",
            "N2D_STANDARD_32",
            "N2D_STANDARD_48",
            "N2D_STANDARD_64",
            "N2D_STANDARD_80",
            "N2D_STANDARD_96",
            "N2D_STANDARD_128",
            "N2D_STANDARD_224",
            "N2D_HIGHMEM_2",
            "N2D_HIGHMEM_4",
            "N2D_HIGHMEM_8",
            "N2D_HIGHMEM_16",
            "N2D_HIGHMEM_32",
            "N2D_HIGHMEM_48",
            "N2D_HIGHMEM_64",
            "N2D_HIGHMEM_80",
            "N2D_HIGHMEM_96",
            "N2D_HIGHCPU_2",
            "N2D_HIGHCPU_4",
            "N2D_HIGHCPU_8",
            "N2D_HIGHCPU_16",
            "N2D_HIGHCPU_32",
            "N2D_HIGHCPU_48",
            "N2D_HIGHCPU_64",
            "N2D_HIGHCPU_80",
            "N2D_HIGHCPU_96",
            "N2D_HIGHCPU_128",
            "N2D_HIGHCPU_224",
            "C2_STANDARD_4",
            "C2_STANDARD_8",
            "C2_STANDARD_16",
            "C2_STANDARD_30",
            "C2_STANDARD_60",
            "C2D_STANDARD_2",
            "C2D_STANDARD_4",
            "C2D_STANDARD_8",
            "C2D_STANDARD_16",
            "C2D_STANDARD_32",
            "C2D_STANDARD_56",
            "C2D_STANDARD_112",
            "C2D_HIGHCPU_2",
            "C2D_HIGHCPU_4",
            "C2D_HIGHCPU_8",
            "C2D_HIGHCPU_16",
            "C2D_HIGHCPU_32",
            "C2D_HIGHCPU_56",
            "C2D_HIGHCPU_112",
            "C2D_HIGHMEM_2",
            "C2D_HIGHMEM_4",
            "C2D_HIGHMEM_8",
            "C2D_HIGHMEM_16",
            "C2D_HIGHMEM_32",
            "C2D_HIGHMEM_56",
            "C2D_HIGHMEM_112",
            "G2_STANDARD_4",
            "G2_STANDARD_8",
            "G2_STANDARD_12",
            "G2_STANDARD_16",
            "G2_STANDARD_24",
            "G2_STANDARD_32",
            "G2_STANDARD_48",
            "G2_STANDARD_96",
            "G4_STANDARD_48",
            "C3_STANDARD_4",
            "C3_STANDARD_8",
            "C3_STANDARD_22",
            "C3_STANDARD_44",
            "C3_STANDARD_88",
            "C3_STANDARD_176",
            "C3_HIGHCPU_4",
            "C3_HIGHCPU_8",
            "C3_HIGHCPU_22",
            "C3_HIGHCPU_44",
            "C3_HIGHCPU_88",
            "C3_HIGHCPU_176",
            "C3_HIGHMEM_4",
            "C3_HIGHMEM_8",
            "C3_HIGHMEM_22",
            "C3_HIGHMEM_44",
            "C3_HIGHMEM_88",
            "C3_HIGHMEM_176",
            "C4_STANDARD_8",
            "C4_STANDARD_16",
            "C4_STANDARD_24",
            "C4_STANDARD_32",
            "C4_STANDARD_48",
            "C4_STANDARD_96",
            "C4_STANDARD_144",
            "C4_STANDARD_192",
            "C4_STANDARD_288",
            "C4_HIGHCPU_8",
            "C4_HIGHCPU_16",
            "C4_HIGHCPU_24",
            "C4_HIGHCPU_32",
            "C4_HIGHCPU_48",
            "C4_HIGHCPU_96",
            "C4_HIGHCPU_144",
            "C4_HIGHCPU_192",
            "C4_HIGHCPU_288",
            "C4_HIGHMEM_8",
            "C4_HIGHMEM_16",
            "C4_HIGHMEM_24",
            "C4_HIGHMEM_32",
            "C4_HIGHMEM_48",
            "C4_HIGHMEM_96",
            "C4_HIGHMEM_144",
            "C4_HIGHMEM_192",
            "C4_HIGHMEM_288",
            "C4A_STANDARD_8",
            "C4A_STANDARD_16",
            "C4A_STANDARD_32",
            "C4A_STANDARD_48",
            "C4A_STANDARD_64",
            "C4A_STANDARD_72",
            "C4A_HIGHCPU_8",
            "C4A_HIGHCPU_16",
            "C4A_HIGHCPU_32",
            "C4A_HIGHCPU_48",
            "C4A_HIGHCPU_64",
            "C4A_HIGHCPU_72",
            "C4A_HIGHMEM_8",
            "C4A_HIGHMEM_16",
            "C4A_HIGHMEM_32",
            "C4A_HIGHMEM_48",
            "C4A_HIGHMEM_64",
            "C4A_HIGHMEM_72",
            "C4D_STANDARD_8",
            "C4D_STANDARD_16",
            "C4D_STANDARD_32",
            "C4D_STANDARD_48",
            "C4D_STANDARD_64",
            "C4D_STANDARD_96",
            "C4D_STANDARD_192",
            "C4D_STANDARD_384",
            "C4D_HIGHCPU_8",
            "C4D_HIGHCPU_16",
            "C4D_HIGHCPU_32",
            "C4D_HIGHCPU_48",
            "C4D_HIGHCPU_64",
            "C4D_HIGHCPU_96",
            "C4D_HIGHCPU_192",
            "C4D_HIGHCPU_384",
            "C4D_HIGHMEM_8",
            "C4D_HIGHMEM_16",
            "C4D_HIGHMEM_32",
            "C4D_HIGHMEM_48",
            "C4D_HIGHMEM_64",
            "C4D_HIGHMEM_96",
            "C4D_HIGHMEM_192",
            "C4D_HIGHMEM_384",
            "N4_STANDARD_2",
            "N4_STANDARD_4",
            "N4_STANDARD_8",
            "N4_STANDARD_16",
            "N4_STANDARD_32",
            "N4_STANDARD_48",
            "N4_STANDARD_64",
            "N4_STANDARD_80",
            "N4_HIGHCPU_2",
            "N4_HIGHCPU_4",
            "N4_HIGHCPU_8",
            "N4_HIGHCPU_16",
            "N4_HIGHCPU_32",
            "N4_HIGHCPU_48",
            "N4_HIGHCPU_64",
            "N4_HIGHCPU_80",
            "N4_HIGHMEM_2",
            "N4_HIGHMEM_4",
            "N4_HIGHMEM_8",
            "N4_HIGHMEM_16",
            "N4_HIGHMEM_32",
            "N4_HIGHMEM_48",
            "N4_HIGHMEM_64",
            "N4_HIGHMEM_80",
            "N4A_STANDARD_8",
            "N4A_STANDARD_16",
            "N4A_STANDARD_32",
            "N4A_STANDARD_48",
            "N4A_STANDARD_64",
            "N4A_HIGHCPU_8",
            "N4A_HIGHCPU_16",
            "N4A_HIGHCPU_32",
            "N4A_HIGHCPU_48",
            "N4A_HIGHCPU_64",
            "N4A_HIGHMEM_8",
            "N4A_HIGHMEM_16",
            "N4A_HIGHMEM_32",
            "N4A_HIGHMEM_48",
            "N4A_HIGHMEM_64",
            "C3D_STANDARD_8",
            "C3D_STANDARD_16",
            "C3D_STANDARD_30",
            "C3D_STANDARD_60",
            "C3D_STANDARD_90",
            "C3D_STANDARD_180",
            "C3D_STANDARD_360",
            "C3D_HIGHCPU_8",
            "C3D_HIGHCPU_16",
            "C3D_HIGHCPU_30",
            "C3D_HIGHCPU_60",
            "C3D_HIGHCPU_90",
            "C3D_HIGHCPU_180",
            "C3D_HIGHCPU_360",
            "C3D_HIGHMEM_8",
            "C3D_HIGHMEM_16",
            "C3D_HIGHMEM_30",
            "C3D_HIGHMEM_60",
            "C3D_HIGHMEM_90",
            "C3D_HIGHMEM_180",
            "C3D_HIGHMEM_360"
          ]
        },
        "trackingLabels": {
          "description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "RamMetric": {
      "id": "RamMetric",
      "type": "object",
      "properties": {
        "ramType": {
          "description": "Required. Type of ram.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "COMPUTE_OPTIMIZED",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "MEMORY_OPTIMIZED_UPGRADE_PREMIUM",
            "MEMORY_OPTIMIZED",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_RAM_TYPE",
            "A2",
            "A3",
            "A4",
            "A4X",
            "C2",
            "C2D",
            "CUSTOM",
            "E2",
            "G2",
            "G4",
            "C4",
            "C4A",
            "C4D",
            "N4",
            "N4A",
            "C3D",
            "C3",
            "M2",
            "M1",
            "N1",
            "N2_CUSTOM",
            "N2",
            "N2D"
          ]
        },
        "gibSec": {
          "description": "Required. VM memory in Gigabyte second, e.g. 3600. Using int64 type to match billing metrics definition.",
          "type": "string",
          "format": "int64"
        },
        "memories": {
          "description": "Required. VM memory in gb.",
          "type": "number",
          "format": "double"
        },
        "machineSpec": {
          "description": "Required. Machine spec, e.g. N1_STANDARD_4.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_MACHINE_SPEC",
            "N1_STANDARD_2",
            "N1_STANDARD_4",
            "N1_STANDARD_8",
            "N1_STANDARD_16",
            "N1_STANDARD_32",
            "N1_STANDARD_64",
            "N1_STANDARD_96",
            "N1_HIGHMEM_2",
            "N1_HIGHMEM_4",
            "N1_HIGHMEM_8",
            "N1_HIGHMEM_16",
            "N1_HIGHMEM_32",
            "N1_HIGHMEM_64",
            "N1_HIGHMEM_96",
            "N1_HIGHCPU_2",
            "N1_HIGHCPU_4",
            "N1_HIGHCPU_8",
            "N1_HIGHCPU_16",
            "N1_HIGHCPU_32",
            "N1_HIGHCPU_64",
            "N1_HIGHCPU_96",
            "A2_HIGHGPU_1G",
            "A2_HIGHGPU_2G",
            "A2_HIGHGPU_4G",
            "A2_HIGHGPU_8G",
            "A2_MEGAGPU_16G",
            "A2_ULTRAGPU_1G",
            "A2_ULTRAGPU_2G",
            "A2_ULTRAGPU_4G",
            "A2_ULTRAGPU_8G",
            "A3_HIGHGPU_1G",
            "A3_HIGHGPU_2G",
            "A3_HIGHGPU_4G",
            "A3_HIGHGPU_8G",
            "A3_MEGAGPU_8G",
            "A3_ULTRAGPU_8G",
            "A3_EDGEGPU_8G",
            "A4_HIGHGPU_8G",
            "A4X_HIGHGPU_4G",
            "E2_STANDARD_2",
            "E2_STANDARD_4",
            "E2_STANDARD_8",
            "E2_STANDARD_16",
            "E2_STANDARD_32",
            "E2_HIGHMEM_2",
            "E2_HIGHMEM_4",
            "E2_HIGHMEM_8",
            "E2_HIGHMEM_16",
            "E2_HIGHCPU_2",
            "E2_HIGHCPU_4",
            "E2_HIGHCPU_8",
            "E2_HIGHCPU_16",
            "E2_HIGHCPU_32",
            "N2_STANDARD_2",
            "N2_STANDARD_4",
            "N2_STANDARD_8",
            "N2_STANDARD_16",
            "N2_STANDARD_32",
            "N2_STANDARD_48",
            "N2_STANDARD_64",
            "N2_STANDARD_80",
            "N2_STANDARD_96",
            "N2_STANDARD_128",
            "N2_HIGHMEM_2",
            "N2_HIGHMEM_4",
            "N2_HIGHMEM_8",
            "N2_HIGHMEM_16",
            "N2_HIGHMEM_32",
            "N2_HIGHMEM_48",
            "N2_HIGHMEM_64",
            "N2_HIGHMEM_80",
            "N2_HIGHMEM_96",
            "N2_HIGHMEM_128",
            "N2_HIGHCPU_2",
            "N2_HIGHCPU_4",
            "N2_HIGHCPU_8",
            "N2_HIGHCPU_16",
            "N2_HIGHCPU_32",
            "N2_HIGHCPU_48",
            "N2_HIGHCPU_64",
            "N2_HIGHCPU_80",
            "N2_HIGHCPU_96",
            "N2D_STANDARD_2",
            "N2D_STANDARD_4",
            "N2D_STANDARD_8",
            "N2D_STANDARD_16",
            "N2D_STANDARD_32",
            "N2D_STANDARD_48",
            "N2D_STANDARD_64",
            "N2D_STANDARD_80",
            "N2D_STANDARD_96",
            "N2D_STANDARD_128",
            "N2D_STANDARD_224",
            "N2D_HIGHMEM_2",
            "N2D_HIGHMEM_4",
            "N2D_HIGHMEM_8",
            "N2D_HIGHMEM_16",
            "N2D_HIGHMEM_32",
            "N2D_HIGHMEM_48",
            "N2D_HIGHMEM_64",
            "N2D_HIGHMEM_80",
            "N2D_HIGHMEM_96",
            "N2D_HIGHCPU_2",
            "N2D_HIGHCPU_4",
            "N2D_HIGHCPU_8",
            "N2D_HIGHCPU_16",
            "N2D_HIGHCPU_32",
            "N2D_HIGHCPU_48",
            "N2D_HIGHCPU_64",
            "N2D_HIGHCPU_80",
            "N2D_HIGHCPU_96",
            "N2D_HIGHCPU_128",
            "N2D_HIGHCPU_224",
            "C2_STANDARD_4",
            "C2_STANDARD_8",
            "C2_STANDARD_16",
            "C2_STANDARD_30",
            "C2_STANDARD_60",
            "C2D_STANDARD_2",
            "C2D_STANDARD_4",
            "C2D_STANDARD_8",
            "C2D_STANDARD_16",
            "C2D_STANDARD_32",
            "C2D_STANDARD_56",
            "C2D_STANDARD_112",
            "C2D_HIGHCPU_2",
            "C2D_HIGHCPU_4",
            "C2D_HIGHCPU_8",
            "C2D_HIGHCPU_16",
            "C2D_HIGHCPU_32",
            "C2D_HIGHCPU_56",
            "C2D_HIGHCPU_112",
            "C2D_HIGHMEM_2",
            "C2D_HIGHMEM_4",
            "C2D_HIGHMEM_8",
            "C2D_HIGHMEM_16",
            "C2D_HIGHMEM_32",
            "C2D_HIGHMEM_56",
            "C2D_HIGHMEM_112",
            "G2_STANDARD_4",
            "G2_STANDARD_8",
            "G2_STANDARD_12",
            "G2_STANDARD_16",
            "G2_STANDARD_24",
            "G2_STANDARD_32",
            "G2_STANDARD_48",
            "G2_STANDARD_96",
            "G4_STANDARD_48",
            "C3_STANDARD_4",
            "C3_STANDARD_8",
            "C3_STANDARD_22",
            "C3_STANDARD_44",
            "C3_STANDARD_88",
            "C3_STANDARD_176",
            "C3_HIGHCPU_4",
            "C3_HIGHCPU_8",
            "C3_HIGHCPU_22",
            "C3_HIGHCPU_44",
            "C3_HIGHCPU_88",
            "C3_HIGHCPU_176",
            "C3_HIGHMEM_4",
            "C3_HIGHMEM_8",
            "C3_HIGHMEM_22",
            "C3_HIGHMEM_44",
            "C3_HIGHMEM_88",
            "C3_HIGHMEM_176",
            "C4_STANDARD_8",
            "C4_STANDARD_16",
            "C4_STANDARD_24",
            "C4_STANDARD_32",
            "C4_STANDARD_48",
            "C4_STANDARD_96",
            "C4_STANDARD_144",
            "C4_STANDARD_192",
            "C4_STANDARD_288",
            "C4_HIGHCPU_8",
            "C4_HIGHCPU_16",
            "C4_HIGHCPU_24",
            "C4_HIGHCPU_32",
            "C4_HIGHCPU_48",
            "C4_HIGHCPU_96",
            "C4_HIGHCPU_144",
            "C4_HIGHCPU_192",
            "C4_HIGHCPU_288",
            "C4_HIGHMEM_8",
            "C4_HIGHMEM_16",
            "C4_HIGHMEM_24",
            "C4_HIGHMEM_32",
            "C4_HIGHMEM_48",
            "C4_HIGHMEM_96",
            "C4_HIGHMEM_144",
            "C4_HIGHMEM_192",
            "C4_HIGHMEM_288",
            "C4A_STANDARD_8",
            "C4A_STANDARD_16",
            "C4A_STANDARD_32",
            "C4A_STANDARD_48",
            "C4A_STANDARD_64",
            "C4A_STANDARD_72",
            "C4A_HIGHCPU_8",
            "C4A_HIGHCPU_16",
            "C4A_HIGHCPU_32",
            "C4A_HIGHCPU_48",
            "C4A_HIGHCPU_64",
            "C4A_HIGHCPU_72",
            "C4A_HIGHMEM_8",
            "C4A_HIGHMEM_16",
            "C4A_HIGHMEM_32",
            "C4A_HIGHMEM_48",
            "C4A_HIGHMEM_64",
            "C4A_HIGHMEM_72",
            "C4D_STANDARD_8",
            "C4D_STANDARD_16",
            "C4D_STANDARD_32",
            "C4D_STANDARD_48",
            "C4D_STANDARD_64",
            "C4D_STANDARD_96",
            "C4D_STANDARD_192",
            "C4D_STANDARD_384",
            "C4D_HIGHCPU_8",
            "C4D_HIGHCPU_16",
            "C4D_HIGHCPU_32",
            "C4D_HIGHCPU_48",
            "C4D_HIGHCPU_64",
            "C4D_HIGHCPU_96",
            "C4D_HIGHCPU_192",
            "C4D_HIGHCPU_384",
            "C4D_HIGHMEM_8",
            "C4D_HIGHMEM_16",
            "C4D_HIGHMEM_32",
            "C4D_HIGHMEM_48",
            "C4D_HIGHMEM_64",
            "C4D_HIGHMEM_96",
            "C4D_HIGHMEM_192",
            "C4D_HIGHMEM_384",
            "N4_STANDARD_2",
            "N4_STANDARD_4",
            "N4_STANDARD_8",
            "N4_STANDARD_16",
            "N4_STANDARD_32",
            "N4_STANDARD_48",
            "N4_STANDARD_64",
            "N4_STANDARD_80",
            "N4_HIGHCPU_2",
            "N4_HIGHCPU_4",
            "N4_HIGHCPU_8",
            "N4_HIGHCPU_16",
            "N4_HIGHCPU_32",
            "N4_HIGHCPU_48",
            "N4_HIGHCPU_64",
            "N4_HIGHCPU_80",
            "N4_HIGHMEM_2",
            "N4_HIGHMEM_4",
            "N4_HIGHMEM_8",
            "N4_HIGHMEM_16",
            "N4_HIGHMEM_32",
            "N4_HIGHMEM_48",
            "N4_HIGHMEM_64",
            "N4_HIGHMEM_80",
            "N4A_STANDARD_8",
            "N4A_STANDARD_16",
            "N4A_STANDARD_32",
            "N4A_STANDARD_48",
            "N4A_STANDARD_64",
            "N4A_HIGHCPU_8",
            "N4A_HIGHCPU_16",
            "N4A_HIGHCPU_32",
            "N4A_HIGHCPU_48",
            "N4A_HIGHCPU_64",
            "N4A_HIGHMEM_8",
            "N4A_HIGHMEM_16",
            "N4A_HIGHMEM_32",
            "N4A_HIGHMEM_48",
            "N4A_HIGHMEM_64",
            "C3D_STANDARD_8",
            "C3D_STANDARD_16",
            "C3D_STANDARD_30",
            "C3D_STANDARD_60",
            "C3D_STANDARD_90",
            "C3D_STANDARD_180",
            "C3D_STANDARD_360",
            "C3D_HIGHCPU_8",
            "C3D_HIGHCPU_16",
            "C3D_HIGHCPU_30",
            "C3D_HIGHCPU_60",
            "C3D_HIGHCPU_90",
            "C3D_HIGHCPU_180",
            "C3D_HIGHCPU_360",
            "C3D_HIGHMEM_8",
            "C3D_HIGHMEM_16",
            "C3D_HIGHMEM_30",
            "C3D_HIGHMEM_60",
            "C3D_HIGHMEM_90",
            "C3D_HIGHMEM_180",
            "C3D_HIGHMEM_360"
          ]
        },
        "trackingLabels": {
          "description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "GpuMetric": {
      "id": "GpuMetric",
      "type": "object",
      "properties": {
        "gpuType": {
          "description": "Required. Type of GPU, e.g. NVIDIA_TESLA_V100.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_GPU_TYPE",
            "NVIDIA_TESLA_A100",
            "NVIDIA_A100_80GB",
            "NVIDIA_B200",
            "NVIDIA_GB200",
            "NVIDIA_TESLA_K80",
            "NVIDIA_L4",
            "NVIDIA_TESLA_P100",
            "NVIDIA_TESLA_P4",
            "NVIDIA_TESLA_T4",
            "NVIDIA_TESLA_V100",
            "NVIDIA_H100_80GB",
            "NVIDIA_H100_MEGA_80GB",
            "NVIDIA_H200_141GB",
            "NVIDIA_RTX_PRO_6000"
          ]
        },
        "gpuSec": {
          "description": "Required. Seconds of GPU usage, e.g. 3600.",
          "type": "string",
          "format": "int64"
        },
        "machineSpec": {
          "description": "Required. Machine spec, e.g. N1_STANDARD_4.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_MACHINE_SPEC",
            "N1_STANDARD_2",
            "N1_STANDARD_4",
            "N1_STANDARD_8",
            "N1_STANDARD_16",
            "N1_STANDARD_32",
            "N1_STANDARD_64",
            "N1_STANDARD_96",
            "N1_HIGHMEM_2",
            "N1_HIGHMEM_4",
            "N1_HIGHMEM_8",
            "N1_HIGHMEM_16",
            "N1_HIGHMEM_32",
            "N1_HIGHMEM_64",
            "N1_HIGHMEM_96",
            "N1_HIGHCPU_2",
            "N1_HIGHCPU_4",
            "N1_HIGHCPU_8",
            "N1_HIGHCPU_16",
            "N1_HIGHCPU_32",
            "N1_HIGHCPU_64",
            "N1_HIGHCPU_96",
            "A2_HIGHGPU_1G",
            "A2_HIGHGPU_2G",
            "A2_HIGHGPU_4G",
            "A2_HIGHGPU_8G",
            "A2_MEGAGPU_16G",
            "A2_ULTRAGPU_1G",
            "A2_ULTRAGPU_2G",
            "A2_ULTRAGPU_4G",
            "A2_ULTRAGPU_8G",
            "A3_HIGHGPU_1G",
            "A3_HIGHGPU_2G",
            "A3_HIGHGPU_4G",
            "A3_HIGHGPU_8G",
            "A3_MEGAGPU_8G",
            "A3_ULTRAGPU_8G",
            "A3_EDGEGPU_8G",
            "A4_HIGHGPU_8G",
            "A4X_HIGHGPU_4G",
            "E2_STANDARD_2",
            "E2_STANDARD_4",
            "E2_STANDARD_8",
            "E2_STANDARD_16",
            "E2_STANDARD_32",
            "E2_HIGHMEM_2",
            "E2_HIGHMEM_4",
            "E2_HIGHMEM_8",
            "E2_HIGHMEM_16",
            "E2_HIGHCPU_2",
            "E2_HIGHCPU_4",
            "E2_HIGHCPU_8",
            "E2_HIGHCPU_16",
            "E2_HIGHCPU_32",
            "N2_STANDARD_2",
            "N2_STANDARD_4",
            "N2_STANDARD_8",
            "N2_STANDARD_16",
            "N2_STANDARD_32",
            "N2_STANDARD_48",
            "N2_STANDARD_64",
            "N2_STANDARD_80",
            "N2_STANDARD_96",
            "N2_STANDARD_128",
            "N2_HIGHMEM_2",
            "N2_HIGHMEM_4",
            "N2_HIGHMEM_8",
            "N2_HIGHMEM_16",
            "N2_HIGHMEM_32",
            "N2_HIGHMEM_48",
            "N2_HIGHMEM_64",
            "N2_HIGHMEM_80",
            "N2_HIGHMEM_96",
            "N2_HIGHMEM_128",
            "N2_HIGHCPU_2",
            "N2_HIGHCPU_4",
            "N2_HIGHCPU_8",
            "N2_HIGHCPU_16",
            "N2_HIGHCPU_32",
            "N2_HIGHCPU_48",
            "N2_HIGHCPU_64",
            "N2_HIGHCPU_80",
            "N2_HIGHCPU_96",
            "N2D_STANDARD_2",
            "N2D_STANDARD_4",
            "N2D_STANDARD_8",
            "N2D_STANDARD_16",
            "N2D_STANDARD_32",
            "N2D_STANDARD_48",
            "N2D_STANDARD_64",
            "N2D_STANDARD_80",
            "N2D_STANDARD_96",
            "N2D_STANDARD_128",
            "N2D_STANDARD_224",
            "N2D_HIGHMEM_2",
            "N2D_HIGHMEM_4",
            "N2D_HIGHMEM_8",
            "N2D_HIGHMEM_16",
            "N2D_HIGHMEM_32",
            "N2D_HIGHMEM_48",
            "N2D_HIGHMEM_64",
            "N2D_HIGHMEM_80",
            "N2D_HIGHMEM_96",
            "N2D_HIGHCPU_2",
            "N2D_HIGHCPU_4",
            "N2D_HIGHCPU_8",
            "N2D_HIGHCPU_16",
            "N2D_HIGHCPU_32",
            "N2D_HIGHCPU_48",
            "N2D_HIGHCPU_64",
            "N2D_HIGHCPU_80",
            "N2D_HIGHCPU_96",
            "N2D_HIGHCPU_128",
            "N2D_HIGHCPU_224",
            "C2_STANDARD_4",
            "C2_STANDARD_8",
            "C2_STANDARD_16",
            "C2_STANDARD_30",
            "C2_STANDARD_60",
            "C2D_STANDARD_2",
            "C2D_STANDARD_4",
            "C2D_STANDARD_8",
            "C2D_STANDARD_16",
            "C2D_STANDARD_32",
            "C2D_STANDARD_56",
            "C2D_STANDARD_112",
            "C2D_HIGHCPU_2",
            "C2D_HIGHCPU_4",
            "C2D_HIGHCPU_8",
            "C2D_HIGHCPU_16",
            "C2D_HIGHCPU_32",
            "C2D_HIGHCPU_56",
            "C2D_HIGHCPU_112",
            "C2D_HIGHMEM_2",
            "C2D_HIGHMEM_4",
            "C2D_HIGHMEM_8",
            "C2D_HIGHMEM_16",
            "C2D_HIGHMEM_32",
            "C2D_HIGHMEM_56",
            "C2D_HIGHMEM_112",
            "G2_STANDARD_4",
            "G2_STANDARD_8",
            "G2_STANDARD_12",
            "G2_STANDARD_16",
            "G2_STANDARD_24",
            "G2_STANDARD_32",
            "G2_STANDARD_48",
            "G2_STANDARD_96",
            "G4_STANDARD_48",
            "C3_STANDARD_4",
            "C3_STANDARD_8",
            "C3_STANDARD_22",
            "C3_STANDARD_44",
            "C3_STANDARD_88",
            "C3_STANDARD_176",
            "C3_HIGHCPU_4",
            "C3_HIGHCPU_8",
            "C3_HIGHCPU_22",
            "C3_HIGHCPU_44",
            "C3_HIGHCPU_88",
            "C3_HIGHCPU_176",
            "C3_HIGHMEM_4",
            "C3_HIGHMEM_8",
            "C3_HIGHMEM_22",
            "C3_HIGHMEM_44",
            "C3_HIGHMEM_88",
            "C3_HIGHMEM_176",
            "C4_STANDARD_8",
            "C4_STANDARD_16",
            "C4_STANDARD_24",
            "C4_STANDARD_32",
            "C4_STANDARD_48",
            "C4_STANDARD_96",
            "C4_STANDARD_144",
            "C4_STANDARD_192",
            "C4_STANDARD_288",
            "C4_HIGHCPU_8",
            "C4_HIGHCPU_16",
            "C4_HIGHCPU_24",
            "C4_HIGHCPU_32",
            "C4_HIGHCPU_48",
            "C4_HIGHCPU_96",
            "C4_HIGHCPU_144",
            "C4_HIGHCPU_192",
            "C4_HIGHCPU_288",
            "C4_HIGHMEM_8",
            "C4_HIGHMEM_16",
            "C4_HIGHMEM_24",
            "C4_HIGHMEM_32",
            "C4_HIGHMEM_48",
            "C4_HIGHMEM_96",
            "C4_HIGHMEM_144",
            "C4_HIGHMEM_192",
            "C4_HIGHMEM_288",
            "C4A_STANDARD_8",
            "C4A_STANDARD_16",
            "C4A_STANDARD_32",
            "C4A_STANDARD_48",
            "C4A_STANDARD_64",
            "C4A_STANDARD_72",
            "C4A_HIGHCPU_8",
            "C4A_HIGHCPU_16",
            "C4A_HIGHCPU_32",
            "C4A_HIGHCPU_48",
            "C4A_HIGHCPU_64",
            "C4A_HIGHCPU_72",
            "C4A_HIGHMEM_8",
            "C4A_HIGHMEM_16",
            "C4A_HIGHMEM_32",
            "C4A_HIGHMEM_48",
            "C4A_HIGHMEM_64",
            "C4A_HIGHMEM_72",
            "C4D_STANDARD_8",
            "C4D_STANDARD_16",
            "C4D_STANDARD_32",
            "C4D_STANDARD_48",
            "C4D_STANDARD_64",
            "C4D_STANDARD_96",
            "C4D_STANDARD_192",
            "C4D_STANDARD_384",
            "C4D_HIGHCPU_8",
            "C4D_HIGHCPU_16",
            "C4D_HIGHCPU_32",
            "C4D_HIGHCPU_48",
            "C4D_HIGHCPU_64",
            "C4D_HIGHCPU_96",
            "C4D_HIGHCPU_192",
            "C4D_HIGHCPU_384",
            "C4D_HIGHMEM_8",
            "C4D_HIGHMEM_16",
            "C4D_HIGHMEM_32",
            "C4D_HIGHMEM_48",
            "C4D_HIGHMEM_64",
            "C4D_HIGHMEM_96",
            "C4D_HIGHMEM_192",
            "C4D_HIGHMEM_384",
            "N4_STANDARD_2",
            "N4_STANDARD_4",
            "N4_STANDARD_8",
            "N4_STANDARD_16",
            "N4_STANDARD_32",
            "N4_STANDARD_48",
            "N4_STANDARD_64",
            "N4_STANDARD_80",
            "N4_HIGHCPU_2",
            "N4_HIGHCPU_4",
            "N4_HIGHCPU_8",
            "N4_HIGHCPU_16",
            "N4_HIGHCPU_32",
            "N4_HIGHCPU_48",
            "N4_HIGHCPU_64",
            "N4_HIGHCPU_80",
            "N4_HIGHMEM_2",
            "N4_HIGHMEM_4",
            "N4_HIGHMEM_8",
            "N4_HIGHMEM_16",
            "N4_HIGHMEM_32",
            "N4_HIGHMEM_48",
            "N4_HIGHMEM_64",
            "N4_HIGHMEM_80",
            "N4A_STANDARD_8",
            "N4A_STANDARD_16",
            "N4A_STANDARD_32",
            "N4A_STANDARD_48",
            "N4A_STANDARD_64",
            "N4A_HIGHCPU_8",
            "N4A_HIGHCPU_16",
            "N4A_HIGHCPU_32",
            "N4A_HIGHCPU_48",
            "N4A_HIGHCPU_64",
            "N4A_HIGHMEM_8",
            "N4A_HIGHMEM_16",
            "N4A_HIGHMEM_32",
            "N4A_HIGHMEM_48",
            "N4A_HIGHMEM_64",
            "C3D_STANDARD_8",
            "C3D_STANDARD_16",
            "C3D_STANDARD_30",
            "C3D_STANDARD_60",
            "C3D_STANDARD_90",
            "C3D_STANDARD_180",
            "C3D_STANDARD_360",
            "C3D_HIGHCPU_8",
            "C3D_HIGHCPU_16",
            "C3D_HIGHCPU_30",
            "C3D_HIGHCPU_60",
            "C3D_HIGHCPU_90",
            "C3D_HIGHCPU_180",
            "C3D_HIGHCPU_360",
            "C3D_HIGHMEM_8",
            "C3D_HIGHMEM_16",
            "C3D_HIGHMEM_30",
            "C3D_HIGHMEM_60",
            "C3D_HIGHMEM_90",
            "C3D_HIGHMEM_180",
            "C3D_HIGHMEM_360"
          ]
        },
        "trackingLabels": {
          "description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "TpuMetric": {
      "id": "TpuMetric",
      "type": "object",
      "properties": {
        "tpuType": {
          "description": "Required. Type of TPU, e.g. TPU_V2, TPU_V3_POD.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_TPU_TYPE",
            "TPU_V2_POD",
            "TPU_V2",
            "TPU_V3_POD",
            "TPU_V3",
            "TPU_V5_LITEPOD"
          ]
        },
        "tpuSec": {
          "description": "Required. Seconds of TPU usage, e.g. 3600.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "DiskMetric": {
      "id": "DiskMetric",
      "type": "object",
      "properties": {
        "diskType": {
          "description": "Required. Type of Disk, e.g. REGIONAL_SSD.",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "UNKNOWN_DISK_TYPE",
            "REGIONAL_SSD",
            "REGIONAL_STORAGE",
            "PD_SSD",
            "PD_STANDARD",
            "STORAGE_SNAPSHOT"
          ]
        },
        "gibSec": {
          "description": "Required. Seconds of physical disk usage, e.g. 3600.",
          "type": "string",
          "format": "int64"
        }
      }
    }
  },
  "version": "v1",
  "ownerDomain": "google.com",
  "mtlsRootUrl": "https://language.mtls.googleapis.com/",
  "revision": "20260510",
  "batchPath": "batch",
  "id": "language:v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "name": "language"
}
