{
  "revision": "20260814",
  "name": "merchantapi",
  "fullyEncodeReservedExpansion": true,
  "parameters": {
    "fields": {
      "type": "string",
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "callback": {
      "description": "JSONP",
      "type": "string",
      "location": "query"
    },
    "key": {
      "type": "string",
      "location": "query",
      "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."
    },
    "oauth_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth 2.0 token for the current user."
    },
    "alt": {
      "type": "string",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ]
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    },
    "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"
    },
    "access_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth access token."
    },
    "upload_protocol": {
      "type": "string",
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ],
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "description": "Returns response with indentations and line breaks.",
      "type": "boolean",
      "default": "true",
      "location": "query"
    }
  },
  "title": "Merchant API",
  "id": "merchantapi:promotions_v1",
  "description": "Programmatically manage your Merchant Center Accounts.",
  "protocol": "rest",
  "documentationLink": "https://developers.google.com/merchant/api",
  "rootUrl": "https://merchantapi.googleapis.com/",
  "ownerName": "Google",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/content": {
          "description": "Manage your product listings and accounts for Google Shopping"
        }
      }
    }
  },
  "resources": {
    "accounts": {
      "resources": {
        "promotions": {
          "methods": {
            "insert": {
              "path": "promotions/v1/{+parent}/promotions:insert",
              "flatPath": "promotions/v1/accounts/{accountsId}/promotions:insert",
              "description": "Inserts a promotion for your Merchant Center account. If the promotion already exists, then it updates the promotion instead.",
              "request": {
                "$ref": "InsertPromotionRequest"
              },
              "httpMethod": "POST",
              "response": {
                "$ref": "Promotion"
              },
              "parameterOrder": [
                "parent"
              ],
              "parameters": {
                "parent": {
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "description": "Required. The account where the promotion will be inserted. Format: accounts/{account}",
                  "pattern": "^accounts/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "id": "merchantapi.accounts.promotions.insert"
            },
            "list": {
              "id": "merchantapi.accounts.promotions.list",
              "parameters": {
                "pageSize": {
                  "description": "Optional. The maximum number of promotions to return. The service may return fewer than this value. The maximum value is 250; values above 250 will be coerced to 250. If unspecified, the maximum number of promotions will be returned.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. A page token, received from a previous `ListPromotions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListPromotions` must match the call that provided the page token."
                },
                "parent": {
                  "type": "string",
                  "description": "Required. The account to list processed promotions for. Format: `accounts/{account}`",
                  "pattern": "^accounts/[^/]+$",
                  "location": "path",
                  "required": true
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "httpMethod": "GET",
              "response": {
                "$ref": "ListPromotionsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "path": "promotions/v1/{+parent}/promotions",
              "flatPath": "promotions/v1/accounts/{accountsId}/promotions",
              "description": "Lists the promotions 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 or updating a promotion, it may take several minutes before the updated processed promotion can be retrieved."
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "response": {
                "$ref": "Promotion"
              },
              "description": "Retrieves the promotion from your Merchant Center account. After inserting or updating a promotion input, it may take several minutes before the updated promotion can be retrieved.",
              "flatPath": "promotions/v1/accounts/{accountsId}/promotions/{promotionsId}",
              "path": "promotions/v1/{+name}",
              "id": "merchantapi.accounts.promotions.get",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "description": "Required. The name of the promotion to retrieve. Format: `accounts/{account}/promotions/{promotions}`",
                  "pattern": "^accounts/[^/]+/promotions/[^/]+$",
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "ownerDomain": "google.com",
  "basePath": "",
  "version": "promotions_v1",
  "servicePath": "",
  "baseUrl": "https://merchantapi.googleapis.com/",
  "version_module": true,
  "batchPath": "batch",
  "discoveryVersion": "v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "kind": "discovery#restDescription",
  "schemas": {
    "Price": {
      "id": "Price",
      "type": "object",
      "description": "The price represented as a number and currency.",
      "properties": {
        "amountMicros": {
          "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).",
          "type": "string",
          "format": "int64"
        },
        "currencyCode": {
          "type": "string",
          "description": "The currency of the price using three-letter acronyms according to [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)."
        }
      }
    },
    "ListPromotionsResponse": {
      "id": "ListPromotionsResponse",
      "type": "object",
      "description": "Response message for the `ListPromotions` method.",
      "properties": {
        "nextPageToken": {
          "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": "string"
        },
        "promotions": {
          "items": {
            "$ref": "Promotion"
          },
          "type": "array",
          "description": "The processed promotions from the specified account."
        }
      }
    },
    "Promotion": {
      "id": "Promotion",
      "type": "object",
      "description": "Represents a promotion. See the following articles for more details. Required promotion input attributes to pass data validation checks are primarily defined below: * [Promotions data specification](https://support.google.com/merchants/answer/2906014) * [Local promotions data specification](https://support.google.com/merchants/answer/10146130) After inserting, updating a promotion input, it may take several minutes before the final promotion can be retrieved.",
      "properties": {
        "contentLanguage": {
          "type": "string",
          "description": "Required. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the promotion. Promotions is only for [selected languages](https://support.google.com/merchants/answer/4588281?ref_topic=6396150&sjid=18314938579342094533-NC#option3&zippy=)."
        },
        "targetCountry": {
          "description": "Required. The target country used as part of the unique identifier. Represented as a [CLDR territory code](https://github.com/unicode-org/cldr/blob/latest/common/main/en.xml). Promotions are only available in selected countries, [Free Listings and Shopping ads](https://support.google.com/merchants/answer/4588460) [Local Inventory ads](https://support.google.com/merchants/answer/10146326)",
          "type": "string"
        },
        "promotionStatus": {
          "readOnly": true,
          "description": "Output only. The [status of a promotion](https://support.google.com/merchants/answer/3398326?ref_topic=7322924&sjid=5155774230887277618-NC), data validation issues, that is, information about a promotion computed asynchronously.",
          "$ref": "PromotionStatus"
        },
        "versionNumber": {
          "type": "string",
          "format": "int64",
          "description": "Optional. Represents the existing version (freshness) of the promotion, 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 promotion. Re-insertion (for example, promotion refresh after 30 days) can be performed with the current `version_number`. If the operation is prevented, the aborted exception will be thrown."
        },
        "attributes": {
          "description": "Optional. A list of promotion attributes.",
          "$ref": "Attributes"
        },
        "redemptionChannel": {
          "description": "Required. [Redemption channel](https://support.google.com/merchants/answer/13837674?ref_topic=13773355&sjid=17642868584668136159-NC) for the promotion. At least one channel is required.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "REDEMPTION_CHANNEL_UNSPECIFIED",
              "IN_STORE",
              "ONLINE"
            ],
            "enumDescriptions": [
              "Indicates that the channel is unspecified.",
              "Indicates that the channel is in store. This is same as `local` channel used for `products`.",
              "Indicates that the channel is online."
            ]
          }
        },
        "dataSource": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The primary data source of the promotion."
        },
        "name": {
          "description": "Identifier. The name of the promotion. Format: `accounts/{account}/promotions/{promotion}`",
          "type": "string"
        },
        "customAttributes": {
          "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.",
          "type": "array",
          "items": {
            "$ref": "CustomAttribute"
          }
        },
        "promotionId": {
          "type": "string",
          "description": "Required. The user provided promotion ID to uniquely identify the promotion. Follow [minimum requirements](https://support.google.com/merchants/answer/7050148?ref_topic=7322920&sjid=871860036916537104-NC#minimum_requirements) to prevent promotion disapprovals."
        }
      }
    },
    "CustomAttribute": {
      "id": "CustomAttribute",
      "type": "object",
      "description": "A message that represents custom attributes. Exactly one of `value` or `group_values` must not be empty.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the attribute."
        },
        "groupValues": {
          "description": "Subattributes within this attribute group. If `group_values` is not empty, `value` must be empty.",
          "items": {
            "$ref": "CustomAttribute"
          },
          "type": "array"
        },
        "value": {
          "description": "The value of the attribute. If `value` is not empty, `group_values` must be empty.",
          "type": "string"
        }
      }
    },
    "DestinationStatus": {
      "id": "DestinationStatus",
      "type": "object",
      "description": "The status for the specified destination.",
      "properties": {
        "status": {
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "IN_REVIEW",
            "REJECTED",
            "LIVE",
            "STOPPED",
            "EXPIRED",
            "PENDING"
          ],
          "description": "Output only. The status for the specified destination.",
          "enumDescriptions": [
            "Unknown promotion state.",
            "The promotion is under review.",
            "The promotion is disapproved.",
            "The promotion is approved and active.",
            "The promotion is stopped by merchant.",
            "The promotion is no longer active.",
            "The promotion is not stopped, and all reviews are approved, but the active date is in the future."
          ],
          "type": "string"
        },
        "reportingContext": {
          "type": "string",
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "readOnly": true,
          "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"
          ],
          "description": "Output only. The name of the promotion destination.",
          "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 ."
          ]
        }
      }
    },
    "ItemLevelIssue": {
      "id": "ItemLevelIssue",
      "type": "object",
      "description": "The issue associated with the promotion.",
      "properties": {
        "severity": {
          "description": "Output only. How this issue affects serving of the promotion.",
          "enumDescriptions": [
            "Not specified.",
            "This issue represents a warning and does not have a direct affect on the promotion.",
            "The promotion is demoted and most likely have limited performance in search results",
            "Issue disapproves the promotion."
          ],
          "readOnly": true,
          "enum": [
            "SEVERITY_UNSPECIFIED",
            "NOT_IMPACTED",
            "DEMOTED",
            "DISAPPROVED"
          ],
          "type": "string"
        },
        "reportingContext": {
          "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 ."
          ],
          "description": "Output only. The destination the issue applies to.",
          "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"
          ],
          "readOnly": true,
          "type": "string",
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false
          ]
        },
        "applicableCountries": {
          "description": "Output only. List of country codes (ISO 3166-1 alpha-2) where issue applies to the offer.",
          "readOnly": true,
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "description": {
          "description": "Output only. A short issue description in English.",
          "type": "string",
          "readOnly": true
        },
        "attribute": {
          "description": "Output only. The attribute's name, if the issue is caused by a single attribute.",
          "type": "string",
          "readOnly": true
        },
        "documentation": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The URL of a web page to help with resolving this issue."
        },
        "code": {
          "description": "Output only. The error code of the issue.",
          "readOnly": true,
          "type": "string"
        },
        "resolution": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Whether the issue can be resolved by the merchant."
        },
        "detail": {
          "description": "Output only. A detailed issue description in English.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ProductStatusChangeMessage": {
      "description": "The message that the merchant will receive to notify about product status change event",
      "properties": {
        "expirationTime": {
          "description": "Optional. The product expiration time. This field will not be set if the notification is sent for a product deletion event.",
          "type": "string",
          "format": "google-datetime"
        },
        "eventTime": {
          "type": "string",
          "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."
        },
        "managingAccount": {
          "type": "string",
          "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}`"
        },
        "resourceId": {
          "description": "The product id.",
          "type": "string"
        },
        "account": {
          "type": "string",
          "description": "The target account that owns the entity that changed. Format : `accounts/{merchant_id}`"
        },
        "attribute": {
          "type": "string",
          "enum": [
            "ATTRIBUTE_UNSPECIFIED",
            "STATUS"
          ],
          "description": "The attribute in the resource that changed, in this case it will be always `Status`.",
          "enumDescriptions": [
            "Unspecified attribute",
            "Status of the changed entity"
          ]
        },
        "resourceType": {
          "type": "string",
          "enum": [
            "RESOURCE_UNSPECIFIED",
            "PRODUCT",
            "ACCOUNT_SERVICE"
          ],
          "description": "The resource that changed, in this case it will always be `Product`.",
          "enumDescriptions": [
            "Unspecified resource",
            "Resource type : product",
            "Account service"
          ]
        },
        "changes": {
          "description": "A message to describe the change that happened to the product",
          "type": "array",
          "items": {
            "$ref": "ProductChange"
          }
        },
        "resource": {
          "type": "string",
          "description": "The product name. Format: `accounts/{account}/products/{product}`"
        }
      },
      "id": "ProductStatusChangeMessage",
      "type": "object"
    },
    "InsertPromotionRequest": {
      "id": "InsertPromotionRequest",
      "type": "object",
      "description": "Request message for the `InsertPromotion` method.",
      "properties": {
        "promotion": {
          "description": "Required. The promotion to insert.",
          "$ref": "Promotion"
        },
        "dataSource": {
          "type": "string",
          "description": "Required. The data source of the [promotion](https://support.google.com/merchants/answer/6396268?sjid=5155774230887277618-NC) Format: `accounts/{account}/dataSources/{datasource}`."
        }
      }
    },
    "PromotionStatus": {
      "id": "PromotionStatus",
      "type": "object",
      "description": "The status of the promotion.",
      "properties": {
        "itemLevelIssues": {
          "type": "array",
          "readOnly": true,
          "items": {
            "$ref": "ItemLevelIssue"
          },
          "description": "Output only. A list of issues associated with the promotion."
        },
        "lastUpdateDate": {
          "description": "Output only. Date on which the promotion status has been last updated in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format: Date, time, and offset, for example `2020-01-02T09:00:00+01:00` or `2020-01-02T09:00:00Z`",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "creationDate": {
          "description": "Output only. Date on which the promotion has been created in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format: Date, time, and offset, for example `2020-01-02T09:00:00+01:00` or `2020-01-02T09:00:00Z`",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "destinationStatuses": {
          "description": "Output only. The intended destinations for the promotion.",
          "readOnly": true,
          "items": {
            "$ref": "DestinationStatus"
          },
          "type": "array"
        }
      }
    },
    "Interval": {
      "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.",
      "properties": {
        "startTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start."
        },
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end."
        }
      },
      "id": "Interval",
      "type": "object"
    },
    "Attributes": {
      "description": "Attributes.",
      "properties": {
        "genericRedemptionCode": {
          "type": "string",
          "description": "Optional. Generic redemption code for the promotion. To be used with the `offerType` field and must meet the [minimum requirements](https://support.google.com/merchants/answer/13837405?ref_topic=13773355)."
        },
        "promotionDestinations": {
          "type": "array",
          "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)."
            ],
            "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"
            ]
          },
          "description": "Required. The list of destinations (also known as [Marketing methods](https://support.google.com/merchants/answer/15130232)) where the promotion applies to. If you don't specify a destination by including a supported value in your data source, your promotion will display in Shopping ads and free listings by default. You may have previously submitted the following values as destinations for your products: Shopping Actions, Surfaces across Google, Local surfaces across Google. To represent these values use `FREE_LISTINGS`, `FREE_LOCAL_LISTINGS`, `LOCAL_INVENTORY_ADS`. For more details see [Promotion destination](https://support.google.com/merchants/answer/13837465)"
        },
        "maxDiscountAmount": {
          "description": "Optional. The maximum monetary discount a customer can receive for the promotion. This field is only supported with the `Percent off` coupon value type.",
          "$ref": "Price"
        },
        "regionIdInclusion": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. A list of [regions](https://support.google.com/merchants/answer/15406457?#howregionswork) where the promotion is applicable. Must be set if `audience` is set to `LOCATION`."
        },
        "maxPercentOff": {
          "type": "string",
          "format": "int64",
          "description": "Optional. Maximum percent off for a promotion with `PERCENT_OFF_RANGE` coupon value type. At least one of `min_percent_off` or `max_percent_off` must be present when the coupon value type is `PERCENT_OFF_RANGE`. If neither is provided an `INVALID_PROMOTION_MISSING_BENEFIT_OR_RESTRICTION` error is returned."
        },
        "freeGiftItemId": {
          "description": "Optional. [Free gift item ID](https://support.google.com/merchants/answer/13857152?ref_topic=13773355) for the promotion.",
          "type": "string"
        },
        "minMoneyOffAmount": {
          "description": "Optional. Minimum money off amount for a promotion with `MONEY_OFF_RANGE` coupon value type. At least one of `min_money_off_amount` or `max_money_off_amount` must be present when the coupon value type is `MONEY_OFF_RANGE`. If neither is provided an `INVALID_PROMOTION_MISSING_BENEFIT_OR_RESTRICTION` error is returned.",
          "$ref": "Price"
        },
        "redemptionRestriction": {
          "enumDescriptions": [
            "Indicates that the redemption restriction is unspecified.",
            "The promotion can only be redeemed by signing up for a subscription.",
            "The promotion can only be redeemed on the first order.",
            "The promotion can only be redeemed by signing up for email.",
            "The promotion can only be redeemed by signing up for text message alerts.",
            "The promotion can only be redeemed with a custom redemption restriction. In this case, the `custom_redemption_restriction` field must be set."
          ],
          "description": "Optional. A restriction customers must meet before they can redeem the promotion.",
          "type": "string",
          "enum": [
            "REDEMPTION_RESTRICTION_UNSPECIFIED",
            "SUBSCRIBE",
            "FIRST_ORDER",
            "SIGNUP_FOR_EMAIL",
            "SIGNUP_FOR_TEXT",
            "CUSTOM"
          ]
        },
        "longTitle": {
          "description": "Required. [Long title](https://support.google.com/merchants/answer/13838102?ref_topic=13773355) for the promotion.",
          "type": "string"
        },
        "itemGroupIdInclusion": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. Product filter by item group ID for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability [product_applicability] attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355)."
        },
        "promotionDisplayTimePeriod": {
          "description": "Optional. `TimePeriod` representation of the promotion's display dates. This attribute specifies the date and time frame when the promotion will be live on Google.com and Shopping ads. If the display time period for promotion `promotion_display_time_period` attribute is not specified, the promotion effective time period `promotion_effective_time_period` determines the date and time frame when the promotion will be live on Google.com and Shopping ads.",
          "$ref": "Interval"
        },
        "minimumPurchaseQuantity": {
          "type": "string",
          "format": "int64"
        },
        "itemIdExclusion": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. Product filter by [item ID exclusion](https://support.google.com/merchants/answer/13863524?ref_topic=13773355) for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355)."
        },
        "googleProductCategories": {
          "description": "Optional. A list of Google product categories for this promotion. Set if `EventApplicability` is `SPECIFIC_CATEGORIES`. Up to 5 product categories can be specified. For more details on eligible values for product categories, checkout the `google_product_category` attribute in the [Promotion data specification](https://support.google.com/merchants/answer/2906014).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "offerType": {
          "description": "Required. [Type](https://support.google.com/merchants/answer/13837405?ref_topic=13773355) of the promotion. Use this attribute to indicate whether or not customers need a coupon code to redeem your promotion.",
          "enumDescriptions": [
            "Unknown offer type.",
            "Offer type without a code.",
            "Offer type with a code. Generic redemption code for the promotion is required when `offerType` = `GENERIC_CODE`."
          ],
          "type": "string",
          "enum": [
            "OFFER_TYPE_UNSPECIFIED",
            "NO_CODE",
            "GENERIC_CODE"
          ]
        },
        "storeCodesExclusion": {
          "description": "Optional. [Store codes to exclude](https://support.google.com/merchants/answer/13859586?ref_topic=13773355) for the promotion. The store filter attributes only applies when the `store_applicability` attribute is set to [specific_stores](https://support.google.com/merchants/answer/13857563?ref_topic=13773355).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "audience": {
          "description": "Optional. This field defines the audience a promotion will be visible to.",
          "enumDescriptions": [
            "The promotion is not restricted to any audience and will be shown to all users. Default value.",
            "The Promotion will be shown to new customers only. If this value is set, the `promotion_destinations` field in `Attributes` must include `SHOPPING_ADS`. Requests that do not satisfy this condition will be rejected. For more details, see [First order promotions](https://support.google.com/merchants/answer/16310477)",
            "The Promotion will be shown to customer within a certain location. Applicable locations must be specified in the `region_id_inclusion` field and the `promotion_destinations` field must contain `FREE_LISTINGS`. For more details, see [Regional Promotions](https://support.google.com/merchants/answer/16700435)."
          ],
          "type": "string",
          "enum": [
            "AUDIENCE_UNSPECIFIED",
            "NEW_CUSTOMERS",
            "LOCATION"
          ]
        },
        "limitValue": {
          "description": "Optional. [Maximum product price](https://support.google.com/merchants/answer/2906014) for promotion.",
          "$ref": "Price"
        },
        "storeCodesInclusion": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. [Store codes to include](https://support.google.com/merchants/answer/13857470?ref_topic=13773355) for the promotion. The store filter attributes only applies when the `store_applicability` attribute is set to [specific_stores](https://support.google.com/merchants/answer/13857563?ref_topic=13773355). Store code (the store ID from your Business Profile) of the physical store the product is sold in. See the [Local product inventory data specification](https://support.google.com/merchants/answer/3061342) for more information."
        },
        "moneyOffAmount": {
          "description": "Optional. The [money off amount](https://support.google.com/merchants/answer/13838101?ref_topic=13773355) offered in the promotion.",
          "$ref": "Price"
        },
        "maxMoneyOffAmount": {
          "description": "Optional. Maximum money off amount for a promotion with `MONEY_OFF_RANGE` coupon value type. At least one of `min_money_off_amount` or `max_money_off_amount` must be present when the coupon value type is `MONEY_OFF_RANGE`. If neither is provided an `INVALID_PROMOTION_MISSING_BENEFIT_OR_RESTRICTION` error is returned.",
          "$ref": "Price"
        },
        "freeGiftValue": {
          "description": "Optional. [Free gift value](https://support.google.com/merchants/answer/13844477?ref_topic=13773355) for the promotion.",
          "$ref": "Price"
        },
        "couponValueType": {
          "enumDescriptions": [
            "Indicates that the coupon value type is unspecified.",
            "Money off coupon value type.",
            "Percent off coupon value type.",
            "Buy M quantity, get N money off coupon value type. `minimum_purchase_quantity` and `get_this_quantity_discounted` must be present. `money_off_amount` must also be present.",
            "Buy M quantity, get N percent off coupon value type. `minimum_purchase_quantity` and `get_this_quantity_discounted` must be present. `percent_off_percentage` must also be present.",
            "Buy M quantity, get money off. `minimum_purchase_quantity` and `money_off_amount` must be present.",
            "Buy M quantity, get money off. `minimum_purchase_quantity` and `percent_off_percentage` must be present.",
            "Free gift with description only.",
            "Free gift with monetary value.",
            "Free gift with item ID.",
            "Standard free shipping coupon value type. Only available for online promotions.",
            "Overnight free shipping coupon value type. Only available for online promotions.",
            "Two day free shipping coupon value type. Only available for online promotions.",
            "Money off range coupon value type. This coupon value type is used exclusively for US-based sales events. At least one of `min_money_off_amount` or `max_money_off_amount` must be present.",
            "Percent off range coupon value type. This coupon value type is exclusively used for US-based sale events. At least one of `min_percent_off` or `max_percent_off` must be present."
          ],
          "description": "Required. The [coupon value type] (https://support.google.com/merchants/answer/13861986?ref_topic=13773355) attribute to signal the type of promotion that you are running. Depending on type of the selected coupon value [some attributes are required](https://support.google.com/merchants/answer/6393006?ref_topic=7322920).",
          "type": "string",
          "enum": [
            "COUPON_VALUE_TYPE_UNSPECIFIED",
            "MONEY_OFF",
            "PERCENT_OFF",
            "BUY_M_GET_N_MONEY_OFF",
            "BUY_M_GET_N_PERCENT_OFF",
            "BUY_M_GET_MONEY_OFF",
            "BUY_M_GET_PERCENT_OFF",
            "FREE_GIFT",
            "FREE_GIFT_WITH_VALUE",
            "FREE_GIFT_WITH_ITEM_ID",
            "FREE_SHIPPING_STANDARD",
            "FREE_SHIPPING_OVERNIGHT",
            "FREE_SHIPPING_TWO_DAY",
            "MONEY_OFF_RANGE",
            "PERCENT_OFF_RANGE"
          ]
        },
        "itemIdInclusion": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Product filter by [item ID](https://support.google.com/merchants/answer/13861565?ref_topic=13773355) for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355)."
        },
        "customRedemptionRestriction": {
          "type": "string",
          "description": "Optional. The custom redemption restriction for the promotion. If the `redemption_restriction` field is set to `CUSTOM`, this field must be set."
        },
        "brandExclusion": {
          "description": "Optional. Product filter by [brand exclusion](https://support.google.com/merchants/answer/13861679?ref_topic=13773355) for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "minimumPurchaseAmount": {
          "description": "Optional. [Minimum purchase amount](https://support.google.com/merchants/answer/13837705?ref_topic=13773355) for the promotion.",
          "$ref": "Price"
        },
        "promotionEffectiveTimePeriod": {
          "description": "Required. `TimePeriod` representation of the promotion's effective dates. This attribute specifies that the promotion can be tested on your online store during this time period.",
          "$ref": "Interval"
        },
        "freeGiftDescription": {
          "description": "Optional. [Free gift description](https://support.google.com/merchants/answer/13847245?ref_topic=13773355) for the promotion.",
          "type": "string"
        },
        "minPercentOff": {
          "description": "Optional. Minimum percent off for a promotion with `PERCENT_OFF_RANGE` coupon value type. At least one of `min_percent_off` or `max_percent_off` must be present when the coupon value type is `PERCENT_OFF_RANGE`. If neither is provided an `INVALID_PROMOTION_MISSING_BENEFIT_OR_RESTRICTION` error is returned.",
          "type": "string",
          "format": "int64"
        },
        "brandInclusion": {
          "description": "Optional. Product filter by brand for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "storeApplicability": {
          "enumDescriptions": [
            "Which store codes the promotion applies to is unknown.",
            "Promotion applies to all stores.",
            "Promotion applies to only the specified stores."
          ],
          "description": "Optional. Whether the promotion applies to [all stores, or only specified stores](https://support.google.com/merchants/answer/13857563?sjid=17642868584668136159-NC). Local Inventory ads promotions throw an error if no store applicability is included. An `INVALID_ARGUMENT` error is thrown if `store_applicability` is set to `ALL_STORES` and `store_codes_inclusion` or `score_code_exclusion` is set to a value.",
          "type": "string",
          "enum": [
            "STORE_APPLICABILITY_UNSPECIFIED",
            "ALL_STORES",
            "SPECIFIC_STORES"
          ]
        },
        "productApplicability": {
          "type": "string",
          "enum": [
            "PRODUCT_APPLICABILITY_UNSPECIFIED",
            "ALL_PRODUCTS",
            "SPECIFIC_PRODUCTS"
          ],
          "description": "Optional. Applicability of the promotion to either all products or [only specific products](https://support.google.com/merchants/answer/6396257). Exactly one of `product_applicability` or `event_applicability` must be set.",
          "enumDescriptions": [
            "Which products the promotion applies to is unknown.",
            "Applicable to all products.",
            "Applicable to only a single product or list of products."
          ]
        },
        "limitQuantity": {
          "description": "Optional. [Maximum purchase quantity](https://support.google.com/merchants/answer/13861564?ref_topic=13773355) for the promotion.",
          "type": "string",
          "format": "int64"
        },
        "productTypeInclusion": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. Product filter by product type for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355)."
        },
        "productTypeExclusion": {
          "description": "Optional. Product filter by [product type exclusion](https://support.google.com/merchants/answer/13863746?ref_topic=13773355) for the promotion. The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "getThisQuantityDiscounted": {
          "type": "string",
          "format": "int64",
          "description": "Optional. The number of items discounted in the promotion. The attribute is set when `couponValueType` is equal to `buy_m_get_n_money_off` or `buy_m_get_n_percent_off`."
        },
        "percentOff": {
          "description": "Optional. The [percentage discount](https://support.google.com/merchants/answer/13837404?sjid=17642868584668136159-NC) offered in the promotion.",
          "type": "string",
          "format": "int64"
        },
        "promotionUrl": {
          "description": "Optional. URL to the page on the merchant's site where the promotion shows. Local Inventory ads promotions throw an error if no `promotion_url` is included. URL is used to confirm that the promotion is valid and can be redeemed.",
          "type": "string"
        },
        "eventApplicability": {
          "type": "string",
          "enum": [
            "EVENT_APPLICABILITY_UNSPECIFIED",
            "SITEWIDE",
            "SPECIFIC_CATEGORIES"
          ],
          "enumDescriptions": [
            "Indicates that the event applicability is unspecified.",
            "Indicates that the promotion applies to the entire site.",
            "Indicates that the promotion applies to specific categories. When this is set, the GoogleProductCategory field is required."
          ],
          "description": "Optional. Event applicability for this promotion. When present, this field indicates you are creating a [sales event](https://support.google.com/merchants/answer/15523289) and not a product promotion. Exactly one of `product_applicability` or `event_applicability` must be set."
        },
        "itemGroupIdExclusion": {
          "description": "Optional. Product filter by [item group ID](https://support.google.com/merchants/answer/13837298?ref_topic=13773355). The product filter attributes only applies when the products eligible for promotion product applicability `product_applicability` attribute is set to [specific_products](https://support.google.com/merchants/answer/13837299?ref_topic=13773355). exclusion for the promotion.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "Attributes",
      "type": "object"
    },
    "ProductChange": {
      "description": "The change that happened to the product including old value, new value, country code as the region code and reporting context.",
      "properties": {
        "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"
        },
        "regionCode": {
          "description": "Countries that have the change (if applicable). Represented in the ISO 3166 format.",
          "type": "string"
        },
        "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": {
          "type": "string",
          "enumDeprecated": [
            false,
            false,
            true,
            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"
          ],
          "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 ."
          ],
          "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)"
        }
      },
      "id": "ProductChange",
      "type": "object"
    }
  },
  "canonicalName": "Merchant",
  "mtlsRootUrl": "https://merchantapi.mtls.googleapis.com/"
}
