{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/elastic-path/main/json-schema/catalog.json", "title": "Catalogs Introduction", "description": "Use the catalog-view Service API to create your catalogs.", "version": "26.0508.7574130", "$defs": { "amount": { "type": "object", "description": "The three-letter ISO code for the currency associated with this price.", "title": "Amount", "properties": { "amount": { "description": "The price in the lowest denomination for the specified currency. This is a product's list price.", "type": "integer", "example": 100, "format": "int64", "x-omitempty": false, "x-go-name": "Amount" }, "includes_tax": { "description": "Whether this price includes tax.", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludesTax" } }, "x-go-name": "PriceAmount" }, "available-prices": { "description": "If pricebook segmentation is enabled, this will show all the available prices for the product in the CV delta file and will show selected available prices via the admin api", "type": "array", "items": { "type": "object", "x-go-name": "AvailablePrice", "properties": { "pricebook_id": { "description": "A unique identifier of a price book.", "type": "string" }, "shopper_attributes": { "$ref": "#/components/schemas/shopper_attributes" }, "sales": { "type": "object", "title": "Sales", "description": "A set of sale specifications", "additionalProperties": { "$ref": "#/components/schemas/sale" } }, "price": { "$ref": "#/components/schemas/currencies" }, "tiers": { "$ref": "#/components/schemas/tiers" } } } }, "alternative-prices": { "description": "If pricebook segmentation is enabled, this will show all the alternative prices for the product. Will just include 'List Price' initially", "type": "array", "items": { "type": "object", "x-go-name": "alternativePrice", "properties": { "name": { "description": "A name to signify what the alternative price means to the shopper... i.e. 'List Price'", "type": "string" }, "pricebook_id": { "description": "A unique identifier of a price book.", "type": "string" }, "shopper_attributes": { "$ref": "#/components/schemas/shopper_attributes" }, "sale_id": { "description": "The unique identifier of a sale.", "type": "string", "x-go-name": "SaleID" }, "sale_expires": { "description": "The expiration date and time of the sale, provided in UTC.", "type": "string", "format": "date-time", "example": "2025-07-07T14:30:00Z", "x-go-name": "SaleExpires", "nullable": true }, "price": { "$ref": "#/components/schemas/currencies" }, "display_price": { "$ref": "#/components/schemas/display-price" }, "original_display_price": { "$ref": "#/components/schemas/display-price" }, "original_price": { "$ref": "#/components/schemas/currencies" }, "tiers": { "description": "You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.", "type": "object", "additionalProperties": { "description": "The name of the tier, such as `Pencils`.", "type": "object", "properties": { "original_price": { "$ref": "#/components/schemas/currencies" }, "price": { "$ref": "#/components/schemas/currencies" }, "display_price": { "$ref": "#/components/schemas/display-price" }, "original_display_price": { "$ref": "#/components/schemas/display-price" } }, "x-go-name": "AlternativePriceTier" }, "x-go-name": "AlternativePriceTiers" } } } }, "prioritized-pricebooks": { "description": "If you want multiple price books for different scenarios, such as seasonal sales, business versus retail pricing, and reward programs, when creating a catalog, you can specify up to five price books. You must configure a priority for your price books. Product prices are displayed in the catalog acco", "type": "array", "maxItems": 5, "items": { "type": "object", "properties": { "id": { "description": "A unique identifier of a price book.", "type": "string", "format": "uuid" }, "priority": { "description": "Priority is a number and the price book with the highest number has the highest priority.", "type": "integer" } }, "required": [ "priority", "id" ], "x-go-name": "PrioritizedPricebook" } }, "catalog": { "type": "object", "title": "Catalog", "description": "Creates a catalog with the following attributes.", "properties": { "id": { "type": "string", "description": "A unique identifier of a catalog.", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "attributes": { "type": "object", "properties": { "name": { "description": "The name of a catalog.", "type": "string", "example": "catalog-123" }, "description": { "description": "A brief description of the catalog, such as the purpose of the catalog.", "type": "string", "example": "Catalog for Store 123", "default": "" }, "hierarchy_ids": { "description": "The unique identifiers of the hierarchies associated with a catalog.", "type": "array", "items": { "type": "string" } }, "pricebook_id": { "description": "The unique identifier of a price book associated with a catalog. If no price book is selected, the catalog is displayed without prices.", "type": "string" }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" }, "locales": { "description": "Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.", "type": "string" } } }, "created_at": { "description": "The date and time a catalog is created.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time" }, "updated_at": { "description": "The date and time a catalog was updated.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time" }, "owner": { "description": "The owner of this resource, can be either `organization` or `store`.", "type": "string", "enum": [ "store", "organization" ], "x-go-name": "Owner", "default": "store", "nullable": true }, "enable_price_segmentation": { "description": "This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing", "type": "boolean", "example": true, "default": false, "x-go-name": "EnablePriceSegmentation" }, "include_draft_products": { "description": "When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludeDraftProducts" } }, "required": [ "name", "hierarchy_ids", "created_at", "updated_at" ] }, "relationships": { "description": "Relationships are established between different catalog entities. For example, a catalog rule and a price book are related to a catalog, as both are associated with it.", "type": "object", "title": "CatalogRelationships", "properties": { "rules": { "description": "The catalog rules related to a catalog.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } } }, "releases": { "description": "When a catalog is published, a catalog release is created. This is a URL to all catalog published releases available for this catalog.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" }, "meta": { "type": "object", "properties": { "count": { "description": "The number releases available for a catalog.", "type": "integer" } } } } } } }, "type": { "type": "string", "example": "catalog", "enum": [ "catalog" ] } }, "required": [ "id", "type", "attributes" ] }, "catalog-create-data": { "type": "object", "title": "CatalogCreateData", "description": "Creates a catalog with the following attributes.", "properties": { "data": { "type": "object", "properties": { "attributes": { "type": "object", "properties": { "name": { "description": "The name of the catalog.", "type": "string", "minLength": 1, "example": "catalog-123" }, "description": { "description": "A brief description of the catalog.", "type": "string", "example": "Catalog for Store 123", "nullable": true }, "hierarchy_ids": { "description": "The unique identifiers of the hierarchies to associate with a catalog.", "type": "array", "items": { "type": "string" } }, "pricebook_id": { "description": "The unique identifier of the price book to associate with this catalog. You can specify either a `pricebook_id` or `pricebook_ids` but not both. If you specify both a `pricebook_id` and `pricebook_ids`, a `422 Unprocessable Entity` error is displayed.\n", "type": "string" }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" }, "locales": { "description": "Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.", "type": "string" } } }, "enable_price_segmentation": { "description": "This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing", "type": "boolean", "example": true, "default": false, "x-go-name": "EnablePriceSegmentation" }, "include_draft_products": { "description": "When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludeDraftProducts" } }, "required": [ "name", "hierarchy_ids" ] }, "type": { "description": "Represents the type of object being returned. Always `Catalog`.", "type": "string", "example": "catalog", "enum": [ "catalog" ] } }, "required": [ "type", "attributes" ] } }, "required": [ "data" ] }, "catalog-data": { "type": "object", "title": "CatalogData", "description": "Container for a single catalog.", "properties": { "data": { "$ref": "#/components/schemas/catalog" }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "catalog-list-data": { "type": "object", "title": "CatalogListData", "description": "Container for a list of catalogs.", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/catalog" } }, "meta": { "$ref": "#/components/schemas/page-meta" }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "catalog-update-data": { "type": "object", "title": "CatalogUpdateData", "description": "A catalog combines price books, product lists, and hierarchies.", "properties": { "data": { "type": "object", "properties": { "attributes": { "type": "object", "properties": { "name": { "description": "The name of the catalog.", "type": "string", "minLength": 1, "example": "catalog-123", "nullable": true }, "description": { "description": "A brief description of the catalog.", "type": "string", "example": "Catalog for Store 123", "nullable": true }, "hierarchy_ids": { "description": "The unique identifiers of the hierarchies to associate with a catalog.", "type": "array", "items": { "type": "string" }, "nullable": true }, "pricebook_id": { "description": "The unique identifier of a price book to associate with a catalog. You can specify a `pricebook_id` or a `pricebook_ids` but not both. If you specify both, a `422 unprocessable entity` error is displayed.", "type": "string", "nullable": true }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" }, "locales": { "description": "Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.loc.gov/standards/iso639-2/) that represents the name of language you have used.", "type": "object", "additionalProperties": { "description": "A [three-letter language code](https://www.loc.gov/standards/iso639-2/) that represents the name of language you have used.", "type": "string" } } }, "enable_price_segmentation": { "description": "This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing", "type": "boolean", "example": true, "default": false, "x-go-name": "EnablePriceSegmentation" }, "include_draft_products": { "description": "When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludeDraftProducts" } } }, "id": { "description": "The unique identifier of the catalog to be updated.", "type": "string", "x-go-name": "ID", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "type": { "description": "This represents the type of object being returned. Always `catalog`.", "type": "string", "example": "catalog", "enum": [ "catalog" ] } }, "required": [ "type", "id", "attributes" ] } }, "required": [ "data" ] }, "component-product": { "type": "object", "title": "Component Product", "description": "The unique identifier of the component, for example, `games`.", "properties": { "name": { "description": "The component name is the name that is displayed in your storefront.", "type": "string", "x-go-name": "Name" }, "min": { "description": "The minimum number of product options a shopper can select from this component.", "type": "integer", "x-go-name": "Min", "nullable": true }, "max": { "description": "The maximum number of product options a shopper can select from this component.", "type": "integer", "x-go-name": "Max", "nullable": true }, "sort_order": { "description": "The sort order of the components. The `create a bundle` and `update a bundle` endpoints do not sort the components. You can use the `sort_order` attribute when programming your storefront to display the components in the order that you want.", "type": "integer", "x-go-name": "Sort Order", "nullable": true }, "options": { "description": "The product options included in a component. This can be the ID of another bundle.", "type": "array", "items": { "$ref": "#/components/schemas/component-product-option" }, "x-go-name": "Options" } } }, "component-product-option": { "type": "object", "title": "Component Product Option", "description": "The product options included in a component. This can be the ID of another bundle.", "properties": { "id": { "description": "A unique identifier of the product you want to add to a component.", "type": "string", "format": "uuid", "x-go-name": "ID" }, "type": { "description": "This represents the type of object being returned. Always `product`.", "type": "string", "x-go-name": "Type", "default": "product", "example": "product", "enum": [ "product" ] }, "quantity": { "description": "The number of this product option that a shopper must purchase.", "type": "integer", "example": 2, "x-go-name": "Quantity" }, "min": { "description": "The minimum quantity of this product option that a shopper can select.", "type": "integer", "x-go-name": "Min", "nullable": true }, "max": { "description": "The maximum quantity of this product option that a shopper can select.", "type": "integer", "x-go-name": "Max", "nullable": true }, "sort_order": { "description": "The sort order of the options. The `create a bundle` and `update a bundle` endpoints do not sort the options. You can use the `sort_order` attribute when programming your storefront to display the options in the order that you want.", "type": "integer", "example": 15, "x-go-name": "Sort Order", "nullable": true }, "default": { "description": "The boolean indicates whether the current option is a default option for the component.", "type": "boolean", "example": true, "default": false, "x-go-name": "Default", "nullable": true }, "product_should_be_substituted_with_child": { "description": "Indicates that the parent product added to a bundle is not directly purchasable. When set to true, the child products of the parent product should be displayed as options for selection in the bundle.", "type": "boolean", "example": true, "x-go-name": "Is Parent Product", "nullable": true }, "excluded_children": { "description": "Merchants can exclude specific child products from a parent product when configuring a bundle.", "type": "array", "items": { "type": "string" }, "example": [ "2d491d1c-729d-43d7-a2d2-e0a56edab43d" ], "x-go-name": "Excluded Children", "x-omitempty": true } } }, "components": { "type": "object", "title": "Components", "description": "A bundle is a purchasable product, comprising of one or more products that you want to sell together. You can create multiple components within a bundle. Each component must have at least one or more options. Each option is a product and a quantity.", "additionalProperties": { "$ref": "#/components/schemas/component-product" } }, "custom-input-validation-rule-options": { "type": "object", "description": "The length of the custom input text field.", "x-go-name": "CustomInputValidationRuleOptions", "properties": { "max_length": { "description": "The number of characters the custom text field can be. You can specify a maximum length up to 255 characters, as the limit is 255 characters.", "type": "integer", "x-go-name": "MaxLength", "example": 255 } } }, "custom-input-validation-rule": { "type": "object", "title": "Custom Input Validation Rule", "description": "The validation rules for the custom text.", "x-go-name": "CustomInputValidationRule", "properties": { "type": { "description": "This represents the type of object being returned. Must be `string`.", "type": "string", "x-go-name": "Type", "default": "string", "example": "string", "enum": [ "string" ] }, "options": { "$ref": "#/components/schemas/custom-input-validation-rule-options" } } }, "custom-input": { "type": "object", "title": "Custom Input", "description": "The name of the custom input. You can rename the input to something more representative of the input that shoppers are adding, for example, `message` or `front`.", "properties": { "name": { "description": "The name for the custom text field that is displayed in your storefront.", "type": "string", "x-go-name": "Name", "example": "Message" }, "validation_rules": { "description": "The validation rules for the custom text.", "type": "array", "x-go-name": "ValidationRules", "items": { "$ref": "#/components/schemas/custom-input-validation-rule" } }, "required": { "description": "This is `true` or `false` depending on whether the custom text is required.", "type": "boolean", "x-go-name": "Required", "example": false, "default": false, "nullable": true } } }, "custom_inputs": { "type": "object", "title": "Custom Inputs", "description": "You can allow your shoppers to add custom text to a product when adding product items to their carts. This is useful, for example, if you have a product like a T-shirt that can be personalized or you sell greetings cards that can be printed with your shoppers personalized messages. You can do this ", "additionalProperties": { "$ref": "#/components/schemas/custom-input" } }, "currencies": { "type": "object", "description": "A collection of one or more currencies objects that consists of the [**three-letter ISO code**](https://www.iso.org/iso-3166-country-codes.html) of the currencies associated with this price and the amount. This is the product's price.", "title": "Currencies", "additionalProperties": { "$ref": "#/components/schemas/amount" } }, "shopper_attributes": { "type": "object", "description": "A collection of key-value string pairs, viewable by shoppers.", "title": "ShopperAttributes", "additionalProperties": { "type": "string" } }, "diff-list-data": { "type": "object", "title": "DiffListData", "description": "A list of differences between two releases.", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/product-diff" } }, "links": { "$ref": "#/components/schemas/links" } } }, "display-price": { "type": "object", "description": "A price formatted for display.", "x-omitempty": true, "properties": { "with_tax": { "$ref": "#/components/schemas/formatted-price" }, "without_tax": { "$ref": "#/components/schemas/formatted-price" } } }, "error": { "type": "object", "title": "APIError", "description": "APIError is a json-api style part of an error response.", "properties": { "detail": { "type": "string", "example": "not processable", "x-go-name": "Detail" }, "status": { "type": "string", "example": "422", "x-go-name": "Status" }, "title": { "type": "string", "example": "There was a problem processing your request.", "x-go-name": "Title" } }, "x-go-name": "APIError" }, "error-response": { "type": "object", "title": "ErrorResponse", "description": "ErrorResponse is a json-api style Error response.", "properties": { "errors": { "type": "array", "items": { "$ref": "#/components/schemas/error" }, "x-go-name": "Errors" } }, "x-go-name": "ErrorResponse" }, "extension": { "type": "object", "title": "Extension", "description": "The name of the product template.", "additionalProperties": { "description": "The product attributes available for this template.", "type": "object" } }, "extensions": { "type": "object", "title": "Extensions", "description": "With extension templates, you can attach a specific set of custom fields to your products in Product Experience Manager. For example, a **Book** template might contain the attributes, such as **ISBN**, **Author**, **Number of pages**, **Year Published**, or **Condition (New/Used)**.", "additionalProperties": { "$ref": "#/components/schemas/extension" } }, "file-reference": { "description": "In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.", "type": "object", "properties": { "type": { "description": "This represents the type of object being returned. Always `file`.", "type": "string", "example": "file", "enum": [ "file" ] }, "id": { "description": "A unique identifier for a file.", "type": "string", "format": "uuid" }, "created_at": { "description": "The date and time a file is created.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "CreatedAt" } }, "x-go-name": "FileRelationship" }, "files-relationship": { "description": "In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.", "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/file-reference" } } }, "x-omitempty": true }, "component-products-relationship": { "description": "A bundle is a purchasable product, comprising of one or more products that you want to sell together. You can create multiple components within a bundle. Each component must have at least one or more options. Each option is a product and a quantity. You can link to the products that make up your bun", "type": "object", "properties": { "data": { "$ref": "#/components/schemas/product-references" }, "links": { "$ref": "#/components/schemas/self-link" } }, "x-omitempty": true }, "custom-relationship": { "description": "A product can have custom relationships added that link to other products. These can be used for Parent/Child relationships as well as products that you want to Cross Sell/Promote.", "type": "object", "properties": { "data": { "$ref": "#/components/schemas/product-references" }, "links": { "$ref": "#/components/schemas/custom-relationship-links" } }, "x-omitempty": true }, "formatted-price": { "type": "object", "title": "FormattedPrice", "x-omitempty": true, "description": "A price formatted for display.", "properties": { "amount": { "description": "The price in the lowest denomination for the specified currency. This is a product's list price.", "type": "integer", "x-omitempty": false, "example": "47500" }, "currency": { "description": "The three-letter ISO code of the currencies associated with this price and the amount.", "type": "string", "example": "USD" }, "formatted": { "description": "The format of the price for display.", "type": "string", "example": "$475.00" }, "float_price": { "description": "The price in displayable float format", "type": "number", "x-omitempty": false, "example": 475 } } }, "hierarchy": { "type": "object", "title": "Hierarchy", "description": "A category hierarchy in a catalog. Hierarchies can have parent nodes and child nodes, as well as a list of attached products.", "properties": { "attributes": { "$ref": "#/components/schemas/hierarchy-attributes" }, "id": { "description": "A unique identifier of a hierarchy.", "type": "string", "example": "e871df93-c769-49a9-9394-a6fd555b8e8a", "x-go-name": "ID" }, "relationships": { "$ref": "#/components/schemas/hierarchy-relationships" }, "type": { "description": "This represents the type of object being returned. Always `hierarchy`.", "type": "string", "example": "hierarchy", "x-go-name": "Type" }, "meta": { "$ref": "#/components/schemas/hierarchy-meta" } }, "x-go-name": "Hierarchy" }, "hierarchy-meta": { "type": "object", "title": "HierarchyMeta", "description": "A hierarchy's metadata.", "properties": { "language": { "description": "Product Experience Manager supports localization of hierarchies. If your store supports multiple languages, you can localize hierarchy names and descriptions. This is [**three-letter language code**](https://www.iso.org/iso-639-language-code) that represents the name of the language you have used.", "type": "string", "example": "en-GB" }, "breadcrumbs": { "description": "Hierarchy Breadcrumbs", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The unique identifier of a hierarchy.", "type": "string", "example": "e871df93-c769-49a9-9394-a6fd555b8e8a", "x-omitempty": true }, "name": { "description": "The name of the hierarchy.", "type": "string", "example": "Formal dresswear", "x-omitempty": true }, "slug": { "description": "A slug for the hierarchy.", "type": "string", "example": "formal", "x-omitempty": true } }, "x-go-name": "HierarchyBreadcrumb" }, "x-omitempty": true }, "has_children": { "description": "Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.", "type": "boolean", "example": true, "x-go-name": "HasChildren", "x-omitempty": true, "nullable": true } }, "x-go-name": "HierarchyMeta", "x-omitempty": true }, "hierarchy-attributes": { "type": "object", "title": "HierarchyAttributes", "description": "Resource attributes of a catalog hierarchy.", "properties": { "created_at": { "description": "The date and time a hierarchy is created.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "CreatedAt" }, "published_at": { "description": "The date and time a hierarchy is published in a catalog.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "description": { "description": "A description of a hierarchy.", "type": "string", "example": "Formal dresswear", "x-go-name": "Description" }, "name": { "description": "The name of a hierarchy.", "type": "string", "example": "Formal dresswear", "x-go-name": "Name" }, "slug": { "description": "A unique slug for a hierarchy.", "type": "string", "example": "formal", "x-go-name": "Slug" }, "shopper_attributes": { "$ref": "#/components/schemas/shopper_attributes" }, "updated_at": { "description": "The date and time a hierarchy was updated.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "UpdatedAt" } }, "x-go-name": "HierarchyAttributes" }, "hierarchy-data": { "type": "object", "title": "HierarchyData", "description": "Container for hierarchies.", "properties": { "data": { "$ref": "#/components/schemas/hierarchy" }, "links": { "$ref": "#/components/schemas/links" } } }, "hierarchy-list-data": { "type": "object", "title": "HierarchyListData", "description": "Container for a list of hierarchies.", "properties": { "meta": { "$ref": "#/components/schemas/page-meta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/hierarchy" } }, "links": { "$ref": "#/components/schemas/links" } } }, "hierarchy-relationships": { "type": "object", "title": "HierarchyRelationships", "description": "Relationships to child nodes, and products.", "properties": { "products": { "description": "A URL to all the products associated with a hierarchy.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } } }, "children": { "description": "A URL to all the child products associated with a hierarchy.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "links" ] }, "nodes": { "description": "A URL to all the nodes associated with a hierarchy.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "links" ] } }, "x-go-name": "HierarchyRelationships" }, "links": { "description": "Links allow you to move between requests.", "type": "object", "properties": { "self": { "description": "Single entities use a `self` parameter with a link the specific resource.", "type": "string", "format": "uri", "nullable": true }, "first": { "description": "Always the first page.", "type": "string", "format": "uri", "nullable": true }, "last": { "description": "This is `null` if there is only one page.", "type": "string", "format": "uri", "nullable": true }, "prev": { "description": "This is `null` if there is only one page.", "type": "string", "format": "uri", "nullable": true }, "next": { "description": "This is `null` if there is only one page.", "type": "string", "format": "uri", "nullable": true } } }, "included-response": { "type": "object", "description": "Included is an array of resources that are included in the response.", "properties": { "main_images": { "description": "The main images associated with a product.", "type": "array", "items": { "$ref": "#/components/schemas/elastic-path-file" } }, "component_products": { "description": "Returns a list of component products in a product bundle. If a bundle has no component products (in other words, is not a product bundle), an empty array is returned.", "type": "array", "items": { "$ref": "#/components/schemas/product" } }, "files": { "description": "The files associated with a product.", "type": "array", "items": { "$ref": "#/components/schemas/elastic-path-file" } } } }, "elastic-path-file": { "type": "object", "title": "ElasticPathFile", "properties": { "id": { "type": "string", "description": "The unique identifier for this file.", "format": "uuid" }, "type": { "description": "The type represents the object being returned.", "type": "string", "example": "file" }, "file_name": { "description": "The name of the file.", "type": "string", "example": "file_name.jpg" }, "mime_type": { "description": "The mime type of the file.", "type": "string", "example": "image/jpeg" }, "file_size": { "description": "The size of the file. Required when uploading files.", "type": "integer", "example": 36000 }, "public": { "description": "DEPRECATED Whether the file public or not. Required when uploading files.", "type": "boolean", "example": true }, "meta": { "properties": { "timestamps": { "type": "object", "description": "The date and time the file was created.", "properties": { "created_at": { "description": "The date and time the file was created.", "type": "string", "example": "2023-10-11T13:02:25.293Z" } } }, "dimensions": { "description": "The file dimensions.", "type": "object", "properties": { "width": { "description": "The width of the file.", "type": "integer", "example": 1800 }, "height": { "description": "The height of the file.", "type": "integer", "example": 1000 } } } } }, "links": { "description": "Links are used to allow you to move between requests.", "type": "object", "properties": { "self": { "description": "Single entities use a self parameter with a link to that specific resource.", "type": "string", "example": "https://useast.api.elasticpath.com/v2/files/ddc28c74-a7df-46be-b262-8fa69a6e7d52" } } }, "link": { "type": "object", "description": "The publicly available URL for this file.", "properties": { "href": { "description": "The publicly available URL for this file.", "type": "string", "example": "https://files-eu.epusercontent.com/e8c53cb0-120d-4ea5-8941-ce74dec06038/f8cf26b3-6d38-4275-937a-624a83994702.png" }, "meta": { "type": "object", "properties": { "results": { "description": "Contains the results for the entire collection.", "type": "object", "properties": { "total": { "description": "Total number of results for the entire collection.", "type": "integer", "example": 2 } } } } } } } } }, "main-image-relationship": { "type": "object", "description": "In Product Experience Manager, products can also have associated product images.", "properties": { "data": { "description": "The images associated with a product.", "type": "object", "x-nullable": "true", "properties": { "type": { "description": "This represents the type of object being returned. Always `main_image`.", "type": "string", "example": "main_image", "enum": [ "main_image" ] }, "id": { "description": "A unique identifier for an image.", "type": "string", "format": "uuid" } } } }, "x-omitempty": true }, "node": { "type": "object", "title": "Node", "description": "A category node in a catalog. Nodes can have child nodes, as well as a list of attached products.", "properties": { "attributes": { "$ref": "#/components/schemas/node-attributes" }, "id": { "description": "The unique identifier of a node.", "type": "string", "example": "e871df93-c769-49a9-9394-a6fd555b8e8a", "x-go-name": "ID" }, "relationships": { "$ref": "#/components/schemas/node-relationships" }, "type": { "description": "This represents the type of object being returned. Always `node`.", "type": "string", "example": "node", "x-go-name": "Type" }, "meta": { "$ref": "#/components/schemas/node-meta" } }, "x-go-name": "Node" }, "node-attributes": { "type": "object", "title": "NodeAttributes", "description": "Resource attributes of a catalog node.", "properties": { "created_at": { "description": "The date and time a node was created.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "CreatedAt" }, "published_at": { "description": "The date and time a node was published in a catalog.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "description": { "type": "string", "description": "A description of a node.", "example": "Formal dresswear", "x-go-name": "Description" }, "label": { "type": "string", "example": "category", "x-go-name": "Label" }, "name": { "description": "The name of a node. Names must be unique among sibling nodes in a hierarchy. Otherwise, a name can be non-unique within the hierarchy and across multiple hierarchies.", "type": "string", "example": "Formal dresswear", "x-go-name": "Name" }, "slug": { "description": "A slug for the node. Slugs must be unique among sibling nodes in the hierarchy. Otherwise, a slug can be non-unique within the hierarchy and across multiple hierarchies.", "type": "string", "example": "formal", "x-go-name": "Slug" }, "curated_products": { "description": "A list of curated products for a node. You can curate your products in your nodes product lists. Product curation allows you to promote specific products within each node in a hierarchy, enabling you to create unique product collections in your storefront.", "type": "array", "items": { "type": "string", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "x-omitempty": true }, "status": { "type": "string", "example": "live", "x-go-name": "Status" }, "shopper_attributes": { "$ref": "#/components/schemas/shopper_attributes" }, "updated_at": { "description": "The date and time a node was updated.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "UpdatedAt" } }, "x-go-name": "NodeAttributes" }, "release-indexing-complete-data": { "type": "object", "title": "ReleaseIndexingCompleteData", "description": "The response body for a successful release indexing complete request.", "properties": { "data": { "type": "object", "required": [ "status" ], "properties": { "status": { "description": "The final status of the search indexing process.", "type": "string", "enum": [ "succeeded", "failed" ] } } } } }, "node-create-data": { "type": "object", "title": "NodeCreateData", "description": "Container for nodes.", "properties": { "data": { "type": "object", "title": "NodeCreateArgs", "description": "A node in a catalog (e.g. a category node). Nodes can have child nodes, as well as a list of attached products", "properties": { "attributes": { "type": "object", "title": "NodeCreateAttributes", "description": "Resource attributes of a catalog node.", "properties": { "description": { "type": "string", "example": "Formal dresswear", "x-go-name": "Description" }, "hierarchy_id": { "type": "string", "description": "hierarchy id of the node", "example": "ddd401ac-db06-4d9e-af60-cf5206abb9bc" }, "label": { "type": "string", "example": "category", "x-go-name": "Label" }, "name": { "type": "string", "example": "Formal dresswear", "x-go-name": "Name" }, "slug": { "type": "string", "example": "formal", "x-go-name": "Slug" }, "status": { "type": "string", "example": "Live", "x-go-name": "Status" }, "locales": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "required": [ "name" ] }, "relationships": { "$ref": "#/components/schemas/node-relationships" }, "id": { "type": "string", "example": "8fccaa19-dba9-4621-8d11-31a222a68c7c", "x-go-name": "ID" }, "type": { "type": "string", "example": "node", "x-go-name": "Type" } }, "required": [ "type", "attributes" ] }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "node-data": { "type": "object", "title": "NodeData", "description": "Container for nodes.", "properties": { "data": { "$ref": "#/components/schemas/node" }, "links": { "$ref": "#/components/schemas/links" } } }, "node-list-data": { "type": "object", "title": "NodeListData", "description": "Container for a list of nodes.", "properties": { "meta": { "$ref": "#/components/schemas/page-meta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/node" } }, "links": { "$ref": "#/components/schemas/links" } } }, "node-meta": { "type": "object", "title": "NodeMeta", "description": "A node's metadata.", "properties": { "language": { "description": "The node details localized in the supported languages.", "type": "string", "example": "en-GB" }, "bread_crumb": { "description": "Helps you understand the association of products with nodes. It explains how products are associated with parent nodes and the relationship among the array of nodes. This is useful if you want to improve how your shoppers search within you store.", "type": "array", "items": { "type": "string", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "x-omitempty": true, "deprecated": true }, "breadcrumbs": { "description": "Node Breadcrumbs", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The unique identifier of a hierarchy/node.", "type": "string", "example": "e871df93-c769-49a9-9394-a6fd555b8e8a", "x-omitempty": true }, "name": { "description": "The name of the hierarchy/node.", "type": "string", "example": "Formal dresswear", "x-omitempty": true }, "slug": { "description": "A slug for the hierarchy/node.", "type": "string", "example": "formal", "x-omitempty": true } }, "x-go-name": "NodeBreadcrumb" }, "x-omitempty": true }, "has_children": { "description": "Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.", "type": "boolean", "example": true, "x-go-name": "HasChildren", "x-omitempty": true, "nullable": true } }, "x-go-name": "NodeMeta", "x-omitempty": true }, "node-reference": { "type": "object", "title": "NodeReference", "description": "Minimum set of information to identify a catalog node.", "properties": { "id": { "description": "The unique identifier of a hierarchy.", "type": "string", "example": "65477ce0-fcb8-436b-a120-3d57979421dd", "x-go-name": "ID" }, "label": { "description": "A label for a hierarchy.", "type": "string", "example": "category", "x-go-name": "Label" }, "name": { "description": "The name of a hierarchy.", "type": "string", "example": "Formal dresswear", "x-go-name": "Name" } }, "x-go-name": "NodeReference" }, "node-relationships": { "type": "object", "title": "NodeRelationships", "description": "Relationships to parent and child nodes, and products.", "properties": { "products": { "description": "A URL to all products associated with a node.", "type": "object", "properties": { "data": { "type": "array", "x-omitempty": true, "items": { "$ref": "#/components/schemas/product-reference" } }, "links": { "$ref": "#/components/schemas/related-link" } } }, "children": { "description": "A URL to all child nodes associated with a node.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "links" ] }, "parent": { "description": "A URL to all parent nodes associated with a node.", "type": "object", "properties": { "data": { "type": "object", "properties": { "type": { "type": "string", "example": "node", "enum": [ "node" ] }, "id": { "type": "string", "example": "8fccaa19-dba9-4621-8d11-31a222a68c7c", "x-go-name": "ID" } }, "required": [ "id", "type" ] }, "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "data" ] }, "hierarchy": { "description": "A URL to the hierarchies associated with a node.", "type": "object", "properties": { "data": { "type": "object", "properties": { "type": { "type": "string", "example": "hierarchy", "enum": [ "hierarchy" ] }, "id": { "type": "string", "example": "8fccaa19-dba9-4621-8d11-31a222a68c7c", "x-go-name": "ID" } }, "required": [ "id", "type" ] }, "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "data" ] } }, "x-go-name": "NodeRelationships" }, "node-relationships-data": { "type": "object", "title": "NodeRelationshipsData", "description": "Container for node relationships.", "properties": { "data": { "$ref": "#/components/schemas/node-relationships" }, "links": { "$ref": "#/components/schemas/links" } } }, "page-meta": { "type": "object", "description": "Contains the results for the entire collection.", "title": "PageMeta", "properties": { "results": { "description": "Total number of results for the entire collection.", "type": "object", "properties": { "total": { "description": "Total number of results for the entire collection.", "type": "integer", "format": "int64" } } }, "page": { "type": "object", "properties": { "limit": { "description": "The maximum number of records for all pages.", "type": "integer", "format": "int64" }, "offset": { "description": "The current offset by number of pages.", "type": "integer", "format": "int64" }, "current": { "description": "The current number of pages.", "type": "integer", "format": "int64" }, "total": { "description": "The total number of records for the entire collection.", "type": "integer", "format": "int64" } } } } }, "pricebook": { "type": "object", "title": "Pricebook", "description": "Top level entity in the pricebooks domain model. It contains a list of product prices.", "properties": { "id": { "description": "The unique identifier of a price book.", "type": "string", "example": "4c45e4ec-26e0-4043-86e4-c15b9cf985a7", "x-go-name": "ID" }, "type": { "description": "This represents the type of object being returned. Always `pricebook`.", "type": "string", "x-go-name": "Type", "default": "pricebook", "example": "pricebook", "enum": [ "pricebook" ] }, "attributes": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time", "example": "2020-09-22T09:00:00", "x-go-name": "CreatedAt" }, "description": { "type": "string", "example": "This is a pricebook", "x-go-name": "Description", "nullable": true }, "name": { "type": "string", "example": "pricebook-store-abc", "x-go-name": "Name", "nullable": true }, "updated_at": { "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time", "x-go-name": "UpdatedAt" } }, "required": [ "name" ] } }, "required": [ "type", "attributes" ], "additionalProperties": false, "x-go-name": "Pricebook" }, "pricebook-create-data": { "type": "object", "title": "PricebookData", "description": "Container for pricebooks.", "properties": { "data": { "type": "object", "description": "New top level pricebook.", "title": "PricebookCreateArgs", "properties": { "type": { "type": "string", "x-go-name": "Type", "default": "pricebook", "example": "pricebook", "enum": [ "pricebook" ] }, "attributes": { "type": "object", "properties": { "description": { "type": "string", "example": "This is a pricebook", "x-go-name": "Description", "nullable": true }, "name": { "type": "string", "example": "pricebook-store-abc", "x-go-name": "Name", "nullable": true } }, "required": [ "name" ] } }, "required": [ "type", "attributes" ], "additionalProperties": false }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "pricebook-data": { "type": "object", "title": "PricebookData", "description": "Container for pricebooks.", "properties": { "data": { "$ref": "#/components/schemas/pricebook" }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "pricebook-price": { "type": "object", "title": "PricebookPrice", "description": "ProductPrice associates a collection of locale specific prices with a product ID.", "properties": { "type": { "type": "string", "example": "product-price", "default": "product-price", "enum": [ "product-price" ] }, "attributes": { "type": "object", "properties": { "currencies": { "$ref": "#/components/schemas/tiered-currencies" }, "sales": { "$ref": "#/components/schemas/sales" }, "sku": { "type": "string", "example": "4c45e4ec-sku" } }, "required": [ "currencies", "sku" ] }, "id": { "type": "string", "example": "4c45e4ec-26e0-4043-86e4-c15b9cf985a7", "x-go-name": "ID" } }, "required": [ "type", "id", "attributes" ], "additionalProperties": false }, "pricebook-price-create-data": { "type": "object", "title": "PricebookPriceCreateData", "description": "Container for pricebook prices.", "properties": { "data": { "type": "object", "title": "PricebookPriceCreateArgs", "description": "ProductPrice associates a collection of locale specific prices with a product ID.", "properties": { "type": { "type": "string", "example": "product-price", "default": "product-price", "enum": [ "product-price" ] }, "attributes": { "type": "object", "properties": { "currencies": { "$ref": "#/components/schemas/tiered-currencies" }, "sales": { "$ref": "#/components/schemas/sales" }, "sku": { "type": "string", "example": "4c45e4ec-sku" } }, "required": [ "currencies", "sku" ] } }, "required": [ "type", "attributes" ] }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "pricebook-price-data": { "type": "object", "title": "PricebookPriceData", "description": "Container for pricebook prices.", "properties": { "data": { "$ref": "#/components/schemas/pricebook-price" }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "product": { "type": "object", "title": "Product", "description": "A product in a catalog with the following attributes.", "properties": { "attributes": { "$ref": "#/components/schemas/product-attributes" }, "id": { "description": "A unique identifier for a product.", "type": "string", "example": "8fccaa19-dba9-4621-8d11-31a222a68c7c", "x-go-name": "ID" }, "relationships": { "$ref": "#/components/schemas/product-relationships" }, "type": { "description": "This represents the type of object being returned. Always `product`.", "type": "string", "example": "product", "x-go-name": "Type" }, "meta": { "$ref": "#/components/schemas/product-meta" } }, "x-go-name": "Product" }, "product-attributes": { "type": "object", "title": "ProductAttributes", "description": "A product's attributes.", "properties": { "published_at": { "description": "The date and time a product was published in a catalog.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "base_product": { "description": "If this product is a `parent` product. A `parent` product is a product that has child products that have been built using the `build child products` endpoint.", "type": "boolean", "example": false, "default": false, "x-go-name": "BaseProduct" }, "base_product_id": { "description": "The unique identifier of a `parent` product.", "type": "string", "example": "cdf574bc-e36e-48fc-9eac-01c87839b285", "x-go-name": "BaseProductID" }, "commodity_type": { "description": "The commodity type, either `physical` or `digital`.", "type": "string", "example": "physical", "x-go-name": "CommodityType" }, "curated_product": { "description": "If a product is curated, then the `curated_product` attribute with a value of `true` is displayed. If a product is not curated, the `curated_product` attribute is not displayed.", "type": "boolean", "example": true, "x-omitempty": true, "x-go-name": "CuratedProduct" }, "upc_ean": { "description": "The universal product code or european article number of the product.", "type": "string", "example": "0123456", "x-go-name": "UpcEan" }, "manufacturer_part_num": { "description": "The manufacturer part number of the product.", "type": "string", "example": "mfn1", "x-go-name": "ManufacturerPartNum" }, "tags": { "type": "array", "description": "A list of tags associated with the product. A tag must be HTML compatible characters excluding commas and will be stored in lowercase letters.", "items": { "description": "A tag associated with the product.", "type": "string", "example": "tag-a" }, "x-go-name": "Tags", "x-omitempty": true }, "price_modifiers": { "type": "array", "description": "A list of price modifier names.", "items": { "description": "A list of price modifier names.", "type": "string", "example": "modifier-1" }, "x-go-name": "PriceModifiers", "x-omitempty": true }, "created_at": { "description": "The date and time a product was created.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-go-name": "CreatedAt" }, "description": { "description": "A description of the product.", "type": "string", "example": "This is a product", "x-go-name": "Description" }, "name": { "description": "A name of a product.", "type": "string", "example": "Blue shirt", "x-go-name": "Name" }, "price": { "$ref": "#/components/schemas/currencies" }, "shopper_attributes": { "$ref": "#/components/schemas/shopper_attributes" }, "tiers": { "$ref": "#/components/schemas/tiers" }, "components": { "$ref": "#/components/schemas/components" }, "custom_inputs": { "$ref": "#/components/schemas/custom_inputs" }, "sku": { "description": "The unique stock keeping unit of the product.", "type": "string", "example": "blue-shirt", "x-go-name": "Sku" }, "slug": { "description": "A label for the product that is used in the URL paths. A slug can contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. By default, the product name is used as the slug.", "type": "string", "example": "blue-shirt", "x-go-name": "Slug" }, "status": { "description": "The status of the product, either `live` or `draft`.", "type": "string", "example": "live", "x-go-name": "Status" }, "external_ref": { "description": "The unique attribute associated with the product. This could be an external reference from a separate company system, for example.", "type": "string", "x-go-name": "ExternalRef", "nullable": true }, "updated_at": { "description": "The date and time a product was updated.", "type": "string", "example": "1970-01-01T00:00:00.000", "format": "date-time", "x-go-name": "UpdatedAt" }, "extensions": { "$ref": "#/components/schemas/extensions" } }, "x-go-name": "ProductAttributes" }, "product-create-data": { "type": "object", "title": "ProductData", "description": "Container for products.", "properties": { "data": { "type": "object", "title": "ProductCreateArgs", "description": "A new product in a catalog.", "properties": { "attributes": { "type": "object", "title": "ProductCreateAttributes", "description": "A product's attributes.", "properties": { "description": { "type": "string", "example": "This is a product" }, "name": { "type": "string", "example": "Blue shirt" }, "sku": { "type": "string", "example": "blue-shirt" }, "slug": { "type": "string", "example": "blue-shirt" }, "status": { "type": "string", "example": "live" }, "locales": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } } }, "required": [ "name", "status" ] }, "id": { "type": "string", "example": "8fccaa19-dba9-4621-8d11-31a222a68c7c", "x-go-name": "ID" }, "type": { "type": "string", "example": "product", "x-go-name": "Type" } }, "required": [ "attributes", "type" ] }, "links": { "$ref": "#/components/schemas/links" } } }, "product-data": { "type": "object", "title": "ProductData", "description": "Container for products.", "properties": { "data": { "$ref": "#/components/schemas/product" }, "included": { "$ref": "#/components/schemas/included-response" }, "links": { "$ref": "#/components/schemas/links" } } }, "product-diff": { "x-go-name": "ProductDiff", "type": "object", "properties": { "id": { "type": "string", "example": "e871df93-c769-49a9-9394-a6fd555b8e8a", "x-go-name": "ID" }, "type": { "type": "string", "example": "product_diff", "x-go-name": "Type" }, "attributes": { "type": "object", "properties": { "sku": { "type": "string" }, "this_release_id": { "type": "string" }, "other_release_id": { "type": "string" }, "diff_created_at": { "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000" }, "exists": { "x-go-name": "ProductDiffExists", "type": "object", "properties": { "this": { "type": "boolean" }, "other": { "type": "boolean" } }, "required": [ "this", "other" ] }, "updated_at": { "x-go-name": "ProductDiffUpdatedAt", "type": "object", "properties": { "this": { "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-omitempty": true, "nullable": true }, "other": { "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "x-omitempty": true, "nullable": true } } } } } } }, "product-list-data": { "type": "object", "title": "ProductListData", "description": "Container for a list of products.", "properties": { "meta": { "$ref": "#/components/schemas/page-meta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/product" }, "x-go-name": "Data" }, "included": { "$ref": "#/components/schemas/included-response" }, "links": { "$ref": "#/components/schemas/links" } } }, "product-meta": { "type": "object", "title": "ProductMeta", "description": "A product's metadata contains information about products, for example, the nodes a product is associated with, any child products, bundle configurations, and so on.", "properties": { "bread_crumbs": { "description": "The relationship among the array of nodes a product is associated with, demonstrating the linking of the children nodes with the parent nodes. Up to 10 levels of parent nodes are displayed, depending on the number of levels of parent nodes you have.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" } }, "x-omitempty": true }, "bread_crumb_nodes": { "description": "An array of parent node IDs that a product is associated with. Up to 10 levels of parent nodes are displayed, depending on the number of levels of parent nodes you have.", "type": "array", "items": { "type": "string", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "x-omitempty": true }, "catalog_id": { "description": "A unique identifier of the catalog a product is associated with.", "type": "string", "example": "362a16dc-f7c6-4280-83d6-4fcc152af091", "x-go-name": "CatalogID" }, "pricebook_id": { "description": "The unique identifier of the price book a product is associated with.", "type": "string", "example": "f5466169-0037-460c-b181-b02682b6f4de", "x-go-name": "PricebookID", "nullable": true }, "display_price": { "$ref": "#/components/schemas/display-price" }, "catalog_source": { "description": "The source of a catalog. Always `pim`.", "type": "string", "example": "pim", "enum": [ "pim" ], "x-go-name": "CatalogSource" }, "sale_id": { "description": "With sales pricing, a store can optionally add a sale price to a product price. For example, a store can schedule seasonal pricing on products without creating a new price book and catalog ruleset. Optionally, a store can schedule the date ranges for the sale products. This is the unique identifier of a sale.", "type": "string", "x-go-name": "SaleID" }, "sale_expires": { "description": "The expiration date and time of the sale, provided in UTC.", "type": "string", "format": "date-time", "example": "2025-07-07T14:30:00Z", "x-go-name": "SaleExpires", "nullable": true }, "original_price": { "$ref": "#/components/schemas/currencies" }, "original_display_price": { "$ref": "#/components/schemas/display-price" }, "bundle_configuration": { "$ref": "#/components/schemas/bundle-configuration" }, "component_products": { "description": "A bundle is a purchasable product, comprising of one or more products that you want to sell together. You can create multiple components within a bundle. Each component must have at least one or more options. Each option is a product and a quantity.", "type": "object", "additionalProperties": { "type": "object", "properties": { "sale_id": { "description": "With sales pricing, a store can optionally add a sale price to a product price. For example, a store can schedule seasonal pricing on products without creating a new price book and catalog ruleset. Optionally, a store can schedule the date ranges for the sale products. This is the unique identifier of a sale.", "type": "string", "x-go-name": "SaleID" }, "sale_expires": { "description": "The expiration date and time of the sale, provided in UTC.", "type": "string", "format": "date-time", "example": "2025-07-07T14:30:00Z", "x-go-name": "SaleExpires", "nullable": true }, "price": { "$ref": "#/components/schemas/currencies" }, "display_price": { "$ref": "#/components/schemas/display-price" }, "original_price": { "$ref": "#/components/schemas/currencies" }, "original_display_price": { "$ref": "#/components/schemas/display-price" }, "pricebook_id": { "type": "string", "example": "f5466169-0037-460c-b181-b02682b6f4de", "x-go-name": "PricebookID", "nullable": true }, "alternative_prices": { "$ref": "#/components/schemas/alternative-prices" } }, "x-go-name": "ComponentProductMeta" } }, "component_product_data": { "description": "This will contain the component product details (with bundle specific pricing) in the configure bundle response for the selected options.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/product" } }, "price_modifiers": { "type": "object", "description": "You can use price modifiers to change the price property of child products. By default, child products inherit the same price as their base products. Using price modifiers, you can enable child products to inherit a different price.", "additionalProperties": { "description": "A name for the modifier. The name must be unique and is case-sensitive.", "type": "object", "properties": { "modifier_type": { "description": "There are three modifier types.\n\n - The `price_increment` type increases the prices of a product.\n - The `price_decrement` type decreases the price of a product.\n - The `price_equals` type sets the price of a product to an amount you specify.\n", "type": "string", "example": "price_equals" }, "currencies": { "$ref": "#/components/schemas/currencies" } }, "x-go-name": "PriceModifierMeta" } }, "tiers": { "description": "You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.", "type": "object", "additionalProperties": { "description": "The name of the tier, such as `Pencils`.", "type": "object", "properties": { "sale_id": { "description": "The unique identifier of a sale.", "type": "string", "x-go-name": "SaleID" }, "sale_expires": { "description": "The expiration date and time of the sale, provided in UTC.", "type": "string", "format": "date-time", "example": "2025-07-07T14:30:00Z", "x-go-name": "SaleExpires", "nullable": true }, "display_price": { "$ref": "#/components/schemas/display-price" }, "original_price": { "$ref": "#/components/schemas/currencies" }, "original_display_price": { "$ref": "#/components/schemas/display-price" } }, "x-go-name": "ProductMetaTier" }, "x-go-name": "ProductMetaTiers" }, "variation_matrix": { "description": "The `variation_matrix` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. If no variations are available, the `variation_matrix` is empty.", "type": "object" }, "variations": { "description": "If you specified `build_rules` for a product, the `variations` object lists the variation option IDs that you specified to include when building your child products. If no `build_rules` are specified, all the variation and variation options available for a product are displayed. If a product does not have any variations, then the `variations` object is not displayed.", "type": "array", "items": { "$ref": "#/components/schemas/variation" }, "x-omitempty": true }, "child_option_ids": { "description": "An array of variation options IDs that a child product has.", "type": "array", "items": { "type": "string", "example": [ "8dbb35b2-ef04-477e-974d-e5f3abe6faae", "6ddf2a66-d805-449c-a0e1-8e81335e31a6" ] }, "x-omitempty": true, "nullable": true }, "child_variations": { "description": "If this is a child product, the `child_variations` object lists the variation option IDs that define this child product.", "type": "array", "items": { "$ref": "#/components/schemas/variation" }, "x-omitempty": true, "nullable": true }, "product_types": { "description": "Commerce automatically assigns types to the products you create. In Commerce Manager, you can see at a glance the product types in a list of a products. In addition, you can filter on product types in both the API and Commerce Manager.\n\n Product types can also be used in catalogs. For example, in your catalog, you can filter on parent so that only your parent products are displayed in your storefront.\n\n Products have one of the following types:\n\n - **standard** - Standard products are a standalone products.\n - **parent** - A parent product is a product that has child products that have been built using the `Build Child Products` endpoint.\n - **child** - When you configure product variations and variation options for parent products, the child products derived from the parent products are automatically created in Commerce.\n - **bundle** - A bundle is a purchasable product, comprising two or more standalone products (in other words, components) to be sold together. \n", "type": "array", "items": { "type": "string" }, "x-omitempty": true, "x-go-name": "ProductTypes" }, "language": { "description": "If you storefront supports multiple languages, your storefront's preferred language and locale.", "type": "string", "example": "en-GB" }, "custom_relationships": { "description": "In Commerce Manager you can define Custom Relationships for Products. These allow Merchandisers to set up Cross Sell/Parent Child Relationships between products for display to shoppers.\nThis field will list the slugs(identifiers) of Custom Relationships that have been associated with this product. This will allow conditional rendering of related product sections if needed \nand provides the slug(s) needed to list the related products for the Product\n", "type": "array", "items": { "type": "string", "example": [ "CRP-Cross-Sell-Products", "CRP-Frequently-Bought-Together-Products" ] }, "x-omitempty": true, "x-go-name": "CustomRelationships" }, "available_prices": { "$ref": "#/components/schemas/available-prices" }, "alternative_prices": { "$ref": "#/components/schemas/alternative-prices" }, "available_pricebook_ids": { "description": "An array of all pricebooks that have prices for this product", "type": "array", "items": { "type": "string", "example": [ "8dbb35b2-ef04-477e-974d-e5f3abe6faae", "6ddf2a66-d805-449c-a0e1-8e81335e31a6" ] }, "x-omitempty": true, "nullable": true } }, "x-go-name": "ProductMeta", "x-omitempty": true }, "variation_option": { "description": "The options available for a variation.", "type": "object", "properties": { "id": { "description": "A unique identifier for an option.", "type": "string", "format": "uuid", "x-go-name": "ID" }, "name": { "description": "The name of the option.", "type": "string" }, "sort_order": { "description": "If you specified a `sort_order` when creating your variations and variation options, then use the `sort_order` value to program your storefront to display the variations and variation options in the order that you want.", "type": "integer", "x-go-name": "Sort Order", "nullable": true }, "description": { "description": "The option description to display to customers.", "type": "string" } }, "x-go-name": "ProductVariationOption" }, "variation": { "type": "object", "properties": { "id": { "description": "A unique identifier of a variation.", "type": "string", "format": "uuid", "x-go-name": "ID" }, "name": { "description": "The name of a variation.", "type": "string" }, "sort_order": { "description": "If you specified a `sort_order` when creating your variations and variation options, then use the `sort_order` value to program your storefront to display the variations and variation options in the order that you want.", "type": "integer", "x-go-name": "Sort Order", "nullable": true }, "option": { "$ref": "#/components/schemas/variation_option" }, "options": { "description": "The options available for this variation.", "type": "array", "x-omitempty": true, "items": { "$ref": "#/components/schemas/variation_option" } } }, "x-go-name": "ProductVariation" }, "bundle-configuration-data": { "type": "object", "title": "BundleConfigurationData", "description": "Container for a bundle configuration.", "properties": { "data": { "$ref": "#/components/schemas/bundle-configuration" } }, "required": [ "data" ] }, "bundle-configuration": { "type": "object", "title": "BundleConfiguration", "description": "A bundle is a purchasable product, comprising of one or more products that you want to sell together. You can create multiple components within a bundle. Each component must have at least one or more options. Each option is a product and a quantity.", "properties": { "selected_options": { "type": "object", "description": "The product options included in a component. This can be the ID of another bundle.", "example": { "games": { "p292e1db-c919-4d2f-984a-c2ddc79df024": 2 }, "consoles": { "759ce0d7-e248-4f57-8ee1-6fd81a1b3c0a": 1 } }, "additionalProperties": { "description": "The unique identifier of the component, for example, `games`.", "type": "object", "example": "759ce0d7-e248-4f57-8ee1-6fd81a1b3c0a", "additionalProperties": { "description": "The number of this product option that a shopper must purchase.", "type": "integer", "format": "int64", "example": 1 } } } }, "required": [ "selected_options" ], "x-go-name": "ProductBundleConfiguration" }, "product-reference": { "type": "object", "title": "ProductReference", "description": "A product identifier.", "x-nullable": "true", "properties": { "id": { "description": "A unique identifier for a product.", "type": "string", "format": "uuid", "x-go-name": "ID" }, "type": { "description": "This represents the type of object being returned. Always `product`.", "type": "string", "x-go-name": "Type", "example": "product", "enum": [ "product" ] } }, "x-go-name": "ProductReference" }, "product-reference-list-data": { "type": "object", "title": "ProductReferenceListData", "description": "Container for a list of product references.", "properties": { "meta": { "$ref": "#/components/schemas/page-meta" }, "data": { "$ref": "#/components/schemas/product-references" }, "links": { "$ref": "#/components/schemas/links" } } }, "product-references": { "type": "array", "title": "ProductReferences", "description": "A list of product identifiers.", "items": { "$ref": "#/components/schemas/product-reference" }, "x-go-name": "ProductReferences" }, "product-relationships": { "type": "object", "title": "ProductRelationships", "description": "Relationships allow you to move between requests. Includes links to the parent and child products, bundle component products, files, and main images associated with a product.", "properties": { "parent": { "description": "The details of a `parent` product. A `parent` product is a product that has child products that have been built using the `Build Child Products` endpoint.", "type": "object", "properties": { "data": { "$ref": "#/components/schemas/product-reference" } }, "x-go-name": "Parent", "x-omitempty": true }, "children": { "description": "The details of a `child` product. When you configure product variations and variation options for parent products, the child products derived from the parent products are automatically created in Commerce.", "type": "object", "properties": { "data": { "$ref": "#/components/schemas/product-references" }, "links": { "$ref": "#/components/schemas/self-link" } }, "x-go-name": "Children", "x-omitempty": true }, "files": { "$ref": "#/components/schemas/files-relationship" }, "main_image": { "$ref": "#/components/schemas/main-image-relationship" }, "component_products": { "$ref": "#/components/schemas/component-products-relationship" }, "custom_relationships": { "$ref": "#/components/schemas/custom-relationship" } }, "x-go-name": "ProductRelationships", "x-omitempty": true }, "product-relationships-data": { "type": "object", "title": "ProductRelationshipsData", "description": "Container for product relationships.", "properties": { "data": { "$ref": "#/components/schemas/product-relationships" }, "links": { "$ref": "#/components/schemas/links" } } }, "products-for-cart": { "type": "object", "title": "ProductsForCart", "description": "A list of products to be added to cart. Can be type product-data or error-response.", "properties": { "data": { "type": "array", "items": {}, "x-go-name": "Data" }, "included": { "type": "object", "x-go-name": "Included", "properties": { "component_products": { "type": "array", "items": { "$ref": "#/components/schemas/product" }, "x-go-name": "ComponentProducts" } }, "nullable": true } }, "required": [ "data" ], "x-go-name": "ProductsForCart" }, "products-for-cart-configuration": { "type": "object", "title": "ProductsForCartConfiguration", "description": "A list of product id or sku and bundle configuration for cart.", "properties": { "data": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "x-go-name": "ID", "nullable": true }, "sku": { "type": "string", "x-go-name": "SKU", "nullable": true }, "bundle_configuration": { "$ref": "#/components/schemas/bundle-configuration" } } }, "x-go-name": "Data" } }, "required": [ "data" ], "x-go-name": "ProductsForCartConfiguration" }, "related-link": { "description": "A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.", "type": "object", "properties": { "related": { "description": "A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.", "type": "string" } }, "required": [ "related" ] }, "custom-relationship-links": { "description": "For each custom relationship in use on the product, there will be a link to follow.", "type": "object" }, "self-link": { "description": "Links are used to allow you to move between requests.", "type": "object", "properties": { "self": { "description": "Single entities use a self parameter with a link to that specific resource.", "type": "string" } }, "required": [ "self" ] }, "release": { "type": "object", "title": "Release", "description": "A catalog release represents a collection of hierarchical product data, price books and catalogs rules.", "properties": { "id": { "description": "A unique identifier for the catalog release.", "type": "string", "x-go-name": "ID", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "attributes": { "type": "object", "properties": { "name": { "description": "The name of a release.", "type": "string", "example": "Clothing" }, "published_at": { "description": "The date and time a release was published.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "catalog_id": { "description": "A unique identifier for the catalog.", "type": "string", "example": "0194f54d-f2a1-4e33-9a6e-9ec366152490" }, "description": { "description": "A description of the catalog release.", "type": "string", "example": "Catalog for Store 123", "default": "" }, "hierarchies": { "description": "An array of hierarchy IDs associated with the release.", "type": "array", "items": { "$ref": "#/components/schemas/node-reference" }, "x-go-name": "RootNodes" } } }, "relationships": { "$ref": "#/components/schemas/release-relationships" }, "type": { "description": "This represents the type of object being returned. Always `catalog-release`.", "type": "string", "x-go-name": "Type" }, "meta": { "$ref": "#/components/schemas/release-meta" } }, "x-go-name": "Release" }, "release-data": { "type": "object", "title": "Release Data", "description": "Container for a catalog release.", "properties": { "data": { "$ref": "#/components/schemas/release" }, "links": { "$ref": "#/components/schemas/links" } } }, "release-list-data": { "type": "object", "title": "ReleaseListData", "description": "Container for a list of catalog releases.", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/release" } }, "links": { "$ref": "#/components/schemas/links" } } }, "release-meta": { "type": "object", "title": "ReleaseMeta", "description": "A release's metadata.", "properties": { "created_at": { "description": "The date and time a release is created.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000" }, "started_at": { "description": "The date and time a release is available for use. In other words, the date and time the status of a catalog release changes to PUBLISHED, rather than IN PROGRESS.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "updated_at": { "description": "The date and time a release is updated.", "type": "string", "format": "date-time", "example": "1970-01-01T00:00:00.000", "nullable": true }, "release_status": { "description": "The status of the current release.", "type": "string", "enum": [ "PENDING", "IN_PROGRESS", "FAILED", "PUBLISHED" ] }, "language": { "description": "Your storefront's preferred language code and locale.", "type": "string", "example": "en-GB" }, "is_full_publish": { "description": "Indicates that a full publish was performed (either because this is the first time a catalog has been published or because of a change that occurred, for example, adding/removing a price book or hierarchy). When determining whether delta data needs to be refreshed, ignore this attribute and always use the `is_full_delta` attribute.\n", "type": "boolean", "example": false, "default": false, "x-go-name": "IsFullPublish" }, "is_full_delta": { "description": "Indicates whether the release delta file contains the full content of a catalog release. Using a search service as an example, if the `is_full_delta` attribute is `true`, you should remove all data about that catalog release from the search service before injecting fresh data from the delta file. If the `is_full_delta` attribute is `false`, then data from the previous catalog release overlays the existing data in the delta file. The `is_full_delta` attribute is always `true` the first time a catalog is published.\n", "type": "boolean", "example": false, "default": false, "x-go-name": "IsFullDelta" }, "total_products": { "description": "The total number of products displayed in a catalog release.", "type": "integer", "format": "int64", "x-go-name": "TotalProducts", "nullable": true }, "total_nodes": { "description": "The total number of hierarchy nodes displayed in a catalog release.", "type": "integer", "format": "int64", "x-go-name": "TotalNodes", "nullable": true }, "percent_completed": { "description": "An integer that represents the progress of a catalog publish. The attribute starts at `0` and reaches `100` when publishing is complete.", "type": "integer", "format": "int32", "x-go-name": "PercentCompleted", "nullable": true }, "owner": { "description": "The owner of the resource, can be either `organization` or `store`.", "type": "string", "enum": [ "store", "organization" ], "x-go-name": "Owner", "nullable": true }, "price_segmentation_enabled": { "description": "This indicates whether the catalog release will support price segmentation using catalog rules to define which pricebook(s) to use for pricing", "type": "boolean" }, "includes_draft_products": { "description": "When `true`, this catalog release includes `draft` products in its published data. This reflects the catalog `include_draft_products` attribute at the time of publish.", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludesDraftProducts" } }, "x-go-name": "ReleaseMeta", "x-omitempty": true }, "release-relationships": { "type": "object", "title": "ReleaseRelationships", "description": "Relationships are established between different catalog entities. For example, products, hierarchies, price books, and catalog rules are related to a catalog, as they are associated with it.", "properties": { "delta": { "description": "A URL to a delta document that describes the changes between catalog releases.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } } }, "products": { "description": "A URL to all products included in a catalog release.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } } }, "hierarchies": { "description": "A URL to all hierarchies included in a catalog release.", "type": "object", "properties": { "links": { "$ref": "#/components/schemas/related-link" } }, "required": [ "links" ] } }, "x-go-name": "ReleaseRelationships" }, "rule": { "type": "object", "title": "Catalog Rule", "description": "A catalog rule specifies which catalog to use for a given shopper context.", "properties": { "id": { "type": "string", "description": "The catalog rule ID. Use this to get, modify, or delete the catalog rule.", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "attributes": { "type": "object", "properties": { "name": { "description": "The name of a catalog rule. The name must not contain any spaces.", "type": "string", "example": "rule-123" }, "description": { "description": "A brief description of the purpose of a catalog rule.", "type": "string", "example": "Catalog Rule for most favored customers", "default": "", "x-omitempty": true }, "account_ids": { "description": "The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.", "type": "array", "items": { "type": "string" }, "x-omitempty": true }, "account_tag_ids": { "description": "The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.", "type": "array", "items": { "type": "string" }, "x-omitempty": true }, "customer_ids": { "description": "The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.", "type": "array", "items": { "type": "string" }, "x-omitempty": true }, "channels": { "description": "The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.", "type": "array", "items": { "type": "string" }, "x-omitempty": true }, "tags": { "description": "A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.", "type": "array", "items": { "type": "string" }, "x-omitempty": true }, "schedules": { "description": "Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. \n\nThe schedules attribute must include the following.\n\n- `valid_from` matches the date and time that the catalog is displayed from. \n- `valid_to` matches the date and time the catalog is displayed to. \n\nCommerce runs on UTC time. \n\nYou can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `\"valid_from\": \"2022-06-01T05:00:00.000-05:00\"`, `\"valid_to\": \"2022-06-15T11:59:99.000-08:00\"`.\n", "type": "array", "items": { "$ref": "#/components/schemas/rule-schedule" }, "x-omitempty": true }, "catalog_id": { "type": "string", "description": "The unique identifier of a catalog.", "example": "d09b4e16-08a5-4f42-817c-6e0d98acbb63" }, "created_at": { "description": "The date and time a catalog rule was created.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time" }, "updated_at": { "description": "The date and time a catalog release is updated.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time" }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" } }, "required": [ "name", "catalog_id", "created_at", "updated_at" ] }, "type": { "description": "This represents the type of object being returned. Always `catalog_rule`.", "type": "string", "example": "catalog_rule", "enum": [ "catalog_rule" ] }, "meta": { "$ref": "#/components/schemas/rule-meta" } }, "required": [ "id", "type", "attributes" ] }, "rule-meta": { "type": "object", "title": "ruleMeta", "description": "A rule's metadata.", "properties": { "similarity_score": { "description": "Indicates the similarity score of the rule to the supplied validation request. \nThe score is calculated based on matching criteria:\n- **Name match**: 100 points (exact match)\n- **Account IDs**: 5 points per matching account\n- **Customer IDs**: 5 points per matching customer \n- **Channels**: 5 points per matching channel\n- **Tags**: 5 points per matching tag\n- **Catalog ID**: 3 points (exact match)\n- **Pricebook IDs**: 2 points per matching pricebook\n- **Schedules**: 2 points per overlapping schedule\n\nHigher scores indicate greater similarity. Rules are sorted by similarity score in descending order.\n", "type": "integer", "example": 100, "x-go-name": "SimilarityScore", "x-omitempty": true, "nullable": true }, "active": { "description": "will the rule be active at the supplied match date/time?", "type": "boolean", "example": false, "default": false, "x-go-name": "Active" }, "resolved_for_shopper": { "description": "Indicates whether this rule will be the one resolved for a shopper viewing the catalog at the supplied match date/time", "type": "boolean", "example": true, "default": false }, "release_id": { "type": "string", "description": "The unique identifier of the published release of the catalog for the rule", "x-omitempty": true, "nullable": true } }, "x-go-name": "ruleMeta", "x-omitempty": true }, "rule-create-data": { "type": "object", "title": "CatalogRuleCreateData", "description": "A catalog rule specifies which catalog to use for a given shopper context.", "properties": { "data": { "type": "object", "properties": { "attributes": { "type": "object", "properties": { "name": { "description": "The name of a catalog rule. The name must not contain spaces.", "type": "string", "minLength": 1, "example": "rule-123" }, "description": { "description": "A brief description of the purpose of a catalog rule.", "type": "string", "example": "Catalog Rule for most favored customers", "default": "", "nullable": true }, "account_ids": { "description": "The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.", "type": "array", "items": { "type": "string" }, "nullable": true }, "account_tag_ids": { "description": "The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.", "type": "array", "items": { "type": "string" }, "nullable": true }, "customer_ids": { "description": "The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.", "type": "array", "items": { "type": "string" }, "nullable": true }, "channels": { "description": "The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.", "type": "array", "items": { "type": "string" }, "nullable": true }, "tags": { "description": "A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.", "type": "array", "items": { "type": "string" }, "nullable": true }, "schedules": { "description": "Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. \n\nThe schedules attribute must include the following.\n\n- `valid_from` matches the date and time that the catalog is displayed from. \n- `valid_to` matches the date and time the catalog is displayed to. \n\nCommerce runs on UTC time. \n\nYou can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `\"valid_from\": \"2022-06-01T05:00:00.000-05:00\"`, `\"valid_to\": \"2022-06-15T11:59:99.000-08:00\"`.\n", "type": "array", "items": { "$ref": "#/components/schemas/rule-schedule" }, "nullable": true }, "catalog_id": { "type": "string", "description": "The unique identifier of a catalog.", "example": "d09b4e16-08a5-4f42-817c-6e0d98acbb63" }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" } }, "required": [ "name", "catalog_id" ] }, "type": { "description": "This represents the type of object being returned. Always `catalog_rule`.", "type": "string", "example": "catalog_rule", "enum": [ "catalog_rule" ] } }, "required": [ "type", "attributes" ] } }, "required": [ "data" ] }, "rule-data": { "type": "object", "title": "CatalogRuleData", "description": "Container for a single catalog rule.", "properties": { "data": { "$ref": "#/components/schemas/rule" }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "rule-list-data": { "type": "object", "title": "CatalogRuleListData", "description": "Container for a list of catalog rules.", "properties": { "meta": { "$ref": "#/components/schemas/page-meta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/rule" } }, "links": { "$ref": "#/components/schemas/links" } }, "required": [ "data" ] }, "rule-schedule": { "type": "object", "title": "Catalog Schedule", "description": "A period of time during which a catalog is valid", "properties": { "valid_from": { "description": "Matches the date and time that the catalog is displayed from.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time", "x-go-name": "ValidFrom", "nullable": true }, "valid_to": { "description": "Matches the date and time the catalog is displayed to.", "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time", "x-go-name": "ValidTo", "nullable": true } }, "x-go-name": "RuleSchedule" }, "rule-update-data": { "type": "object", "title": "CatalogRuleUpdateData", "description": "A catalog rule specifies which catalog to use for a given shopper context.", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string", "description": "The catalog rule ID. Use this to get, modify, or delete the catalog rule.", "example": "8dbb35b2-ef04-477e-974d-e5f3abe6faae" }, "attributes": { "type": "object", "properties": { "name": { "description": "The name of a catalog rule. The name must not contain spaces.", "type": "string", "minLength": 1, "example": "rule-123", "nullable": true }, "description": { "description": "A description of the purpose of a catalog rule.", "type": "string", "example": "Catalog Rule for most favored customers", "default": "", "nullable": true }, "account_ids": { "description": "Specifies the list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.", "type": "array", "items": { "type": "string" }, "nullable": true }, "account_tag_ids": { "description": "The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.", "type": "array", "items": { "type": "string" }, "nullable": true }, "customer_ids": { "description": "The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.", "type": "array", "items": { "type": "string" }, "nullable": true }, "channels": { "description": "The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.", "type": "array", "items": { "type": "string" }, "nullable": true }, "schedules": { "description": "Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. \n\nThe schedules attribute must include the following.\n\n- `valid_from` matches the date and time that the catalog is displayed from. \n- `valid_to` matches the date and time the catalog is displayed to. \n\nCommerce runs on UTC time. \n\nYou can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `\"valid_from\": \"2022-06-01T05:00:00.000-05:00\"`, `\"valid_to\": \"2022-06-15T11:59:99.000-08:00\"`.\n", "type": "array", "items": { "$ref": "#/components/schemas/rule-schedule" }, "nullable": true }, "tags": { "description": "A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.", "type": "array", "items": { "type": "string" }, "nullable": true }, "catalog_id": { "type": "string", "description": "The unique identifier of a catalog rule.", "example": "d09b4e16-08a5-4f42-817c-6e0d98acbb63", "nullable": true }, "pricebook_ids": { "$ref": "#/components/schemas/prioritized-pricebooks" } } }, "type": { "description": "This represents the type of object being returned. Always `catalog_rule`.", "type": "string", "example": "catalog_rule", "enum": [ "catalog_rule" ] } }, "required": [ "id", "type" ] } }, "required": [ "data" ] }, "catalog-rule-validator-request": { "type": "object", "properties": { "data": { "type": "object", "required": [ "match_type" ], "properties": { "match_type": { "type": "string", "enum": [ "filter", "similarity", "conflict", "resolve_for_shopper" ], "description": "The type of matching operation to perform on catalog rules:\n\n- **filter**: Advanced rule filtering with AND logic. Returns rules that match ALL specified criteria.\n\n- **similarity**: Finds rules similar to the supplied rule using OR logic. Returns rules sorted by similarity score (highest first) with metadata indicating:\n - Similarity score based on matching criteria (name: 100pts, account/customer/channel/tags: 5pts each, catalog: 3pts, pricebooks: 2pts, schedules: 2pts) \n - Whether the rule is active at the supplied match_date\n - Whether the rule would be resolved for a shopper context\n\n- **conflict**: Checks for conflicts between the supplied rule and existing rules. Returns rules that would conflict if the new rule were created.\n\n- **resolve_for_shopper**: Determines the exact catalog rule that would be applied for a given shopper context. Returns the single most specific matching rule or defaults to \"Default Catalog Resolution\".\n" }, "channels": { "description": "The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.", "type": "array", "items": { "type": "string" }, "nullable": true }, "tags": { "description": "A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.", "type": "array", "items": { "type": "string" }, "nullable": true }, "account_ids": { "type": "array", "items": { "type": "string" }, "description": "List of account IDs.", "nullable": true }, "account_tag_ids": { "type": "array", "items": { "type": "string" }, "description": "List of account tag UUIDs.", "nullable": true }, "customer_ids": { "type": "array", "items": { "type": "string" }, "description": "List of customer IDs.", "nullable": true }, "pricebook_ids": { "type": "array", "items": { "type": "string" }, "description": "List of pricebook IDs.", "nullable": true }, "schedules": { "type": "array", "items": { "type": "object", "properties": { "valid_from": { "type": "string", "format": "date-time" }, "valid_to": { "type": "string", "format": "date-time" } } }, "nullable": true }, "name": { "type": "string", "description": "The name of the catalog rule.", "nullable": true }, "catalog_id": { "type": "string", "description": "The id of the catalog to match against.", "nullable": true }, "match_date": { "type": "string", "format": "date-time", "description": "The date to match against the schedules.", "nullable": true } } } } }, "sale": { "type": "object", "description": "A set of sale prices and a validity period.", "properties": { "schedule": { "$ref": "#/components/schemas/schedule" }, "currencies": { "$ref": "#/components/schemas/tiered-currencies" } } }, "sales": { "type": "object", "title": "Sales", "description": "A set of sale specifications", "additionalProperties": { "$ref": "#/components/schemas/sale" } }, "schedule": { "type": "object", "description": "A definition of the times at which a sale is valid", "properties": { "valid_from": { "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time", "x-go-name": "ValidFrom", "nullable": true }, "valid_to": { "type": "string", "example": "2020-09-22T09:00:00", "format": "date-time", "x-go-name": "ValidTo", "nullable": true } }, "x-go-name": "Schedule" }, "tier": { "type": "object", "title": "Tier", "description": "The name of the tier, for example, `Pencils`.", "properties": { "minimum_quantity": { "description": "The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.", "type": "integer", "example": "5" }, "price": { "$ref": "#/components/schemas/currencies" } } }, "tiered-amount": { "type": "object", "title": "TieredAmount", "description": "The three-letter ISO code for the currency associated with this price.", "properties": { "amount": { "description": "The price in the lowest denomination for the specified currency. This is a product's list price.", "type": "integer", "example": 100, "format": "int64", "x-omitempty": false, "x-go-name": "Amount" }, "includes_tax": { "description": "Whether this price includes tax.", "type": "boolean", "example": false, "default": false, "x-go-name": "IncludesTax" }, "tiers": { "description": "The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.", "type": "object", "additionalProperties": { "description": "The name of the tier, for example, `Pencils`.", "type": "object", "properties": { "minimum_quantity": { "description": "The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.", "type": "integer", "example": 5, "x-go-name": "MinimumQuantity" }, "amount": { "description": "The price for each quantity.", "type": "integer", "example": 100, "format": "int64", "x-omitempty": false, "x-go-name": "Amount" } }, "x-go-name": "TierAmount" }, "x-go-name": "Tiers" } }, "x-go-name": "TieredAmount" }, "tiered-currencies": { "type": "object", "title": "TieredCurrencies", "description": "Collection of currency specific prices for a product.", "additionalProperties": { "$ref": "#/components/schemas/tiered-amount" } }, "tiers": { "type": "object", "title": "Tiers", "description": "The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.", "additionalProperties": { "$ref": "#/components/schemas/tier" } }, "catalog-release-create-data": { "type": "object", "title": "CatalogReleaseCreateData", "description": "Creates a catalog release with the following attributes.", "properties": { "data": { "type": "object", "properties": { "export_full_delta": { "type": "boolean", "description": "Set to `true` if you want to export all the data from a catalog release in a delta link. The `is_full_delta` attribute is returned from the `get a release of a catalog` endpoint. The `is_full_delta` attribute tells you if the delta file contains the full content of a catalog release. You can use the `is_full_delta` to determine if you need to refresh the data in your company system before publishing a catalog release with fresh data in a delta link. Using a search service as an example, if the `is_full_delta` attribute is true, you should remove all data about that catalog from the search service before publishing a catalog release and injecting fresh data from the delta file. If the `is_full_delta` attribute is false, then data from the previous catalog overlays the existing data in the delta file. The `is_full_delta` attribute is always `true` the first time a catalog is published.\n", "x-go-name": "ExportFullDelta" }, "include_organization_resources": { "type": "boolean", "description": "If you are publishing a catalog in a store that contains resources from an organization, you must set this to true and you must enable the **Include Organization Resources in Catalog Publishes** checkbox in Commerce Manager. See [**Multi-Store Management Solutions**](/docs/api/pxm/catalog/publish-release).", "x-go-name": "IncludeOrganizationResources", "nullable": true } } } } } } }