{
  "version": "v1",
  "name": "css",
  "revision": "20260421",
  "ownerName": "Google",
  "protocol": "rest",
  "kind": "discovery#restDescription",
  "description": "Programmatically manage your Comparison Shopping Service (CSS) account data at scale.",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "ownerDomain": "google.com",
  "batchPath": "batch",
  "servicePath": "",
  "baseUrl": "https://css.googleapis.com/",
  "canonicalName": "Css",
  "title": "CSS API",
  "documentationLink": "https://developers.google.com/comparison-shopping-services/api/overview",
  "discoveryVersion": "v1",
  "basePath": "",
  "rootUrl": "https://css.googleapis.com/",
  "mtlsRootUrl": "https://css.mtls.googleapis.com/",
  "schemas": {
    "Price": {
      "description": "The price represented as a number and currency.",
      "id": "Price",
      "type": "object",
      "properties": {
        "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"
        },
        "currencyCode": {
          "description": "The currency of the price using three-letter acronyms according to [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).",
          "type": "string"
        }
      }
    },
    "Empty": {
      "id": "Empty",
      "type": "object",
      "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); }"
    },
    "Certification": {
      "description": "The certification for the product. Use the this attribute to describe certifications, such as energy efficiency ratings, associated with a product.",
      "id": "Certification",
      "type": "object",
      "properties": {
        "code": {
          "description": "The code of the certification. For example, for the EPREL certificate with the link https://eprel.ec.europa.eu/screen/product/dishwashers2019/123456 the code is 123456. The code is required for European Energy Labels.",
          "type": "string"
        },
        "name": {
          "description": "The name of the certification. At this time, the most common value is \"EPREL\", which represents energy efficiency certifications in the EU European Registry for Energy Labeling (EPREL) database.",
          "type": "string"
        },
        "authority": {
          "description": "The authority or certification body responsible for issuing the certification. At this time, the most common value is \"EC\" or “European_Commission” for energy labels in the EU.",
          "type": "string"
        }
      }
    },
    "Account": {
      "description": "Information about CSS/MC account.",
      "id": "Account",
      "type": "object",
      "properties": {
        "name": {
          "description": "The label resource name. Format: accounts/{account}",
          "type": "string"
        },
        "parent": {
          "description": "The CSS/MC account's parent resource. CSS group for CSS domains; CSS domain for MC accounts. Returned only if the user has access to the parent account. Note: For MC sub-accounts, this is also the CSS domain that is the parent resource of the MCA account, since we are effectively flattening the hierarchy.\"",
          "type": "string"
        },
        "accountType": {
          "readOnly": true,
          "description": "Output only. The type of this account.",
          "type": "string",
          "enumDescriptions": [
            "Unknown account type.",
            "CSS group account.",
            "CSS domain account.",
            "MC Primary CSS MCA account.",
            "MC CSS MCA account.",
            "MC Marketplace MCA account.",
            "MC Other MCA account.",
            "MC Standalone account.",
            "MC MCA sub-account."
          ],
          "enum": [
            "ACCOUNT_TYPE_UNSPECIFIED",
            "CSS_GROUP",
            "CSS_DOMAIN",
            "MC_PRIMARY_CSS_MCA",
            "MC_CSS_MCA",
            "MC_MARKETPLACE_MCA",
            "MC_OTHER_MCA",
            "MC_STANDALONE",
            "MC_MCA_SUBACCOUNT"
          ]
        },
        "automaticLabelIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Automatically created label IDs assigned to the MC account by CSS Center."
        },
        "homepageUri": {
          "description": "Output only. Immutable. The CSS/MC account's homepage.",
          "readOnly": true,
          "type": "string"
        },
        "labelIds": {
          "description": "Manually created label IDs assigned to the CSS/MC account by a CSS parent account.",
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        },
        "fullName": {
          "description": "Output only. Immutable. The CSS/MC account's full name.",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "The CSS/MC account's short display name.",
          "type": "string"
        }
      }
    },
    "ProductDimension": {
      "description": "The dimension of the product.",
      "id": "ProductDimension",
      "type": "object",
      "properties": {
        "value": {
          "description": "Required. The dimension value represented as a number. The value can have a maximum precision of four decimal places.",
          "format": "double",
          "type": "number"
        },
        "unit": {
          "description": "Required. The dimension units. Acceptable values are: * \"`in`\" * \"`cm`\"",
          "type": "string"
        }
      }
    },
    "UpdateAccountLabelsRequest": {
      "description": "The request message for the `UpdateLabels` method.",
      "id": "UpdateAccountLabelsRequest",
      "type": "object",
      "properties": {
        "parent": {
          "description": "Optional. Only required when updating MC account labels. The CSS domain that is the parent resource of the MC account. Format: accounts/{account}",
          "type": "string"
        },
        "labelIds": {
          "description": "The list of label IDs to overwrite the existing account label IDs. If the list is empty, all currently assigned label IDs will be deleted.",
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        }
      }
    },
    "ListAccountLabelsResponse": {
      "id": "ListAccountLabelsResponse",
      "type": "object",
      "properties": {
        "accountLabels": {
          "description": "The labels from the specified account.",
          "type": "array",
          "items": {
            "$ref": "AccountLabel"
          }
        },
        "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"
        }
      },
      "description": "Response message for the `ListAccountLabels` method."
    },
    "CssProduct": {
      "description": "The processed CSS Product.",
      "id": "CssProduct",
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the CSS Product. Format: `\"accounts/{account}/cssProducts/{css_product}\"`",
          "type": "string"
        },
        "customAttributes": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CustomAttribute"
          },
          "description": "Output only. A list of custom (CSS-provided) attributes. It can also be used to submit any attribute of the feed 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."
        },
        "cssProductStatus": {
          "readOnly": true,
          "$ref": "CssProductStatus",
          "description": "Output only. The status of a product, data validation issues, that is, information about a product computed asynchronously."
        },
        "attributes": {
          "readOnly": true,
          "$ref": "Attributes",
          "description": "Output only. A list of product attributes."
        },
        "rawProvidedId": {
          "description": "Output only. Your unique raw identifier for the product.",
          "readOnly": true,
          "type": "string"
        },
        "contentLanguage": {
          "description": "Output only. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the product.",
          "readOnly": true,
          "type": "string"
        },
        "feedLabel": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The feed label for the product."
        }
      }
    },
    "CustomAttribute": {
      "description": "A message that represents custom attributes. Exactly one of `value` or `group_values` must not be empty.",
      "id": "CustomAttribute",
      "type": "object",
      "properties": {
        "value": {
          "description": "The value of the attribute. If `value` is not empty, `group_values` must be empty.",
          "type": "string"
        },
        "groupValues": {
          "type": "array",
          "items": {
            "$ref": "CustomAttribute"
          },
          "description": "Subattributes within this attribute group. If `group_values` is not empty, `value` must be empty."
        },
        "name": {
          "description": "The name of the attribute.",
          "type": "string"
        }
      }
    },
    "CssProductInput": {
      "description": "This resource represents input data you submit for a CSS Product, not the processed CSS Product that you see in CSS Center, in Shopping Ads, or across Google surfaces.",
      "id": "CssProductInput",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the CSS Product input. Format: `accounts/{account}/cssProductInputs/{css_product_input}`, where the last section `css_product_input` consists of 3 parts: contentLanguage~feedLabel~offerId. Example: accounts/123/cssProductInputs/de~DE~rawProvidedId123",
          "type": "string"
        },
        "customAttributes": {
          "description": "A list of custom (CSS-provided) attributes. It can also be used for submitting any attribute of the feed 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",
          "items": {
            "$ref": "CustomAttribute"
          }
        },
        "freshnessTime": {
          "deprecated": true,
          "type": "string",
          "description": "DEPRECATED. Use expiration_date instead. Represents the existing version (freshness) of the CSS Product, which can be used to preserve the right order when multiple updates are done at the same time. This field must not be set to the future time. If set, the update is prevented if a newer version of the item already exists in our system (that is the last update time of the existing CSS products is later than the freshness time set in the update). If the update happens, the last update time is then set to this freshness time. If not set, the update will not be prevented and the last update time will default to when this request was received by the CSS API. If the operation is prevented, the aborted exception will be thrown.",
          "format": "google-datetime"
        },
        "attributes": {
          "description": "A list of CSS Product attributes.",
          "$ref": "Attributes"
        },
        "finalName": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The name of the processed CSS Product. Format: `accounts/{account}/cssProducts/{css_product}` \""
        },
        "rawProvidedId": {
          "description": "Required. Your unique identifier for the CSS Product. This is the same for the CSS Product input and processed CSS Product. We only allow ids with alphanumerics, underscores and dashes. See the [products feed specification](https://support.google.com/merchants/answer/188494#id) for details.",
          "type": "string"
        },
        "contentLanguage": {
          "description": "Required. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the CSS Product.",
          "type": "string"
        },
        "feedLabel": {
          "description": "Required. The [feed label](https://developers.google.com/shopping-content/guides/products/feed-labels) for the CSS Product. Feed Label is synonymous to \"target country\" and hence should always be a valid region code. For example: 'DE' for Germany, 'FR' for France.",
          "type": "string"
        }
      }
    },
    "ProductWeight": {
      "description": "The weight of the product.",
      "id": "ProductWeight",
      "type": "object",
      "properties": {
        "value": {
          "type": "number",
          "description": "Required. The weight represented as a number. The weight can have a maximum precision of four decimal places.",
          "format": "double"
        },
        "unit": {
          "description": "Required. The weight unit. Acceptable values are: * \"`g`\" * \"`kg`\" * \"`oz`\" * \"`lb`\"",
          "type": "string"
        }
      }
    },
    "DestinationStatus": {
      "description": "The destination status of the product status.",
      "id": "DestinationStatus",
      "type": "object",
      "properties": {
        "approvedCountries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is approved."
        },
        "pendingCountries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is pending approval."
        },
        "destination": {
          "description": "The name of the destination",
          "type": "string"
        },
        "disapprovedCountries": {
          "description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is disapproved.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "QuotaGroup": {
      "id": "QuotaGroup",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The resource name of the quota group. Format: accounts/{account}/quotas/{group} Example: `accounts/12345678/quotas/css-products-insert` Note: The {group} part is not guaranteed to follow a specific pattern.",
          "type": "string"
        },
        "quotaLimit": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The maximum number of calls allowed per day for the group.",
          "format": "int64"
        },
        "quotaMinuteLimit": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The maximum number of calls allowed per minute for the group.",
          "format": "int64"
        },
        "quotaUsage": {
          "description": "Output only. The current quota usage, meaning the number of calls already made on a given day to the methods in the group. The daily quota limits reset at at 12:00 PM midday UTC.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        },
        "methodDetails": {
          "description": "Output only. List of all methods group quota applies to.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "MethodDetails"
          }
        }
      },
      "description": "The group information for methods in the CSS API. The quota is shared between all methods in the group. Even if none of the methods within the group have usage the information for the group is returned."
    },
    "HeadlineOfferInstallment": {
      "id": "HeadlineOfferInstallment",
      "type": "object",
      "properties": {
        "downpayment": {
          "description": "The up-front down payment amount the buyer has to pay.",
          "$ref": "Price"
        },
        "amount": {
          "description": "The amount the buyer has to pay per month.",
          "$ref": "Price"
        },
        "months": {
          "type": "string",
          "description": "The number of installments the buyer has to pay.",
          "format": "int64"
        }
      },
      "description": "A message that represents installment."
    },
    "MethodDetails": {
      "description": "The method details per method in the CSS API.",
      "id": "MethodDetails",
      "type": "object",
      "properties": {
        "version": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The API version that the method belongs to."
        },
        "method": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The name of the method for example `cssproductsservice.listcssproducts`."
        },
        "path": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The path for the method such as `v1/cssproductsservice.listcssproducts`."
        },
        "subapi": {
          "description": "Output only. The sub-API that the method belongs to. In the CSS API, this is always `css`.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ListCssProductsResponse": {
      "description": "Response message for the ListCssProducts method.",
      "id": "ListCssProductsResponse",
      "type": "object",
      "properties": {
        "cssProducts": {
          "description": "The processed CSS products from the specified account. These are your processed CSS products after applying rules and supplemental feeds.",
          "type": "array",
          "items": {
            "$ref": "CssProduct"
          }
        },
        "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"
        }
      }
    },
    "HeadlineOfferSubscriptionCost": {
      "description": "The SubscriptionCost of the product.",
      "id": "HeadlineOfferSubscriptionCost",
      "type": "object",
      "properties": {
        "periodLength": {
          "type": "string",
          "description": "The number of subscription periods the buyer has to pay.",
          "format": "int64"
        },
        "amount": {
          "description": "The amount the buyer has to pay per subscription period.",
          "$ref": "Price"
        },
        "period": {
          "type": "string",
          "enumDescriptions": [
            "Indicates that the subscription period is unspecified.",
            "Indicates that the subscription period is month.",
            "Indicates that the subscription period is year."
          ],
          "description": "The type of subscription period. Supported values are: * \"`month`\" * \"`year`\"",
          "enum": [
            "SUBSCRIPTION_PERIOD_UNSPECIFIED",
            "MONTH",
            "YEAR"
          ]
        }
      }
    },
    "CssProductStatus": {
      "description": "The status of the Css Product, data validation issues, that is, information about the Css Product computed asynchronously.",
      "id": "CssProductStatus",
      "type": "object",
      "properties": {
        "creationDate": {
          "description": "Date on which the item has been created, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "format": "google-datetime",
          "type": "string"
        },
        "lastUpdateDate": {
          "description": "Date on which the item has been last updated, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "format": "google-datetime",
          "type": "string"
        },
        "destinationStatuses": {
          "type": "array",
          "items": {
            "$ref": "DestinationStatus"
          },
          "description": "The intended destinations for the product."
        },
        "googleExpirationDate": {
          "description": "Date on which the item expires, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
          "format": "google-datetime",
          "type": "string"
        },
        "itemLevelIssues": {
          "type": "array",
          "items": {
            "$ref": "ItemLevelIssue"
          },
          "description": "A list of all issues associated with the product."
        }
      }
    },
    "ItemLevelIssue": {
      "description": "The ItemLevelIssue of the product status.",
      "id": "ItemLevelIssue",
      "type": "object",
      "properties": {
        "resolution": {
          "description": "Whether the issue can be resolved by the merchant.",
          "type": "string"
        },
        "applicableCountries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of country codes (ISO 3166-1 alpha-2) where issue applies to the CSS Product."
        },
        "code": {
          "description": "The error code of the issue.",
          "type": "string"
        },
        "detail": {
          "description": "A detailed issue description in English.",
          "type": "string"
        },
        "attribute": {
          "description": "The attribute's name, if the issue is caused by a single attribute.",
          "type": "string"
        },
        "documentation": {
          "description": "The URL of a web page to help with resolving this issue.",
          "type": "string"
        },
        "description": {
          "description": "A short issue description in English.",
          "type": "string"
        },
        "servability": {
          "description": "How this issue affects serving of the CSS Product.",
          "type": "string"
        },
        "destination": {
          "description": "The destination the issue applies to.",
          "type": "string"
        }
      }
    },
    "ListQuotaGroupsResponse": {
      "description": "Response message for the ListMethodGroups method.",
      "id": "ListQuotaGroupsResponse",
      "type": "object",
      "properties": {
        "quotaGroups": {
          "description": "The methods, current quota usage and limits per each group. The quota is shared between all methods in the group. The groups are sorted in descending order based on quota_usage.",
          "type": "array",
          "items": {
            "$ref": "QuotaGroup"
          }
        },
        "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"
        }
      }
    },
    "ListChildAccountsResponse": {
      "description": "Response message for the `ListChildAccounts` method.",
      "id": "ListChildAccountsResponse",
      "type": "object",
      "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"
        },
        "accounts": {
          "description": "The CSS/MC accounts returned for the specified CSS parent account.",
          "type": "array",
          "items": {
            "$ref": "Account"
          }
        }
      }
    },
    "ProductDetail": {
      "id": "ProductDetail",
      "type": "object",
      "properties": {
        "attributeName": {
          "description": "The name of the product detail.",
          "type": "string"
        },
        "attributeValue": {
          "description": "The value of the product detail.",
          "type": "string"
        },
        "sectionName": {
          "description": "The section header used to group a set of product details.",
          "type": "string"
        }
      },
      "description": "The product details."
    },
    "AccountLabel": {
      "id": "AccountLabel",
      "type": "object",
      "properties": {
        "description": {
          "description": "The description of this label.",
          "type": "string"
        },
        "name": {
          "description": "Identifier. The resource name of the label. Format: accounts/{account}/labels/{label}",
          "type": "string"
        },
        "accountId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The ID of account this label belongs to.",
          "format": "int64"
        },
        "displayName": {
          "description": "The display name of this label.",
          "type": "string"
        },
        "labelType": {
          "enum": [
            "LABEL_TYPE_UNSPECIFIED",
            "MANUAL",
            "AUTOMATIC"
          ],
          "type": "string",
          "enumDescriptions": [
            "Unknown label type.",
            "Indicates that the label was created manually.",
            "Indicates that the label was created automatically by CSS Center."
          ],
          "description": "Output only. The type of this label.",
          "readOnly": true
        },
        "labelId": {
          "description": "Output only. The ID of the label.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "Label assigned by CSS domain or CSS group to one of its sub-accounts."
    },
    "Attributes": {
      "description": "Attributes for CSS Product.",
      "id": "Attributes",
      "type": "object",
      "properties": {
        "isBundle": {
          "description": "Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.",
          "type": "boolean"
        },
        "ageGroup": {
          "description": "Target age group of the item.",
          "type": "string"
        },
        "headlineOfferLink": {
          "description": "Link to the headline offer.",
          "type": "string"
        },
        "googleProductCategory": {
          "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.",
          "type": "string"
        },
        "minRating": {
          "description": "Minimum rating score of the product. Required if `rating` is provided. This field is for an upcoming feature and is not yet used.",
          "format": "int64",
          "type": "string"
        },
        "maxRating": {
          "description": "Maximum rating score of the product. Required if `rating` is provided. This field is for an upcoming feature and is not yet used.",
          "format": "int64",
          "type": "string"
        },
        "customLabel0": {
          "description": "Custom label 0 for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "customLabel4": {
          "description": "Custom label 4 for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "headlineOfferInstallment": {
          "description": "Number and amount of installments to pay for an item.",
          "$ref": "HeadlineOfferInstallment"
        },
        "multipack": {
          "description": "The number of identical products in a merchant-defined multipack.",
          "format": "int64",
          "type": "string"
        },
        "certifications": {
          "type": "array",
          "items": {
            "$ref": "Certification"
          },
          "description": "A list of certificates claimed by the CSS for the given product."
        },
        "gender": {
          "description": "Target gender of the item.",
          "type": "string"
        },
        "imageLink": {
          "description": "URL of an image of the item.",
          "type": "string"
        },
        "cppLink": {
          "description": "URL directly linking to your the Product Detail Page of the CSS.",
          "type": "string"
        },
        "sizeSystem": {
          "description": "System in which the size is specified. Recommended for apparel items.",
          "type": "string"
        },
        "size": {
          "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 [https://support.google.com/merchants/answer/6324492](size definition)).",
          "type": "string"
        },
        "productLength": {
          "description": "The length of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive).",
          "$ref": "ProductDimension"
        },
        "includedDestinations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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`."
        },
        "headlineOfferMobileLink": {
          "description": "Mobile Link to the headline offer.",
          "type": "string"
        },
        "headlineOfferSubscriptionCost": {
          "description": "Number of periods (months or years) and amount of payment per period for an item with an associated subscription contract.",
          "$ref": "HeadlineOfferSubscriptionCost"
        },
        "productWidth": {
          "description": "The width of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive).",
          "$ref": "ProductDimension"
        },
        "headlineOfferShippingPrice": {
          "description": "Headline Price of the CSS Product.",
          "$ref": "Price"
        },
        "productDetails": {
          "description": "Technical specification or additional product details.",
          "type": "array",
          "items": {
            "$ref": "ProductDetail"
          }
        },
        "productTypes": {
          "description": "Categories of the item (formatted as in [products data specification](https://support.google.com/merchants/answer/6324406)).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "excludedDestinations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center)."
        },
        "color": {
          "description": "Color of the item.",
          "type": "string"
        },
        "sizeTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The cut of the item. It can be used to represent combined size types for apparel items. Maximum two of size types can be provided (see [size type](https://support.google.com/merchants/answer/6324497)."
        },
        "reviewCount": {
          "description": "Number of reviews of the product. Required if `rating` is provided. This field is for an upcoming feature and is not yet used.",
          "format": "int64",
          "type": "string"
        },
        "itemGroupId": {
          "description": "Shared identifier for all variants of the same product.",
          "type": "string"
        },
        "cppMobileLink": {
          "description": "URL for the mobile-optimized version of the Product Detail Page of the CSS.",
          "type": "string"
        },
        "gtin": {
          "description": "Global Trade Item Number ([GTIN](https://support.google.com/merchants/answer/188494#gtin)) of the item.",
          "type": "string"
        },
        "description": {
          "description": "Description of the item.",
          "type": "string"
        },
        "customLabel2": {
          "description": "Custom label 2 for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "material": {
          "description": "The material of which the item is made.",
          "type": "string"
        },
        "numberOfOffers": {
          "description": "The number of CSS Products.",
          "format": "int64",
          "type": "string"
        },
        "productHeight": {
          "description": "The height of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive).",
          "$ref": "ProductDimension"
        },
        "expirationDate": {
          "type": "string",
          "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. Note: It may take 2+ days from the expiration date for the item to actually get deleted.",
          "format": "google-datetime"
        },
        "headlineOfferCondition": {
          "description": "Condition of the headline offer.",
          "type": "string"
        },
        "additionalImageLinks": {
          "description": "Additional URL of images of the item.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "customLabel3": {
          "description": "Custom label 3 for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "productWeight": {
          "description": "The weight of the product in the units provided. The value must be between 0 (exclusive) and 2000 (inclusive).",
          "$ref": "ProductWeight"
        },
        "rating": {
          "type": "number",
          "description": "Average rating score of the product. The value must be within the range of [`min_rating`, `max_rating`], inclusive. When displayed on the product page, this rating is normalized to a scale of [1, 5] with one decimal place. If provided, `review_count`, `min_rating`, and `max_rating` are also required. This field is for an upcoming feature and is not yet used.",
          "format": "double"
        },
        "lowPrice": {
          "description": "Low Price of the CSS Product.",
          "$ref": "Price"
        },
        "pause": {
          "description": "Publication of this item will be temporarily paused.",
          "type": "string"
        },
        "brand": {
          "description": "Product Related Attributes.[14-36] Brand of the item.",
          "type": "string"
        },
        "customLabel1": {
          "description": "Custom label 1 for custom grouping of items in a Shopping campaign.",
          "type": "string"
        },
        "adult": {
          "description": "Set to true if the item is targeted towards adults.",
          "type": "boolean"
        },
        "mpn": {
          "description": "Manufacturer Part Number ([MPN](https://support.google.com/merchants/answer/188494#mpn)) of the item.",
          "type": "string"
        },
        "highPrice": {
          "description": "High Price of the CSS Product.",
          "$ref": "Price"
        },
        "headlineOfferPrice": {
          "description": "Headline Price of the CSS Product.",
          "$ref": "Price"
        },
        "productHighlights": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Bullet points describing the most relevant highlights of a product."
        },
        "title": {
          "description": "Title of the item.",
          "type": "string"
        },
        "cppAdsRedirect": {
          "description": "Allows advertisers to override the item URL when the product is shown within the context of Product Ads.",
          "type": "string"
        },
        "pattern": {
          "description": "The item's pattern (e.g. polka dots).",
          "type": "string"
        }
      }
    }
  },
  "resources": {
    "accounts": {
      "methods": {
        "get": {
          "response": {
            "$ref": "Account"
          },
          "parameterOrder": [
            "name"
          ],
          "description": "Retrieves a single CSS/MC account by ID.",
          "path": "v1/{+name}",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/content"
          ],
          "flatPath": "v1/accounts/{accountsId}",
          "parameters": {
            "parent": {
              "description": "Optional. Only required when retrieving MC account information. The CSS domain that is the parent resource of the MC account. Format: accounts/{account}",
              "location": "query",
              "type": "string"
            },
            "name": {
              "description": "Required. The name of the managed CSS/MC account. Format: accounts/{account}",
              "pattern": "^accounts/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "id": "css.accounts.get"
        },
        "listChildAccounts": {
          "parameterOrder": [
            "parent"
          ],
          "response": {
            "$ref": "ListChildAccountsResponse"
          },
          "httpMethod": "GET",
          "path": "v1/{+parent}:listChildAccounts",
          "description": "Lists all the accounts under the specified CSS account ID, and optionally filters by label ID and account name.",
          "flatPath": "v1/accounts/{accountsId}:listChildAccounts",
          "scopes": [
            "https://www.googleapis.com/auth/content"
          ],
          "id": "css.accounts.listChildAccounts",
          "parameters": {
            "parent": {
              "location": "path",
              "required": true,
              "type": "string",
              "pattern": "^accounts/[^/]+$",
              "description": "Required. The parent account. Must be a CSS group or domain. Format: accounts/{account}"
            },
            "pageToken": {
              "description": "Optional. A page token, received from a previous `ListChildAccounts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListChildAccounts` must match the call that provided the page token.",
              "location": "query",
              "type": "string"
            },
            "fullName": {
              "type": "string",
              "description": "If set, only the MC accounts with the given name (case sensitive) will be returned.",
              "location": "query"
            },
            "labelId": {
              "type": "string",
              "description": "If set, only the MC accounts with the given label ID will be returned.",
              "location": "query",
              "format": "int64"
            },
            "pageSize": {
              "type": "integer",
              "description": "Optional. The maximum number of accounts to return. The service may return fewer than this value. If unspecified, at most 50 accounts will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
              "location": "query",
              "format": "int32"
            }
          }
        },
        "updateLabels": {
          "scopes": [
            "https://www.googleapis.com/auth/content"
          ],
          "flatPath": "v1/accounts/{accountsId}:updateLabels",
          "request": {
            "$ref": "UpdateAccountLabelsRequest"
          },
          "parameters": {
            "name": {
              "location": "path",
              "required": true,
              "type": "string",
              "pattern": "^accounts/[^/]+$",
              "description": "Required. The label resource name. Format: accounts/{account}"
            }
          },
          "id": "css.accounts.updateLabels",
          "response": {
            "$ref": "Account"
          },
          "parameterOrder": [
            "name"
          ],
          "description": "Updates labels assigned to CSS/MC accounts by a CSS domain.",
          "httpMethod": "POST",
          "path": "v1/{+name}:updateLabels"
        }
      },
      "resources": {
        "quotas": {
          "methods": {
            "list": {
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListQuotaGroupsResponse"
              },
              "path": "v1/{+parent}/quotas",
              "httpMethod": "GET",
              "description": "Lists the daily call quota and usage per group for your CSS Center account.",
              "flatPath": "v1/accounts/{accountsId}/quotas",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "id": "css.accounts.quotas.list",
              "parameters": {
                "parent": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Required. The CSS account that owns the collection of method quotas and resources. In most cases, this is the CSS domain. Format: accounts/{account}",
                  "pattern": "^accounts/[^/]+$"
                },
                "pageSize": {
                  "type": "integer",
                  "description": "Optional. The maximum number of quotas to return in the response, used for paging. Defaults to 500; values above 1000 will be coerced to 1000.",
                  "location": "query",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "Optional. Token (if provided) to retrieve the subsequent page. All other parameters must match the original call that provided the page token.",
                  "location": "query",
                  "type": "string"
                }
              }
            }
          }
        },
        "cssProductInputs": {
          "methods": {
            "patch": {
              "flatPath": "v1/accounts/{accountsId}/cssProductInputs/{cssProductInputsId}",
              "request": {
                "$ref": "CssProductInput"
              },
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "id": "css.accounts.cssProductInputs.patch",
              "parameters": {
                "name": {
                  "description": "Identifier. The name of the CSS Product input. Format: `accounts/{account}/cssProductInputs/{css_product_input}`, where the last section `css_product_input` consists of 3 parts: contentLanguage~feedLabel~offerId. Example: accounts/123/cssProductInputs/de~DE~rawProvidedId123",
                  "pattern": "^accounts/[^/]+/cssProductInputs/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "updateMask": {
                  "type": "string",
                  "description": "The list of CSS 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 CSS 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 CSS product replacement is not supported.",
                  "location": "query",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "CssProductInput"
              },
              "httpMethod": "PATCH",
              "path": "v1/{+name}",
              "description": "Updates the existing Css Product input in your CSS Center account. After inserting, updating, or deleting a CSS Product input, it may take several minutes before the processed Css Product can be retrieved."
            },
            "delete": {
              "parameters": {
                "supplementalFeedId": {
                  "description": "The Content API Supplemental Feed ID. The field must not be set if the action applies to a primary feed. If the field is set, then product action applies to a supplemental feed instead of primary Content API feed.",
                  "location": "query",
                  "format": "int64",
                  "type": "string"
                },
                "name": {
                  "pattern": "^accounts/[^/]+/cssProductInputs/[^/]+$",
                  "description": "Required. The name of the CSS product input resource to delete. Format: accounts/{account}/cssProductInputs/{css_product_input}, where the last section `css_product_input` consists of 3 parts: contentLanguage~feedLabel~offerId. Example: accounts/123/cssProductInputs/de~DE~rawProvidedId123",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "id": "css.accounts.cssProductInputs.delete",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "flatPath": "v1/accounts/{accountsId}/cssProductInputs/{cssProductInputsId}",
              "description": "Deletes a CSS Product input from your CSS Center account. After a delete it may take several minutes until the input is no longer available.",
              "path": "v1/{+name}",
              "httpMethod": "DELETE",
              "response": {
                "$ref": "Empty"
              },
              "parameterOrder": [
                "name"
              ]
            },
            "insert": {
              "id": "css.accounts.cssProductInputs.insert",
              "parameters": {
                "parent": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Required. The account where this CSS Product will be inserted. Format: accounts/{account}",
                  "pattern": "^accounts/[^/]+$"
                },
                "feedId": {
                  "deprecated": true,
                  "type": "string",
                  "location": "query",
                  "description": "Optional. DEPRECATED. Feed id is not required for CSS Products. The primary or supplemental feed id. If CSS Product already exists and feed id provided is different, then the CSS Product will be moved to a new feed. Note: For now, CSSs do not need to provide feed ids as we create feeds on the fly. We do not have supplemental feed support for CSS Products yet.",
                  "format": "int64"
                }
              },
              "flatPath": "v1/accounts/{accountsId}/cssProductInputs:insert",
              "request": {
                "$ref": "CssProductInput"
              },
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "httpMethod": "POST",
              "path": "v1/{+parent}/cssProductInputs:insert",
              "description": "Uploads a CssProductInput to your CSS Center account. If an input with the same contentLanguage, identity, feedLabel and feedId already exists, this method replaces that entry. After inserting, updating, or deleting a CSS Product input, it may take several minutes before the processed CSS Product can be retrieved.",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "CssProductInput"
              }
            }
          }
        },
        "labels": {
          "methods": {
            "patch": {
              "description": "Updates a label.",
              "httpMethod": "PATCH",
              "path": "v1/{+name}",
              "response": {
                "$ref": "AccountLabel"
              },
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^accounts/[^/]+/labels/[^/]+$",
                  "description": "Identifier. The resource name of the label. Format: accounts/{account}/labels/{label}"
                }
              },
              "id": "css.accounts.labels.patch",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "flatPath": "v1/accounts/{accountsId}/labels/{labelsId}",
              "request": {
                "$ref": "AccountLabel"
              }
            },
            "delete": {
              "id": "css.accounts.labels.delete",
              "parameters": {
                "name": {
                  "description": "Required. The name of the label to delete. Format: accounts/{account}/labels/{label}",
                  "pattern": "^accounts/[^/]+/labels/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "flatPath": "v1/accounts/{accountsId}/labels/{labelsId}",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "httpMethod": "DELETE",
              "path": "v1/{+name}",
              "description": "Deletes a label and removes it from all accounts to which it was assigned.",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Empty"
              }
            },
            "create": {
              "parameters": {
                "parent": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. The parent account. Format: accounts/{account}",
                  "pattern": "^accounts/[^/]+$"
                }
              },
              "id": "css.accounts.labels.create",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "flatPath": "v1/accounts/{accountsId}/labels",
              "request": {
                "$ref": "AccountLabel"
              },
              "description": "Creates a new label, not assigned to any account.",
              "httpMethod": "POST",
              "path": "v1/{+parent}/labels",
              "response": {
                "$ref": "AccountLabel"
              },
              "parameterOrder": [
                "parent"
              ]
            },
            "list": {
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "flatPath": "v1/accounts/{accountsId}/labels",
              "parameters": {
                "parent": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^accounts/[^/]+$",
                  "description": "Required. The parent account. Format: accounts/{account}"
                },
                "pageSize": {
                  "type": "integer",
                  "description": "The maximum number of labels to return. The service may return fewer than this value. If unspecified, at most 50 labels will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                  "location": "query",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "A page token, received from a previous `ListAccountLabels` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListAccountLabels` must match the call that provided the page token.",
                  "location": "query",
                  "type": "string"
                }
              },
              "id": "css.accounts.labels.list",
              "response": {
                "$ref": "ListAccountLabelsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "description": "Lists the labels owned by an account.",
              "httpMethod": "GET",
              "path": "v1/{+parent}/labels"
            }
          }
        },
        "cssProducts": {
          "methods": {
            "get": {
              "description": "Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.",
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "response": {
                "$ref": "CssProduct"
              },
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "description": "Required. The name of the CSS product to retrieve. Format: `accounts/{account}/cssProducts/{css_product}`",
                  "pattern": "^accounts/[^/]+/cssProducts/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "id": "css.accounts.cssProducts.get",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "flatPath": "v1/accounts/{accountsId}/cssProducts/{cssProductsId}"
            },
            "list": {
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListCssProductsResponse"
              },
              "path": "v1/{+parent}/cssProducts",
              "httpMethod": "GET",
              "description": "Lists the processed CSS Products in your CSS 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 CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.",
              "flatPath": "v1/accounts/{accountsId}/cssProducts",
              "scopes": [
                "https://www.googleapis.com/auth/content"
              ],
              "id": "css.accounts.cssProducts.list",
              "parameters": {
                "parent": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. The account/domain to list processed CSS Products for. Format: accounts/{account}",
                  "pattern": "^accounts/[^/]+$"
                },
                "pageSize": {
                  "description": "The maximum number of CSS 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 maximum number of CSS products will be returned.",
                  "location": "query",
                  "format": "int32",
                  "type": "integer"
                },
                "pageToken": {
                  "type": "string",
                  "description": "A page token, received from a previous `ListCssProducts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCssProducts` must match the call that provided the page token.",
                  "location": "query"
                }
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "alt": {
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "type": "string",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ]
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "location": "query",
      "enum": [
        "1",
        "2"
      ],
      "type": "string",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ]
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "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"
    },
    "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.",
      "location": "query",
      "type": "string"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    }
  },
  "id": "css:v1",
  "fullyEncodeReservedExpansion": true,
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/content": {
          "description": "Manage your product listings and accounts for Google Shopping"
        }
      }
    }
  },
  "version_module": true
}
