{
  "discoveryVersion": "v1",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/content": {
          "description": "Manage your product listings and accounts for Google Shopping"
        }
      }
    }
  },
  "resources": {
    "accounts": {
      "resources": {
        "productInputs": {
          "methods": {
            "insert": {
              "id": "merchantapi.accounts.productInputs.insert",
              "path": "products/v1/{+parent}/productInputs:insert",
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "location": "path",
                  "description": "Required. The account where this product will be inserted. Format: `accounts/{account}`",
                  "type": "string",
                  "required": true,
                  "pattern": "^accounts/[^/]+$"
                },
                "dataSource": {
                  "description": "Required. The primary or supplemental product data source name. If the product already exists and data source provided is different, then the product will be moved to a new data source. For more information, see [Create a primary data source](https://developers.google.com/merchant/api/guides/data-sources/api-sources#create-primary-data-source). Only API data sources are supported. Format: `accounts/{account}/dataSources/{datasource}`. For example, `accounts/123456/dataSources/104628`.",
                  "type": "string",
                  "location": "query"
                }
              },
              "request": {
                "$ref": "ProductInput"
              },
              "response": {
                "$ref": "ProductInput"
              },
              "flatPath": "products/v1/accounts/{accountsId}/productInputs:insert",
              "description": "[Uploads a product input to your Merchant Center account](https://developers.google.com/merchant/api/guides/products/add-manage#add_a_product). You must have a products [data source](https://developers.google.com/merchant/api/guides/data-sources/api-sources#create-primary-data-source) to be able to insert a product. The unique identifier of the data source is passed as a query parameter in the request URL. If a product input with the same contentLanguage, offerId, and dataSource already exists, then the product input inserted by this method replaces that entry. After inserting, updating, or deleting a product input, it may take several minutes before the processed product can be retrieved.",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ]
            },
            "delete": {
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "response": {
                "$ref": "Empty"
              },
              "id": "merchantapi.accounts.productInputs.delete",
              "parameterOrder": [
                "name"
              ],
              "description": "Deletes a product input from your Merchant Center account. After inserting, updating, or deleting a product input, it may take several minutes before the processed product can be retrieved.",
              "flatPath": "products/v1/accounts/{accountsId}/productInputs/{productInputsId}",
              "path": "products/v1/{+name}",
              "httpMethod": "DELETE",
              "parameters": {
                "dataSource": {
                  "location": "query",
                  "type": "string",
                  "description": "Required. The primary or supplemental data source from which the product input should be deleted. Format: `accounts/{account}/dataSources/{datasource}`. For example, `accounts/123456/dataSources/104628`."
                },
                "name": {
                  "pattern": "^accounts/[^/]+/productInputs/[^/]+$",
                  "required": true,
                  "description": "Required. The name of the product input to delete. Format: `accounts/{account}/productInputs/{productInput}` The {productInput} segment is a unique identifier for the product. This identifier must be unique within a merchant account and generally follows the structure: `content_language~feed_label~offer_id`. Example: `en~US~sku123` For legacy local products, the structure is: `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123` The format of the {productInput} segment in the URL is automatically detected by the server, supporting two options: 1. **Encoded Format**: The `{productInput}` segment is an unpadded base64url encoded string (RFC 4648 Section 5). The decoded string must result in the `content_language~feed_label~offer_id` structure. This encoding MUST be used if any part of the product identifier (like `offer_id`) contains characters such as `/`, `%`, or `~`. * Example: To represent the product ID `en~US~sku/123`, the `{productInput}` segment must be the unpadded base64url encoding of this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name for the product would be `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`. 2. **Plain Format**: The `{productInput}` segment is the tilde-separated string `content_language~feed_label~offer_id`. This format is suitable only when `content_language`, `feed_label`, and `offer_id` do not contain URL-problematic characters like `/`, `%`, or `~`. We recommend using the **Encoded Format** for all product IDs to ensure correct parsing, especially those containing special characters. The presence of tilde (`~`) characters in the `{productInput}` segment is used to differentiate between the two formats.",
                  "location": "path",
                  "type": "string"
                }
              }
            },
            "patch": {
              "id": "merchantapi.accounts.productInputs.patch",
              "parameterOrder": [
                "name"
              ],
              "path": "products/v1/{+name}",
              "flatPath": "products/v1/accounts/{accountsId}/productInputs/{productInputsId}",
              "response": {
                "$ref": "ProductInput"
              },
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "type": "string",
                  "format": "google-fieldmask",
                  "description": "Optional. The list of product attributes to be updated. If the update mask is omitted, then it is treated as implied field mask equivalent to all fields that are populated (have a non-empty value). Attributes specified in the update mask without a value specified in the body will be deleted from the product. Update mask can only be specified for top level fields in attributes and custom attributes. To specify the update mask for custom attributes you need to add the `custom_attribute.` prefix. Providing special \"*\" value for full product replacement is not supported.",
                  "location": "query"
                },
                "dataSource": {
                  "location": "query",
                  "description": "Required. The primary or supplemental product data source where `data_source` name identifies the product input to be updated. Only API data sources are supported. Format: `accounts/{account}/dataSources/{datasource}`. For example, `accounts/123456/dataSources/104628`.",
                  "type": "string"
                },
                "name": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Identifier. The name of the product. Format: `accounts/{account}/productInputs/{productinput}` The {productinput} segment is a unique identifier for the product. This identifier must be unique within a merchant account and generally follows the structure: `content_language~feed_label~offer_id`. Example: `en~US~sku123` For legacy local products, the structure is: `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123` The format of the {productinput} segment in the URL is automatically detected by the server, supporting two options: 1. **Encoded Format**: The `{productinput}` segment is an unpadded base64url encoded string (RFC 4648 Section 5). The decoded string must result in the `content_language~feed_label~offer_id` structure. This encoding MUST be used if any part of the product identifier (like `offer_id`) contains characters such as `/`, `%`, or `~`. * Example: To represent the product ID `en~US~sku/123`, the `{productinput}` segment must be the unpadded base64url encoding of this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name for the product would be `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`. 2. **Plain Format**: The `{productinput}` segment is the tilde-separated string `content_language~feed_label~offer_id`. This format is suitable only when `content_language`, `feed_label`, and `offer_id` do not contain URL-problematic characters like `/`, `%`, or `~`. We recommend using the **Encoded Format** for all product IDs to ensure correct parsing, especially those containing special characters. The presence of tilde (`~`) characters in the `{productinput}` segment is used to differentiate between the two formats.",
                  "pattern": "^accounts/[^/]+/productInputs/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "request": {
                "$ref": "ProductInput"
              },
              "description": "Updates the existing product input in your Merchant Center account. The name of the product input to update is taken from the `name` field within the `ProductInput` resource. After inserting, updating, or deleting a product input, it may take several minutes before the processed product can be retrieved. For more information, see [Add and manage products](https://developers.google.com/merchant/api/guides/products/add-manage) and [Make frequent updates to your products](https://developers.google.com/merchant/api/guides/products/frequent-updates)."
            }
          }
        },
        "products": {
          "methods": {
            "list": {
              "path": "products/v1/{+parent}/products",
              "response": {
                "$ref": "ListProductsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "id": "merchantapi.accounts.products.list",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "description": "Lists the processed products in your Merchant Center account. The response might contain fewer items than specified by `pageSize`. Rely on `pageToken` to determine if there are more items to be requested. After inserting, updating, or deleting a product input, it may take several minutes before the updated processed product can be retrieved. For more information, see [List your products data and product issues](https://developers.google.com/merchant/api/guides/products/list-products-data-issues).",
              "flatPath": "products/v1/accounts/{accountsId}/products",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "type": "string",
                  "pattern": "^accounts/[^/]+$",
                  "required": true,
                  "description": "Required. The account to list processed products for. Format: `accounts/{account}`",
                  "location": "path"
                },
                "pageSize": {
                  "description": "The maximum number of products to return. The service may return fewer than this value. The maximum value is 1000; values above 1000 will be coerced to 1000. If unspecified, the default page size of 25 products will be returned.",
                  "format": "int32",
                  "location": "query",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "A page token, received from a previous `ListProducts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListProducts` must match the call that provided the page token.",
                  "location": "query",
                  "type": "string"
                }
              }
            },
            "get": {
              "path": "products/v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "products/v1/accounts/{accountsId}/products/{productsId}",
              "description": "Retrieves the processed product from your Merchant Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "pattern": "^accounts/[^/]+/products/[^/]+$",
                  "description": "Required. The name of the product. Format: `accounts/{account}/products/{product}` The `{product}` segment is a unique identifier for the product. This identifier must be unique within a merchant account and generally follows the structure: `content_language~feed_label~offer_id`. Example: `en~US~sku123` For legacy local products, the structure is: `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123` The format of the `{product}` segment in the URL is automatically detected by the server, supporting two options: 1. **Encoded Format**: The `{product}` segment is an unpadded base64url encoded string (RFC 4648 Section 5). The decoded string must result in the `content_language~feed_label~offer_id` structure. This encoding MUST be used if any part of the product identifier (like `offer_id`) contains characters such as `/`, `%`, or `~`. * Example: To represent the product ID `en~US~sku/123`, the `{product}` segment must be the unpadded base64url encoding of this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name for the product would be `accounts/123/products/ZW5-VVN-c2t1LzEyMw`. 2. **Plain Format**: The `{product}` segment is the tilde-separated string `content_language~feed_label~offer_id`. This format is suitable only when `content_language`, `feed_label`, and `offer_id` do not contain URL-problematic characters like `/`, `%`, or `~`. We recommend using the **Encoded Format** for all product IDs to ensure correct parsing, especially those containing special characters. The presence of tilde (`~`) characters in the `{product}` segment is used to differentiate between the two formats. Note: For calls to the v1beta version, the plain format is `channel~content_language~feed_label~offer_id`, for example: `accounts/123/products/online~en~US~sku123`.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Product"
              },
              "id": "merchantapi.accounts.products.get",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ]
            }
          }
        }
      }
    }
  },
  "revision": "20261111",
  "ownerName": "Google",
  "id": "merchantapi:products_v1",
  "fullyEncodeReservedExpansion": true,
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "version": "products_v1",
  "kind": "discovery#restDescription",
  "protocol": "rest",
  "documentationLink": "https://developers.google.com/merchant/api",
  "name": "merchantapi",
  "schemas": {
    "ProductMinimumOrderValue": {
      "type": "object",
      "properties": {
        "surface": {
          "enum": [
            "SURFACE_UNSPECIFIED",
            "ONLINE",
            "LOCAL",
            "ONLINE_LOCAL"
          ],
          "enumDescriptions": [
            "Indicates that the surface is unspecified. Defaults to `ONLINE_LOCAL`.",
            "Applies exclusively to delivery/shipping orders (all delivery routes).",
            "Applies exclusively to local in-store pickup (buy online, pickup in store). See [in-store pickup](https://support.google.com/merchants/answer/14634021).",
            "Applies to both delivery/shipping and local in-store pickup."
          ],
          "description": "The surface to which the minimum order value applies. Defaults to `ONLINE_LOCAL` if not configured.",
          "type": "string"
        },
        "price": {
          "description": "Required. The minimum cart or basket value before the checkout is permitted.",
          "$ref": "Price"
        },
        "service": {
          "description": "A free-form description of the service class or delivery speed. This should match the service value set for the Shipping attribute. See service.",
          "type": "string"
        },
        "country": {
          "type": "string",
          "description": "Required. The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which an item will ship."
        }
      },
      "id": "ProductMinimumOrderValue",
      "description": "[Minimum order value](https://support.google.com/merchants/answer/16989009) in the cart before the checkout is permitted."
    },
    "ProductChange": {
      "type": "object",
      "id": "ProductChange",
      "description": "The change that happened to the product including old value, new value, country code as the region code and reporting context.",
      "properties": {
        "newValue": {
          "description": "The new value of the changed resource or attribute. If empty, it means that the product was deleted. Will have one of these values : (`approved`, `pending`, `disapproved`, ``)",
          "type": "string"
        },
        "reportingContext": {
          "enum": [
            "REPORTING_CONTEXT_ENUM_UNSPECIFIED",
            "SHOPPING_ADS",
            "DISCOVERY_ADS",
            "DEMAND_GEN_ADS",
            "DEMAND_GEN_ADS_DISCOVER_SURFACE",
            "VIDEO_ADS",
            "DISPLAY_ADS",
            "LOCAL_INVENTORY_ADS",
            "VEHICLE_INVENTORY_ADS",
            "FREE_LISTINGS",
            "FREE_LISTINGS_UCP_CHECKOUT",
            "FREE_LOCAL_LISTINGS",
            "FREE_LOCAL_VEHICLE_LISTINGS",
            "YOUTUBE_AFFILIATE",
            "YOUTUBE_SHOPPING",
            "CLOUD_RETAIL",
            "LOCAL_CLOUD_RETAIL",
            "PRODUCT_REVIEWS",
            "MERCHANT_REVIEWS",
            "YOUTUBE_CHECKOUT",
            "RENTAL_ADS"
          ],
          "enumDescriptions": [
            "Not specified.",
            "[Shopping ads](https://support.google.com/merchants/answer/6149970).",
            "Deprecated: Use `DEMAND_GEN_ADS` instead. [Discovery and Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads on Discover surface](https://support.google.com/merchants/answer/13389785).",
            "[Video ads](https://support.google.com/google-ads/answer/6340491).",
            "[Display ads](https://support.google.com/merchants/answer/6069387).",
            "[Local inventory ads](https://support.google.com/merchants/answer/3271956).",
            "[Vehicle inventory ads](https://support.google.com/merchants/answer/11544533).",
            "[Free product listings](https://support.google.com/merchants/answer/9199328).",
            "[Free product listings on UCP checkout](https://developers.google.com/merchant/ucp).",
            "[Free local product listings](https://support.google.com/merchants/answer/9825611).",
            "[Free local vehicle listings](https://support.google.com/merchants/answer/11544533).",
            "[Youtube Affiliate](https://support.google.com/youtube/answer/13376398).",
            "[YouTube Shopping](https://support.google.com/merchants/answer/13478370).",
            "[Cloud retail](https://cloud.google.com/solutions/retail).",
            "[Local cloud retail](https://cloud.google.com/solutions/retail).",
            "[Product Reviews](https://support.google.com/merchants/answer/14620732).",
            "[Merchant Reviews](https://developers.google.com/merchant-review-feeds).",
            "YouTube Checkout .",
            "Real Estate Rental Ads. ."
          ],
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "description": "Reporting contexts that have the change (if applicable). Currently this field supports only (`SHOPPING_ADS`, `LOCAL_INVENTORY_ADS`, `YOUTUBE_SHOPPING`, `YOUTUBE_CHECKOUT`, `YOUTUBE_AFFILIATE`) from the enum value [ReportingContextEnum](/merchant/api/reference/rest/Shared.Types/ReportingContextEnum)",
          "type": "string"
        },
        "regionCode": {
          "description": "Countries that have the change (if applicable). Represented in the ISO 3166 format.",
          "type": "string"
        },
        "oldValue": {
          "description": "The old value of the changed resource or attribute. If empty, it means that the product was created. Will have one of these values : (`approved`, `pending`, `disapproved`, ``)",
          "type": "string"
        }
      }
    },
    "ListProductsResponse": {
      "properties": {
        "products": {
          "items": {
            "$ref": "Product"
          },
          "type": "array",
          "description": "The processed products from the specified account. These are your processed products after applying rules and supplemental data sources."
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "type": "object",
      "description": "Response message for the ListProducts method.",
      "id": "ListProductsResponse"
    },
    "LoyaltyProgram": {
      "id": "LoyaltyProgram",
      "properties": {
        "cashbackForFutureUse": {
          "description": "The cashback that can be used for future purchases.",
          "$ref": "Price"
        },
        "memberPriceEffectiveDate": {
          "description": "A date range during which the item is eligible for member price. If not specified, the member price is always applicable. The date range is represented by a pair of ISO 8601 dates separated by a space, comma, or slash.",
          "$ref": "Interval"
        },
        "shippingLabel": {
          "type": "string",
          "description": "The label of the shipping benefit. If the field has value, this offer has loyalty shipping benefit. If the field value isn't provided, the item is not eligible for loyalty shipping for the given loyalty tier."
        },
        "loyaltyPoints": {
          "format": "int64",
          "type": "string",
          "description": "The amount of loyalty points earned on a purchase."
        },
        "price": {
          "description": "The price for members of the given tier, that is, the instant discount price. Must be smaller or equal to the regular price.",
          "$ref": "Price"
        },
        "programLabel": {
          "type": "string",
          "description": "The label of the loyalty program. This is an internal label that uniquely identifies the relationship between a business entity and a loyalty program entity. The label must be provided so that the system can associate the assets below (for example, price and points) with a business. The corresponding program must be linked to the Merchant Center account."
        },
        "tierLabel": {
          "description": "The label of the tier within the loyalty program. Must match one of the labels within the program.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "A message that represents loyalty program. For more information on loyalty programs, see [Overview of loyalty programs](/merchant/api/guides/loyalty/loyalty-programs)."
    },
    "ProductAttributes": {
      "type": "object",
      "id": "ProductAttributes",
      "properties": {
        "minimumOrderValues": {
          "description": "The [minimum value](https://support.google.com/merchants/answer/16989009) in the cart before a customer can initiate checkout. Supports multiple minimum order values. Different minimum order values can be specified per country, service and surface. Maximum entries: 100.",
          "type": "array",
          "items": {
            "$ref": "ProductMinimumOrderValue"
          }
        },
        "handlingCutoffTimes": {
          "type": "array",
          "items": {
            "$ref": "HandlingCutoffTime"
          },
          "description": "The handling cutoff times for shipping."
        },
        "shippingLength": {
          "$ref": "ShippingDimension",
          "description": "Length of the item for shipping."
        },
        "salePriceEffectiveDate": {
          "$ref": "Interval",
          "description": "Date range during which the item is on sale, see [product data specification](https://support.google.com/merchants/answer/7052112#price_and_availability)."
        },
        "numberOfUnits": {
          "format": "int64",
          "description": "The number of units available for a specific floor plan of the property. The value must be greater than 0.",
          "type": "string"
        },
        "maximumRetailPrice": {
          "$ref": "Price",
          "description": "Maximum retail price (MRP) of the item. Applicable to India only."
        },
        "gender": {
          "type": "string",
          "description": "Target [gender](https://support.google.com/merchants/answer/6324479) of the item.",
          "enum": [
            "GENDER_UNSPECIFIED",
            "MALE",
            "FEMALE",
            "UNISEX"
          ],
          "enumDescriptions": [
            "Gender is not specified.",
            "Male.",
            "Female.",
            "Unisex."
          ]
        },
        "trim": {
          "description": "The [Trim](https://support.google.com/google-ads/answer/14154176) of the vehicle model, such as `S`, `SV`, `SL` and others.",
          "type": "string"
        },
        "shippingTransitBusinessDays": {
          "description": "The business days during which orders are in transit. If not provided, Monday to Friday business days will be assumed.",
          "type": "array",
          "items": {
            "$ref": "ShippingBusinessDaysConfig"
          }
        },
        "mobileLink": {
          "type": "string",
          "description": "URL for the mobile-optimized version of your item's landing page."
        },
        "customLabel1": {
          "type": "string",
          "description": "[Custom label 1](https://support.google.com/merchants/answer/6324473) for custom grouping of items in a Shopping campaign."
        },
        "vehicleExpenses": {
          "description": "The miscellaneous expenses like insurance and registration fees of the vehicle. See the [Vehicle expenses](https://support.google.com/google-ads/answer/15957154) for more information.",
          "$ref": "Price"
        },
        "maxHandlingTime": {
          "format": "int64",
          "type": "string",
          "description": "Maximal product handling time (in business days)."
        },
        "autoPricingMinPrice": {
          "description": "A safeguard in the [automated discounts] (https://support.google.com/merchants/answer/10295759) and \"Dynamic Promotions\" (https://support.google.com/merchants/answer/13949249) projects, ensuring that discounts on business offers do not fall below this value, thereby preserving the offer's value and profitability.",
          "$ref": "Price"
        },
        "excludedDestinations": {
          "items": {
            "enumDescriptions": [
              "Not specified.",
              "[Shopping ads](https://support.google.com/google-ads/answer/2454022).",
              "[Display ads](https://support.google.com/merchants/answer/6069387).",
              "[Local inventory ads](https://support.google.com/merchants/answer/3057972).",
              "[Free listings](https://support.google.com/merchants/answer/9199328).",
              "[Free local product listings](https://support.google.com/merchants/answer/9825611).",
              "[YouTube Shopping](https://support.google.com/merchants/answer/12362804).",
              "Youtube shopping checkout.",
              "[Youtube Affiliate](https://support.google.com/youtube/answer/13376398).",
              "[Free vehicle listings](https://support.google.com/merchants/answer/11189169).",
              "[Vehicle ads](https://support.google.com/merchants/answer/11189169).",
              "[Cloud retail](https://cloud.google.com/solutions/retail).",
              "[Local cloud retail](https://cloud.google.com/solutions/retail).",
              "Real Estate Rental Ads. ."
            ],
            "enum": [
              "DESTINATION_ENUM_UNSPECIFIED",
              "SHOPPING_ADS",
              "DISPLAY_ADS",
              "LOCAL_INVENTORY_ADS",
              "FREE_LISTINGS",
              "FREE_LOCAL_LISTINGS",
              "YOUTUBE_SHOPPING",
              "YOUTUBE_SHOPPING_CHECKOUT",
              "YOUTUBE_AFFILIATE",
              "FREE_VEHICLE_LISTINGS",
              "VEHICLE_ADS",
              "CLOUD_RETAIL",
              "LOCAL_CLOUD_RETAIL",
              "RENTAL_ADS"
            ],
            "type": "string"
          },
          "description": "The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center). For more information, see [Excluded destination](https://support.google.com/merchants/answer/6324486). Note: We recommend setting destinations on datasources level for most use cases. Use this field within products to only setup exceptions.",
          "type": "array"
        },
        "petPolicy": {
          "$ref": "PetPolicy",
          "description": "The pet policy for the property."
        },
        "vehicleMsrp": {
          "$ref": "Price",
          "description": "The MSRP (Manufacturer Suggested Retail Price) for the vehicle in its current configuration. See the [Vehicle MSRP](https://support.google.com/google-ads/answer/14154171) for more information."
        },
        "certifications": {
          "items": {
            "$ref": "ProductCertification"
          },
          "description": "Product Certifications, for example for energy efficiency labeling of products recorded in the [EU EPREL](https://eprel.ec.europa.eu/screen/home) database. For more information, see [Certification](https://support.google.com/merchants/answer/13528839).",
          "type": "array"
        },
        "pickupSla": {
          "enum": [
            "PICKUP_SLA_UNSPECIFIED",
            "SAME_DAY",
            "NEXT_DAY",
            "TWO_DAY",
            "THREE_DAY",
            "FOUR_DAY",
            "FIVE_DAY",
            "SIX_DAY",
            "MULTI_WEEK"
          ],
          "enumDescriptions": [
            "Pickup SLA is not specified.",
            "Indicates that the product is available for pickup the same day that the order is placed, subject to cut off times.",
            "Indicates that the product is available for pickup the following day that the order is placed.",
            "Indicates that the product will be shipped to a store for a customer to pick up in 2 days.",
            "Indicates that the product will be shipped to a store for a customer to pick up in 3 days.",
            "Indicates that the product will be shipped to a store for a customer to pick up in 4 days",
            "Indicates that the product will be shipped to a store for a customer to pick up in 5 days.",
            "Indicates that the product will be shipped to a store for a customer to pick up in 6 days.",
            "Indicates that the product will be shipped to a store for a customer to pick up in one week or more."
          ],
          "type": "string",
          "description": "Item store pickup timeline. For more information, see [Pickup SLA](https://support.google.com/merchants/answer/14635400)."
        },
        "dateFirstRegistered": {
          "type": "string",
          "description": "The date the vehicle was first registered. Format: `YYYY-MM`. See the [Date first registered](https://support.google.com/google-ads/answer/14546138) for more information."
        },
        "questionsAndAnswers": {
          "items": {
            "$ref": "QuestionAndAnswer"
          },
          "description": "Optional. Contains user-, merchant-, and manufacturer-authored [questions and answers](https://support.google.com/merchants/answer/17085211) about the product. Max 30 question and answer pairs. Max 10000 characters total. Each question can have max 1000 characters. Each answer can have max 1000 characters.",
          "type": "array"
        },
        "neighborhood": {
          "type": "string",
          "description": "The neighborhood (locality) of the property, such as `Wallingford`, `Greenwood`, etc."
        },
        "includedDestinations": {
          "description": "The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. For more information, see [Included destination](https://support.google.com/merchants/answer/7501026). Note: We recommend setting destinations on datasources level for most use cases. Use this field within products to only setup exceptions.",
          "items": {
            "type": "string",
            "enum": [
              "DESTINATION_ENUM_UNSPECIFIED",
              "SHOPPING_ADS",
              "DISPLAY_ADS",
              "LOCAL_INVENTORY_ADS",
              "FREE_LISTINGS",
              "FREE_LOCAL_LISTINGS",
              "YOUTUBE_SHOPPING",
              "YOUTUBE_SHOPPING_CHECKOUT",
              "YOUTUBE_AFFILIATE",
              "FREE_VEHICLE_LISTINGS",
              "VEHICLE_ADS",
              "CLOUD_RETAIL",
              "LOCAL_CLOUD_RETAIL",
              "RENTAL_ADS"
            ],
            "enumDescriptions": [
              "Not specified.",
              "[Shopping ads](https://support.google.com/google-ads/answer/2454022).",
              "[Display ads](https://support.google.com/merchants/answer/6069387).",
              "[Local inventory ads](https://support.google.com/merchants/answer/3057972).",
              "[Free listings](https://support.google.com/merchants/answer/9199328).",
              "[Free local product listings](https://support.google.com/merchants/answer/9825611).",
              "[YouTube Shopping](https://support.google.com/merchants/answer/12362804).",
              "Youtube shopping checkout.",
              "[Youtube Affiliate](https://support.google.com/youtube/answer/13376398).",
              "[Free vehicle listings](https://support.google.com/merchants/answer/11189169).",
              "[Vehicle ads](https://support.google.com/merchants/answer/11189169).",
              "[Cloud retail](https://cloud.google.com/solutions/retail).",
              "[Local cloud retail](https://cloud.google.com/solutions/retail).",
              "Real Estate Rental Ads. ."
            ]
          },
          "type": "array"
        },
        "gtins": {
          "type": "array",
          "description": "Global Trade Item Numbers ([GTIN](https://support.google.com/merchants/answer/6324461)) of the item. You can provide up to 10 GTINs.",
          "items": {
            "type": "string"
          }
        },
        "customLabel0": {
          "description": "[Custom label 0](https://support.google.com/merchants/answer/6324473) for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "shippingHeight": {
          "description": "Height of the item for shipping.",
          "$ref": "ShippingDimension"
        },
        "canonicalLink": {
          "description": "URL for the canonical version of your item's landing page.",
          "type": "string"
        },
        "productWeight": {
          "$ref": "ProductWeight",
          "description": "The weight of the product in the units provided. The value must be between 0 (exclusive) and 2000 (inclusive)."
        },
        "availabilityDate": {
          "description": "The day a pre-ordered product becomes available for delivery, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "format": "google-datetime",
          "type": "string"
        },
        "shipping": {
          "type": "array",
          "description": "Shipping rules.",
          "items": {
            "$ref": "Shipping"
          }
        },
        "installment": {
          "$ref": "ProductInstallment",
          "description": "Number and amount of installments to pay for an item."
        },
        "vin": {
          "description": "The [Vehicle Identification Number (VIN)](https://support.google.com/google-ads/answer/14154510) of the vehicle.",
          "type": "string"
        },
        "mileage": {
          "$ref": "Mileage",
          "description": "The number of miles/kms on the vehicle. See the [Mileage](https://support.google.com/google-ads/answer/14156166) for more information."
        },
        "vehiclePriceType": {
          "enumDescriptions": [
            "Unspecified vehicle price type.",
            "All in price.",
            "Drive away price.",
            "Estimated drive away price.",
            "Excluding government charges price.",
            "Vehicle base price."
          ],
          "description": "The [price type](https://support.google.com/google-ads/answer/14592783) of the vehicle.",
          "type": "string",
          "enum": [
            "VEHICLE_PRICE_TYPE_UNSPECIFIED",
            "ALL_IN_PRICE",
            "DRIVE_AWAY_PRICE",
            "ESTIMATED_DRIVE_AWAY_PRICE",
            "EXCLUDING_GOVERNMENT_CHARGES_PRICE",
            "VEHICLE_BASE_PRICE"
          ]
        },
        "amenityFeature": {
          "items": {
            "enum": [
              "AMENITY_FEATURE_UNSPECIFIED",
              "BALCONY",
              "BASEMENT",
              "BASKETBALL_COURT",
              "BIKE_STORAGE",
              "CENTRAL_AC",
              "DISHWASHER",
              "DOG_PARK",
              "ELEVATOR",
              "EV_CHARGING",
              "FENCED_LOT",
              "FIREPLACE",
              "FITNESS_CENTER",
              "FORCED_AIR_HEATING",
              "FULLY_FURNISHED",
              "GARAGE",
              "GATED_COMMUNITY",
              "HARDWOOD_FLOORS",
              "HIGH_SPEED_INTERNET",
              "INTERCOM",
              "IN_UNIT_WASHER_DRYER",
              "KITCHEN",
              "LARGE_CLOSETS",
              "MULTISPORT_COURT",
              "ONSITE_LAUNDRY",
              "OUTDOOR_LOUNGE",
              "PARKING",
              "PATIO",
              "PICKLEBALL_COURT",
              "POOL",
              "REFRIGERATOR",
              "SOCCER_FIELD",
              "TENNIS_COURT",
              "WALK_IN_CLOSETS",
              "WHEELCHAIR_ACCESS"
            ],
            "enumDescriptions": [
              "Unspecified amenity feature.",
              "Balcony.",
              "Basement.",
              "Basketball court.",
              "Bike storage.",
              "Central air conditioning.",
              "Dishwasher.",
              "Dog park.",
              "Elevator.",
              "EV charging.",
              "Fenced lot.",
              "Fireplace.",
              "Fitness center.",
              "Forced air heating.",
              "Fully furnished.",
              "Garage.",
              "Gated community.",
              "Hardwood floors.",
              "High speed internet.",
              "Intercom.",
              "In-unit washer and dryer.",
              "Kitchen.",
              "Large closets.",
              "Multisport court.",
              "Onsite laundry.",
              "Outdoor lounge.",
              "Parking.",
              "Patio.",
              "Pickleball court.",
              "Pool.",
              "Refrigerator.",
              "Soccer field.",
              "Tennis court.",
              "Walk-in closets.",
              "Wheelchair accessibility."
            ],
            "type": "string"
          },
          "description": "The amenity features for the property.",
          "type": "array"
        },
        "co2Emissions": {
          "$ref": "Co2Emissions",
          "description": "The [co2 emission](https://support.google.com/google-ads/answer/14546146) of the vehicle."
        },
        "numberOfBathrooms": {
          "format": "double",
          "type": "number",
          "description": "The number of bathrooms in the property. The value must be greater than 0 and a multiple of 0.5."
        },
        "longitude": {
          "description": "The longitude of the property. The value must be between -180 (inclusive) and 180 (inclusive), up to 6 decimal places.",
          "type": "number",
          "format": "double"
        },
        "linkTemplate": {
          "type": "string",
          "description": "[Link template](https://support.google.com/merchants/answer/13871172) for business hosted local storefront."
        },
        "maxEnergyEfficiencyClass": {
          "description": "The [energy efficiency class](https://support.google.com/merchants/answer/7562785) as defined in EU directive 2010/30/EU.",
          "type": "string",
          "enumDescriptions": [
            "The energy efficiency class is unspecified.",
            "A+++.",
            "A++.",
            "A+.",
            "A.",
            "B.",
            "C.",
            "D.",
            "E.",
            "F.",
            "G."
          ],
          "enum": [
            "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED",
            "APPP",
            "APP",
            "AP",
            "A",
            "B",
            "C",
            "D",
            "E",
            "F",
            "G"
          ]
        },
        "itemGroupId": {
          "type": "string",
          "description": "Shared identifier for all variants of the same product."
        },
        "unitPricingBaseMeasure": {
          "description": "The preference of the denominator of the unit price.",
          "$ref": "UnitPricingBaseMeasure"
        },
        "color": {
          "type": "string",
          "description": "[Color](https://support.google.com/merchants/answer/6324487) of the item. For example, \"red\"."
        },
        "availability": {
          "description": "[Availability](https://support.google.com/merchants/answer/6324448) status of the item.",
          "type": "string",
          "enumDescriptions": [
            "Availability is not specified.",
            "In stock.",
            "Out of stock.",
            "Pre-order.",
            "Limited availability.",
            "Backorder."
          ],
          "enum": [
            "AVAILABILITY_UNSPECIFIED",
            "IN_STOCK",
            "OUT_OF_STOCK",
            "PREORDER",
            "LIMITED_AVAILABILITY",
            "BACKORDER"
          ]
        },
        "salePrice": {
          "description": "Advertised sale price of the item.",
          "$ref": "Price"
        },
        "displayAddress": {
          "description": "The display address of the property.",
          "$ref": "DisplayAddress"
        },
        "sellOnGoogleQuantity": {
          "format": "int64",
          "type": "string",
          "description": "The quantity of the product that is available for selling on Google. Supported only for online products."
        },
        "displayAdsTitle": {
          "description": "Title of an item for dynamic remarketing campaigns.",
          "type": "string"
        },
        "lifestyleImageLinks": {
          "description": "Additional URLs of lifestyle images of the item, used to explicitly identify images that showcase your item in a real-world context. See the [Help Center article](https://support.google.com/merchants/answer/9103186) for more information.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "utilitiesIncluded": {
          "description": "The utilities included for the property.",
          "type": "array",
          "items": {
            "enum": [
              "UTILITIES_INCLUDED_UNSPECIFIED",
              "ELECTRICITY",
              "GAS",
              "INTERNET",
              "TRASH",
              "WATER"
            ],
            "type": "string",
            "enumDescriptions": [
              "Unspecified utilities included.",
              "Electricity.",
              "Gas.",
              "Internet.",
              "Trash.",
              "Water."
            ]
          }
        },
        "adult": {
          "type": "boolean",
          "description": "Set to true if the item is targeted towards adults."
        },
        "energyEfficiencyClass": {
          "enumDescriptions": [
            "The energy efficiency class is unspecified.",
            "A+++.",
            "A++.",
            "A+.",
            "A.",
            "B.",
            "C.",
            "D.",
            "E.",
            "F.",
            "G."
          ],
          "type": "string",
          "enum": [
            "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED",
            "APPP",
            "APP",
            "AP",
            "A",
            "B",
            "C",
            "D",
            "E",
            "F",
            "G"
          ],
          "description": "The [energy efficiency class](https://support.google.com/merchants/answer/7562785) as defined in EU directive 2010/30/EU."
        },
        "certifiedPreOwned": {
          "type": "boolean",
          "description": "Whether the vehicle is OEM [certified pre-owned](https://support.google.com/google-ads/answer/14156475)."
        },
        "expirationDate": {
          "description": "Date on which the item should expire, as specified upon insertion, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format. The actual expiration date is exposed in `productstatuses` as [googleExpirationDate](https://support.google.com/merchants/answer/6324499) and might be earlier if `expirationDate` is too far in the future.",
          "format": "google-datetime",
          "type": "string"
        },
        "shippingHandlingBusinessDays": {
          "description": "The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.",
          "items": {
            "$ref": "ShippingBusinessDaysConfig"
          },
          "type": "array"
        },
        "condition": {
          "enumDescriptions": [
            "Default value. This value is unused.",
            "Brand new, original, unopened packaging.",
            "Previously used, original packaging opened or missing.",
            "Professionally restored to working order, comes with a warranty, may or may not have the original packaging."
          ],
          "type": "string",
          "enum": [
            "CONDITION_UNSPECIFIED",
            "NEW",
            "USED",
            "REFURBISHED"
          ],
          "description": "[Condition](https://support.google.com/merchants/answer/6324469) or state of the item."
        },
        "shippingLabel": {
          "type": "string",
          "description": "The shipping label of the product, used to group products in account-level shipping rules. Max. 100 characters. For more information, see [Shipping label](https://support.google.com/merchants/answer/6324504)."
        },
        "minHandlingTime": {
          "type": "string",
          "format": "int64",
          "description": "Minimal product handling time (in business days)."
        },
        "shortTitle": {
          "description": "The short title of the item.",
          "type": "string"
        },
        "promotionIds": {
          "items": {
            "type": "string"
          },
          "description": "The unique ID of a promotion.",
          "type": "array"
        },
        "pickupMethod": {
          "type": "string",
          "enumDescriptions": [
            "Pickup method is not specified.",
            "The item is not available for store pickup.",
            "The entire transaction occurs online.",
            "The item is reserved online and the transaction occurs in-store.",
            "The item is purchased online and shipped to a local store for the customer to pick up."
          ],
          "enum": [
            "PICKUP_METHOD_UNSPECIFIED",
            "NOT_SUPPORTED",
            "BUY",
            "RESERVE",
            "SHIP_TO_STORE"
          ],
          "description": "The [pickup](https://support.google.com/merchants/answer/14634021) option for the item."
        },
        "isBundle": {
          "description": "Whether the item is a business-defined sub-API. A [sub-API] (https://support.google.com/merchants/answer/6324449) is a custom grouping of different products sold by a business for a single price.",
          "type": "boolean"
        },
        "shippingWidth": {
          "$ref": "ShippingDimension",
          "description": "Width of the item for shipping."
        },
        "additionalImageLinks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Additional URLs of images of the item."
        },
        "electricRange": {
          "$ref": "Mileage",
          "description": "The [electric range](https://support.google.com/google-ads/answer/15162232) of the vehicle in miles/kms."
        },
        "unitPricingMeasure": {
          "description": "The measure and dimension of an item.",
          "$ref": "UnitPricingMeasure"
        },
        "loyaltyPoints": {
          "description": "Loyalty points that users receive after purchasing the item. Japan only.",
          "$ref": "LoyaltyPoints"
        },
        "pattern": {
          "description": "The item's [pattern](https://support.google.com/merchants/answer/6324483). For example, polka dots.",
          "type": "string"
        },
        "energyConsumption": {
          "$ref": "EnergyConsumption",
          "description": "The [energy consumption](https://support.google.com/google-ads/answer/14546149) of the vehicle."
        },
        "subscriptionCost": {
          "description": "Number of periods (weeks, months or years) and amount of payment per period for an item with an associated subscription contract.",
          "$ref": "SubscriptionCost"
        },
        "videoLinks": {
          "description": "Optional. A list of video URLs for the item. Use this attribute to provide more visuals for your product beyond your image attributes. See the [Help Center article](https://support.google.com/merchants/answer/15216925) for more information.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "popularityRank": {
          "description": "Optional. Indicates the [popularity](https://support.google.com/merchants/answer/17085297) of the product in a merchant's inventory. Using a scale of 0.0 (lowest) to 100.0 (highest).",
          "type": "number",
          "format": "float"
        },
        "googleProductCategory": {
          "type": "string",
          "description": "Google's category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API."
        },
        "structuredDescription": {
          "description": "Structured description, for algorithmically (AI)-generated descriptions.",
          "$ref": "StructuredDescription"
        },
        "engine": {
          "enum": [
            "ENGINE_TYPE_UNSPECIFIED",
            "GASOLINE",
            "DIESEL",
            "ELECTRIC",
            "HYBRID",
            "PLUG_IN_HYBRID",
            "NATURAL_GAS",
            "LPG",
            "METHANE",
            "OTHER"
          ],
          "enumDescriptions": [
            "Unspecified engine type.",
            "Gasoline.",
            "Diesel.",
            "Electric.",
            "Hybrid.",
            "Plug-in hybrid.",
            "Natural gas.",
            "LPG.",
            "Methane.",
            "Other."
          ],
          "description": "The [engine](https://support.google.com/google-ads/answer/14156068) type of the vehicle.",
          "type": "string"
        },
        "customLabel3": {
          "description": "[Custom label 3](https://support.google.com/merchants/answer/6324473) for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "link": {
          "description": "URL directly linking to your item's page on your online store.",
          "type": "string"
        },
        "unitArea": {
          "description": "The unit area of the property, such as `1000 sqft`.",
          "$ref": "UnitArea"
        },
        "externalSellerId": {
          "description": "Required for multi-seller accounts. Use this attribute if you're a marketplace uploading products for various sellers to your multi-seller account.",
          "type": "string"
        },
        "imageLink": {
          "type": "string",
          "description": "URL of an image of the item."
        },
        "returns": {
          "description": "Optional. [Return rules](https://support.google.com/merchants/answer/17081382) for the product.",
          "type": "array",
          "items": {
            "$ref": "Returns"
          }
        },
        "leaseTerm": {
          "$ref": "LeaseTerm",
          "description": "The lease term of the property."
        },
        "carrierShipping": {
          "description": "Rules for carrier-based shipping.",
          "items": {
            "$ref": "CarrierShipping"
          },
          "type": "array"
        },
        "model": {
          "description": "The [Model](https://support.google.com/google-ads/answer/14154511) of the vehicle, such as `LX`, `EX`, and others.",
          "type": "string"
        },
        "identifierExists": {
          "type": "boolean",
          "description": "Set this value to false when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Defaults to true, if not provided."
        },
        "virtualModelLink": {
          "type": "string",
          "description": "URL of the 3D image of the item. See the [Help Center article](https://support.google.com/merchants/answer/13674896) for more information."
        },
        "displayAdsSimilarIds": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Advertiser-specified recommendations. For more information, see [Display ads attribute specification](https://support.google.com/merchants/answer/6069387)."
        },
        "sizeSystem": {
          "enum": [
            "SIZE_SYSTEM_UNSPECIFIED",
            "AU",
            "BR",
            "CN",
            "DE",
            "EU",
            "FR",
            "IT",
            "JP",
            "MEX",
            "UK",
            "US"
          ],
          "enumDescriptions": [
            "Unspecified size system.",
            "AU.",
            "BR.",
            "CN.",
            "DE.",
            "EU.",
            "FR.",
            "IT.",
            "JP.",
            "MEX.",
            "UK.",
            "US."
          ],
          "type": "string",
          "description": "System in which the size is specified. Recommended for apparel items. For more information, see [Size system](https://support.google.com/merchants/answer/6324502)."
        },
        "productHighlights": {
          "type": "array",
          "description": "Bullet points describing the most relevant [product highlights](https://support.google.com/merchants/answer/9216100).",
          "items": {
            "type": "string"
          }
        },
        "sizeTypes": {
          "description": "The cut of the item. It can be used to represent combined size types for apparel items. You can provide up to two `SizeType` values, for example, `[\"PETITE\", \"MATERNITY\"]` or `[\"BIG\", \"TALL\"]`. For more information, see [Size type](https://support.google.com/merchants/answer/6324497).",
          "type": "array",
          "items": {
            "enum": [
              "SIZE_TYPE_UNSPECIFIED",
              "REGULAR",
              "PETITE",
              "MATERNITY",
              "BIG",
              "TALL",
              "PLUS"
            ],
            "enumDescriptions": [
              "The size type is not specified.",
              "Regular size.",
              "Petite size.",
              "Maternity size.",
              "Big size.",
              "Tall size.",
              "Plus size."
            ],
            "type": "string"
          }
        },
        "warranty": {
          "$ref": "Warranty",
          "description": "The [`warranty`](https://support.google.com/merchants/answer/18562485) of the product."
        },
        "documentLinks": {
          "type": "array",
          "description": "Optional. Contains a list of PDF [document URLs](https://support.google.com/merchants/answer/17084656) for the product. Examples are training manuals, user guides, assembly instructions, package inserts, etc. Must start with \"http://\" or \"https://\"), ASCII characters only, and RFC 3986 compliant.",
          "items": {
            "type": "string"
          }
        },
        "title": {
          "type": "string",
          "description": "Title of the item."
        },
        "structuredTitle": {
          "$ref": "StructuredTitle",
          "description": "Structured title, for algorithmically (AI)-generated titles."
        },
        "displayAdsLink": {
          "type": "string",
          "description": "URL directly to your item's landing page for dynamic remarketing campaigns."
        },
        "brand": {
          "description": "[Brand](https://support.google.com/merchants/answer/6324351) of the item. For example, \"Google\".",
          "type": "string"
        },
        "productFee": {
          "description": "The product fee for the property.",
          "items": {
            "$ref": "ProductFee"
          },
          "type": "array"
        },
        "emissionsStandard": {
          "type": "string",
          "description": "The [emission standard](https://support.google.com/google-ads/answer/14869021) of the vehicle.",
          "enumDescriptions": [
            "Unspecified emission standard.",
            "Zero emissions.",
            "Euro 1.",
            "Euro 2.",
            "Euro 3.",
            "Euro 4.",
            "Euro 5.",
            "Euro 5b.",
            "Euro 6.",
            "Euro 6c.",
            "Euro 6d.",
            "Euro 6d-TEMP.",
            "Euro 6e."
          ],
          "enum": [
            "EMISSIONS_STANDARD_UNSPECIFIED",
            "ZERO_EMISSIONS",
            "EURO1",
            "EURO2",
            "EURO3",
            "EURO4",
            "EURO5",
            "EURO5B",
            "EURO6",
            "EURO6C",
            "EURO6D",
            "EURO6D_TEMP",
            "EURO6E"
          ]
        },
        "vehicleAllInPrice": {
          "$ref": "Price",
          "description": "The all-in advertised price for a vehicle, which includes costs for the following – any accessories attached to the vehicle, environmental levies, extra warranty, fuel, freight, pre-delivery inspection (PDI), dealer fees for handling licensing, provincial regulatory fees, miscellaneous dealer charges for security etching and nitrogen tire fill, and factory-to-customer or dealer-to-customer discounts or incentives. See the [Vehicle all-in price](https://support.google.com/google-ads/answer/14156981) for more information."
        },
        "adsGrouping": {
          "description": "Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise. For more information, see [Display ads attribute](https://support.google.com/merchants/answer/6069387).",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Description of the item."
        },
        "productDetails": {
          "description": "Technical specification or additional product details.",
          "items": {
            "$ref": "ProductDetail"
          },
          "type": "array"
        },
        "variantOptions": {
          "description": "Optional. Contains the [list of all variant-identifying options](https://support.google.com/merchants/answer/17085214) of this product.",
          "type": "array",
          "items": {
            "$ref": "VariantOption"
          }
        },
        "mobileLinkTemplate": {
          "description": "[Link template](https://support.google.com/merchants/answer/13870216) for business hosted local storefront optimized for mobile devices.",
          "type": "string"
        },
        "freeShippingThreshold": {
          "type": "array",
          "items": {
            "$ref": "FreeShippingThreshold"
          },
          "description": "Conditions to be met for a product to have free shipping."
        },
        "vehicleMandatoryInspectionIncluded": {
          "type": "boolean",
          "description": "Whether the vehicle is sold with mandatory inspection and maintenance performed before delivery. See the [Vehicle mandatory inspection included](https://support.google.com/google-ads/answer/15956630) for more information.`"
        },
        "sustainabilityIncentives": {
          "type": "array",
          "items": {
            "$ref": "ProductSustainabilityIncentive"
          },
          "description": "The list of sustainability incentive programs."
        },
        "numberOfBedrooms": {
          "description": "The number of bedrooms in the property. The value must be greater than or equal to 0 and a multiple of 1.0.",
          "type": "number",
          "format": "double"
        },
        "adsLabels": {
          "type": "array",
          "description": "Similar to ads_grouping, but only works on CPC.",
          "items": {
            "type": "string"
          }
        },
        "bodyStyle": {
          "enumDescriptions": [
            "Unspecified vehicle body style.",
            "ATV Sport.",
            "ATV Touring.",
            "ATV Utility.",
            "ATV Youth.",
            "City car.",
            "Class A motorhome.",
            "Class B motorhome.",
            "Class C motorhome.",
            "Compact SUV.",
            "Convertible.",
            "Coupe.",
            "Crossover.",
            "Fifth wheel.",
            "Full size van.",
            "Hatchback.",
            "Limousine.",
            "Minivan.",
            "Notchback.",
            "Pop up camper.",
            "Sedan.",
            "Side by side.",
            "Station wagon.",
            "SUV.",
            "Travel trailer.",
            "Truck.",
            "Truck camper.",
            "Ute.",
            "UTV Recreational utility.",
            "UTV Sport.",
            "UTV Utility.",
            "UTV Youth."
          ],
          "type": "string",
          "enum": [
            "VEHICLE_BODY_STYLE_UNSPECIFIED",
            "ATV_SPORT",
            "ATV_TOURING",
            "ATV_UTILITY",
            "ATV_YOUTH",
            "CITY_CAR",
            "CLASS_A_MOTORHOME",
            "CLASS_B_MOTORHOME",
            "CLASS_C_MOTORHOME",
            "COMPACT_SUV",
            "CONVERTIBLE",
            "COUPE",
            "CROSSOVER",
            "FIFTH_WHEEL",
            "FULL_SIZE_VAN",
            "HATCHBACK",
            "LIMOUSINE",
            "MINIVAN",
            "NOTCHBACK",
            "POP_UP_CAMPER",
            "SEDAN",
            "SIDE_BY_SIDE",
            "STATION_WAGON",
            "SUV",
            "TRAVEL_TRAILER",
            "TRUCK",
            "TRUCK_CAMPER",
            "UTE",
            "UTV_RECREATIONAL_UTILITY",
            "UTV_SPORT",
            "UTV_UTILITY",
            "UTV_YOUTH"
          ],
          "description": "The [body style](https://support.google.com/google-ads/answer/14157085) of the vehicle."
        },
        "productWidth": {
          "$ref": "ProductDimension",
          "description": "The width of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive)."
        },
        "fuelConsumption": {
          "description": "The [fuel consumption](https://support.google.com/google-ads/answer/14543580) of the vehicle.",
          "$ref": "FuelConsumption"
        },
        "costOfGoodsSold": {
          "$ref": "Price",
          "description": "Cost of goods sold. Used for gross profit reporting."
        },
        "fuelConsumptionDischargedBattery": {
          "description": "The fuel consumption of the vehicle when the hybrid battery is discharged. See the [Help Center article](https://support.google.com/google-ads/answer/15162033) for more information.",
          "$ref": "FuelConsumption"
        },
        "customLabel4": {
          "description": "[Custom label 4](https://support.google.com/merchants/answer/6324473) for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "pickupCost": {
          "description": "Optional. The [pickup cost](https://support.google.com/merchants/answer/16988704) for an item when a customer buys it online and picks it up at a store.",
          "$ref": "PickupCost"
        },
        "size": {
          "type": "string",
          "description": "Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value, see [Size](https://support.google.com/merchants/answer/6324492)."
        },
        "shippingWeight": {
          "$ref": "ShippingWeight",
          "description": "Weight of the item for shipping."
        },
        "pause": {
          "type": "string",
          "enum": [
            "PAUSE_UNSPECIFIED",
            "ADS",
            "ALL"
          ],
          "enumDescriptions": [
            "The pause is unspecified.",
            "You’re currently pausing your product for all ads locations (including Shopping Ads, Display Ads, and local inventory ads).",
            "You’re currently pausing your product for all Shopping locations (including Shopping Ads, Display Ads, local inventory ads, Buy on Google, and free listings)."
          ],
          "description": "Publication of this item will be temporarily [paused](https://support.google.com/merchants/answer/11909930)."
        },
        "specialtyHousingType": {
          "enumDescriptions": [
            "Unspecified specialty housing type.",
            "Corporate housing.",
            "Low income housing.",
            "Military housing.",
            "Senior housing.",
            "Short term housing.",
            "Student housing."
          ],
          "enum": [
            "SPECIALTY_HOUSING_TYPE_UNSPECIFIED",
            "CORPORATE",
            "LOW_INCOME",
            "MILITARY",
            "SENIOR",
            "SHORT_TERM",
            "STUDENT"
          ],
          "type": "string",
          "description": "The specialty housing type for the property."
        },
        "productTypes": {
          "description": "Categories of the item (formatted as in [product data specification](https://support.google.com/merchants/answer/7052112#product_category)).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "customLabel2": {
          "description": "[Custom label 2](https://support.google.com/merchants/answer/6324473) for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "loyaltyPrograms": {
          "items": {
            "$ref": "LoyaltyProgram"
          },
          "type": "array",
          "description": "A list of loyalty program information that is used to surface loyalty benefits (for example, better pricing, points, etc) to the user of this item."
        },
        "transitTimeLabel": {
          "description": "The transit time label of the product, used to group product in account-level transit time tables.",
          "type": "string"
        },
        "propertyType": {
          "type": "string",
          "enumDescriptions": [
            "Unspecified property type.",
            "Apartment.",
            "Condo.",
            "Loft.",
            "Multi-family home.",
            "Penthouse.",
            "Room.",
            "Single-family home.",
            "Studio.",
            "Townhouse."
          ],
          "description": "The type of property.",
          "enum": [
            "PROPERTY_TYPE_UNSPECIFIED",
            "APARTMENT",
            "CONDO",
            "LOFT",
            "MULTI_FAMILY_HOME",
            "PENTHOUSE",
            "ROOM",
            "SINGLE_FAMILY_HOME",
            "STUDIO",
            "TOWNHOUSE"
          ]
        },
        "displayAdsValue": {
          "description": "Offer margin for dynamic remarketing campaigns. For more information, see [Display ads attribute](https://support.google.com/merchants/answer/6069387).",
          "format": "double",
          "type": "number"
        },
        "productLength": {
          "$ref": "ProductDimension",
          "description": "The length of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive)."
        },
        "displayAdsId": {
          "type": "string",
          "description": "An identifier for an item for dynamic remarketing campaigns."
        },
        "productHeight": {
          "description": "The height of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive).",
          "$ref": "ProductDimension"
        },
        "mpn": {
          "type": "string",
          "description": "Manufacturer Part Number ([MPN](https://support.google.com/merchants/answer/6324482)) of the item."
        },
        "ageGroup": {
          "type": "string",
          "description": "Target [age group](https://support.google.com/merchants/answer/6324463) of the item.",
          "enum": [
            "AGE_GROUP_UNSPECIFIED",
            "ADULT",
            "KIDS",
            "TODDLER",
            "INFANT",
            "NEWBORN"
          ],
          "enumDescriptions": [
            "Age group is not specified.",
            "Teens or older.",
            "5-13 years old.",
            "1-5 years old.",
            "3-12 months old.",
            "0-3 months old."
          ]
        },
        "returnPolicyLabel": {
          "description": "The return label of the product, used to group products in account-level return policies. Max. 100 characters. For more information, see [Return policy label](https://support.google.com/merchants/answer/9445425).",
          "type": "string"
        },
        "minEnergyEfficiencyClass": {
          "enum": [
            "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED",
            "APPP",
            "APP",
            "AP",
            "A",
            "B",
            "C",
            "D",
            "E",
            "F",
            "G"
          ],
          "enumDescriptions": [
            "The energy efficiency class is unspecified.",
            "A+++.",
            "A++.",
            "A+.",
            "A.",
            "B.",
            "C.",
            "D.",
            "E.",
            "F.",
            "G."
          ],
          "description": "The [energy efficiency class](https://support.google.com/merchants/answer/7562785) as defined in EU directive 2010/30/EU.",
          "type": "string"
        },
        "year": {
          "format": "int64",
          "description": "The [Year](https://support.google.com/google-ads/answer/14152816) of the vehicle model.",
          "type": "string"
        },
        "relatedProducts": {
          "type": "array",
          "description": "Optional. Specifies how other [products are related](https://support.google.com/merchants/answer/17085213) to this product.",
          "items": {
            "$ref": "RelatedProduct"
          }
        },
        "price": {
          "$ref": "Price",
          "description": "Price of the item."
        },
        "adsRedirect": {
          "description": "Allows advertisers to override the item URL when the product is shown within the context of Product ads.",
          "type": "string"
        },
        "cloudExportAdditionalProperties": {
          "description": "Extra fields to export to the Cloud Retail program.",
          "items": {
            "$ref": "CloudExportAdditionalProperties"
          },
          "type": "array"
        },
        "latitude": {
          "type": "number",
          "description": "The latitude of the property. The value must be between -90 (inclusive) and 90 (inclusive), up to 6 decimal places.",
          "format": "double"
        },
        "shoppingAdsExcludedCountries": {
          "type": "array",
          "description": "List of country codes [(ISO 3166-1 alpha-2)](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) to exclude the offer from Shopping Ads destination. Countries from this list are removed from countries configured in data source settings.",
          "items": {
            "type": "string"
          }
        },
        "propertyName": {
          "description": "The name of the property.",
          "type": "string"
        },
        "itemGroupTitle": {
          "type": "string",
          "description": "Optional. Represents the [title of the product group](https://support.google.com/merchants/answer/17085146) to which this variant product belongs. This can be used along with the [item group id](https://support.google.com/merchants/answer/6324507) attribute. It lets you perform better grouping of variant products, and helps identifying common product characteristics more efficiently."
        },
        "material": {
          "description": "The [material](https://support.google.com/merchants/answer/6324410) of which the item is made. For example, \"Leather\" or \"Cotton\".",
          "type": "string"
        },
        "multipack": {
          "description": "The number of identical products in a business-defined multipack.",
          "format": "int64",
          "type": "string"
        },
        "disclosureDate": {
          "type": "string",
          "description": "The date time when an offer becomes visible in search results across Google’s YouTube surfaces, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format. See [Disclosure date](https://support.google.com/merchants/answer/13034208) for more information.",
          "format": "google-datetime"
        }
      },
      "description": "Product attributes."
    },
    "ProductSustainabilityIncentive": {
      "properties": {
        "amount": {
          "description": "The fixed amount of the incentive.",
          "$ref": "Price"
        },
        "type": {
          "enumDescriptions": [
            "Unspecified or unknown sustainability incentive type.",
            "Program offering tax liability reductions for electric vehicles and, in some countries, plug-in hybrids. These reductions can be based on a specific amount or a percentage of the sale price.",
            "A subsidy program, often called an environmental bonus, provides a purchase grant for electric vehicles and, in some countries, plug-in hybrids. The grant amount may be a fixed sum or a percentage of the sale price."
          ],
          "type": "string",
          "description": "Sustainability incentive program.",
          "enum": [
            "TYPE_UNSPECIFIED",
            "EV_TAX_CREDIT",
            "EV_PRICE_DISCOUNT"
          ]
        },
        "percentage": {
          "description": "The percentage of the sale price that the incentive is applied to.",
          "type": "number",
          "format": "double"
        }
      },
      "type": "object",
      "description": "Information regarding sustainability-related incentive programs such as rebates or tax relief.",
      "id": "ProductSustainabilityIncentive"
    },
    "ItemLevelIssue": {
      "id": "ItemLevelIssue",
      "description": "The ItemLevelIssue of the product status.",
      "type": "object",
      "properties": {
        "attribute": {
          "description": "The attribute's name, if the issue is caused by a single attribute.",
          "type": "string"
        },
        "reportingContext": {
          "type": "string",
          "description": "The reporting context the issue applies to.",
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "enum": [
            "REPORTING_CONTEXT_ENUM_UNSPECIFIED",
            "SHOPPING_ADS",
            "DISCOVERY_ADS",
            "DEMAND_GEN_ADS",
            "DEMAND_GEN_ADS_DISCOVER_SURFACE",
            "VIDEO_ADS",
            "DISPLAY_ADS",
            "LOCAL_INVENTORY_ADS",
            "VEHICLE_INVENTORY_ADS",
            "FREE_LISTINGS",
            "FREE_LISTINGS_UCP_CHECKOUT",
            "FREE_LOCAL_LISTINGS",
            "FREE_LOCAL_VEHICLE_LISTINGS",
            "YOUTUBE_AFFILIATE",
            "YOUTUBE_SHOPPING",
            "CLOUD_RETAIL",
            "LOCAL_CLOUD_RETAIL",
            "PRODUCT_REVIEWS",
            "MERCHANT_REVIEWS",
            "YOUTUBE_CHECKOUT",
            "RENTAL_ADS"
          ],
          "enumDescriptions": [
            "Not specified.",
            "[Shopping ads](https://support.google.com/merchants/answer/6149970).",
            "Deprecated: Use `DEMAND_GEN_ADS` instead. [Discovery and Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads on Discover surface](https://support.google.com/merchants/answer/13389785).",
            "[Video ads](https://support.google.com/google-ads/answer/6340491).",
            "[Display ads](https://support.google.com/merchants/answer/6069387).",
            "[Local inventory ads](https://support.google.com/merchants/answer/3271956).",
            "[Vehicle inventory ads](https://support.google.com/merchants/answer/11544533).",
            "[Free product listings](https://support.google.com/merchants/answer/9199328).",
            "[Free product listings on UCP checkout](https://developers.google.com/merchant/ucp).",
            "[Free local product listings](https://support.google.com/merchants/answer/9825611).",
            "[Free local vehicle listings](https://support.google.com/merchants/answer/11544533).",
            "[Youtube Affiliate](https://support.google.com/youtube/answer/13376398).",
            "[YouTube Shopping](https://support.google.com/merchants/answer/13478370).",
            "[Cloud retail](https://cloud.google.com/solutions/retail).",
            "[Local cloud retail](https://cloud.google.com/solutions/retail).",
            "[Product Reviews](https://support.google.com/merchants/answer/14620732).",
            "[Merchant Reviews](https://developers.google.com/merchant-review-feeds).",
            "YouTube Checkout .",
            "Real Estate Rental Ads. ."
          ]
        },
        "resolution": {
          "type": "string",
          "description": "Whether the issue can be resolved by the business."
        },
        "code": {
          "description": "The error code of the issue.",
          "type": "string"
        },
        "documentation": {
          "type": "string",
          "description": "The URL of a web page to help with resolving this issue."
        },
        "severity": {
          "description": "How this issue affects serving of the offer.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "This issue represents a warning and does not have a direct affect on the product.",
            "The product is demoted and most likely have limited performance in search results",
            "Issue disapproves the product."
          ],
          "enum": [
            "SEVERITY_UNSPECIFIED",
            "NOT_IMPACTED",
            "DEMOTED",
            "DISAPPROVED"
          ]
        },
        "description": {
          "type": "string",
          "description": "A short issue description in English."
        },
        "applicableCountries": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of country codes (ISO 3166-1 alpha-2) where issue applies to the offer."
        },
        "detail": {
          "description": "A detailed issue description in English.",
          "type": "string"
        }
      }
    },
    "Shipping": {
      "properties": {
        "handlingCutoffTime": {
          "description": "The handling cutoff time until which an order has to be placed to be processed in the same day. This is a string in format of HHMM (e.g. `1530`) for 3:30 PM. If not configured, the cutoff time will be defaulted to 8AM PST and `handling_cutoff_timezone` will be ignored.",
          "type": "string"
        },
        "service": {
          "type": "string",
          "description": "A free-form description of the service class or delivery speed."
        },
        "maxHandlingTime": {
          "format": "int64",
          "type": "string",
          "description": "Maximum handling time (inclusive) between when the order is received and shipped in business days. 0 means that the order is shipped on the same day as it is received if it happens before the cut-off time. Both maxHandlingTime and maxTransitTime are required if providing shipping speeds. minHandlingTime is optional if maxHandlingTime is present."
        },
        "postalCode": {
          "description": "The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.",
          "type": "string"
        },
        "region": {
          "description": "The geographic region to which a shipping rate applies. See [region](https://support.google.com/merchants/answer/6324484) for more information.",
          "type": "string"
        },
        "locationId": {
          "type": "string",
          "format": "int64",
          "description": "The numeric ID of a location that the shipping rate applies to as defined in the [AdWords API](https://developers.google.com/adwords/api/docs/appendix/geotargeting)."
        },
        "maxTransitTime": {
          "type": "string",
          "description": "Maximum transit time (inclusive) between when the order has shipped and when it is delivered in business days. 0 means that the order is delivered on the same day as it ships. Both maxHandlingTime and maxTransitTime are required if providing shipping speeds. minTransitTime is optional if maxTransitTime is present.",
          "format": "int64"
        },
        "price": {
          "$ref": "Price",
          "description": "Fixed shipping price, represented as a number."
        },
        "locationGroupName": {
          "description": "The location where the shipping is applicable, represented by a location group name.",
          "type": "string"
        },
        "loyaltyProgramLabel": {
          "description": "Optional. The label of the [loyalty program](https://support.google.com/merchants/answer/6324484). Must match one of the program labels set in loyalty_programs. When set (in combination with [loyalty_tier_label](https://support.google.com/merchants/answer/6324484)), this shipping option is only applicable to loyalty program members of the specified tier.",
          "type": "string"
        },
        "loyaltyTierLabel": {
          "description": "Optional. The label of the [loyalty tier](https://support.google.com/merchants/answer/6324484) within the loyalty program. Must match one of the tiers set in the loyalty_programs. When set (in combination with [loyalty_program_label](https://support.google.com/merchants/answer/6324484)), this shipping option is only applicable to loyalty program members of the specified tier.",
          "type": "string"
        },
        "country": {
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which an item will ship.",
          "type": "string"
        },
        "minHandlingTime": {
          "type": "string",
          "format": "int64",
          "description": "Minimum handling time (inclusive) between when the order is received and shipped in business days. 0 means that the order is shipped on the same day as it is received if it happens before the cut-off time. minHandlingTime can only be present together with maxHandlingTime; but it is not required if maxHandlingTime is present."
        },
        "handlingCutoffTimezone": {
          "type": "string",
          "description": "[Timezone identifier](https://developers.google.com/adwords/api/docs/appendix/codes-formats#timezone-ids) For example `Europe/Zurich`. This field only applies if `handling_cutoff_time` is set. If `handling_cutoff_time` is set but this field is not set, the shipping destination timezone will be used. If both fields are not set, the handling cutoff time will default to 8AM PST."
        },
        "minTransitTime": {
          "description": "Minimum transit time (inclusive) between when the order has shipped and when it is delivered in business days. 0 means that the order is delivered on the same day as it ships. minTransitTime can only be present together with maxTransitTime; but it is not required if maxTransitTime is present.",
          "format": "int64",
          "type": "string"
        }
      },
      "id": "Shipping",
      "type": "object",
      "description": "The Shipping of the product."
    },
    "ProductFee": {
      "type": "object",
      "description": "The product fee attribute containing type and amount.",
      "properties": {
        "amount": {
          "description": "The amount of product fee.",
          "$ref": "Price"
        },
        "type": {
          "enum": [
            "FEE_TYPE_UNSPECIFIED",
            "ADMIN_FEE",
            "APPLICATION_FEE",
            "SECURITY_DEPOSIT"
          ],
          "type": "string",
          "enumDescriptions": [
            "Unspecified fee type.",
            "Admin fee.",
            "Application fee.",
            "Security deposit."
          ],
          "description": "The type of product fee."
        }
      },
      "id": "ProductFee"
    },
    "ShippingBusinessDaysConfig": {
      "id": "ShippingBusinessDaysConfig",
      "description": "The business days during which orders are on their path to fulfillment. If not provided, Monday to Friday business days will be assumed.",
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which an item will ship."
        },
        "businessDays": {
          "description": "Effective days of the week considered for the delivery time calculation. May not be empty. The more business days included the faster the delivery. Can be set through individual days (e.g. `MTWRF`), or day ranges (e.g. `Mon-Fri`). For more information about accepted formats, see [Shipping handling business days](https://support.google.com/merchants/answer/16072859).",
          "type": "string"
        }
      }
    },
    "ProductCertification": {
      "type": "object",
      "id": "ProductCertification",
      "description": "Product [certification](https://support.google.com/merchants/answer/13528839), initially introduced for EU energy efficiency labeling compliance using the EU EPREL database.",
      "properties": {
        "certificationName": {
          "type": "string",
          "description": "The name of the certification.",
          "enum": [
            "CERTIFICATION_NAME_UNSPECIFIED",
            "ENERGY_STAR",
            "ENERGY_STAR_MOST_EFFICIENT",
            "EPREL",
            "EU_ECOLABEL",
            "VEHICLE_ENERGY_EFFICIENCY",
            "VEHICLE_ENERGY_EFFICIENCY_DISCHARGED_BATTERY",
            "GB_ENERGY_INFO"
          ],
          "enumDescriptions": [
            "Certification name is not specified.",
            "Energy Star.",
            "Energy Star Most Efficient.",
            "Represents energy efficiency certifications in the EU European Registry for Energy Labeling (EPREL) database.",
            "EU Ecolabel.",
            "The overall CO2 class of a vehicle",
            "For the CO2 class of a vehicle with a discharged battery.",
            "Great Britain Energy Information."
          ]
        },
        "certificationValue": {
          "type": "string",
          "description": "The certification value (also known as class, level or grade), for example \"A+\", \"C\", \"gold\". Maximum length is 2000 characters."
        },
        "certificationLabelLink": {
          "type": "string",
          "description": "Optional. URL to the certification label (eg. `https://www.example.com/label`), for example, the energy efficiency label required by UK's DESNZ or EU's EPREL. Maximum length is 2000 characters. For more information, see [Certification](https://support.google.com/merchants/answer/13528839)."
        },
        "certificationCode": {
          "description": "The certification code. Maximum length is 2000 characters.",
          "type": "string"
        },
        "certificationDocumentLink": {
          "description": "Optional. URL to the certification document (eg. `https://www.example.com/document`), for example, the product data sheet or fiche required by UK's DESNZ or EU's EPREL. Maximum length is 2000 characters. For more information, see [Certification](https://support.google.com/merchants/answer/13528839).",
          "type": "string"
        },
        "certificationAuthority": {
          "type": "string",
          "enumDescriptions": [
            "Certification authority is not specified.",
            "For the French CO2 emissions class for vehicles.",
            "For the German CO2 emissions classes for vehicles.",
            "Environment Protection Agency.",
            "European Commission for energy labels in the EU.",
            "Department for Energy Security and Net Zero."
          ],
          "enum": [
            "CERTIFICATION_AUTHORITY_UNSPECIFIED",
            "ADEME",
            "BMWK",
            "EPA",
            "EC",
            "DESNZ"
          ],
          "description": "The certification authority."
        }
      }
    },
    "ProductInstallment": {
      "description": "A message that represents installment.",
      "id": "ProductInstallment",
      "type": "object",
      "properties": {
        "amount": {
          "description": "The amount the buyer has to pay per month.",
          "$ref": "Price"
        },
        "downpayment": {
          "$ref": "Price",
          "description": "The up-front down payment amount the buyer has to pay."
        },
        "mileageAllowance": {
          "description": "Optional. The mileage allowance for the lease of the vehicle. Only applicable to vehicle products.",
          "$ref": "Mileage"
        },
        "creditType": {
          "enum": [
            "CREDIT_TYPE_UNSPECIFIED",
            "FINANCE",
            "LEASE"
          ],
          "description": "Type of installment payments.",
          "enumDescriptions": [
            "Default value. This value is unused.",
            "Finance.",
            "Lease."
          ],
          "type": "string"
        },
        "totalAmount": {
          "$ref": "Price",
          "description": "Optional. Total amount the buyer has to pay, including interest."
        },
        "annualPercentageRate": {
          "format": "double",
          "description": "Optional. Annual percentage rate for `credit_type` finance",
          "type": "number"
        },
        "months": {
          "type": "string",
          "description": "The number of installments the buyer has to pay.",
          "format": "int64"
        }
      }
    },
    "HandlingCutoffTime": {
      "id": "HandlingCutoffTime",
      "properties": {
        "country": {
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which the handling cutoff time applies.",
          "type": "string"
        },
        "cutoffTime": {
          "description": "The handling cutoff time until which an order has to be placed to be processed in the same day. This is a string in format of HHMM (e.g. `1530`) for 3:30 PM. If not configured, the cutoff time will be defaulted to 8AM PST.",
          "type": "string"
        },
        "cutoffTimezone": {
          "type": "string",
          "description": "[Timezone identifier](https://developers.google.com/adwords/api/docs/appendix/codes-formats#timezone-ids) For example 'Europe/Zurich'. If not set, the shipping destination timezone will be used."
        },
        "disableDeliveryAfterCutoff": {
          "description": "This field only applies to same-day delivery. If true, prevents next-day delivery from being shown for this offer after the cutoff time. This field only applies to same-day delivery offers, for merchants who want to explicitly disable it.",
          "type": "boolean"
        }
      },
      "description": "Configuration for offer or offer-country level shipping handling cutoff time.",
      "type": "object"
    },
    "EnergyConsumption": {
      "description": "The energy consumption of the vehicle.",
      "id": "EnergyConsumption",
      "type": "object",
      "properties": {
        "unit": {
          "enum": [
            "UNIT_UNSPECIFIED",
            "KWHPER100KM"
          ],
          "enumDescriptions": [
            "Unspecified unit.",
            "Kilowatt hours per 100 kilometers."
          ],
          "description": "The unit of the energy consumption.",
          "type": "string"
        },
        "value": {
          "format": "double",
          "description": "The energy consumption value.",
          "type": "number"
        }
      }
    },
    "FuelConsumption": {
      "properties": {
        "unit": {
          "enumDescriptions": [
            "Unspecified unit.",
            "Liter per 100 kilometers.",
            "Kilograms per 100 kilometers."
          ],
          "type": "string",
          "description": "The unit of the fuel consumption.",
          "enum": [
            "UNIT_UNSPECIFIED",
            "LPER100KM",
            "KGPER100KM"
          ]
        },
        "value": {
          "type": "number",
          "description": "The fuel consumption value.",
          "format": "double"
        }
      },
      "id": "FuelConsumption",
      "description": "The fuel consumption of the vehicle.",
      "type": "object"
    },
    "StructuredDescription": {
      "type": "object",
      "id": "StructuredDescription",
      "properties": {
        "content": {
          "description": "The description text Maximum length is 5000 characters",
          "type": "string"
        },
        "digitalSourceType": {
          "enum": [
            "DIGITAL_SOURCE_TYPE_UNSPECIFIED",
            "TRAINED_ALGORITHMIC_MEDIA",
            "DEFAULT"
          ],
          "description": "The digital source type. Following [IPTC](https://cv.iptc.org/newscodes/digitalsourcetype).",
          "type": "string",
          "enumDescriptions": [
            "Digital source type is unspecified.",
            "Text created algorithmically using a model derived from sampled content.",
            "Text NOT created algorithmically using a model derived from sampled content (the default)"
          ]
        }
      },
      "description": "Structured description, for algorithmically (AI)-generated descriptions."
    },
    "VariantOption": {
      "properties": {
        "value": {
          "description": "Required. The value of the variant. For example, \"Red\", \"128GB\", \"XL\", \"100cm\"",
          "type": "string"
        },
        "name": {
          "description": "Required. The name of the variant. For example, \"Color\", \"Memory\", \"Size\", \"Length\"",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Additional product variants for the product.",
      "id": "VariantOption"
    },
    "ProductDetail": {
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The name of the product detail."
        },
        "sectionName": {
          "type": "string",
          "description": "The section header used to group a set of product details."
        },
        "attributeValue": {
          "description": "The value of the product detail.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "The product details.",
      "id": "ProductDetail"
    },
    "Price": {
      "type": "object",
      "id": "Price",
      "description": "The price represented as a number and currency.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The currency of the price using three-letter acronyms according to [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)."
        },
        "amountMicros": {
          "type": "string",
          "description": "The price represented as a number in micros (1 million micros is an equivalent to one's currency standard unit, for example, 1 USD = 1000000 micros).",
          "format": "int64"
        }
      }
    },
    "CustomAttribute": {
      "type": "object",
      "id": "CustomAttribute",
      "description": "A message that represents custom attributes. Exactly one of `value` or `group_values` must not be empty.",
      "properties": {
        "name": {
          "description": "The name of the attribute.",
          "type": "string"
        },
        "value": {
          "description": "The value of the attribute. If `value` is not empty, `group_values` must be empty.",
          "type": "string"
        },
        "groupValues": {
          "description": "Subattributes within this attribute group. If `group_values` is not empty, `value` must be empty.",
          "type": "array",
          "items": {
            "$ref": "CustomAttribute"
          }
        }
      }
    },
    "Empty": {
      "properties": {},
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "id": "Empty",
      "type": "object"
    },
    "PetPolicy": {
      "id": "PetPolicy",
      "properties": {
        "petsAllowed": {
          "description": "Whether pets are allowed.",
          "type": "boolean"
        },
        "petTypes": {
          "type": "array",
          "description": "The pet types allowed.",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Unspecified pet type.",
              "Cats.",
              "Large dogs.",
              "Small dogs."
            ],
            "enum": [
              "PET_TYPE_UNSPECIFIED",
              "CATS",
              "LARGE_DOGS",
              "SMALL_DOGS"
            ]
          }
        }
      },
      "description": "The pet policy of the property.",
      "type": "object"
    },
    "ProductStatus": {
      "description": "The status of a product, data validation issues, that is, information about a product computed asynchronously.",
      "id": "ProductStatus",
      "properties": {
        "creationDate": {
          "type": "string",
          "format": "google-datetime",
          "description": "Date on which the item has been created, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format."
        },
        "googleExpirationDate": {
          "format": "google-datetime",
          "description": "Date on which the item expires, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "type": "string"
        },
        "itemLevelIssues": {
          "items": {
            "$ref": "ItemLevelIssue"
          },
          "type": "array",
          "description": "A list of all issues associated with the product."
        },
        "destinationStatuses": {
          "type": "array",
          "items": {
            "$ref": "DestinationStatus"
          },
          "description": "The intended destinations for the product."
        },
        "lastUpdateDate": {
          "description": "Date on which the item has been last updated, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "type": "string",
          "format": "google-datetime"
        }
      },
      "type": "object"
    },
    "Mileage": {
      "type": "object",
      "id": "Mileage",
      "description": "The mileage of the vehicle.",
      "properties": {
        "value": {
          "description": "The distance value.",
          "format": "int64",
          "type": "string"
        },
        "unit": {
          "type": "string",
          "description": "The unit of the mileage.",
          "enumDescriptions": [
            "Unspecified unit.",
            "Miles.",
            "Kilometers."
          ],
          "enum": [
            "UNIT_UNSPECIFIED",
            "MILES",
            "KM"
          ]
        }
      }
    },
    "ProductDimension": {
      "properties": {
        "unit": {
          "description": "Required. The dimension units. Acceptable values are: * \"`in`\" * \"`cm`\"",
          "type": "string"
        },
        "value": {
          "format": "double",
          "type": "number",
          "description": "Required. The dimension value represented as a number. The value can have a maximum precision of four decimal places."
        }
      },
      "description": "The dimension of the product.",
      "id": "ProductDimension",
      "type": "object"
    },
    "RelatedProduct": {
      "id": "RelatedProduct",
      "description": "Specifies how other products are related to this product.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Required. The identifier of the related product.",
          "type": "string"
        },
        "idType": {
          "description": "Required. The type of the identifier of the related product. For example, [GTIN](https://support.google.com/merchants/answer/6219078) or [product ID](https://support.google.com/merchants/answer/6324405).",
          "enum": [
            "ID_TYPE_UNSPECIFIED",
            "GTIN",
            "ID"
          ],
          "type": "string",
          "enumDescriptions": [
            "The identifier type is unspecified.",
            "The identifier is a GTIN.",
            "The identifier is a product ID in the feed."
          ]
        },
        "relationshipType": {
          "enumDescriptions": [
            "The relationship type is unspecified.",
            "Part of a set of products that are often purchased together.",
            "Part that is necessary for the product to function, for example a battery for a battery-operated lamp.",
            "A product that this product is often purchased together with, for example a phone case with a phone.",
            "Product that this product can be substituted for. For example a printer comparable in function to another printer.",
            "An identical product sold under a different brand, for example a cheaper house brand.",
            "An accessory to this product, for example a side table that matches the style of a couch."
          ],
          "type": "string",
          "description": "Required. The type of the relationship between this product and the related product.",
          "enum": [
            "RELATIONSHIP_TYPE_UNSPECIFIED",
            "PART_OF_SET",
            "REQUIRED_PART",
            "OFTEN_BOUGHT_WITH",
            "SUBSTITUTE",
            "DIFFERENT_BRAND",
            "ACCESSORY"
          ]
        }
      }
    },
    "LoyaltyPoints": {
      "properties": {
        "name": {
          "description": "Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.",
          "type": "string"
        },
        "pointsValue": {
          "description": "The retailer's loyalty points in absolute value.",
          "type": "string",
          "format": "int64"
        },
        "ratio": {
          "format": "double",
          "type": "number",
          "description": "The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0."
        }
      },
      "id": "LoyaltyPoints",
      "description": "A message that represents loyalty points.",
      "type": "object"
    },
    "LeaseTerm": {
      "properties": {
        "durationValue": {
          "type": "string",
          "format": "int64",
          "description": "The duration value of the lease term."
        },
        "durationUnit": {
          "type": "string",
          "description": "The duration unit of the lease term.",
          "enumDescriptions": [
            "Unspecified duration unit.",
            "Month.",
            "Week."
          ],
          "enum": [
            "DURATION_UNIT_UNSPECIFIED",
            "MONTHS",
            "WEEKS"
          ]
        },
        "type": {
          "enumDescriptions": [
            "Unspecified lease term type.",
            "Fixed term."
          ],
          "enum": [
            "LEASE_TERM_TYPE_UNSPECIFIED",
            "FIXED_TERM"
          ],
          "description": "The type of lease term.",
          "type": "string"
        }
      },
      "description": "The lease term of the property.",
      "id": "LeaseTerm",
      "type": "object"
    },
    "Interval": {
      "id": "Interval",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
          "format": "google-datetime"
        },
        "startTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start."
        }
      },
      "type": "object",
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time."
    },
    "UnitPricingBaseMeasure": {
      "id": "UnitPricingBaseMeasure",
      "type": "object",
      "description": "The UnitPricingBaseMeasure of the product.",
      "properties": {
        "unit": {
          "description": "The unit of the denominator.",
          "type": "string"
        },
        "value": {
          "format": "int64",
          "type": "string",
          "description": "The denominator of the unit price."
        }
      }
    },
    "CloudExportAdditionalProperties": {
      "description": "Product property for the Cloud Retail API. For example, properties for a TV product could be \"Screen-Resolution\" or \"Screen-Size\".",
      "properties": {
        "intValue": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Integer values of the given property. For example, 1080 for a TV product's Screen Resolution. Maximum repeatedness of this value is 400. Values are stored in an arbitrary but consistent order."
        },
        "minValue": {
          "format": "float",
          "type": "number",
          "description": "Minimum float value of the given property. For example for a TV product 1.00."
        },
        "unitCode": {
          "description": "Unit of the given property. For example, \"Pixels\" for a TV product. Maximum string size is 256B.",
          "type": "string"
        },
        "boolValue": {
          "type": "boolean",
          "description": "Boolean value of the given property. For example for a TV product, \"True\" or \"False\" if the screen is UHD."
        },
        "floatValue": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "float"
          },
          "description": "Float values of the given property. For example for a TV product 1.2345. Maximum repeatedness of this value is 400. Values are stored in an arbitrary but consistent order."
        },
        "maxValue": {
          "type": "number",
          "description": "Maximum float value of the given property. For example for a TV product 100.00.",
          "format": "float"
        },
        "propertyName": {
          "description": "Name of the given property. For example, \"Screen-Resolution\" for a TV product. Maximum string size is 256 characters.",
          "type": "string"
        },
        "textValue": {
          "description": "Text value of the given property. For example, \"8K(UHD)\" could be a text value for a TV product. Maximum repeatedness of this value is 400. Values are stored in an arbitrary but consistent order. Maximum string size is 256 characters.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "CloudExportAdditionalProperties",
      "type": "object"
    },
    "ProductStatusChangeMessage": {
      "type": "object",
      "id": "ProductStatusChangeMessage",
      "description": "The message that the merchant will receive to notify about product status change event. For more information, see [Product status changes](https://developers.google.com/merchant/api/guides/notifications/product-status-changes).",
      "properties": {
        "changes": {
          "type": "array",
          "description": "A message to describe the change that happened to the product",
          "items": {
            "$ref": "ProductChange"
          }
        },
        "resourceId": {
          "type": "string",
          "description": "The product id."
        },
        "resourceType": {
          "description": "The resource that changed, in this case it will always be `Product`.",
          "type": "string",
          "enum": [
            "RESOURCE_UNSPECIFIED",
            "PRODUCT",
            "ACCOUNT_SERVICE"
          ],
          "enumDescriptions": [
            "Unspecified resource",
            "Resource type : product",
            "Account service"
          ]
        },
        "expirationTime": {
          "description": "Optional. The product expiration time. This field will not be set if the notification is sent for a product deletion event.",
          "format": "google-datetime",
          "type": "string"
        },
        "attribute": {
          "enumDescriptions": [
            "Unspecified attribute",
            "Status of the changed entity"
          ],
          "type": "string",
          "description": "The attribute in the resource that changed, in this case it will be always `Status`.",
          "enum": [
            "ATTRIBUTE_UNSPECIFIED",
            "STATUS"
          ]
        },
        "account": {
          "type": "string",
          "description": "The target account that owns the entity that changed. Format : `accounts/{merchant_id}`"
        },
        "resource": {
          "type": "string",
          "description": "The product name. Format: `accounts/{account}/products/{product}`"
        },
        "eventTime": {
          "format": "google-datetime",
          "description": "The time at which the event was generated. If you want to order the notification messages you receive you should rely on this field not on the order of receiving the notifications.",
          "type": "string"
        },
        "managingAccount": {
          "description": "The account that manages the merchant's account. can be the same as merchant id if it is standalone account. Format : `accounts/{service_provider_id}`",
          "type": "string"
        }
      }
    },
    "UnitArea": {
      "type": "object",
      "id": "UnitArea",
      "description": "The unit area of the property.",
      "properties": {
        "unit": {
          "enumDescriptions": [
            "Unspecified unit.",
            "Square meters.",
            "Square feet."
          ],
          "description": "The unit of area.",
          "type": "string",
          "enum": [
            "UNIT_UNSPECIFIED",
            "SQM",
            "SQFT"
          ]
        },
        "value": {
          "format": "double",
          "description": "The area value.",
          "type": "number"
        }
      }
    },
    "ShippingDimension": {
      "type": "object",
      "description": "The ShippingDimension of the product.",
      "properties": {
        "unit": {
          "description": "The unit of value.",
          "type": "string"
        },
        "value": {
          "format": "double",
          "description": "The dimension of the product used to calculate the shipping cost of the item.",
          "type": "number"
        }
      },
      "id": "ShippingDimension"
    },
    "Returns": {
      "properties": {
        "policyUrl": {
          "type": "string",
          "description": "The URL of the return policy."
        },
        "restockingFee": {
          "description": "A flat restocking fee penalty.",
          "$ref": "Price"
        },
        "windowType": {
          "enum": [
            "RETURN_WINDOW_TYPE_UNSPECIFIED",
            "FINITE_RETURN_WINDOW",
            "NO_RETURNS",
            "LIFETIME"
          ],
          "description": "Special return window behavior.",
          "enumDescriptions": [
            "The return window type is unspecified.",
            "Window with a fixed number of days. If this is set, the `window_days` field must be set.",
            "No returns accepted.",
            "Lifetime returns accepted."
          ],
          "type": "string"
        },
        "shippingFee": {
          "$ref": "Price",
          "description": "The fixed cost out-of-pocket for a customer to return an item."
        },
        "methods": {
          "type": "array",
          "description": "The physical methods by which the item can be returned.",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "The return method is unspecified.",
              "Customer returns the item by mail.",
              "Customer returns the item in a store.",
              "Customer drops off the item at a kiosk.",
              "Customer drops off the item at a 3rd party partner location."
            ],
            "enum": [
              "RETURN_METHOD_UNSPECIFIED",
              "BY_MAIL",
              "IN_STORE",
              "AT_A_KIOSK",
              "DROP_OFF_LOCATION"
            ]
          }
        },
        "outcomes": {
          "items": {
            "enum": [
              "RETURN_OUTCOME_UNSPECIFIED",
              "REFUND",
              "EXCHANGE",
              "STORE_CREDIT"
            ],
            "enumDescriptions": [
              "The return outcome is unspecified.",
              "Customer receives a refund.",
              "Customer receives an exchange.",
              "Customer receives store credit."
            ],
            "type": "string"
          },
          "type": "array",
          "description": "The financial outcomes available for a return."
        },
        "countries": {
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the countries to which an item can be returned.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "itemConditions": {
          "items": {
            "enum": [
              "ITEM_CONDITION_UNSPECIFIED",
              "NEW",
              "LIKE_NEW",
              "USED",
              "DEFECTIVE_ONLY"
            ],
            "type": "string",
            "enumDescriptions": [
              "The item condition is unspecified.",
              "New condition.",
              "Like new condition.",
              "Used condition.",
              "Only defective items are accepted."
            ]
          },
          "type": "array",
          "description": "The condition the item must be in to be accepted."
        },
        "shippingFeeType": {
          "enum": [
            "RETURN_SHIPPING_FEE_TYPE_UNSPECIFIED",
            "CUSTOMER_RESPONSIBILITY",
            "DEDUCTED_FROM_REFUND"
          ],
          "type": "string",
          "description": "The type of return shipping fee.",
          "enumDescriptions": [
            "The return shipping fee type is unspecified.",
            "The customer is responsible for shipping costs.",
            "The shipping cost is deducted from the refund."
          ]
        },
        "restockingPercentageFee": {
          "description": "A percentage restocking fee penalty.",
          "type": "number",
          "format": "double"
        },
        "windowDays": {
          "description": "The duration of the return window in days.",
          "format": "int64",
          "type": "string"
        }
      },
      "id": "Returns",
      "type": "object",
      "description": "The returns of the product."
    },
    "ShippingWeight": {
      "properties": {
        "value": {
          "format": "double",
          "type": "number",
          "description": "The weight of the product used to calculate the shipping cost of the item."
        },
        "unit": {
          "description": "The unit of value.",
          "type": "string"
        }
      },
      "id": "ShippingWeight",
      "type": "object",
      "description": "The ShippingWeight of the product."
    },
    "AutomatedDiscounts": {
      "properties": {
        "gadPrice": {
          "description": "The current sale price for products with a price optimized using Google Automated Discounts (GAD). Absent if the information about the GAD_price of the product is not available.",
          "$ref": "Price"
        },
        "priorPrice": {
          "$ref": "Price",
          "description": "The price prior to the application of the first price reduction. Absent if the information about the prior price of the product is not available."
        },
        "priorPriceProgressive": {
          "description": "The price prior to the application of consecutive price reductions. Absent if the information about the prior price of the product is not available.",
          "$ref": "Price"
        }
      },
      "description": "Information regarding Automated Discounts.",
      "type": "object",
      "id": "AutomatedDiscounts"
    },
    "ProductWeight": {
      "properties": {
        "value": {
          "format": "double",
          "description": "Required. The weight represented as a number. The weight can have a maximum precision of four decimal places.",
          "type": "number"
        },
        "unit": {
          "description": "Required. The weight unit. Acceptable values are: * \"`g`\" * \"`kg`\" * \"`oz`\" * \"`lb`\"",
          "type": "string"
        }
      },
      "description": "The weight of the product.",
      "id": "ProductWeight",
      "type": "object"
    },
    "QuestionAndAnswer": {
      "properties": {
        "question": {
          "type": "string",
          "description": "Required. The question text."
        },
        "answer": {
          "type": "string",
          "description": "Required. The answer text."
        }
      },
      "id": "QuestionAndAnswer",
      "type": "object",
      "description": "The question and answer for the product."
    },
    "Warranty": {
      "properties": {
        "durationUnit": {
          "description": "The unit for the warranty duration. Assumed to be `MONTH` if equal to `WARRANTY_DURATION_UNIT_UNSPECIFIED`.",
          "enum": [
            "WARRANTY_DURATION_UNIT_UNSPECIFIED",
            "MONTH",
            "YEAR"
          ],
          "type": "string",
          "enumDescriptions": [
            "Indicates that the warranty duration unit is unspecified.",
            "Indicates that the warranty duration unit is month.",
            "Indicates that the warranty duration unit is year."
          ]
        },
        "duration": {
          "format": "int64",
          "type": "string",
          "description": "The warranty duration in units. Default is in months, can be overridden by the `duration_unit` field."
        },
        "mileage": {
          "description": "The warranty mileage (only applies to vehicles).",
          "$ref": "Mileage"
        }
      },
      "description": "The warranty of the product.",
      "id": "Warranty",
      "type": "object"
    },
    "DisplayAddress": {
      "type": "object",
      "description": "The display address of the property.",
      "properties": {
        "streetName": {
          "type": "string",
          "description": "The street name."
        },
        "postalCode": {
          "description": "The postal code, such as 94043.",
          "type": "string"
        },
        "streetNumber": {
          "description": "The street number.",
          "type": "string"
        },
        "region": {
          "type": "string",
          "description": "The region(state), such as WA, OH, etc."
        },
        "city": {
          "type": "string",
          "description": "The city such as Seattle, New York, etc."
        }
      },
      "id": "DisplayAddress"
    },
    "SubscriptionCost": {
      "type": "object",
      "description": "The SubscriptionCost of the product.",
      "id": "SubscriptionCost",
      "properties": {
        "period": {
          "enumDescriptions": [
            "Indicates that the subscription period is unspecified.",
            "Indicates that the subscription period is month.",
            "Indicates that the subscription period is year.",
            "Indicates that the subscription period is week."
          ],
          "enum": [
            "SUBSCRIPTION_PERIOD_UNSPECIFIED",
            "MONTH",
            "YEAR",
            "WEEK"
          ],
          "type": "string",
          "description": "The type of subscription period. Supported values are: * \"`month`\" * \"`year`\" * \"`week`\""
        },
        "amount": {
          "description": "The amount the buyer has to pay per subscription period.",
          "$ref": "Price"
        },
        "periodLength": {
          "description": "The number of subscription periods the buyer has to pay.",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "CarrierShipping": {
      "description": "Carrier-based shipping configuration. Allows for setting shipping speed or shipping cost based on a carrier's provided info.",
      "id": "CarrierShipping",
      "properties": {
        "flatPrice": {
          "$ref": "Price",
          "description": "Fixed shipping price, represented as a number with currency. Cannot be set together with carrierPrice or its adjustments (carrierPriceFlatAdjustment, carrierPricePercentageAdjustment)."
        },
        "country": {
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which an item will ship.",
          "type": "string"
        },
        "carrierPrice": {
          "enum": [
            "CARRIER_PRICE_OPTION_UNSPECIFIED",
            "AUSTRALIA_POST_REGULAR",
            "AUSTRALIA_POST_EXPRESS",
            "AUSTRALIA_POST_REGULAR_S",
            "AUSTRALIA_POST_REGULAR_M",
            "AUSTRALIA_POST_REGULAR_L",
            "AUSTRALIA_POST_REGULAR_XL",
            "AUSTRALIA_POST_EXPRESS_S",
            "AUSTRALIA_POST_EXPRESS_M",
            "AUSTRALIA_POST_EXPRESS_L",
            "AUSTRALIA_POST_EXPRESS_XL",
            "TNT_ROAD_EXPRESS",
            "TNT_OVERNIGHT_EXPRESS",
            "TOLL_ROAD_DELIVERY",
            "TOLL_OVERNIGHT_PRIORITY",
            "DHL_PAKET",
            "DHL_PACKCHEN",
            "DPD_EXPRESS_12",
            "DPD_EXPRESS",
            "DPD_CLASSIC_PARCEL",
            "HERMES_PACKCHEN",
            "HERMES_PAKETKLASSE_S",
            "HERMES_PAKETKLASSE_M",
            "HERMES_PAKETKLASSE_L",
            "UPS_EXPRESS",
            "UPS_EXPRESS_SAVER",
            "UPS_EXPRESS_STANDARD",
            "DHL_EXPRESS",
            "DHL_EXPRESS_12",
            "DPD_NEXT_DAY",
            "DPD_STANDARD_NEXT_DAY",
            "DPD_STANDARD_TWO_DAY",
            "RMG_1ST_CLASS_SMALL",
            "RMG_1ST_CLASS_MEDIUM",
            "RMG_2ND_CLASS_SMALL",
            "RMG_2ND_CLASS_MEDIUM",
            "TNT_EXPRESS",
            "TNT_EXPRESS_10",
            "TNT_EXPRESS_12",
            "YODEL_B2C_48HR",
            "YODEL_B2C_72HR",
            "YODEL_B2C_PACKET",
            "FEDEX_GROUND",
            "FEDEX_HOME_DELIVERY",
            "FEDEX_EXPRESS_SAVER",
            "FEDEX_FIRST_OVERNIGHT",
            "FEDEX_PRIORITY_OVERNIGHT",
            "FEDEX_STANDARD_OVERNIGHT",
            "FEDEX_2DAY",
            "UPS_STANDARD",
            "UPS_2ND_DAY_AIR",
            "UPS_2ND_DAY_AM",
            "UPS_3_DAY_SELECT",
            "UPS_GROUND",
            "UPS_NEXT_DAY_AIR",
            "UPS_NEXT_DAY_AIR_EARLY_AM",
            "UPS_NEXT_DAY_AIR_SAVER",
            "USPS_PRIORITY_MAIL_EXPRESS",
            "USPS_MEDIA_MAIL",
            "USPS_GROUND_ADVANTAGE_RETAIL",
            "USPS_PRIORITY_MAIL",
            "USPS_GROUND_ADVANTAGE_COMMERCIAL"
          ],
          "enumDescriptions": [
            "Carrier price option is unspecified.",
            "Australia Post Regular shipping service.",
            "Australia Post Express shipping service.",
            "Australia Post Regular Small shipping service.",
            "Australia Post Regular Medium shipping service.",
            "Australia Post Regular Large shipping service.",
            "Australia Post Regular XL shipping service.",
            "Australia Post Express Small shipping service.",
            "Australia Post Express Medium shipping service.",
            "Australia Post Express Large shipping service.",
            "Australia Post Express XL shipping service.",
            "TNT Road Express shipping service.",
            "TNT Overnight Express shipping service.",
            "Toll Road Delivery shipping service.",
            "Toll Overnight Priority shipping service.",
            "DHL Paket shipping service.",
            "DHL Packchen shipping service.",
            "DPD Express 12 shipping service.",
            "DPD Express shipping service.",
            "DPD Classic Parcel shipping service.",
            "Hermes Packchen shipping service.",
            "Hermes Paketklasse S shipping service.",
            "Hermes Paketklasse M shipping service.",
            "Hermes Paketklasse L shipping service.",
            "UPS Express shipping service.",
            "UPS Express Saver shipping service.",
            "UPS Express Standard shipping service.",
            "DHL Express shipping service.",
            "DHL Express 12 shipping service.",
            "DPD Next Day shipping service.",
            "DPD Standard Next Day shipping service.",
            "DPD Standard Two Day shipping service.",
            "RMG 1st Class Small shipping service.",
            "RMG 1st Class Medium shipping service.",
            "RMG 2nd Class Small shipping service.",
            "RMG 2nd Class Medium shipping service.",
            "TNT Express shipping service.",
            "TNT Express 10 shipping service.",
            "TNT Express 12 shipping service.",
            "Yodel B2C 48HR shipping service.",
            "Yodel B2C 72HR shipping service.",
            "Yodel B2C Packet shipping service.",
            "FedEx Ground shipping service.",
            "FedEx Home Delivery shipping service.",
            "FedEx Express Saver shipping service.",
            "FedEx First Overnight shipping service.",
            "FedEx Priority Overnight shipping service.",
            "FedEx Standard Overnight shipping service.",
            "FedEx 2Day shipping service.",
            "UPS Standard shipping service.",
            "UPS 2nd Day Air shipping service.",
            "UPS 2nd Day AM shipping service.",
            "UPS 3 Day Select shipping service.",
            "UPS Ground shipping service.",
            "UPS Next Day Air shipping service.",
            "UPS Next Day Air Early AM shipping service.",
            "UPS Next Day Air Saver shipping service.",
            "USPS Priority Mail Express shipping service.",
            "USPS Media Mail shipping service.",
            "USPS Ground Advantage Retail shipping service.",
            "USPS Priority Mail shipping service.",
            "USPS Ground Advantage Commercial shipping service."
          ],
          "description": "Selected carrier to calculate the shipping price from. Select a carrier from the [available carriers list](https://support.google.com/merchants/answer/15449142#Supported), for example `AUSTRALIA_POST_REGULAR`. Price will be calculated by this selected carrier, the location expressed in originPostalCode, along with the user location to determine the accurate shipping price. Carrier is represented by a carrier service name or a carrier service ID. Cannot be set together with flatPrice.",
          "type": "string"
        },
        "carrierPriceFlatAdjustment": {
          "$ref": "Price",
          "description": "A flat adjustment on the carrier price. Can be either positive or negative. Cannot be zero. Requires `carrier_price` to be present. Cannot be set together with flatPrice and carrierPricePercentageAdjustment."
        },
        "maxHandlingTime": {
          "description": "Maximum handling time (inclusive) between when the order is received and shipped in business days. 0 means that the order is shipped on the same day as it is received if it happens before the cut-off time. Both maxHandlingTime and fixedMaxTransitTime or carrierTransitTime are required if providing shipping speeds.",
          "type": "string",
          "format": "int64"
        },
        "fixedMinTransitTime": {
          "description": "Minimum transit time (inclusive) between when the order has shipped and when it is delivered in business days. 0 means that the order is delivered on the same day as it ships. fixedMinTransitTime can only be set if fixedMaxTransitTime is set. Cannot be set if carrierTransitTime is present.",
          "format": "int64",
          "type": "string"
        },
        "carrierTransitTime": {
          "description": "Selected carrier to calculate the shipping speed from. Select a carrier from the [available carriers list](https://support.google.com/merchants/answer/15449142#Supported), for example `AUSTRALIA_POST_REGULAR`. Speed will be calculated by this selected carrier, the location expressed in originPostalCode, along with the user location to determine the accurate delivery speed. Carrier is represented by a carrier service name or a carrier service ID. Cannot be set together with fixedMaxTransitTime or fixedMinTransitTime.",
          "enum": [
            "CARRIER_TRANSIT_TIME_OPTION_UNSPECIFIED",
            "DHL_PAKET",
            "DHL_PACKCHEN",
            "DHL_EXPRESSEASY",
            "DPD_EXPRESS",
            "DPD_CLASSIC_PARCEL",
            "HERMES_HAUSTUR",
            "HERMES_PAKETSHOP",
            "GLS_BUSINESS",
            "GLS_EXPRESS",
            "GLS_PRIVATE",
            "COLISSIMO_DOMICILE",
            "DHL_EXPRESS_12AM",
            "DHL_EXPRESS_9AM",
            "GEODIS_EXPRESS",
            "GEODIS_PACK_30",
            "GEODIS_SAME_DAY",
            "GEODIS_TOP_24",
            "TNT_ESSENTIEL_24H",
            "TNT_ESSENTIEL_FLEXIBILITE",
            "FEDEX_GROUND",
            "FEDEX_HOME_DELIVERY",
            "FEDEX_EXPRESS_SAVER",
            "FEDEX_FIRST_OVERNIGHT",
            "FEDEX_PRIORITY_OVERNIGHT",
            "FEDEX_STANDARD_OVERNIGHT",
            "FEDEX_2DAY",
            "UPS_2ND_DAY_AIR",
            "UPS_2ND_DAY_AM",
            "UPS_3_DAY_SELECT",
            "UPS_GROUND",
            "UPS_NEXT_DAY_AIR",
            "UPS_NEXT_DAY_AIR_EARLY_AM",
            "UPS_NEXT_DAY_AIR_SAVER",
            "USPS_PRIORITY_MAIL_EXPRESS",
            "USPS_MEDIA_MAIL",
            "USPS_GROUND_ADVANTAGE_RETAIL",
            "USPS_PRIORITY_MAIL",
            "USPS_GROUND_ADVANTAGE_COMMERCIAL",
            "USPS_FIRST_CLASS_MAIL"
          ],
          "enumDescriptions": [
            "Carrier transit time option is unspecified.",
            "DHL Paket shipping service.",
            "DHL Packchen shipping service.",
            "DHL Express Easy shipping service.",
            "DPD Express shipping service.",
            "DPD Classic Parcel shipping service.",
            "Hermes Haustur shipping service.",
            "Hermes Paketshop shipping service.",
            "GLS Business shipping service.",
            "GLS Express shipping service.",
            "GLS Private shipping service.",
            "Colissimo Domicile shipping service.",
            "DHL Express 12 AM shipping service.",
            "DHL Express 9 AM shipping service.",
            "GEODIS Express shipping service.",
            "GEODIS Pack 30 shipping service.",
            "GEODIS Same Day shipping service.",
            "GEODIS Top 24 shipping service.",
            "TNT Essentiel 24H shipping service.",
            "TNT Essentiel Flexibilite shipping service.",
            "FedEx Ground shipping service.",
            "FedEx Home Delivery shipping service.",
            "FedEx Express Saver shipping service.",
            "FedEx First Overnight shipping service.",
            "FedEx Priority Overnight shipping service.",
            "FedEx Standard Overnight shipping service.",
            "FedEx 2Day shipping service.",
            "UPS 2nd Day Air shipping service.",
            "UPS 2nd Day AM shipping service.",
            "UPS 3 Day Select shipping service.",
            "UPS Ground shipping service.",
            "UPS Next Day Air shipping service.",
            "UPS Next Day Air Early AM shipping service.",
            "UPS Next Day Air Saver shipping service.",
            "USPS Priority Mail Express shipping service.",
            "USPS Media Mail shipping service.",
            "USPS Ground Advantage Retail shipping service.",
            "USPS Priority Mail shipping service.",
            "USPS Ground Advantage Commercial shipping service.",
            "USPS First Class Mail shipping service."
          ],
          "type": "string"
        },
        "carrierPricePercentageAdjustment": {
          "type": "number",
          "description": "A percentual adjustment on the carrier price. Can be either positive or negative. Cannot be zero. Requires `carrier_price` to be present. Cannot be set together with flatPrice and carrierPriceFlatAdjustment.",
          "format": "double"
        },
        "originPostalCode": {
          "description": "The source location postal code from which this offer ships. Represented only by a full-length postal code.",
          "type": "string"
        },
        "minHandlingTime": {
          "description": "Minimum handling time (inclusive) between when the order is received and shipped in business days. 0 means that the order is shipped on the same day as it is received if it happens before the cut-off time. minHandlingTime can only be set if maxHandlingTime is also set.",
          "format": "int64",
          "type": "string"
        },
        "fixedMaxTransitTime": {
          "type": "string",
          "description": "Maximum transit time (inclusive) between when the order has shipped and when it is delivered in business days. 0 means that the order is delivered on the same day as it ships. Needs to be provided together with maxHandlingTime. Cannot be set if carrierTransitTime is present.",
          "format": "int64"
        },
        "postalCode": {
          "type": "string",
          "description": "The postal code range that the shipping rate applies to, represented by a postal code (eg. `94043`), a postal code prefix followed by a * wildcard (eg. `94*`), a range between two postal codes (eg. `94043-98033`) or two postal code prefixes of equal length (eg. `94*-98*`)."
        },
        "region": {
          "description": "The geographic region to which a shipping rate applies. See [region](https://support.google.com/merchants/answer/6324484) for more information.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "DestinationStatus": {
      "description": "The destination status of the product status. Equivalent to `StatusPerReportingContext` in Reports API.",
      "id": "DestinationStatus",
      "type": "object",
      "properties": {
        "pendingCountries": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of country codes (ISO 3166-1 alpha-2) where the offer is pending approval."
        },
        "approvedCountries": {
          "items": {
            "type": "string"
          },
          "description": "List of country codes (ISO 3166-1 alpha-2) where the offer is approved.",
          "type": "array"
        },
        "reportingContext": {
          "description": "The name of the reporting context.",
          "enum": [
            "REPORTING_CONTEXT_ENUM_UNSPECIFIED",
            "SHOPPING_ADS",
            "DISCOVERY_ADS",
            "DEMAND_GEN_ADS",
            "DEMAND_GEN_ADS_DISCOVER_SURFACE",
            "VIDEO_ADS",
            "DISPLAY_ADS",
            "LOCAL_INVENTORY_ADS",
            "VEHICLE_INVENTORY_ADS",
            "FREE_LISTINGS",
            "FREE_LISTINGS_UCP_CHECKOUT",
            "FREE_LOCAL_LISTINGS",
            "FREE_LOCAL_VEHICLE_LISTINGS",
            "YOUTUBE_AFFILIATE",
            "YOUTUBE_SHOPPING",
            "CLOUD_RETAIL",
            "LOCAL_CLOUD_RETAIL",
            "PRODUCT_REVIEWS",
            "MERCHANT_REVIEWS",
            "YOUTUBE_CHECKOUT",
            "RENTAL_ADS"
          ],
          "enumDescriptions": [
            "Not specified.",
            "[Shopping ads](https://support.google.com/merchants/answer/6149970).",
            "Deprecated: Use `DEMAND_GEN_ADS` instead. [Discovery and Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
            "[Demand Gen ads on Discover surface](https://support.google.com/merchants/answer/13389785).",
            "[Video ads](https://support.google.com/google-ads/answer/6340491).",
            "[Display ads](https://support.google.com/merchants/answer/6069387).",
            "[Local inventory ads](https://support.google.com/merchants/answer/3271956).",
            "[Vehicle inventory ads](https://support.google.com/merchants/answer/11544533).",
            "[Free product listings](https://support.google.com/merchants/answer/9199328).",
            "[Free product listings on UCP checkout](https://developers.google.com/merchant/ucp).",
            "[Free local product listings](https://support.google.com/merchants/answer/9825611).",
            "[Free local vehicle listings](https://support.google.com/merchants/answer/11544533).",
            "[Youtube Affiliate](https://support.google.com/youtube/answer/13376398).",
            "[YouTube Shopping](https://support.google.com/merchants/answer/13478370).",
            "[Cloud retail](https://cloud.google.com/solutions/retail).",
            "[Local cloud retail](https://cloud.google.com/solutions/retail).",
            "[Product Reviews](https://support.google.com/merchants/answer/14620732).",
            "[Merchant Reviews](https://developers.google.com/merchant-review-feeds).",
            "YouTube Checkout .",
            "Real Estate Rental Ads. ."
          ],
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "type": "string"
        },
        "disapprovedCountries": {
          "description": "List of country codes (ISO 3166-1 alpha-2) where the offer is disapproved.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "StructuredTitle": {
      "description": "Structured title, for algorithmically (AI)-generated titles.",
      "id": "StructuredTitle",
      "properties": {
        "content": {
          "description": "The title text Maximum length is 150 characters",
          "type": "string"
        },
        "digitalSourceType": {
          "enumDescriptions": [
            "Digital source type is unspecified.",
            "Text created algorithmically using a model derived from sampled content.",
            "Text NOT created algorithmically using a model derived from sampled content (the default)"
          ],
          "enum": [
            "DIGITAL_SOURCE_TYPE_UNSPECIFIED",
            "TRAINED_ALGORITHMIC_MEDIA",
            "DEFAULT"
          ],
          "description": "The digital source type. Following [IPTC](https://cv.iptc.org/newscodes/digitalsourcetype).",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ProductInput": {
      "id": "ProductInput",
      "type": "object",
      "description": "This resource represents input data you submit for a product, not the processed product that you see in Merchant Center, in Shopping ads, or across Google surfaces. Product inputs, rules and supplemental data source data are combined to create the processed Product. For more information, see [Manage products](https://developers.google.com/merchant/api/guides/products/overview), [Add and manage products](https://developers.google.com/merchant/api/guides/products/add-manage), [Make frequent updates to your products](https://developers.google.com/merchant/api/guides/products/frequent-updates), and [Manage API data sources](https://developers.google.com/merchant/api/guides/data-sources/api-sources#create-primary-data-source). Required product input attributes to pass data validation checks are primarily defined in the [Products Data Specification](https://support.google.com/merchants/answer/188494). The following attributes are required: feedLabel, contentLanguage and offerId. After inserting, updating, or deleting a product input, it may take several minutes before the processed product can be retrieved. All fields in the product input and its sub-messages match the English name of their corresponding attribute in the [Products Data Specification](https://support.google.com/merchants/answer/188494) with [some exceptions](https://support.google.com/merchants/answer/7052112). The following reference documentation lists the field names in the **camelCase** casing style while the Products Data Specification lists the names in the **snake_case** casing style.",
      "properties": {
        "contentLanguage": {
          "description": "Required. Immutable. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the product.",
          "type": "string"
        },
        "product": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The name of the processed product. Format: `accounts/{account}/products/{product}`"
        },
        "base64EncodedName": {
          "type": "string",
          "description": "Output only. The **unpadded base64url encoded name** of the product input. Format: `accounts/{account}/productInputs/{productinput}` where the last section `productinput` is the unpadded base64url encoding of the `content_language~feed_label~offer_id` name. Example: `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw` for the decoded product input name `accounts/123/productInputs/en~US~sku/123`. This field can be used directly as input to the API methods that require the product input name to be encoded if it contains special characters, for example [`GetProductInput`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.productInputs/get).",
          "readOnly": true
        },
        "offerId": {
          "description": "Required. Immutable. Your unique identifier for the product. This is the same for the product input and processed product. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. See the [products data specification](https://support.google.com/merchants/answer/188494#id) for details.",
          "type": "string"
        },
        "base64EncodedProduct": {
          "description": "Output only. The **unpadded base64url encoded name** of the processed product. Format: `accounts/{account}/products/{product}` where the last section `product` is the unpadded base64url encoding of the `content_language~feed_label~offer_id` name. Example: `accounts/123/products/ZW5-VVN-c2t1LzEyMw` for the decoded product name `accounts/123/products/en~US~sku/123`. This field can be used directly as input to the API methods that require the product name to be encoded if it contains special characters, for example [`GetProduct`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.products/get).",
          "readOnly": true,
          "type": "string"
        },
        "customAttributes": {
          "items": {
            "$ref": "CustomAttribute"
          },
          "type": "array",
          "description": "Optional. A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the data specification in its generic form (for example, `{ \"name\": \"size type\", \"value\": \"regular\" }`). This is useful for submitting attributes not explicitly exposed by the API. Maximum allowed number of characters for each custom attribute is 10240 (represents sum of characters for name and value). Maximum 2500 custom attributes can be set per product, with total size of 102.4kB. Underscores in custom attribute names are replaced by spaces upon insertion."
        },
        "legacyLocal": {
          "description": "Immutable. Determines whether the product is **only** targeting local destinations and whether the product name should be distinguished with a `local~` prefix. For example, `accounts/123/productInputs/local~en~US~sku123`. If a product that is not `legacy_local` is already targeting local destinations, creating a `legacy_local` product with an otherwise matching name will fail.",
          "type": "boolean"
        },
        "productAttributes": {
          "$ref": "ProductAttributes",
          "description": "Optional. A list of strongly-typed product attributes."
        },
        "versionNumber": {
          "format": "int64",
          "type": "string",
          "description": "Optional. Immutable. Represents the existing version (freshness) of the product, which can be used to preserve the right order when multiple updates are done at the same time. If set, the insertion is prevented when version number is lower than the current version number of the existing product. Re-insertion (for example, product refresh after 30 days) can be performed with the current `version_number`. Only supported for insertions into primary data sources. Do not set this field for updates. Do not set this field for insertions into supplemental data sources. If the operation is prevented, the aborted exception will be thrown."
        },
        "feedLabel": {
          "description": "Required. Immutable. The feed label that lets you categorize and identify your products. The maximum allowed characters are 20, and the supported characters are `A-Z`, `0-9`, hyphen, and underscore. The feed label must not include any spaces. For more information, see [Using feed labels](//support.google.com/merchants/answer/14994087).",
          "type": "string"
        },
        "name": {
          "description": "Identifier. The name of the product. Format: `accounts/{account}/productInputs/{productinput}` The {productinput} segment is a unique identifier for the product. This identifier must be unique within a merchant account and generally follows the structure: `content_language~feed_label~offer_id`. Example: `en~US~sku123` For legacy local products, the structure is: `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123` The format of the {productinput} segment in the URL is automatically detected by the server, supporting two options: 1. **Encoded Format**: The `{productinput}` segment is an unpadded base64url encoded string (RFC 4648 Section 5). The decoded string must result in the `content_language~feed_label~offer_id` structure. This encoding MUST be used if any part of the product identifier (like `offer_id`) contains characters such as `/`, `%`, or `~`. * Example: To represent the product ID `en~US~sku/123`, the `{productinput}` segment must be the unpadded base64url encoding of this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name for the product would be `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`. 2. **Plain Format**: The `{productinput}` segment is the tilde-separated string `content_language~feed_label~offer_id`. This format is suitable only when `content_language`, `feed_label`, and `offer_id` do not contain URL-problematic characters like `/`, `%`, or `~`. We recommend using the **Encoded Format** for all product IDs to ensure correct parsing, especially those containing special characters. The presence of tilde (`~`) characters in the `{productinput}` segment is used to differentiate between the two formats.",
          "type": "string"
        }
      }
    },
    "Co2Emissions": {
      "id": "Co2Emissions",
      "description": "The co2 emission of the vehicle.",
      "properties": {
        "unit": {
          "description": "The unit of the co2 emission.",
          "type": "string",
          "enum": [
            "UNIT_UNSPECIFIED",
            "GPERKM"
          ],
          "enumDescriptions": [
            "Unspecified unit.",
            "Grams per kilometer."
          ]
        },
        "value": {
          "description": "The co2 emission value.",
          "format": "int64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "PickupCost": {
      "properties": {
        "freeThreshold": {
          "description": "Optional. The price threshold above which pickup is free of charge.",
          "$ref": "Price"
        },
        "flatRate": {
          "description": "Required. The flat rate pickup cost of the item.",
          "$ref": "Price"
        }
      },
      "description": "The pickup cost of the item.",
      "id": "PickupCost",
      "type": "object"
    },
    "UnitPricingMeasure": {
      "type": "object",
      "properties": {
        "unit": {
          "type": "string",
          "description": "The unit of the measure."
        },
        "value": {
          "type": "number",
          "format": "double",
          "description": "The measure of an item."
        }
      },
      "description": "The UnitPricingMeasure of the product.",
      "id": "UnitPricingMeasure"
    },
    "FreeShippingThreshold": {
      "id": "FreeShippingThreshold",
      "properties": {
        "country": {
          "type": "string",
          "description": "The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) of the country to which an item will ship."
        },
        "priceThreshold": {
          "$ref": "Price",
          "description": "The minimum product price for the shipping cost to become free. Represented as a number."
        }
      },
      "description": "Conditions to be met for a product to have free shipping.",
      "type": "object"
    },
    "Product": {
      "description": "The processed product, built from multiple product inputs after applying rules and supplemental data sources. This processed product matches what is shown in your Merchant Center account. Each product is built from exactly one primary data source product input, and multiple supplemental data source inputs. After inserting, updating, or deleting a product input, it may take several minutes before the updated processed product can be retrieved. All fields in the processed product and its sub-messages match the name of their corresponding attribute in the [Product data specification](https://support.google.com/merchants/answer/7052112) with some exceptions. For product ingestion workflows and status checks, see [Manage products](https://developers.google.com/merchant/api/guides/products/overview), [Add and manage products](https://developers.google.com/merchant/api/guides/products/add-manage), and [List your products data and product issues](https://developers.google.com/merchant/api/guides/products/list-products-data-issues).",
      "type": "object",
      "properties": {
        "productStatus": {
          "description": "Output only. The status of a product, data validation issues, that is, information about a product computed asynchronously.",
          "$ref": "ProductStatus",
          "readOnly": true
        },
        "dataSource": {
          "description": "Output only. The primary data source of the product.",
          "type": "string",
          "readOnly": true
        },
        "legacyLocal": {
          "readOnly": true,
          "description": "Output only. Determines whether the product is **only** targeting local destinations and whether the product name should be distinguished with a `local~` prefix. For example, `accounts/123/products/local~en~US~sku123`.",
          "type": "boolean"
        },
        "base64EncodedName": {
          "type": "string",
          "description": "Output only. The **unpadded base64url encoded name** of the product. Format: `accounts/{account}/products/{product}` where the last section `product` is the unpadded base64url encoding of the `content_language~feed_label~offer_id` name. Example: `accounts/123/products/ZW5-VVN-c2t1LzEyMw` for the decoded product name `accounts/123/products/en~US~sku/123`. This field can be used directly as input to the API methods that require the product name to be encoded if it contains special characters, for example [`GetProduct`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.products/get).",
          "readOnly": true
        },
        "automatedDiscounts": {
          "description": "Output only. The automated discounts information for the product.",
          "readOnly": true,
          "$ref": "AutomatedDiscounts"
        },
        "feedLabel": {
          "description": "Output only. The feed label lets you categorize and identify your products. The maximum allowed characters is 20 and the supported characters are`A-Z`, `0-9`, hyphen and underscore. The feed label must not include any spaces. For more information, see [Using feed labels](//support.google.com/merchants/answer/14994087)",
          "type": "string",
          "readOnly": true
        },
        "customAttributes": {
          "description": "Output only. A list of custom (merchant-provided) attributes. It can also be used to submit any attribute of the data specification in its generic form (for example, `{ \"name\": \"size type\", \"value\": \"regular\" }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google.",
          "type": "array",
          "readOnly": true,
          "items": {
            "$ref": "CustomAttribute"
          }
        },
        "offerId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Your unique identifier for the product. This is the same for the product input and processed product. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. See the [product data specification](https://support.google.com/merchants/answer/188494#id) for details."
        },
        "contentLanguage": {
          "readOnly": true,
          "description": "Output only. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the product.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "The name of the product. Format: `accounts/{account}/products/{product}` where the last section `product` consists of: `content_language~feed_label~offer_id` example for product name is `accounts/123/products/en~US~sku123`. A legacy local product name would be `accounts/123/products/local~en~US~sku123`. Note: For calls to the v1beta version, the `product` section consists of: `channel~content_language~feed_label~offer_id`, for example: `accounts/123/products/online~en~US~sku123`."
        },
        "productAttributes": {
          "readOnly": true,
          "description": "Output only. A list of strongly-typed product attributes.",
          "$ref": "ProductAttributes"
        },
        "versionNumber": {
          "type": "string",
          "format": "int64",
          "readOnly": true,
          "description": "Output only. Represents the existing version (freshness) of the product, which can be used to preserve the right order when multiple updates are done at the same time. If set, the insertion is prevented when version number is lower than the current version number of the existing product. Re-insertion (for example, product refresh after 30 days) can be performed with the current `version_number`. Only supported for insertions into primary data sources. If the operation is prevented, the aborted exception will be thrown."
        },
        "archived": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Determines whether the product is [archived](https://support.google.com/merchants/answer/11909930). To archive or restore your product, visit Merchant Center products page. Learn also more about [offer visibility](https://support.google.com/merchants/answer/12488713)."
        }
      },
      "id": "Product"
    }
  },
  "canonicalName": "Merchant",
  "rootUrl": "https://merchantapi.googleapis.com/",
  "version_module": true,
  "description": "Programmatically manage your Merchant Center Accounts.",
  "title": "Merchant API",
  "baseUrl": "https://merchantapi.googleapis.com/",
  "ownerDomain": "google.com",
  "basePath": "",
  "batchPath": "batch",
  "parameters": {
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "default": "true"
    },
    "$.xgafv": {
      "type": "string",
      "location": "query",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ]
    },
    "upload_protocol": {
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string"
    },
    "access_token": {
      "description": "OAuth access token.",
      "type": "string",
      "location": "query"
    },
    "quotaUser": {
      "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.",
      "type": "string",
      "location": "query"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "oauth_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth 2.0 token for the current user."
    },
    "alt": {
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "default": "json",
      "location": "query",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string",
      "description": "Data format for response."
    },
    "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"
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    }
  },
  "servicePath": "",
  "mtlsRootUrl": "https://merchantapi.mtls.googleapis.com/"
}
