@epcc-sdk/sdks-shopper 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/types.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl:\n | \"https://euwest.api.elasticpath.com\"\n | \"https://useast.api.elasticpath.com\"\n | \"https://euwest.api.elasticpath.com/v2\"\n | \"https://useast.api.elasticpath.com/v2\"\n | (string & {})\n}\n\n/**\n * Amount\n *\n * The three-letter ISO code for the currency associated with this price.\n */\nexport type Amount = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * Whether this price includes tax.\n */\n includes_tax?: boolean\n}\n\n/**\n * 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\n */\nexport type AvailablePrices = Array<{\n /**\n * A unique identifier of a price book.\n */\n pricebook_id?: string\n shopper_attributes?: ShopperAttributes\n /**\n * Sales\n *\n * A set of sale specifications\n */\n sales?: {\n [key: string]: Sale\n }\n price?: Currencies\n tiers?: Tiers\n}>\n\n/**\n * If pricebook segmentation is enabled, this will show all the alternative prices for the product. Will just include 'List Price' initially\n */\nexport type AlternativePrices = Array<{\n /**\n * A name to signify what the alternative price means to the shopper... i.e. 'List Price'\n */\n name?: string\n /**\n * A unique identifier of a price book.\n */\n pricebook_id?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The unique identifier of a sale.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n price?: Currencies\n display_price?: DisplayPrice\n original_display_price?: DisplayPrice\n original_price?: Currencies\n /**\n * You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.\n */\n tiers?: {\n [key: string]: {\n original_price?: Currencies\n price?: Currencies\n display_price?: DisplayPrice\n original_display_price?: DisplayPrice\n }\n }\n}>\n\n/**\n * 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 according to the priority of the price books.\n */\nexport type PrioritizedPricebooks = Array<{\n /**\n * A unique identifier of a price book.\n */\n id: string\n /**\n * Priority is a number and the price book with the highest number has the highest priority.\n */\n priority: number\n}>\n\n/**\n * Catalog\n *\n * Creates a catalog with the following attributes.\n */\nexport type Catalog = {\n /**\n * A unique identifier of a catalog.\n */\n id: string\n attributes: {\n /**\n * The name of a catalog.\n */\n name: string\n /**\n * A brief description of the catalog, such as the purpose of the catalog.\n */\n description?: string\n /**\n * The unique identifiers of the hierarchies associated with a catalog.\n */\n hierarchy_ids: Array<string>\n /**\n * The unique identifier of a price book associated with a catalog. If no price book is selected, the catalog is displayed without prices.\n */\n pricebook_id?: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * The date and time a catalog is created.\n */\n created_at: string\n /**\n * The date and time a catalog was updated.\n */\n updated_at: string\n /**\n * The owner of this resource, can be either `organization` or `store`.\n */\n owner?: \"store\" | \"organization\"\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * CatalogRelationships\n *\n * 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.\n */\n relationships?: {\n /**\n * The catalog rules related to a catalog.\n */\n rules?: {\n links?: RelatedLink\n }\n /**\n * When a catalog is published, a catalog release is created. This is a URL to all catalog published releases available for this catalog.\n */\n releases?: {\n links?: RelatedLink\n meta?: {\n /**\n * The number releases available for a catalog.\n */\n count?: number\n }\n }\n }\n type: \"catalog\"\n}\n\n/**\n * CatalogCreateData\n *\n * Creates a catalog with the following attributes.\n */\nexport type CatalogCreateData = {\n data: {\n attributes: {\n /**\n * The name of the catalog.\n */\n name: string\n /**\n * A brief description of the catalog.\n */\n description?: string | null\n /**\n * The unique identifiers of the hierarchies to associate with a catalog.\n */\n hierarchy_ids: Array<string>\n /**\n * 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 *\n */\n pricebook_id?: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * Represents the type of object being returned. Always `Catalog`.\n */\n type: \"catalog\"\n }\n}\n\n/**\n * CatalogData\n *\n * Container for a single catalog.\n */\nexport type CatalogData = {\n data: Catalog\n links?: Links\n}\n\n/**\n * CatalogListData\n *\n * Container for a list of catalogs.\n */\nexport type CatalogListData = {\n data: Array<Catalog>\n meta?: PageMeta\n links?: Links\n}\n\n/**\n * CatalogUpdateData\n *\n * A catalog combines price books, product lists, and hierarchies.\n */\nexport type CatalogUpdateData = {\n data: {\n attributes: {\n /**\n * The name of the catalog.\n */\n name?: string | null\n /**\n * A brief description of the catalog.\n */\n description?: string | null\n /**\n * The unique identifiers of the hierarchies to associate with a catalog.\n */\n hierarchy_ids?: Array<string> | null\n /**\n * 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.\n */\n pricebook_id?: string | null\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * The unique identifier of the catalog to be updated.\n */\n id: string\n /**\n * This represents the type of object being returned. Always `catalog`.\n */\n type: \"catalog\"\n }\n}\n\n/**\n * Component Product\n *\n * The unique identifier of the component, for example, `games`.\n */\nexport type ComponentProduct = {\n /**\n * The component name is the name that is displayed in your storefront.\n */\n name?: string\n /**\n * The minimum number of product options a shopper can select from this component.\n */\n min?: number | null\n /**\n * The maximum number of product options a shopper can select from this component.\n */\n max?: number | null\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The product options included in a component. This can be the ID of another bundle.\n */\n options?: Array<ComponentProductOption>\n}\n\n/**\n * Component Product Option\n *\n * The product options included in a component. This can be the ID of another bundle.\n */\nexport type ComponentProductOption = {\n /**\n * A unique identifier of the product you want to add to a component.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: \"product\"\n /**\n * The number of this product option that a shopper must purchase.\n */\n quantity?: number\n /**\n * The minimum quantity of this product option that a shopper can select.\n */\n min?: number | null\n /**\n * The maximum quantity of this product option that a shopper can select.\n */\n max?: number | null\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The boolean indicates whether the current option is a default option for the component.\n */\n default?: boolean | null\n /**\n * 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.\n */\n product_should_be_substituted_with_child?: boolean | null\n /**\n * Merchants can exclude specific child products from a parent product when configuring a bundle.\n */\n excluded_children?: Array<string>\n}\n\n/**\n * Components\n *\n * 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.\n */\nexport type Components = {\n [key: string]: ComponentProduct\n}\n\n/**\n * The length of the custom input text field.\n */\nexport type CustomInputValidationRuleOptions = {\n /**\n * 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.\n */\n max_length?: number\n}\n\n/**\n * Custom Input Validation Rule\n *\n * The validation rules for the custom text.\n */\nexport type CustomInputValidationRule = {\n /**\n * This represents the type of object being returned. Must be `string`.\n */\n type?: \"string\"\n options?: CustomInputValidationRuleOptions\n}\n\n/**\n * Custom Input\n *\n * 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`.\n */\nexport type CustomInput = {\n /**\n * The name for the custom text field that is displayed in your storefront.\n */\n name?: string\n /**\n * The validation rules for the custom text.\n */\n validation_rules?: Array<CustomInputValidationRule>\n /**\n * This is `true` or `false` depending on whether the custom text is required.\n */\n required?: boolean | null\n}\n\n/**\n * Custom Inputs\n *\n * 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 using the `custom_inputs` attribute.\n *\n * - You can rename input to something more representative of the input that shoppers are adding, for example, `message` or `front`.\n * - `name` is the name that is displayed in your storefront.\n * - You can add validation rules. For example, the input field must be a string and/or up to 255 characters in length. The limit is 255 characters.\n *\n */\nexport type CustomInputs = {\n [key: string]: CustomInput\n}\n\n/**\n * Currencies\n *\n * 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.\n */\nexport type Currencies = {\n [key: string]: Amount\n}\n\n/**\n * ShopperAttributes\n *\n * A collection of key-value string pairs, viewable by shoppers.\n */\nexport type ShopperAttributes = {\n [key: string]: string\n}\n\n/**\n * DiffListData\n *\n * A list of differences between two releases.\n */\nexport type DiffListData = {\n data?: Array<ProductDiff>\n links?: Links\n}\n\n/**\n * A price formatted for display.\n */\nexport type DisplayPrice = {\n with_tax?: FormattedPrice\n without_tax?: FormattedPrice\n}\n\n/**\n * APIError\n *\n * APIError is a json-api style part of an error response.\n */\nexport type Error = {\n detail?: string\n status?: string\n title?: string\n}\n\n/**\n * ErrorResponse\n *\n * ErrorResponse is a json-api style Error response.\n */\nexport type ErrorResponse = {\n errors?: Array<Error>\n}\n\n/**\n * Extension\n *\n * The name of the product template.\n */\nexport type Extension = {\n [key: string]: unknown\n}\n\n/**\n * Extensions\n *\n * 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)**.\n */\nexport type Extensions = {\n [key: string]: Extension\n}\n\n/**\n * In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.\n */\nexport type FileReference = {\n /**\n * This represents the type of object being returned. Always `file`.\n */\n type?: \"file\"\n /**\n * A unique identifier for a file.\n */\n id?: string\n /**\n * The date and time a file is created.\n */\n created_at?: string\n}\n\n/**\n * In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.\n */\nexport type FilesRelationship = {\n data?: Array<FileReference>\n}\n\n/**\n * 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 bundle components.\n */\nexport type ComponentProductsRelationship = {\n data?: ProductReferences\n links?: SelfLink\n}\n\n/**\n * 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.\n */\nexport type CustomRelationship = {\n data?: ProductReferences\n links?: CustomRelationshipLinks\n}\n\n/**\n * FormattedPrice\n *\n * A price formatted for display.\n */\nexport type FormattedPrice = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * The three-letter ISO code of the currencies associated with this price and the amount.\n */\n currency?: string\n /**\n * The format of the price for display.\n */\n formatted?: string\n /**\n * The price in displayable float format\n */\n float_price?: number\n}\n\n/**\n * Hierarchy\n *\n * A category hierarchy in a catalog. Hierarchies can have parent nodes and child nodes, as well as a list of attached products.\n */\nexport type Hierarchy = {\n attributes?: HierarchyAttributes\n /**\n * A unique identifier of a hierarchy.\n */\n id?: string\n relationships?: HierarchyRelationships\n /**\n * This represents the type of object being returned. Always `hierarchy`.\n */\n type?: string\n meta?: HierarchyMeta\n}\n\n/**\n * HierarchyMeta\n *\n * A hierarchy's metadata.\n */\nexport type HierarchyMeta = {\n /**\n * 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.\n */\n language?: string\n /**\n * Hierarchy Breadcrumbs\n */\n breadcrumbs?: Array<{\n /**\n * The unique identifier of a hierarchy.\n */\n id?: string\n /**\n * The name of the hierarchy.\n */\n name?: string\n /**\n * A slug for the hierarchy.\n */\n slug?: string\n }>\n /**\n * Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.\n */\n has_children?: boolean | null\n}\n\n/**\n * HierarchyAttributes\n *\n * Resource attributes of a catalog hierarchy.\n */\nexport type HierarchyAttributes = {\n /**\n * The date and time a hierarchy is created.\n */\n created_at?: string\n /**\n * The date and time a hierarchy is published in a catalog.\n */\n published_at?: string | null\n /**\n * A description of a hierarchy.\n */\n description?: string\n /**\n * The name of a hierarchy.\n */\n name?: string\n /**\n * A unique slug for a hierarchy.\n */\n slug?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The date and time a hierarchy was updated.\n */\n updated_at?: string\n}\n\n/**\n * HierarchyData\n *\n * Container for hierarchies.\n */\nexport type HierarchyData = {\n data?: Hierarchy\n links?: Links\n}\n\n/**\n * HierarchyListData\n *\n * Container for a list of hierarchies.\n */\nexport type HierarchyListData = {\n meta?: PageMeta\n data?: Array<Hierarchy>\n links?: Links\n}\n\n/**\n * HierarchyRelationships\n *\n * Relationships to child nodes, and products.\n */\nexport type HierarchyRelationships = {\n /**\n * A URL to all the products associated with a hierarchy.\n */\n products?: {\n links?: RelatedLink\n }\n /**\n * A URL to all the child products associated with a hierarchy.\n */\n children?: {\n links: RelatedLink\n }\n /**\n * A URL to all the nodes associated with a hierarchy.\n */\n nodes?: {\n links: RelatedLink\n }\n}\n\n/**\n * Links allow you to move between requests.\n */\nexport type Links = {\n /**\n * Single entities use a `self` parameter with a link the specific resource.\n */\n self?: string | null\n /**\n * Always the first page.\n */\n first?: string | null\n /**\n * This is `null` if there is only one page.\n */\n last?: string | null\n /**\n * This is `null` if there is only one page.\n */\n prev?: string | null\n /**\n * This is `null` if there is only one page.\n */\n next?: string | null\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type IncludedResponse = {\n /**\n * The main images associated with a product.\n */\n main_images?: Array<ElasticPathFile>\n /**\n * 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.\n */\n component_products?: Array<Product>\n /**\n * The files associated with a product.\n */\n files?: Array<ElasticPathFile>\n}\n\n/**\n * ElasticPathFile\n */\nexport type ElasticPathFile = {\n /**\n * The unique identifier for this file.\n */\n id?: string\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The name of the file.\n */\n file_name?: string\n /**\n * The mime type of the file.\n */\n mime_type?: string\n /**\n * The size of the file. Required when uploading files.\n */\n file_size?: number\n /**\n * DEPRECATED Whether the file public or not. Required when uploading files.\n */\n public?: boolean\n meta?: {\n /**\n * The date and time the file was created.\n */\n timestamps?: {\n /**\n * The date and time the file was created.\n */\n created_at?: string\n }\n /**\n * The file dimensions.\n */\n dimensions?: {\n /**\n * The width of the file.\n */\n width?: number\n /**\n * The height of the file.\n */\n height?: number\n }\n }\n /**\n * Links are used to allow you to move between requests.\n */\n links?: {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string\n }\n /**\n * The publicly available URL for this file.\n */\n link?: {\n /**\n * The publicly available URL for this file.\n */\n href?: string\n meta?: {\n /**\n * Contains the results for the entire collection.\n */\n results?: {\n /**\n * Total number of results for the entire collection.\n */\n total?: number\n }\n }\n }\n}\n\n/**\n * In Product Experience Manager, products can also have associated product images.\n */\nexport type MainImageRelationship = {\n /**\n * The images associated with a product.\n */\n data?: {\n /**\n * This represents the type of object being returned. Always `main_image`.\n */\n type?: \"main_image\"\n /**\n * A unique identifier for an image.\n */\n id?: string\n }\n}\n\n/**\n * Node\n *\n * A category node in a catalog. Nodes can have child nodes, as well as a list of attached products.\n */\nexport type Node = {\n attributes?: NodeAttributes\n /**\n * The unique identifier of a node.\n */\n id?: string\n relationships?: NodeRelationships\n /**\n * This represents the type of object being returned. Always `node`.\n */\n type?: string\n meta?: NodeMeta\n}\n\n/**\n * NodeAttributes\n *\n * Resource attributes of a catalog node.\n */\nexport type NodeAttributes = {\n /**\n * The date and time a node was created.\n */\n created_at?: string\n /**\n * The date and time a node was published in a catalog.\n */\n published_at?: string | null\n /**\n * A description of a node.\n */\n description?: string\n label?: string\n /**\n * 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.\n */\n name?: string\n /**\n * 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.\n */\n slug?: string\n /**\n * 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.\n */\n curated_products?: Array<string>\n status?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The date and time a node was updated.\n */\n updated_at?: string\n}\n\n/**\n * ReleaseIndexingCompleteData\n *\n * The response body for a successful release indexing complete request.\n */\nexport type ReleaseIndexingCompleteData = {\n data?: {\n /**\n * The final status of the search indexing process.\n */\n status: \"succeeded\" | \"failed\"\n /**\n * The elapsed time in milliseconds spent indexing the release.\n */\n duration_ms?: number | null\n }\n}\n\n/**\n * NodeCreateData\n *\n * Container for nodes.\n */\nexport type NodeCreateData = {\n /**\n * NodeCreateArgs\n *\n * A node in a catalog (e.g. a category node). Nodes can have child nodes, as well as a list of attached products\n */\n data: {\n /**\n * NodeCreateAttributes\n *\n * Resource attributes of a catalog node.\n */\n attributes: {\n description?: string\n /**\n * hierarchy id of the node\n */\n hierarchy_id?: string\n label?: string\n name: string\n slug?: string\n status?: string\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n }\n relationships?: NodeRelationships\n id?: string\n type: string\n }\n links?: Links\n}\n\n/**\n * NodeData\n *\n * Container for nodes.\n */\nexport type NodeData = {\n data?: Node\n links?: Links\n}\n\n/**\n * NodeListData\n *\n * Container for a list of nodes.\n */\nexport type NodeListData = {\n meta?: PageMeta\n data?: Array<Node>\n links?: Links\n}\n\n/**\n * NodeMeta\n *\n * A node's metadata.\n */\nexport type NodeMeta = {\n /**\n * The node details localized in the supported languages.\n */\n language?: string\n /**\n * 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.\n *\n * @deprecated\n */\n bread_crumb?: Array<string>\n /**\n * Node Breadcrumbs\n */\n breadcrumbs?: Array<{\n /**\n * The unique identifier of a hierarchy/node.\n */\n id?: string\n /**\n * The name of the hierarchy/node.\n */\n name?: string\n /**\n * A slug for the hierarchy/node.\n */\n slug?: string\n }>\n /**\n * Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.\n */\n has_children?: boolean | null\n}\n\n/**\n * NodeReference\n *\n * Minimum set of information to identify a catalog node.\n */\nexport type NodeReference = {\n /**\n * The unique identifier of a hierarchy.\n */\n id?: string\n /**\n * A label for a hierarchy.\n */\n label?: string\n /**\n * The name of a hierarchy.\n */\n name?: string\n}\n\n/**\n * NodeRelationships\n *\n * Relationships to parent and child nodes, and products.\n */\nexport type NodeRelationships = {\n /**\n * A URL to all products associated with a node.\n */\n products?: {\n data?: Array<ProductReference>\n links?: RelatedLink\n }\n /**\n * A URL to all child nodes associated with a node.\n */\n children?: {\n links: RelatedLink\n }\n /**\n * A URL to all parent nodes associated with a node.\n */\n parent?: {\n data: {\n type: \"node\"\n id: string\n }\n links?: RelatedLink\n }\n /**\n * A URL to the hierarchies associated with a node.\n */\n hierarchy?: {\n data: {\n type: \"hierarchy\"\n id: string\n }\n links?: RelatedLink\n }\n}\n\n/**\n * NodeRelationshipsData\n *\n * Container for node relationships.\n */\nexport type NodeRelationshipsData = {\n data?: NodeRelationships\n links?: Links\n}\n\n/**\n * PageMeta\n *\n * Contains the results for the entire collection.\n */\nexport type PageMeta = {\n /**\n * Total number of results for the entire collection.\n */\n results?: {\n /**\n * Total number of results for the entire collection.\n */\n total?: number\n }\n page?: {\n /**\n * The maximum number of records for all pages.\n */\n limit?: number\n /**\n * The current offset by number of pages.\n */\n offset?: number\n /**\n * The current number of pages.\n */\n current?: number\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n}\n\n/**\n * Pricebook\n *\n * Top level entity in the pricebooks domain model. It contains a list of product prices.\n */\nexport type Pricebook = {\n /**\n * The unique identifier of a price book.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `pricebook`.\n */\n type: \"pricebook\"\n attributes: {\n created_at?: string\n description?: string | null\n name: string | null\n updated_at?: string\n }\n}\n\n/**\n * PricebookData\n *\n * Container for pricebooks.\n */\nexport type PricebookCreateData = {\n /**\n * PricebookCreateArgs\n *\n * New top level pricebook.\n */\n data: {\n type: \"pricebook\"\n attributes: {\n description?: string | null\n name: string | null\n }\n }\n links?: Links\n}\n\n/**\n * PricebookData\n *\n * Container for pricebooks.\n */\nexport type PricebookData = {\n data: Pricebook\n links?: Links\n}\n\n/**\n * PricebookPrice\n *\n * ProductPrice associates a collection of locale specific prices with a product ID.\n */\nexport type PricebookPrice = {\n type: \"product-price\"\n attributes: {\n currencies: TieredCurrencies\n sales?: Sales\n sku: string\n }\n id: string\n}\n\n/**\n * PricebookPriceCreateData\n *\n * Container for pricebook prices.\n */\nexport type PricebookPriceCreateData = {\n /**\n * PricebookPriceCreateArgs\n *\n * ProductPrice associates a collection of locale specific prices with a product ID.\n */\n data: {\n type: \"product-price\"\n attributes: {\n currencies: TieredCurrencies\n sales?: Sales\n sku: string\n }\n }\n links?: Links\n}\n\n/**\n * PricebookPriceData\n *\n * Container for pricebook prices.\n */\nexport type PricebookPriceData = {\n data: PricebookPrice\n links?: Links\n}\n\n/**\n * Product\n *\n * A product in a catalog with the following attributes.\n */\nexport type Product = {\n attributes?: ProductAttributes\n /**\n * A unique identifier for a product.\n */\n id?: string\n relationships?: ProductRelationships\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: string\n meta?: ProductMeta\n}\n\n/**\n * ProductAttributes\n *\n * A product's attributes.\n */\nexport type ProductAttributes = {\n /**\n * The date and time a product was published in a catalog.\n */\n published_at?: string | null\n /**\n * 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.\n */\n base_product?: boolean\n /**\n * The unique identifier of a `parent` product.\n */\n base_product_id?: string\n /**\n * The commodity type, either `physical` or `digital`.\n */\n commodity_type?: string\n /**\n * 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.\n */\n curated_product?: boolean\n /**\n * The universal product code or european article number of the product.\n */\n upc_ean?: string\n /**\n * The manufacturer part number of the product.\n */\n manufacturer_part_num?: string\n /**\n * A list of tags associated with the product. A tag must be HTML compatible characters excluding commas and will be stored in lowercase letters.\n */\n tags?: Array<string>\n /**\n * A list of price modifier names.\n */\n price_modifiers?: Array<string>\n /**\n * The date and time a product was created.\n */\n created_at?: string\n /**\n * A description of the product.\n */\n description?: string\n /**\n * A name of a product.\n */\n name?: string\n price?: Currencies\n shopper_attributes?: ShopperAttributes\n tiers?: Tiers\n components?: Components\n custom_inputs?: CustomInputs\n /**\n * The unique stock keeping unit of the product.\n */\n sku?: string\n /**\n * 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.\n */\n slug?: string\n /**\n * The status of the product, either `live` or `draft`.\n */\n status?: string\n /**\n * The unique attribute associated with the product. This could be an external reference from a separate company system, for example.\n */\n external_ref?: string | null\n /**\n * The date and time a product was updated.\n */\n updated_at?: string\n extensions?: Extensions\n}\n\n/**\n * ProductData\n *\n * Container for products.\n */\nexport type ProductCreateData = {\n /**\n * ProductCreateArgs\n *\n * A new product in a catalog.\n */\n data?: {\n /**\n * ProductCreateAttributes\n *\n * A product's attributes.\n */\n attributes: {\n description?: string\n name: string\n sku?: string\n slug?: string\n status: string\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n }\n id?: string\n type: string\n }\n links?: Links\n}\n\n/**\n * ProductData\n *\n * Container for products.\n */\nexport type ProductData = {\n data?: Product\n included?: IncludedResponse\n links?: Links\n}\n\nexport type ProductDiff = {\n id?: string\n type?: string\n attributes?: {\n sku?: string\n this_release_id?: string\n other_release_id?: string\n diff_created_at?: string\n exists?: {\n this: boolean\n other: boolean\n }\n updated_at?: {\n this?: string | null\n other?: string | null\n }\n }\n}\n\n/**\n * ProductListData\n *\n * Container for a list of products.\n */\nexport type ProductListData = {\n meta?: PageMeta\n data?: Array<Product>\n included?: IncludedResponse\n links?: Links\n}\n\n/**\n * ProductMeta\n *\n * 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.\n */\nexport type ProductMeta = {\n /**\n * 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.\n */\n bread_crumbs?: {\n [key: string]: Array<string>\n }\n /**\n * 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.\n */\n bread_crumb_nodes?: Array<string>\n /**\n * A unique identifier of the catalog a product is associated with.\n */\n catalog_id?: string\n /**\n * The unique identifier of the price book a product is associated with.\n */\n pricebook_id?: string | null\n display_price?: DisplayPrice\n /**\n * The source of a catalog. Always `pim`.\n */\n catalog_source?: \"pim\"\n /**\n * 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.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n original_price?: Currencies\n original_display_price?: DisplayPrice\n bundle_configuration?: BundleConfiguration\n /**\n * 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.\n */\n component_products?: {\n [key: string]: {\n /**\n * 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.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n price?: Currencies\n display_price?: DisplayPrice\n original_price?: Currencies\n original_display_price?: DisplayPrice\n pricebook_id?: string | null\n alternative_prices?: AlternativePrices\n }\n }\n /**\n * This will contain the component product details (with bundle specific pricing) in the configure bundle response for the selected options.\n */\n component_product_data?: {\n [key: string]: Product\n }\n /**\n * 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.\n */\n price_modifiers?: {\n [key: string]: {\n /**\n * 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 *\n */\n modifier_type?: string\n currencies?: Currencies\n }\n }\n /**\n * You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.\n */\n tiers?: {\n [key: string]: {\n /**\n * The unique identifier of a sale.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n display_price?: DisplayPrice\n original_price?: Currencies\n original_display_price?: DisplayPrice\n }\n }\n /**\n * 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.\n */\n variation_matrix?: {\n [key: string]: unknown\n }\n /**\n * 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.\n */\n variations?: Array<Variation>\n /**\n * An array of variation options IDs that a child product has.\n */\n child_option_ids?: Array<string> | null\n /**\n * If this is a child product, the `child_variations` object lists the variation option IDs that define this child product.\n */\n child_variations?: Array<Variation> | null\n /**\n * 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 *\n */\n product_types?: Array<string>\n /**\n * If you storefront supports multiple languages, your storefront's preferred language and locale.\n */\n language?: string\n /**\n * 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.\n * This 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\n * and provides the slug(s) needed to list the related products for the Product\n *\n */\n custom_relationships?: Array<string>\n available_prices?: AvailablePrices\n alternative_prices?: AlternativePrices\n /**\n * An array of all pricebooks that have prices for this product\n */\n available_pricebook_ids?: Array<string> | null\n}\n\n/**\n * The options available for a variation.\n */\nexport type VariationOption = {\n /**\n * A unique identifier for an option.\n */\n id?: string\n /**\n * The name of the option.\n */\n name?: string\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The option description to display to customers.\n */\n description?: string\n}\n\nexport type Variation = {\n /**\n * A unique identifier of a variation.\n */\n id?: string\n /**\n * The name of a variation.\n */\n name?: string\n /**\n * 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.\n */\n sort_order?: number | null\n option?: VariationOption\n /**\n * The options available for this variation.\n */\n options?: Array<VariationOption>\n}\n\n/**\n * BundleConfigurationData\n *\n * Container for a bundle configuration.\n */\nexport type BundleConfigurationData = {\n data: BundleConfiguration\n}\n\n/**\n * BundleConfiguration\n *\n * 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.\n */\nexport type BundleConfiguration = {\n /**\n * The product options included in a component. This can be the ID of another bundle.\n */\n selected_options: {\n [key: string]: {\n [key: string]: number\n }\n }\n}\n\n/**\n * ProductReference\n *\n * A product identifier.\n */\nexport type ProductReference = {\n /**\n * A unique identifier for a product.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: \"product\"\n}\n\n/**\n * ProductReferenceListData\n *\n * Container for a list of product references.\n */\nexport type ProductReferenceListData = {\n meta?: PageMeta\n data?: ProductReferences\n links?: Links\n}\n\n/**\n * ProductReferences\n *\n * A list of product identifiers.\n */\nexport type ProductReferences = Array<ProductReference>\n\n/**\n * ProductRelationships\n *\n * 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.\n */\nexport type ProductRelationships = {\n /**\n * 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.\n */\n parent?: {\n data?: ProductReference\n }\n /**\n * 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.\n */\n children?: {\n data?: ProductReferences\n links?: SelfLink\n }\n files?: FilesRelationship\n main_image?: MainImageRelationship\n component_products?: ComponentProductsRelationship\n custom_relationships?: CustomRelationship\n}\n\n/**\n * ProductRelationshipsData\n *\n * Container for product relationships.\n */\nexport type ProductRelationshipsData = {\n data?: ProductRelationships\n links?: Links\n}\n\n/**\n * ProductsForCart\n *\n * A list of products to be added to cart. Can be type product-data or error-response.\n */\nexport type ProductsForCart = {\n data: Array<unknown>\n included?: {\n component_products?: Array<Product>\n } | null\n}\n\n/**\n * ProductsForCartConfiguration\n *\n * A list of product id or sku and bundle configuration for cart.\n */\nexport type ProductsForCartConfiguration = {\n data: Array<{\n id?: string | null\n sku?: string | null\n bundle_configuration?: BundleConfiguration\n }>\n}\n\n/**\n * A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.\n */\nexport type RelatedLink = {\n /**\n * A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.\n */\n related: string\n}\n\n/**\n * For each custom relationship in use on the product, there will be a link to follow.\n */\nexport type CustomRelationshipLinks = {\n [key: string]: unknown\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type SelfLink = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self: string\n}\n\n/**\n * Release\n *\n * A catalog release represents a collection of hierarchical product data, price books and catalogs rules.\n */\nexport type Release = {\n /**\n * A unique identifier for the catalog release.\n */\n id?: string\n attributes?: {\n /**\n * The name of a release.\n */\n name?: string\n /**\n * The date and time a release was published.\n */\n published_at?: string | null\n /**\n * A unique identifier for the catalog.\n */\n catalog_id?: string\n /**\n * A description of the catalog release.\n */\n description?: string\n /**\n * An array of hierarchy IDs associated with the release.\n */\n hierarchies?: Array<NodeReference>\n }\n relationships?: ReleaseRelationships\n /**\n * This represents the type of object being returned. Always `catalog-release`.\n */\n type?: string\n meta?: ReleaseMeta\n}\n\n/**\n * Release Data\n *\n * Container for a catalog release.\n */\nexport type ReleaseData = {\n data?: Release\n links?: Links\n}\n\n/**\n * ReleaseListData\n *\n * Container for a list of catalog releases.\n */\nexport type ReleaseListData = {\n data?: Array<Release>\n links?: Links\n}\n\n/**\n * ReleaseMeta\n *\n * A release's metadata.\n */\nexport type ReleaseMeta = {\n /**\n * The date and time a release is created.\n */\n created_at?: string\n /**\n * 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.\n */\n started_at?: string | null\n /**\n * The date and time a release is updated.\n */\n updated_at?: string | null\n /**\n * The status of the current release.\n */\n release_status?: \"PENDING\" | \"IN_PROGRESS\" | \"FAILED\" | \"PUBLISHED\"\n /**\n * Your storefront's preferred language code and locale.\n */\n language?: string\n /**\n * 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 *\n */\n is_full_publish?: boolean\n /**\n * 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 *\n */\n is_full_delta?: boolean\n /**\n * The total number of products displayed in a catalog release.\n */\n total_products?: number | null\n /**\n * The total number of hierarchy nodes displayed in a catalog release.\n */\n total_nodes?: number | null\n /**\n * An integer that represents the progress of a catalog publish. The attribute starts at `0` and reaches `100` when publishing is complete.\n */\n percent_completed?: number | null\n /**\n * The owner of the resource, can be either `organization` or `store`.\n */\n owner?: \"store\" | \"organization\"\n /**\n * This indicates whether the catalog release will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n price_segmentation_enabled?: boolean\n /**\n * The elapsed time in milliseconds Catalog Search spent indexing this release.\n */\n indexing_duration_ms?: number | null\n /**\n * 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.\n */\n includes_draft_products?: boolean\n}\n\n/**\n * ReleaseRelationships\n *\n * 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.\n */\nexport type ReleaseRelationships = {\n /**\n * A URL to a delta document that describes the changes between catalog releases.\n */\n delta?: {\n links?: RelatedLink\n }\n /**\n * A URL to all products included in a catalog release.\n */\n products?: {\n links?: RelatedLink\n }\n /**\n * A URL to all hierarchies included in a catalog release.\n */\n hierarchies?: {\n links: RelatedLink\n }\n}\n\n/**\n * Catalog Rule\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type Rule = {\n /**\n * The catalog rule ID. Use this to get, modify, or delete the catalog rule.\n */\n id: string\n attributes: {\n /**\n * The name of a catalog rule. The name must not contain any spaces.\n */\n name: string\n /**\n * A brief description of the purpose of a catalog rule.\n */\n description?: string\n /**\n * The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string>\n /**\n * 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.\n */\n account_tag_ids?: Array<string>\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string>\n /**\n * 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.\n */\n channels?: Array<string>\n /**\n * 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.\n */\n tags?: Array<string>\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule>\n /**\n * The unique identifier of a catalog.\n */\n catalog_id: string\n /**\n * The date and time a catalog rule was created.\n */\n created_at: string\n /**\n * The date and time a catalog release is updated.\n */\n updated_at: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n * Omitted from responses when unset.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n meta?: RuleMeta\n}\n\n/**\n * ruleMeta\n *\n * A rule's metadata.\n */\nexport type RuleMeta = {\n /**\n * Indicates the similarity score of the rule to the supplied validation request.\n * The 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 *\n * Higher scores indicate greater similarity. Rules are sorted by similarity score in descending order.\n *\n */\n similarity_score?: number | null\n /**\n * will the rule be active at the supplied match date/time?\n */\n active?: boolean\n /**\n * Indicates whether this rule will be the one resolved for a shopper viewing the catalog at the supplied match date/time\n */\n resolved_for_shopper?: boolean\n /**\n * The unique identifier of the published release of the catalog for the rule\n */\n release_id?: string | null\n}\n\n/**\n * CatalogRuleCreateData\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type RuleCreateData = {\n data: {\n attributes: {\n /**\n * The name of a catalog rule. The name must not contain spaces.\n */\n name: string\n /**\n * A brief description of the purpose of a catalog rule.\n */\n description?: string | null\n /**\n * The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string> | null\n /**\n * 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.\n */\n account_tag_ids?: Array<string> | null\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string> | null\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule> | null\n /**\n * The unique identifier of a catalog.\n */\n catalog_id: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n }\n}\n\n/**\n * CatalogRuleData\n *\n * Container for a single catalog rule.\n */\nexport type RuleData = {\n data: Rule\n links?: Links\n}\n\n/**\n * CatalogRuleListData\n *\n * Container for a list of catalog rules.\n */\nexport type RuleListData = {\n meta?: PageMeta\n data: Array<Rule>\n links?: Links\n}\n\n/**\n * Catalog Schedule\n *\n * A period of time during which a catalog is valid\n */\nexport type RuleSchedule = {\n /**\n * Matches the date and time that the catalog is displayed from.\n */\n valid_from?: string | null\n /**\n * Matches the date and time the catalog is displayed to.\n */\n valid_to?: string | null\n}\n\n/**\n * CatalogRuleUpdateData\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type RuleUpdateData = {\n data: {\n /**\n * The catalog rule ID. Use this to get, modify, or delete the catalog rule.\n */\n id: string\n attributes?: {\n /**\n * The name of a catalog rule. The name must not contain spaces.\n */\n name?: string | null\n /**\n * A description of the purpose of a catalog rule.\n */\n description?: string | null\n /**\n * Specifies the list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string> | null\n /**\n * 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.\n */\n account_tag_ids?: Array<string> | null\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string> | null\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * The unique identifier of a catalog rule.\n */\n catalog_id?: string | null\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n * Omit the field to leave unchanged. Send an empty string to clear. Invalid format or SYSTEMS_DEFAULT_PROFILE is rejected with 400.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n }\n}\n\nexport type CatalogRuleValidatorRequest = {\n data?: {\n /**\n * 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 *\n */\n match_type: \"filter\" | \"similarity\" | \"conflict\" | \"resolve_for_shopper\"\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * List of account IDs.\n */\n account_ids?: Array<string> | null\n /**\n * List of account tag UUIDs.\n */\n account_tag_ids?: Array<string> | null\n /**\n * List of customer IDs.\n */\n customer_ids?: Array<string> | null\n /**\n * List of pricebook IDs.\n */\n pricebook_ids?: Array<string> | null\n schedules?: Array<{\n valid_from?: string\n valid_to?: string\n }> | null\n /**\n * The name of the catalog rule.\n */\n name?: string | null\n /**\n * The id of the catalog to match against.\n */\n catalog_id?: string | null\n /**\n * Optional. When `match_type` is `filter`, ANDs an exact match on the rule's\n * `search_profile_slug`. Not used as a shopper-context matching dimension for\n * `resolve_for_shopper`.\n *\n */\n search_profile_slug?: string | null\n /**\n * The date to match against the schedules.\n */\n match_date?: string | null\n }\n}\n\n/**\n * A set of sale prices and a validity period.\n */\nexport type Sale = {\n schedule?: Schedule\n currencies?: TieredCurrencies\n}\n\n/**\n * Sales\n *\n * A set of sale specifications\n */\nexport type Sales = {\n [key: string]: Sale\n}\n\n/**\n * A definition of the times at which a sale is valid\n */\nexport type Schedule = {\n valid_from?: string | null\n valid_to?: string | null\n}\n\n/**\n * Tier\n *\n * The name of the tier, for example, `Pencils`.\n */\nexport type Tier = {\n /**\n * The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.\n */\n minimum_quantity?: number\n price?: Currencies\n}\n\n/**\n * TieredAmount\n *\n * The three-letter ISO code for the currency associated with this price.\n */\nexport type TieredAmount = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * Whether this price includes tax.\n */\n includes_tax?: boolean\n /**\n * The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.\n */\n tiers?: {\n [key: string]: {\n /**\n * The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.\n */\n minimum_quantity?: number\n /**\n * The price for each quantity.\n */\n amount?: number\n }\n }\n}\n\n/**\n * TieredCurrencies\n *\n * Collection of currency specific prices for a product.\n */\nexport type TieredCurrencies = {\n [key: string]: TieredAmount\n}\n\n/**\n * Tiers\n *\n * The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.\n */\nexport type Tiers = {\n [key: string]: Tier\n}\n\n/**\n * CatalogReleaseCreateData\n *\n * Creates a catalog release with the following attributes.\n */\nexport type CatalogReleaseCreateData = {\n data?: {\n /**\n * 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 *\n */\n export_full_delta?: boolean\n /**\n * 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).\n */\n include_organization_resources?: boolean | null\n }\n}\n\n/**\n * CartContact\n */\nexport type CartContact = {\n /**\n * The email address attached to a cart.\n */\n email?: string\n}\n\n/**\n * DiscountSettings\n */\nexport type DiscountSettings = {\n /**\n * This parameter enables custom discounts for a cart. When set to true and `use_rule_promotions` is not enabled, Elastic Path promotions will not be applied to the new carts. Default is set from cart discount settings for the store. See [Cart Settings](/docs/api/carts/put-v-2-settings-cart).\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to true, this parameter allows the cart to use rule promotions. You can enable this setting together with `custom_discounts_enabled`, for example, while transitioning between promotion systems. However, an individual cart can only contain one type of discount at a time.\n */\n use_rule_promotions?: boolean\n}\n\n/**\n * InventorySettings\n */\nexport type InventorySettings = {\n /**\n * This parameter enables deferring inventory checks on the cart. This allows items to be added to or updating in the cart without checking stock levels. Inventory checks are still performed as normal on checkout\n */\n defer_inventory_check?: boolean\n}\n\n/**\n * ItemSettings\n */\nexport type ItemSettings = {\n /**\n * When set to true, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When false (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n}\n\n/**\n * CustomAttributes\n *\n * Specifies custom attributes for cart or order objects. Each attribute includes a top-level key, as well as corresponding type and value entries. Attribute values must correspond to the assigned types.\n *\n * Example:\n * ```\n * \"custom_attributes\": {\n * \"is_member\": {\n * \"type\": \"boolean\",\n * \"value\": true\n * },\n * \"membership_level\": {\n * \"type\": \"string\",\n * \"value\": \"premium\"\n * }\n * }\n * ```\n *\n */\nexport type CustomAttributes = {\n [key: string]: {\n /**\n * The type of the custom attribute value.\n */\n type: \"string\" | \"integer\" | \"boolean\" | \"float\"\n /**\n * The value of the custom attribute.\n */\n value: string | boolean | number\n }\n}\n\n/**\n * FormattedPriceData\n */\nexport type FormattedPriceData = {\n /**\n * The raw total.\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\nexport type CartTimestamps = {\n /**\n * The date this was created.\n */\n created_at?: string\n /**\n * The date this was last updated.\n */\n updated_at?: string\n /**\n * The date this expires.\n */\n expires_at?: string\n}\n\n/**\n * RelationshipItem\n *\n * Relationship data entry\n */\nexport type RelationshipItem = {\n /**\n * The type of related resource.\n */\n type: string\n /**\n * The ID of the related resource.\n */\n id: string\n}\n\n/**\n * RelationshipArray\n *\n * Array of relationships\n */\nexport type RelationshipArray = {\n /**\n * Individual relationships\n */\n data?: Array<RelationshipItem>\n}\n\n/**\n * BaseCartResponse\n */\nexport type BaseCartResponse = {\n /**\n * The unique identifier for the cart. Use SDK or create it yourself.\n */\n id?: string\n /**\n * The name of this cart.\n */\n name?: string\n /**\n * A description of the cart.\n */\n description?: string\n contact?: CartContact\n discount_settings?: DiscountSettings\n inventory_settings?: InventorySettings\n item_settings?: ItemSettings\n /**\n * Stripe-assigned unique identifier for the linked Payment Intent\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n /**\n * The snapshot date for the cart.\n */\n snapshot_date?: string\n links?: {\n /**\n * A link to that specific resource.\n */\n self?: string\n }\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n }>\n }\n relationships?: {\n customers?:\n | RelationshipArray\n | {\n [key: string]: unknown\n }\n items?:\n | RelationshipArray\n | {\n data: null | Array<{\n id?: string\n type?: string\n }>\n }\n accounts?:\n | RelationshipArray\n | {\n [key: string]: unknown\n }\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n }\n}\n\n/**\n * CartResponse\n */\nexport type CartResponse = BaseCartResponse & {\n /**\n * The type of object being returned.\n */\n type?: \"cart\"\n}\n\nexport type ResponsePageLinks = {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * If there is only one page, it is `null`.\n */\n last?: string\n /**\n * If there is only one page, it is `null`.\n */\n next?: string\n /**\n * if the user is on the first page, it is `null`.\n */\n prev?: string\n}\n\nexport type ResponsePaginationPage = {\n /**\n * The current page.\n */\n current?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100.\n */\n limit?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based.\n */\n offset?: number\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type ResponsePaginationResults = {\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type ResponseMetaCarts = {\n page?: ResponsePaginationPage\n results?: ResponsePaginationResults\n}\n\nexport type CartCollectionResponse = {\n data: Array<CartResponse>\n links?: ResponsePageLinks\n meta?: ResponseMetaCarts\n}\n\nexport type ResponseErrorItem = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string | number\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * The field or location that caused the validation error. For JSON schema validation errors, this contains the JSON path to the invalid field (e.g., 'data.name', 'request', 'data.items[0].quantity').\n */\n source?: string\n /**\n * Additional metadata associated with the error. May include arbitrary keys.\n */\n meta?: {\n /**\n * The resource id associated with the error\n */\n id?: string\n ids?: Array<string>\n item_ids?: Array<string>\n /**\n * The shipping group id associated with the error\n */\n shipping_group_id?: string\n shipping_group_ids?: Array<string>\n /**\n * The cart id associated with the error\n */\n cart_id?: string\n /**\n * The code associated with the error.\n */\n code?: string\n /**\n * The order id associated with the error.\n */\n order_id?: string\n /**\n * The SKU associated with the error.\n */\n sku?: string\n /**\n * The email address associated with the error.\n */\n email?: string\n /**\n * The component product ID associated with the error.\n */\n component_product_id?: string\n /**\n * Custom error metadata key used for additional error context (e.g., in payment rejections).\n */\n \"error-meta-key\"?: string\n /**\n * The value associated with the error.\n */\n value?:\n | string\n | number\n | boolean\n | {\n [key: string]: unknown\n }\n | Array<unknown>\n }\n}\n\nexport type ResponseErrorResponse = {\n errors: Array<ResponseErrorItem>\n}\n\n/**\n * CartsRequest\n */\nexport type CartsRequest = {\n data?: {\n /**\n * The cart description.\n */\n description?: string\n discount_settings?: DiscountSettings\n inventory_settings?: InventorySettings\n item_settings?: ItemSettings\n /**\n * The cart name provided by the shopper. A cart name must contain 1 to 255 characters. You cannot use whitespace characters, but special characters are permitted. For more information, see the [Safe Characters](/guides/Getting-Started/safe-characters) section.\n */\n name?: string\n contact?: CartContact\n /**\n * This optional parameter sets a reference date for the cart. If this parameter is set, it allows the cart to act as one that might occur on that specified date. For example, such future carts might acquire future-enabled discounts, allowing users to test and validate future interactions with carts. The snapshot_date must be in the format 2026-02-21T15:07:25Z. By default, this parameter is left empty.\n */\n snapshot_date?: string\n /**\n * Specifies custom attributes for cart objects. Each attribute includes a top-level key, as well as corresponding type and value entries. Attribute values must correspond to the assigned types.\n *\n * Attribute types include:\n * - string\n * - boolean\n * - integer\n * - float\n *\n * Multiple custom attributes may be submitted together. A cart can have a maximum of 20 custom attributes.\n *\n * Example:\n * ```\n * \"custom_attributes\": {\n * \"is_member\": {\n * \"type\": \"boolean\",\n * \"value\": true\n * },\n * \"membership_level\": {\n * \"type\": \"string\",\n * \"value\": \"premium\"\n * }\n * }\n * ```\n *\n * Updating an existing cart with new custom attributes clears previously-saved attributes. In order to maintain existing custom attributes on a cart, please include them in the update request along with any new attributes.\n *\n */\n custom_attributes?: CustomAttributes\n /**\n * To remove the Stripe payment intent from a cart, pass the empty value in the `payment_intent_id` field. You must use an empty value for this field. You cannot use this endpoint to directly update the cart to use an existing Payment Intent.\n */\n payment_intent_id?: string\n }\n}\n\n/**\n * CustomDiscountResponse\n */\nexport type CustomDiscountResponse = {\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n id?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies from where the custom discount is applied.\n *\n */\n discount_engine?: string\n /**\n * The amount of the custom discount.\n */\n amount?: FormattedPriceData\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The cart item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\n/**\n * CondensedPromotionResponse\n */\nexport type CondensedPromotionResponse = {\n /**\n * Specifies the type of the resource. Always `promotion`.\n */\n type?: \"promotion\"\n /**\n * Specifies the UUID of the promotion.\n */\n readonly id?: string\n /**\n * The name of the promotion.\n */\n name?: string\n /**\n * The description of the promotion.\n */\n description?: string\n /**\n * Whether the promotion is applied automatically.\n */\n automatic?: boolean\n /**\n * The type of promotion (for v1 promotions).\n */\n promotion_type?: string\n /**\n * The source of the promotion (for rule promotions).\n */\n promotion_source?: string\n /**\n * The start date and time of the promotion.\n */\n start?: string\n /**\n * The end date and time of the promotion.\n */\n end?: string\n}\n\nexport type CartEntityResponse = {\n data: CartResponse\n /**\n * Related objects that are included in the response.\n */\n included?: CartIncluded\n /**\n * Additional metadata for the cart response.\n */\n meta?: {\n /**\n * Payment intent details with nested structure including status and other Stripe payment intent fields\n */\n payment_intent?: {\n [key: string]: unknown\n }\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Order Price Data\n */\nexport type ItemPriceData = {\n /**\n * The amount for this item as an integer.\n */\n readonly amount?: number\n /**\n * The currency this item was added to the cart as.\n */\n readonly currency?: string\n /**\n * Whether or not this price is tax inclusive.\n */\n readonly includes_tax?: boolean\n}\n\nexport type Money = {\n /**\n * Amount in minor currency units (e.g., cents).\n */\n amount: number\n /**\n * ISO 4217 currency code (e.g., \"USD\").\n */\n currency: string\n /**\n * Whether the amount includes tax.\n */\n includes_tax: boolean\n}\n\nexport type Discount = {\n amount: Money\n /**\n * The discount code used, if applicable.\n */\n code?: string\n /**\n * Unique identifier for the discount.\n */\n id: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * CartItemFormattedPriceData\n */\nexport type CartItemFormattedPriceData = {\n /**\n * The amount per each single unit.\n */\n unit?: FormattedPriceData\n /**\n * The total amount of the item (i.e., unit * quantity).\n */\n value?: FormattedPriceData\n}\n\n/**\n * Cart Item Response\n */\nexport type CartItemResponse = {\n /**\n * The unique identifier for the cart item.\n */\n readonly id?: string\n /**\n * The type of cart item.\n */\n readonly type?:\n | \"cart_item\"\n | \"custom_item\"\n | \"subscription_item\"\n | \"promotion_item\"\n /**\n * The unique ID of the product (for cart_item type).\n */\n readonly product_id?: string\n /**\n * The unique ID of the promotion (for promotion_item type).\n */\n readonly promotion_id?: string\n /**\n * The unique ID of the subscription offering for subscription items.\n */\n readonly subscription_offering_id?: string\n /**\n * The name of this item\n */\n readonly name?: string\n /**\n * A description of the cart item.\n */\n readonly description?: string\n /**\n * The SKU of the cart item.\n */\n readonly sku?: string\n /**\n * The slug of the cart item.\n */\n readonly slug?: string\n /**\n * The unique identifier of the catalog associated with the product is shown if catalog_source=pim is set.\n */\n readonly catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n readonly catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n readonly bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Product ID\n */\n id?: string\n /**\n * Product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product meta information as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the cart item for bundle products.\n */\n readonly components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n readonly image?: {\n /**\n * The MIME type for the uploaded file.\n */\n readonly mime_type?: string\n /**\n * The name of the image file that was uploaded.\n */\n readonly file_name?: string\n /**\n * The link to the image.\n */\n readonly href?: string\n }\n /**\n * The quantity of the cart item.\n */\n readonly quantity?: number\n /**\n * The quantity automatically added (for gift items).\n */\n readonly auto_add_quantity?: number\n /**\n * Whether or not the quantity of the item will be checked against inventory.\n */\n readonly manage_stock?: boolean\n /**\n * The unit price of the item.\n */\n readonly unit_price?: ItemPriceData\n /**\n * The total price of the item (i.e., unit * quantity).\n */\n readonly value?: ItemPriceData\n /**\n * Array of discounts applied to the cart item.\n */\n readonly discounts?: Array<Discount>\n /**\n * Custom inputs for personalized products.\n */\n readonly custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Configuration for subscription items.\n */\n readonly subscription_configuration?: {\n /**\n * The subscription plan ID.\n */\n plan?: string\n /**\n * The subscription pricing option ID.\n */\n pricing_option?: string\n }\n readonly links?: {\n /**\n * A URL related to the resource.\n */\n product?: string\n /**\n * A URL related to the subscription offering resource.\n */\n subscription_offering?: string\n }\n readonly meta?: {\n display_price?: {\n /**\n * The amount of this item after discounts and taxes are applied.\n */\n with_tax?: CartItemFormattedPriceData\n /**\n * The amount of this item after discounts are applied and before taxes.\n */\n without_tax?: CartItemFormattedPriceData\n /**\n * The amount of taxes applied to this item.\n */\n tax?: CartItemFormattedPriceData\n /**\n * The amount of the discount applied to this item.\n */\n discount?: CartItemFormattedPriceData\n without_discount?: CartItemFormattedPriceData\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: CartItemFormattedPriceData\n /**\n * Detailed discount information.\n */\n discounts?: {\n [key: string]: {\n /**\n * The discount amount.\n */\n amount: number\n /**\n * The currency code.\n */\n currency: string\n /**\n * The formatted discount amount.\n */\n formatted: string\n /**\n * The discount constituents.\n */\n constituents?: {\n [key: string]: FormattedPriceData\n }\n }\n }\n }\n timestamps?: CartCheckoutTimestamps\n }\n /**\n * Relationships to other resources.\n */\n readonly relationships?: {\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related custom discounts.\n */\n custom_discounts?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The shipping group ID for this item.\n */\n readonly shipping_group_id?: string\n /**\n * The source of the promotion (for promotion items).\n */\n readonly promotion_source?: \"rule-promotion\"\n /**\n * The action ID within the rule promotion that produced this promotion item.\n */\n readonly promotion_action_id?: string\n /**\n * The stock location for this item.\n */\n readonly location?: string\n /**\n * Custom attributes attached to the cart item.\n */\n readonly custom_attributes?: CustomAttributes\n}\n\n/**\n * TaxItemResponse\n */\nexport type TaxItemResponse = {\n /**\n * Specifies the type of the resource. Always `tax_item`.\n */\n type?: \"tax_item\"\n /**\n * Specifies the UUID of the tax item.\n */\n readonly id?: string\n /**\n * The jurisdiction for the tax item.\n */\n jurisdiction?: string\n /**\n * The tax code for the tax item.\n */\n code?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (e.g., 0.085 for 8.5%).\n */\n rate?: number\n /**\n * The tax amount in the smallest currency unit.\n */\n amount?: number\n}\n\nexport type CartItemCollectionResponse = {\n data: Array<CartItemResponse>\n /**\n * Related objects that are included in the response.\n */\n included?: {\n custom_discounts?: Array<CustomDiscountResponse>\n promotions?: Array<{\n automatic?: boolean\n description?: string\n end?: string\n id?: string\n name?: string\n promotion_type?: string\n /**\n * The source of the promotion\n */\n promotion_source?: string\n start?: string\n type?: \"promotion\"\n }>\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponse>\n }\n /**\n * Additional meta information about the cart items collection.\n */\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n authorized?: FormattedPriceData\n balance_owing?: FormattedPriceData\n paid?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Optional array of informational messages that provide feedback about operations performed on the cart items, such as promotions added or discounts applied. This field is only present when there are relevant messages to display.\n *\n */\n messages?: Array<{\n /**\n * Identifies the cart item that triggered this message\n */\n source?: {\n /**\n * The type of the source item\n */\n type: string\n /**\n * The unique identifier of the source item\n */\n id: string\n /**\n * The promotion code (present when source type is promotion)\n */\n code?: string\n }\n /**\n * A short descriptive title for the message\n */\n title: string\n /**\n * A detailed description of the message\n */\n description: string\n }>\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n /**\n * Whether this promotion should be automatically added\n */\n auto_add?: boolean\n /**\n * Array of promotion targets (alternative structure)\n */\n targets?: Array<{\n /**\n * The cart item ID for this target\n */\n cart_item_id?: string\n /**\n * The quantity for this target\n */\n quantity?: number\n /**\n * Array of SKU codes for this target\n */\n skus?: Array<string>\n }>\n }>\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Bulk Update Carts Items (Common Properties)\n */\nexport type BulkUpdateCartsItemsCommon = {\n /**\n * Specifies the ID of the cart item that you want to update in cart.\n */\n id?: string\n /**\n * Specifies the amount of items to update in the cart.\n */\n quantity?: number\n /**\n * The type of cart item being updated.\n */\n type?: \"cart_item\" | \"custom_item\"\n /**\n * Specifies the custom text to be added to a product. See [custom inputs](https://elasticpath.dev/docs/pxm/products/ep-pxm-products-api/update-a-product#using-custom-inputs-attribute).\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Specifies custom attributes to be added to the cart item.\n */\n custom_attributes?: CustomAttributes\n /**\n * Specifies the shipping group ID for the cart item.\n */\n shipping_group_id?: string\n}\n\n/**\n * Update Cart Item Quantity\n */\nexport type BulkUpdateCartsItemsWithQuantity = BulkUpdateCartsItemsCommon & {\n quantity: unknown\n id: unknown\n}\n\n/**\n * Update Cart Item Shipping Group\n */\nexport type BulkUpdateCartsItemsWithShippingGroup =\n BulkUpdateCartsItemsCommon & {\n shipping_group_id: unknown\n id: unknown\n }\n\n/**\n * Update Cart Item Custom Inputs\n */\nexport type BulkUpdateCartsItemsWithCustomInputs =\n BulkUpdateCartsItemsCommon & {\n custom_inputs: unknown\n id: unknown\n }\n\n/**\n * Update All Or Nothing Options Object\n */\nexport type UpdateAllOrNothingOptionsObject = {\n /**\n * When set to`true`, if an error occurs for any item, no items are updated in the cart. When set to `false`, valid items are updated in the cart and the items with errors are reported in the response. Default is `true`.\n */\n update_all_or_nothing?: boolean\n}\n\n/**\n * Bulk Update Carts Items\n */\nexport type BulkUpdateCartsItems = {\n data?: Array<\n | BulkUpdateCartsItemsWithQuantity\n | BulkUpdateCartsItemsWithShippingGroup\n | BulkUpdateCartsItemsWithCustomInputs\n >\n options?: UpdateAllOrNothingOptionsObject\n}\n\n/**\n * Base Item Object Data\n */\nexport type BaseItemObjectData = {\n /**\n * The number of items to add.\n */\n quantity: number\n /**\n * Specifies the ID of the product you want to add. (use this OR sku)\n */\n id?: string\n /**\n * Specifies the item SKU that you want to add. (use this OR id)\n */\n sku?: string\n /**\n * Optional name for the product item. If not provided, the product name from catalog will be used.\n */\n name?: string\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Object used to describe the bundle options selected.\n */\n bundle_configuration?: {\n /**\n * Specifies selected options.\n */\n selected_options?: {\n [key: string]: unknown\n }\n /**\n * Array of component products for the selected options.\n */\n component_products?: Array<unknown>\n }\n /**\n * Identifier for a Shipping Group\n */\n shipping_group_id?: string\n /**\n * The slug of a stock location.\n */\n location?: string\n custom_attributes?: CustomAttributes\n}\n\n/**\n * Cart Item Object Data\n */\nexport type CartItemObjectData = {\n /**\n * The type of object being returned. Must be `cart_item` for cart items.\n */\n type: \"cart_item\"\n} & BaseItemObjectData\n\n/**\n * Cart Item Object Request\n */\nexport type CartItemObjectRequest = {\n data?: CartItemObjectData\n}\n\n/**\n * Subscription Item Object Data\n */\nexport type SubscriptionItemObjectData = {\n /**\n * The type of object being returned.\n */\n type: \"subscription_item\"\n /**\n * The number of items added to the cart.\n */\n quantity: number\n /**\n * Specifies the ID of the subscription offering you want to add to cart.\n */\n id: string\n /**\n * Specifies how the subscription offering should be configured.\n */\n subscription_configuration: {\n /**\n * The ID of the pricing option within the offering to use for the subscription.\n */\n pricing_option: string\n /**\n * The ID of the plan within the offering to use for the subscription.\n *\n * @deprecated\n */\n plan: string\n }\n}\n\n/**\n * Subscription Item Object\n */\nexport type SubscriptionItemObject = {\n data?: SubscriptionItemObjectData & CartItemResponse\n}\n\n/**\n * Cart Merge Object\n */\nexport type CartMergeObject = {\n /**\n * The type of object being returned. Must be `cart_items`.\n */\n type: \"cart_items\"\n /**\n * The original cart to be merged from.\n */\n cart_id: string\n}\n\n/**\n * Add All Or Nothing Options Object\n */\nexport type AddAllOrNothingOptionsObject = {\n /**\n * When `true`, if an error occurs for any item, no items are added to the cart. When `false`, valid items are added to the cart and the items with errors are reported in the response. Default is `false`.\n */\n add_all_or_nothing?: boolean\n}\n\n/**\n * Cart Merge Object Request\n */\nexport type CartMergeObjectRequest = {\n data?: CartMergeObject\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Custom Item Object Data\n */\nexport type CustomItemObjectData = {\n /**\n * The type of object being returned. Must be `custom_item`.\n */\n type: \"custom_item\"\n /**\n * The number of custom items to add to cart.\n */\n quantity: number\n price: {\n /**\n * The unit price of the custom item.\n */\n amount: number\n /**\n * Set to`true` if relevant taxes have been included in the price, `false` if not. Defaults to `true`.\n */\n includes_tax?: boolean\n }\n /**\n * A description of the custom item.\n */\n description?: string\n /**\n * The `SKU` code to use for the custom item. See [best practices](https://elasticpath.dev/docs/commerce-cloud/carts/cart-items/add-custom-item-to-cart#best-practices) to use the `SKU` code.\n */\n sku?: string\n /**\n * The name of the custom item.\n */\n name: string\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Identifier for a created Cart Shipping Group\n */\n shipping_group_id?: string\n custom_attributes?: CustomAttributes\n}\n\n/**\n * Custom Item Object\n */\nexport type CustomItemObject = {\n data?: CustomItemObjectData\n}\n\n/**\n * Re Order Object\n */\nexport type ReOrderObject = {\n /**\n * The type of resource being returned. Use `order_items`.\n */\n type: \"order_items\"\n /**\n * The unique identifier of the order.\n */\n order_id: string\n}\n\n/**\n * Re-Order Object Request\n */\nexport type ReOrderObjectRequest = {\n data?: ReOrderObject\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Promotion Item Object Data\n */\nexport type PromotionItemObjectData = {\n /**\n * Specifies the type of resource, which is `promotion_item`.\n */\n type: \"promotion_item\"\n /**\n * Specifies the promotion code. For more information about codes[].user[], see the [Create Promotion codes](/docs/api/promotions/create-promotion-codes) section.\n */\n code: string\n}\n\n/**\n * Promotion Item Object\n */\nexport type PromotionItemObject = {\n data?: PromotionItemObjectData\n}\n\n/**\n * Bulk Add Items Request\n */\nexport type BulkAddItemsRequest = {\n data?: Array<\n | CartItemObjectData\n | CartMergeObject\n | CustomItemObjectData\n | ReOrderObject\n | PromotionItemObjectData\n >\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Update Carts Items\n */\nexport type UpdateCartsItems = {\n data?: {\n /**\n * The type of the cart item.\n */\n type?: \"cart_item\"\n /**\n * The unique identifier of the cart item.\n */\n id?: string\n /**\n * The amount of products to add to cart.\n */\n quantity?: number\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Custom attributes to be added to the cart item.\n */\n custom_attributes?: CustomAttributes\n /**\n * The unique identifier of the shipping group to be added to the cart.\n */\n shipping_group_id?: string\n }\n}\n\n/**\n * Carts Relationships Accounts Data\n */\nexport type CartsRelationshipsAccountsData = {\n data?: Array<{\n /**\n * The ID of the account.\n */\n id?: string\n /**\n * The type of related object. Ensure that it is account.\n */\n type?: string\n }>\n}\n\n/**\n * Carts Relationships Customers Data\n */\nexport type CartsRelationshipsCustomersData = {\n data?: Array<{\n /**\n * The ID of the customer.\n */\n id?: string\n /**\n * The type of related object. Ensure that it is customer.\n */\n type?: string\n }>\n}\n\nexport type CartsItemsTaxesCommon = {\n /**\n * A unique tax code in this jurisdiction.\n */\n code?: string\n /**\n * The relevant tax jurisdiction.\n */\n jurisdiction?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (12.5% -> 0.125). You must specify either `rate` or `amount`, but not both.\n *\n */\n rate?: number\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). You must specify either `rate` or `amount`, but not both.\n *\n */\n amount?: number\n /**\n * The type of object being returned. Use `tax_item`.\n */\n type: \"tax_item\"\n /**\n * The unique identifier for this tax item.\n */\n readonly id?: string\n}\n\n/**\n * Tax Object (With Rate)\n */\nexport type CartsItemsTaxesWithRate = CartsItemsTaxesCommon & {\n /**\n * The tax rate as a decimal (12.5% -> 0.125). Required when using rate-based taxation.\n *\n */\n rate: number\n /**\n * The tax as an absolute amount. Not allowed when rate is specified.\n *\n */\n amount?: number\n}\n\n/**\n * Tax Object (With Amount)\n */\nexport type CartsItemsTaxesWithAmount = CartsItemsTaxesCommon & {\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). Required when using amount-based taxation.\n *\n */\n amount: number\n /**\n * The tax rate as a decimal. Not allowed when amount is specified.\n *\n */\n rate?: number\n}\n\n/**\n * Carts Items Taxes Object\n *\n * A tax item that can be applied to cart items or bundle components. You must specify either a rate (percentage) or an amount (fixed value), but not both.\n *\n */\nexport type CartsItemsTaxesObject =\n | CartsItemsTaxesWithRate\n | CartsItemsTaxesWithAmount\n\nexport type CartItemTaxesEntityResponse = {\n data: CartsItemsTaxesObject\n}\n\n/**\n * CartItemRelationship\n */\nexport type CartItemRelationship = {\n relationships?: {\n item: {\n data: {\n /**\n * Specifies the type of item. For example, `custom_item` or `cart_item`.\n */\n type: string\n /**\n * Specifies the unique identifier of the `cart_item` or `custom_item` in the cart.\n */\n id: string\n }\n }\n }\n}\n\n/**\n * CartsBulkTaxes\n */\nexport type CartsBulkTaxes = {\n data?: Array<CartsItemsTaxesObject & CartItemRelationship>\n errors?: Array<ResponseErrorItem>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsCustomDiscountsObject\n */\nexport type CartsCustomDiscountsObject = {\n amount:\n | number\n | {\n amount?: number\n currency?: string\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n id?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\n/**\n * CustomDiscountRelationshipsCartItemRequest\n */\nexport type CustomDiscountRelationshipsCartItemRequest = {\n relationships?: {\n item?: {\n data?: {\n /**\n * Specifies the type of item. For example, `custom_item` or `cart_item`.\n */\n type: string\n /**\n * Specifies the unique identifier of the `cart_item` or `custom_item` in the cart.\n */\n id: string\n }\n }\n }\n}\n\n/**\n * CartItemBulkCustomDiscountObject\n */\nexport type CartItemBulkCustomDiscountObject = CartsCustomDiscountsObject &\n CustomDiscountRelationshipsCartItemRequest\n\n/**\n * CartsBulkCustomDiscounts\n */\nexport type CartsBulkCustomDiscounts = {\n data?: Array<CartsCustomDiscountsObject & CartItemBulkCustomDiscountObject>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsBulkCustomDiscountsResponse\n */\nexport type CartsBulkCustomDiscountsResponse = {\n data?: CartsCustomDiscountsObject\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * CartsBulkCustomDiscountsCollectionResponse\n */\nexport type CartsBulkCustomDiscountsCollectionResponse = {\n data?: Array<CartsCustomDiscountsObject>\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * CartsCustomDiscountsResponse\n */\nexport type CartsCustomDiscountsResponseObject = {\n amount?: {\n /**\n * Specifies an amount to be applied for the custom discount. It must be less than zero.\n */\n amount?: number\n /**\n * The currency set for the custom discount.\n */\n currency?: string\n /**\n * The formatted value for the custom discount.\n */\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n readonly id?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\nexport type CartsCustomDiscountsEntityRequest = {\n data?: CartsCustomDiscountsResponseObject\n}\n\nexport type CartsCustomDiscountsEntityResponse = {\n data?: CartsCustomDiscountsObject\n}\n\nexport type CartsCustomDiscountsCollectionResponse = {\n data?: Array<CartsCustomDiscountsObject>\n}\n\nexport type AddressCommon = {\n /**\n * First name of the recipient.\n */\n first_name: string\n /**\n * Last name of the recipient.\n */\n last_name: string\n /**\n * Company of the recipient.\n */\n company_name?: string\n /**\n * First line of the address.\n */\n line_1: string\n /**\n * Second line of the address.\n */\n line_2?: string\n /**\n * Third line of the address.\n */\n line_3?: string\n /**\n * City of the address.\n */\n city?: string\n /**\n * Post code of the address.\n */\n postcode: string\n /**\n * County of the address.\n */\n county?: string\n /**\n * Country of the address.\n */\n country: string\n /**\n * State, province, or region of the address.\n */\n region?: string\n}\n\n/**\n * Address with Region\n */\nexport type AddressWithRegion = AddressCommon & {\n /**\n * State, province, or region of the address.\n */\n region: string\n}\n\n/**\n * Address with County\n */\nexport type AddressWithCounty = AddressCommon & {\n /**\n * County of the address.\n */\n county: string\n}\n\n/**\n * ShippingAddress\n *\n * Shipping address information. You must specify at least one of region (state/province) or county.\n *\n */\nexport type ShippingAddress = (AddressWithRegion | AddressWithCounty) & {\n /**\n * Phone number of the shipping recipient.\n */\n phone_number?: string\n /**\n * Delivery instructions.\n */\n instructions?: string\n}\n\nexport type DeliveryEstimate = {\n start?: string\n end?: string\n}\n\n/**\n * SingleRelationship\n *\n * Single relationship\n */\nexport type SingleRelationship = {\n data?: RelationshipItem\n}\n\nexport type Discounts = Array<Discount>\n\nexport type ShippingPriceResponse = {\n total: FormattedPriceData\n base: FormattedPriceData\n tax?: FormattedPriceData\n fees?: FormattedPriceData\n discount?: FormattedPriceData\n}\n\n/**\n * NonNegativeFormattedPriceData\n */\nexport type NonNegativeFormattedPriceData = {\n /**\n * The raw total. Must be non-negative.\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\n/**\n * DiscountFormattedPriceData\n */\nexport type DiscountFormattedPriceData = {\n /**\n * The discount amount. Must be non-positive (zero or negative).\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\n/**\n * Order pricing information.\n */\nexport type OrderPriceWrapperMeta = {\n with_tax: NonNegativeFormattedPriceData\n without_tax: NonNegativeFormattedPriceData\n tax: NonNegativeFormattedPriceData\n discount: DiscountFormattedPriceData\n balance_owing: NonNegativeFormattedPriceData\n paid: NonNegativeFormattedPriceData\n authorized: NonNegativeFormattedPriceData\n without_discount: NonNegativeFormattedPriceData\n shipping: NonNegativeFormattedPriceData\n shipping_discount: DiscountFormattedPriceData\n}\n\nexport type ShippingGroupMeta = {\n shipping_display_price?: ShippingPriceResponse\n total_display_price?: OrderPriceWrapperMeta\n}\n\n/**\n * Shipping Group Response\n */\nexport type ShippingGroupResponse = {\n type?: \"shipping_group\"\n id?: string\n relation?: string\n cart_id?: string\n order_id?: string\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n address?: ShippingAddress\n delivery_estimate?: DeliveryEstimate\n created_at?: string\n updated_at?: string\n relationships?: {\n cart?: SingleRelationship\n order?: SingleRelationship\n /**\n * The order items shipped by this shipping group. Present on order shipping groups that are associated with at least one order item, when the shipping group is retrieved or updated individually.\n */\n items?: RelationshipArray\n }\n discounts?: Discounts\n meta?: ShippingGroupMeta\n}\n\nexport type ShippingPriceRequest = {\n total?: number\n base?: number\n tax?: number\n fees?: number\n discount?: number\n}\n\nexport type CreateShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n shipping_price?: ShippingPriceRequest\n address?: ShippingAddress\n includes_tax?: boolean\n delivery_estimate?: DeliveryEstimate\n }\n}\n\n/**\n * OrderPriceData\n */\nexport type OrderPriceData = {\n /**\n * The amount for this item.\n */\n amount?: number\n /**\n * The currency this item.\n */\n currency?: string\n /**\n * Whether this price is tax inclusive.\n */\n includes_tax?: boolean\n}\n\n/**\n * DiscountData\n */\nexport type DiscountData = {\n amount?: OrderPriceData\n code?: string\n readonly id?: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * OrderItemFormattedUnitPriceData\n */\nexport type OrderItemFormattedUnitPriceData = {\n unit?: FormattedPriceData\n value?: FormattedPriceData\n}\n\n/**\n * OrderItemResponse\n */\nexport type OrderItemResponse = {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The unique identifier for this order item.\n */\n readonly id?: string\n /**\n * The quantity of this item were ordered.\n */\n quantity?: number\n /**\n * The unique identifier for this order item.\n */\n readonly product_id?: string\n /**\n * The unique identifier for the subscription offering for this order item.\n */\n readonly subscription_offering_id?: string\n /**\n * The name of this order item.\n */\n name?: string\n /**\n * The SKU code for the order item.\n */\n sku?: string\n /**\n * The stock location for this order item.\n */\n readonly location?: string\n unit_price?: OrderPriceData\n value?: OrderPriceData\n discounts?: Array<DiscountData>\n links?: {\n [key: string]: unknown\n }\n meta?: {\n display_price?: {\n with_tax?: OrderItemFormattedUnitPriceData\n without_tax?: OrderItemFormattedUnitPriceData\n tax?: OrderItemFormattedUnitPriceData\n discount?: OrderItemFormattedUnitPriceData\n without_discount?: OrderItemFormattedUnitPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n /**\n * Detailed breakdown of discount constituents by ID\n */\n constituents?: {\n [key: string]: {\n /**\n * The discount amount\n */\n amount?: number\n /**\n * The currency code\n */\n currency?: string\n /**\n * The formatted discount amount\n */\n formatted?: string\n }\n }\n }\n }\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: OrderItemFormattedUnitPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n relationships?: {\n cart_item?: {\n data?: {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The unique identifier for this item.\n */\n readonly id?: string\n }\n }\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The unique identifier of the catalog associated with the product is shown if `catalog_source=pim` is set.\n */\n catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Component product ID\n */\n id?: string\n /**\n * Component product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product metadata as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price information as a generic object\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the bundle product.\n */\n components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n /**\n * Custom inputs for the order item as a generic object\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Custom attributes attached to the order item.\n */\n readonly custom_attributes?: CustomAttributes\n /**\n * The shipping group ID for the order item\n */\n shipping_group_id?: string\n /**\n * The promotion source for the order item\n */\n promotion_source?: string\n /**\n * The action ID within the rule promotion that produced this promotion item.\n */\n readonly promotion_action_id?: string\n /**\n * Subscription configuration for the order item\n */\n subscription_configuration?: {\n /**\n * Subscription plan details\n */\n plan?: string\n /**\n * Pricing option for the subscription\n */\n pricing_option?: string\n }\n}\n\nexport type ShippingGroupEntityResponse = {\n data?: ShippingGroupResponse\n /**\n * Related objects that are included in the response when using the include query parameter.\n */\n included?: {\n /**\n * Array of order items associated with this shipping group.\n */\n items?: Array<OrderItemResponse>\n }\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type UpdateCartShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n shipping_price?: ShippingPriceRequest\n address?: ShippingAddress\n includes_tax?: boolean\n delivery_estimate?: DeliveryEstimate\n }\n}\n\n/**\n * Data.BasePayments\n */\nexport type DataBasePayments = {\n gateway:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n /**\n * Specifies the transaction method, such as `purchase` or `authorize`.\n */\n method: \"authorize\" | \"purchase\" | \"purchase_setup\" | \"authorize_setup\"\n /**\n * The amount to be paid for the transaction.\n */\n amount?: number\n}\n\n/**\n * Elastic Path Payments Powered By Stripe\n */\nexport type ElasticPathPaymentsPoweredByStripePayment = {\n data?: DataBasePayments & {\n /**\n * Specifies the gateway. You must use `elastic_path_payments_stripe`.\n */\n gateway?: \"elastic_path_payments_stripe\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n /**\n * Parent object determining whether to use Stripe's `automatic_payment_methods` setting.\n */\n automatic_payment_methods?: {\n /**\n * When set to true, it displays all enabled payment methods from the Stripe dashboard. When set to false, the Stripe default, which is card, is used.\n */\n enabled?: boolean\n }\n }\n /**\n * Specifies the Stripe payment method types configured for the store. See [Stripe Documentation](https://docs.stripe.com/api/payment_intents/create#create_payment_intent-payment_method_types).\n */\n payment_method_types?: Array<string>\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n }\n}\n\n/**\n * Cart Payment Update\n */\nexport type CartPaymentUpdate = {\n data: {\n gateway: string\n method: string\n payment_method_types: Array<string>\n amount: number\n options?: {\n [key: string]: unknown\n }\n }\n}\n\n/**\n * BillingAddress\n *\n * Billing address information. You must specify at least one of region (state/province) or county.\n *\n */\nexport type BillingAddress = AddressWithRegion | AddressWithCounty\n\n/**\n * Customer Checkout\n */\nexport type CustomerCheckout = {\n data?: {\n /**\n * A user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n customer: {\n /**\n * The ID of the customer.\n */\n id?: string\n /**\n * The email of the customer.\n */\n email?: string\n /**\n * The name of the customer.\n */\n name?: string\n }\n billing_address?: BillingAddress\n shipping_address?: ShippingAddress\n }\n}\n\n/**\n * Account Checkout\n */\nexport type AccountCheckout = {\n data?: {\n /**\n * A user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n account?: {\n /**\n * The account ID.\n */\n id?: string\n /**\n * The account member ID.\n */\n member_id?: string\n }\n contact: {\n /**\n * The name of the account member.\n */\n name?: string\n /**\n * The email address of the account member.\n */\n email?: string\n }\n billing_address?: BillingAddress\n shipping_address?: ShippingAddress\n }\n}\n\nexport type OrderTimestamps = {\n /**\n * The date this order was created.\n */\n created_at?: string\n /**\n * The date this order was last updated.\n */\n updated_at?: string\n /**\n * The date this order was fully paid. Only present for orders with payment status 'paid'.\n */\n fully_paid_at?: string\n}\n\n/**\n * OrderMeta\n */\nexport type OrderMeta = {\n timestamps?: OrderTimestamps\n /**\n * Order pricing information including amounts, tax, discounts, and payment details.\n */\n display_price?: {\n with_tax?: NonNegativeFormattedPriceData\n without_tax?: NonNegativeFormattedPriceData\n tax?: NonNegativeFormattedPriceData\n discount?: DiscountFormattedPriceData\n balance_owing?: NonNegativeFormattedPriceData\n paid?: NonNegativeFormattedPriceData\n authorized?: NonNegativeFormattedPriceData\n without_discount?: NonNegativeFormattedPriceData\n shipping?: NonNegativeFormattedPriceData\n shipping_discount?: DiscountFormattedPriceData\n }\n /**\n * Specifies if the order was created manually.\n */\n is_manual?: boolean\n}\n\n/**\n * Contact\n */\nexport type Contact = {\n /**\n * The email address of the contact.\n */\n email?: string\n /**\n * The name of the contact.\n */\n name?: string\n}\n\n/**\n * Customer\n */\nexport type Customer = {\n /**\n * The name of the customer.\n */\n name?: string\n /**\n * The email address of the customer.\n */\n email?: string\n /**\n * The unique identifier of the customer.\n */\n id?: string\n}\n\n/**\n * OrderResponse\n */\nexport type OrderResponse = {\n /**\n * Specifies the type of object being returned. You must use `order`.\n */\n type?: \"order\"\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n /**\n * Specifies the unique identifier of the order.\n */\n readonly id?: string\n /**\n * Specifies the status of the order, such as `incomplete`, `complete`, `processing`, or `cancelled`.\n */\n status?: \"complete\" | \"incomplete\" | \"cancelled\" | \"processing\"\n /**\n * Specifies the status of the payment, such as `unpaid`, `authorized`, `paid`, or `refunded`.\n */\n payment?:\n | \"authorized\"\n | \"paid\"\n | \"unpaid\"\n | \"refunded\"\n | \"partially_paid\"\n | \"partially_authorized\"\n /**\n * Specifies the status of the shipment, such as `fulfilled` or `unfulfilled`.\n */\n shipping?: \"unfulfilled\" | \"fulfilled\"\n /**\n * Specifies if the order is anonymized.\n */\n anonymized?: boolean\n /**\n * Stripe Payment Intent ID. Please see Stripe's Payment Intent [documentation](https://docs.stripe.com/api/payment_intents) for more information on Payment Intents.\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n links?: {\n [key: string]: unknown\n }\n meta?: OrderMeta\n billing_address?: BillingAddress\n contact?: Contact\n customer?: Customer\n shipping_address?: ShippingAddress\n relationships?: {\n items?: RelationshipArray\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n customer?: SingleRelationship\n account?: SingleRelationship\n account_member?: SingleRelationship\n store?: SingleRelationship\n }\n}\n\n/**\n * OrderEntityResponse\n */\nexport type OrderEntityResponse = {\n data?: OrderResponse\n /**\n * Optional included data such as order items, tax items, custom discounts, and promotions.\n *\n */\n included?: OrderIncluded\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type ResponseMetaOrders = {\n page?: ResponsePaginationPage\n results?: ResponsePaginationResults\n}\n\nexport type OrderCollectionResponse = {\n data?: Array<OrderResponse>\n links?: ResponsePageLinks\n meta?: ResponseMetaOrders\n included?: OrdersIncluded\n}\n\n/**\n * OrdersAddressData\n */\nexport type OrdersAddressData = {\n /**\n * The type of the resource. You must use \"order\".\n */\n type: string\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing order_id. If provided, the order-number will be sent to Authorize.net instead of the order_id, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n shipping_address: {\n /**\n * Specifies the first name of the address holder.\n */\n first_name?: string\n /**\n * Specifies the last name of the address holder.\n */\n last_name?: string\n /**\n * Specifies the phone number of the address holder.\n */\n phone_number?: string\n /**\n * Specifies the company name.\n */\n company_name?: string\n /**\n * Specifies the first line of the address.\n */\n line_1?: string\n /**\n * Specifies the second line of the address.\n */\n line_2?: string\n /**\n * Specifies the third line of the address.\n */\n line_3?: string\n /**\n * Specifies the name of the city in the shipping address.\n */\n city?: string\n /**\n * Specifies the county of the shipping address.\n */\n county?: string\n /**\n * Specifies the state, province, or region of the shipping address.\n */\n region?: string\n /**\n * Specifies the postcode or ZIP code of the address.\n */\n postcode?: string\n /**\n * Specifies the country in the shipping address.\n */\n country?: string\n /**\n * Specifies any instructions provided with the shipping address.\n */\n instructions?: string\n }\n}\n\n/**\n * OrdersCancelData\n */\nexport type OrdersCancelData = {\n /**\n * The status of the order. You can only update the status to `cancelled`.\n */\n status: string\n /**\n * The type of the resource. You must use order.\n */\n type: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n}\n\n/**\n * OrdersFulfilledData\n */\nexport type OrdersFulfilledData = {\n /**\n * The shipping status of the order. You can only update the shipping status to `fulfilled`.\n */\n shipping: string\n /**\n * The type of the resource. You must use order.\n */\n type: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n}\n\n/**\n * OrdersUpdateRequest\n */\nexport type OrdersUpdateRequest = {\n data?: OrdersAddressData | OrdersCancelData | OrdersFulfilledData\n}\n\nexport type OrderItemCollectionResponse = {\n data?: Array<OrderItemResponse>\n /**\n * Optional included data such as tax items, custom discounts, and promotions.\n *\n */\n included?: {\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponse>\n /**\n * Array of custom discounts included in the response.\n */\n custom_discounts?: Array<CustomDiscountResponse>\n /**\n * Array of promotions included in the response.\n */\n promotions?: Array<CondensedPromotionResponse>\n }\n}\n\n/**\n * OrdersAnonymizeData\n */\nexport type OrdersAnonymizeData = {\n /**\n * The unique identifiers of the orders to be anonymized. You can anonymize multiple orders at the same time.\n */\n order_ids?: Array<string>\n}\n\n/**\n * OrdersAnonymizeRequest\n */\nexport type OrdersAnonymizeRequest = {\n data?: OrdersAnonymizeData\n}\n\nexport type OrdersListResponse = {\n data: Array<OrderResponse>\n}\n\n/**\n * FailureDetails\n *\n * Non-PII payment failure information from the payment gateway. Only present on failed transactions where the gateway provided structured failure details.\n */\nexport type FailureDetails = {\n /**\n * Machine-readable failure or error code from the payment gateway.\n */\n code?: string\n /**\n * Human-readable failure reason or error message from the payment gateway.\n */\n reason?: string\n}\n\n/**\n * TransactionResponse\n */\nexport type TransactionResponse = {\n /**\n * The ID of the transaction.\n */\n readonly id?: string\n /**\n * The payment gateway reference.\n */\n reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend you not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * The name of the payment gateway used.\n */\n gateway?:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n | \"stripe_platform_account\"\n /**\n * The amount for this transaction.\n */\n amount?: number\n /**\n * The refunded amount.\n */\n refunded_amount?: number\n /**\n * The transaction currency.\n */\n currency?: string\n /**\n * The type of transaction, such as `purchase`, `capture`, `authorize` or `refund`.\n */\n transaction_type?: \"purchase\" | \"authorize\" | \"capture\" | \"refund\"\n /**\n * The type of object being returned.\n */\n type?: string\n /**\n * The status provided by the gateway for this transaction, such as `complete` or `failed`.\n */\n status?: string\n /**\n * Additional payment details specific to the gateway. Present when gateway is paypal_express_checkout.\n */\n payment_details?: {\n /**\n * Detailed status information from the payment gateway.\n */\n detailed_status?: string\n }\n /**\n * Non-PII payment failure details from the gateway. Only present on failed transactions where the gateway provided structured failure information.\n */\n failure_details?: FailureDetails\n /**\n * Payment intent details.\n */\n payment_intent?: {\n [key: string]: unknown\n }\n /**\n * The mechanism used for capturing the transaction.\n */\n capture_mechanism?: \"automatic\" | \"manual\"\n /**\n * The mechanism used for refunding the transaction.\n */\n refund_mechanism?: \"automatic\" | \"manual\"\n /**\n * Client parameters required for payment processing. Present when gateway is paypal_express_checkout.\n */\n client_parameters?: {\n /**\n * The URL to redirect the customer to complete the payment.\n */\n redirect_url?: string\n /**\n * Client secret for payment processing.\n */\n secret?: string\n /**\n * The token for the payment session.\n */\n token?: string\n }\n /**\n * Available actions that can be performed on this transaction. Present when gateway is paypal_express_checkout.\n */\n next_actions?: Array<\"cancel\" | \"capture\" | \"refund\">\n relationships?: {\n order?: {\n data?: {\n /**\n * Represents the type of the object being returned. It is always `order`.\n */\n type?: string\n /**\n * The ID of the order.\n */\n id?: string\n }\n }\n }\n meta?: {\n display_price?: FormattedPriceData\n display_refunded_amount?: {\n total?: FormattedPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n}\n\nexport type TransactionEntityResponse = {\n data: TransactionResponse\n}\n\n/**\n * Data.AdyenPayment\n */\nexport type DataAdyenPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `adyen`.\n */\n gateway: \"adyen\"\n options?: {\n /**\n * The shopper reference token associated with the saved payment method.\n */\n shopper_reference?: string\n /**\n * Enter CardOnFile for a one-time purchase.\n */\n recurring_processing_model?: string\n }\n /**\n * The Adyen recurringDetailReference payment method identifier.\n */\n payment: string\n}\n\n/**\n * Data.AuthorizeNetPayment\n */\nexport type DataAuthorizeNetPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `authorize_net`.\n */\n gateway: \"authorize_net\"\n options?: {\n /**\n * The Authorize.net customer payment profile ID.\n */\n customer_payment_profile_id?: string\n }\n /**\n * The Authorize.net customer profile ID.\n */\n payment: string\n}\n\n/**\n * Data.BraintreePayment\n */\nexport type DataBraintreePayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `braintree`.\n */\n gateway: \"braintree\"\n /**\n * The Braintree Customer ID that you want to bill.\n */\n payment: string\n}\n\n/**\n * Data.CardConnectPayment\n */\nexport type DataCardConnectPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `card_connect`.\n */\n gateway: \"card_connect\"\n /**\n * Enter account_id, profile_id from CardPointe API. For example, 1|16178397535388255208.\n */\n payment: string\n}\n\n/**\n * Data.CyberSourcePayment\n */\nexport type DataCyberSourcePayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `cyber_source`.\n */\n gateway: \"cyber_source\"\n /**\n * The CyberSource token.\n */\n payment: string\n}\n\n/**\n * Data.ManualPayment\n */\nexport type DataManualPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `manual`.\n */\n gateway: \"manual\"\n paymentmethod_meta?: {\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n }\n}\n\n/**\n * Data.PayPalExpressCheckoutPayment\n */\nexport type DataPayPalExpressCheckoutPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `paypal_express_checkout`.\n */\n gateway: \"paypal_express_checkout\"\n options?: {\n /**\n * The description for the payment.\n */\n description?: string\n /**\n * The descriptor appended to PayPal generated descriptor that is visible on the card statement of the payer.\n */\n soft_descriptor?: string\n application_context?: {\n /**\n * The label that overrides the business name in the PayPal account on the PayPal site.\n */\n brand_name?: string\n /**\n * The locale pages that appear based on language and country code. PayPal supports a five-character code. For example, ja-JP.\n */\n locale?: string\n /**\n * The type of landing page to show on the PayPal site for customer checkout. Use values LOGIN, BILLING, or NO_PREFERENCE.\n */\n landing_page?: string\n /**\n * The shipping preference. Use SET_PROVIDED_ADDRESS value. This parameter does allow the user to change their address on PayPal site.\n */\n shipping_preference?: string\n /**\n * If you set `useraction=commit` in the query string, the flow redirects the buyer to the PayPal payment page and displays a Pay Now button. When the shopper clicks **Pay Now**, call `DoExpressCheckoutPayment` to complete the payment without additional interaction from the shopper. Choose this flow when you know the final payment amount when you initiate the checkout flow.\n */\n user_action?: string\n /**\n * The callback URL for PayPal to redirect the user in the case of approved payment.\n */\n return_url?: string\n /**\n * The callback URL for PayPal to redirect user in the case a cancelled payment.\n */\n cancel_url?: string\n }\n }\n}\n\n/**\n * Data.StripePayment\n */\nexport type DataStripePayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe`.\n */\n gateway: \"stripe\"\n options?: {\n /**\n * The option to provide an email for Stripe receipts. Specify live mode to access this feature.\n */\n receipt_email?: string\n }\n /**\n * The Stripe token or source.\n */\n payment?: string\n}\n\n/**\n * Data.StripePaymentIntentsPayment\n */\nexport type DataStripePaymentIntentsPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe_payment_intents`.\n */\n gateway: \"stripe_payment_intents\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n }\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n}\n\nexport type DataPaymentObject =\n | DataAdyenPayment\n | DataAuthorizeNetPayment\n | DataBraintreePayment\n | DataCardConnectPayment\n | DataCyberSourcePayment\n | ElasticPathPaymentsPoweredByStripePayment\n | DataManualPayment\n | DataPayPalExpressCheckoutPayment\n | DataStripePayment\n | DataStripePaymentIntentsPayment\n\n/**\n * PaymentsRequest\n */\nexport type PaymentsRequest = {\n data?: DataPaymentObject\n}\n\n/**\n * OrdersTransactionsConfirmRequest\n */\nexport type OrdersTransactionsConfirmRequest = {\n data?: {\n [key: string]: unknown\n }\n}\n\n/**\n * OrdersTransactionsCaptureRequest\n */\nexport type OrdersTransactionsCaptureRequest = {\n data?: {\n options?: {\n soft_descriptor?: string\n note_to_payer?: string\n }\n }\n}\n\n/**\n * OrdersTransactionsRefundRequest\n */\nexport type OrdersTransactionsRefundRequest = {\n data?: {\n /**\n * The amount value to be refunded. If this field is not provided, it will be considered as manual refund (Mark as Refunded) and the refund process must be manually handled via payment provider. If the amount value is same as payment value, then it will be treated as a full refund and sent to the payment provider to process refund automatically.\n */\n amount?: number\n options?: {\n /**\n * Provides comments about the refund. It is used by PayPal Express.\n */\n note?: string\n }\n }\n}\n\nexport type TransactionListResponse = {\n data: Array<TransactionResponse>\n}\n\nexport type ResponseData = {\n data?: unknown\n}\n\n/**\n * OrdersTransactionsCancelRequest\n */\nexport type OrdersTransactionsCancelRequest = {\n data?: {\n options?: {\n [key: string]: unknown\n }\n /**\n * Specifies the reason for canceling the transaction. The reason may include `duplicate`, `fraudulent`, `requested_by_customer`, or `abandoned`.\n */\n reason?: string\n }\n}\n\nexport type UpdateOrderShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n address?: ShippingAddress\n delivery_estimate?: DeliveryEstimate\n }\n}\n\nexport type SettingsCart = {\n data?: {\n /**\n * Describes the type of request payload you're sending. Set this value to `settings`.\n */\n type: string\n /**\n * The unique identifier for the cart settings.\n */\n readonly id?: string\n /**\n * Indicates the number of days before a cart expires.\n */\n cart_expiry_days?: number\n discounts?: {\n /**\n * When `true`, custom discounts are enabled. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to `true`, this parameter allows the cart to use rule promotions.\n */\n use_rule_promotions?: boolean\n }\n inventories?: {\n /**\n * When `true`, inventory checks are not performed when adding products to a cart but still occur on checkout as normal. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n defer_inventory_check?: boolean\n }\n items?: {\n /**\n * When `true`, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When `false` (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n }\n /**\n * When `true`, admins (users with admin scope) can retrieve all carts in the store via `GET /v2/carts`, regardless of customer or account associations. When `false`, admins can only see carts that are registered (associated with customers or accounts).\n *\n * For new stores, this defaults to `true`. For existing stores created before this feature was introduced, this defaults to `false` to maintain backward compatibility.\n *\n */\n show_all_carts?: boolean\n }\n}\n\nexport type CartCheckoutTimestamps = {\n /**\n * The date this was created.\n */\n created_at?: string\n /**\n * The date this was last updated.\n */\n updated_at?: string\n}\n\n/**\n * Carts Response\n */\nexport type CartsResponse = {\n data?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n }\n }\n }\n timestamps?: CartTimestamps\n }\n}\n\n/**\n * Cart Items Response\n */\nexport type CartItemsResponse = {\n data?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n}\n\n/**\n * Cart Item Object\n */\nexport type CartItemObject = CartItemObjectData & CartItemResponse\n\n/**\n * Custom Item Cart Object\n */\nexport type CustomItemCartObject = CartItemResponse & {\n type: \"custom_item\"\n quantity: number\n}\n\n/**\n * Subscription Item Cart Object\n */\nexport type SubscriptionItemCartObject = CartItemResponse & {\n type: \"subscription_item\"\n quantity: number\n}\n\n/**\n * Promotion Item Cart Object\n */\nexport type PromotionItemCartObject = CartItemResponse & {\n type: \"promotion_item\"\n quantity: number\n}\n\n/**\n * Data.StripeConnectPayment\n */\nexport type DataStripeConnectPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe_connect`.\n */\n gateway: \"stripe_connect\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n }\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n}\n\nexport type CartIncludedPromotion = {\n /**\n * The unique identifier of the promotion.\n */\n id: string\n /**\n * The name of the promotion.\n */\n name: string\n /**\n * A description of the promotion.\n */\n description?: string\n /**\n * Indicates if the promotion is automatic.\n */\n automatic: boolean\n /**\n * The source of the promotion.\n */\n promotion_source: string\n /**\n * The start date and time of the promotion.\n */\n start: string\n /**\n * The end date and time of the promotion.\n */\n end: string\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type CartIncluded = {\n /**\n * The cart items associated with a cart.\n */\n items?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n /**\n * The tax items associated with a cart.\n */\n tax_items?: Array<CartsItemsTaxesObject>\n /**\n * The custom discounts associated with a cart.\n */\n custom_discounts?: Array<CartsCustomDiscountsObject>\n /**\n * The promotions associated with a cart.\n */\n promotions?: Array<CartIncludedPromotion>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrdersIncluded = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponse>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrderIncluded = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponse>\n}\n\n/**\n * Whether a pricing option is active on a subscription using that offering. The `active_pricing_option` attribute is null if a pricing option is not active in a subscription.\n */\nexport type ActivePricingOption = boolean\n\n/**\n * Whether a plan is active on a subscription using that offering. The `active_plan` attribute is null if a plan is not active in a subscription.\n */\nexport type ActivePlan = boolean\n\n/**\n * A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.\n */\nexport type ExternalRef = string\n\n/**\n * A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.\n */\nexport type ExternalRefUpdate = string | null\n\nexport type SubscriptionType = \"subscription\"\n\nexport type ProrationPolicyType = \"subscription_proration_policy\"\n\nexport type SubscriptionDunningRuleType = \"subscription_dunning_rule\"\n\nexport type SubscriptionFeatureType = \"subscription_feature\"\n\nexport type SubscriptionOfferingType = \"subscription_offering\"\n\nexport type SubscriptionOfferingFeatureType = \"subscription_offering_feature\"\n\nexport type SubscriptionOfferingPlanType = \"subscription_offering_plan\"\n\nexport type SubscriptionOfferingPricingOptionType =\n \"subscription_offering_pricing_option\"\n\nexport type SubscriptionJobType = \"subscription_job\"\n\nexport type SubscriptionImportType = \"subscription_import\"\n\nexport type SubscriptionImportErrorType = \"subscription_import_error\"\n\nexport type SubscriptionImportError = {\n id: SubscriptionsUuid\n type: SubscriptionImportErrorType\n meta: SubscriptionImportErrorMeta\n}\n\nexport type SubscriptionImportErrorMeta = {\n owner: string\n timestamps: SubscriptionsTimestamps\n error: string\n field: string\n /**\n * The line in the imported JSONL file at which the validation error occurred. Starts from 1.\n */\n line_number: number\n external_ref?: ExternalRef\n}\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice`.\n */\nexport type SubscriptionInvoiceType = \"subscription_invoice\"\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice_payment`.\n */\nexport type SubscriptionInvoicePaymentType = \"subscription_invoice_payment\"\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice_payment_refund`.\n */\nexport type SubscriptionInvoicePaymentRefundType =\n \"subscription_invoice_payment_refund\"\n\nexport type Links2 = {\n [key: string]: Link\n}\n\nexport type Link = LinkUri | LinkObject\n\nexport type LinkUri = string | null\n\nexport type LinkObject = {\n href?: string\n title?: string\n describedby?: string\n}\n\n/**\n * The status of a subscription, either `active` or `inactive`.\n */\nexport type Status = \"active\" | \"inactive\"\n\n/**\n * Enumerates a list of resources that are related.\n */\nexport type RelationshipsRequest = {\n data: Array<RelationshipData>\n}\n\n/**\n * Relationships are established between different subscription entities. For example, a plan and a pricing option are related to an offering, as both are attached to it.\n */\nexport type Relationships = unknown\n\nexport type Relationship = SubscriptionsSingleRelationship | ManyRelationship\n\n/**\n * The list of resources that are related.\n */\nexport type ManyRelationship = {\n data?: Array<RelationshipData>\n links?: RelationshipLinks\n}\n\nexport type RelationshipData = {\n id: SubscriptionsUuid\n /**\n * This represents the type of resource being returned.\n */\n type: string\n}\n\n/**\n * Links are used to allow you, as an API consumer, to move between requests. Single entities use a self parameter with a link to that specific resource. Sometimes, there aren’t enough entities for a project to fill multiple pages. In this situation, we return some defaults, instead of expecting you to check for these special cases.\n *\n * - current - Always the current page.\n * - first - Always the first page.\n * - last - always `null`.\n * - next - `null` if the user is on the first page.\n * - previous - `null` if there is only one page.\n *\n */\nexport type RelationshipLinks = {\n related?: string\n}\n\n/**\n * A period of time between a start and end point.\n */\nexport type TimePeriod = {\n /**\n * The date and time a billing period started.\n */\n start: string\n /**\n * The date and time a billing period ended.\n */\n end: string\n}\n\n/**\n * A price in a single currency.\n */\nexport type SingleCurrencyPrice = {\n /**\n * The three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase, associated with a price.\n */\n currency: string\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * Whether the amount includes any taxes.\n */\n includes_tax?: boolean\n}\n\n/**\n * The timeframe during which the plan price is applicable. For example, for a streaming service, the price is $12.99 and the `unit` is `months` and the `amount` is `1`. In other words, the streaming service is available for $12.99 a month. You may want to specify a unit price if you have many plans that all have different prices. Rather than having to create separate pricing options for each plan, you can specify the timeframe during which the plan price is applicable and then create one pricing option that determines the billing frequency for those plans.\n */\nexport type PriceUnits = {\n /**\n * A unit of time.\n */\n unit: \"day\" | \"month\"\n /**\n * The number of days or months the period covers.\n */\n amount: number\n}\n\n/**\n * The timeframe during which the plan price is applicable. For example, for a streaming service, the price is $12.99 and the `unit` is `months` and the `amount` is `1`. In other words, the streaming service is available for $12.99 a month. You may want to specify a unit price if you have many plans that all have different prices. Rather than having to create separate pricing options for each plan, you can specify the timeframe during which the plan price is applicable and then create one pricing option that determines the billing frequency for those plans.\n */\nexport type NullablePriceUnits = {\n /**\n * A unit of time, either days or months.\n */\n unit: \"day\" | \"month\"\n /**\n * The number of days or months the period covers.\n */\n amount: number\n} | null\n\nexport type Price = unknown\n\nexport type NullablePrice = {\n [key: string]: {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * Whether the amount includes any taxes.\n */\n includes_tax?: boolean\n } | null\n} | null\n\n/**\n * A list of plan prices for each of its pricing options.\n */\nexport type OfferingPlanPrices = {\n [key: string]: OfferingPlanPriceForPricingOption\n}\n\nexport type OfferingPlanPriceForPricingOption = {\n price?: Price\n display_price?: DisplayPrice2\n}\n\nexport type DisplayPrice2 = {\n without_tax?: PriceFormatting\n with_tax?: PriceFormatting\n /**\n * Tax component when itemized (for example on subscription invoices). Omitted for catalog prices\n * that only expose with/without tax.\n *\n */\n tax?: PriceFormatting\n}\n\nexport type PriceFormatting = {\n /**\n * The unformatted amount for the objects.\n */\n amount: number\n /**\n * The three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase, associated with a price.\n */\n currency: string\n /**\n * The formatted amount for the objects.\n */\n formatted: string\n}\n\nexport type Feature = {\n id?: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureResponseAttributes\n meta: FeatureMeta\n}\n\nexport type FeatureMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type FeatureCreate = {\n type: SubscriptionFeatureType\n attributes: FeatureAttributes\n}\n\nexport type FeatureUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureUpdateAttributes\n}\n\nexport type OfferingFeatureCreate = {\n type: SubscriptionOfferingFeatureType\n attributes: FeatureAttributes\n}\n\nexport type FeatureResponseAttributes = FeatureAttributes\n\n/**\n * A tag to add to the customer's account when entitled to the feature.\n */\nexport type FeatureTag = string\n\nexport type FeatureAccessAttributes = {\n type: \"access\"\n tag: FeatureTag\n}\n\nexport type FeaturePromotion = {\n /**\n * The name of the feature.\n */\n name: string\n tag: FeatureTag\n promotion_id?: SubscriptionsUuid\n}\n\nexport type FeaturePromotionAttributes = {\n type: \"promotion\"\n promotions: Array<FeaturePromotion>\n}\n\nexport type FeatureUsageAttributes = {\n type: \"usage\"\n tag: FeatureTag\n /**\n * The property that has a usage limit.\n */\n label: string\n /**\n * The default initial value\n */\n default_value: number\n}\n\nexport type FeatureConfiguration = (\n | FeatureAccessAttributes\n | FeaturePromotionAttributes\n | FeatureUsageAttributes\n) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n}\n\nexport type FeatureAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the feature.\n */\n name: string\n /**\n * The feature description to display to customers.\n */\n description?: string\n configuration: FeatureConfiguration\n}\n\nexport type FeatureUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the feature.\n */\n name?: string\n /**\n * The feature description to display to customers.\n */\n description?: string | null\n configuration?: FeatureConfiguration\n}\n\nexport type PlanMeta = {\n prices?: OfferingPlanPrices\n display_price?: DisplayPrice2\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n active_plan?: ActivePlan\n}\n\nexport type OfferingPlanCreate = {\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanAttributes\n relationships?: Relationships\n}\n\nexport type OfferingPlanAttributes = PlanAttributes &\n OfferingPlanExtraAttributes\n\nexport type OfferingPlanResponseAttributes = PlanResponseAttributes &\n OfferingPlanResponseExtraAttributes\n\n/**\n * A map of merchant-defined string attributes attached to the plan. Carried onto any subscription created from this plan.\n */\nexport type PlanCustomAttributes = {\n [key: string]: string\n}\n\nexport type OfferingPlanExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations?: {\n [key: string]: FeaturePlanConfiguration\n }\n custom_attributes?: PlanCustomAttributes\n}\n\nexport type OfferingPlanResponseExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations: {\n [key: string]: FeaturePlanConfiguration\n }\n /**\n * A map of merchant-defined string attributes attached to the plan. Carried onto any subscription created from this plan.\n */\n custom_attributes?: {\n [key: string]: string\n }\n}\n\nexport type PlanResponseAttributes = PlanAttributes & SubscriptionsTimestamps\n\nexport type PlanAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the plan.\n */\n name: string\n /**\n * The plan or service description to display to customers.\n */\n description?: string\n /**\n * A stock keeping unit for the plan, if appropriate.\n */\n sku?: string\n /**\n * A URL from which an image or file for the plan can be fetched. You can either upload your images and files to Commerce using the Commerce Files API or you can use your own content delivery network. If you are using the Commerce Files API, use [**Create a File**](/docs/api/pxm/files/create-a-file) to upload your file and return an HREF link in the response. An extensive range of [**media and file extensions**](/docs/api/pxm/files/files-service-api) are supported.\n */\n main_image?: string\n price?: Price\n price_units?: PriceUnits\n}\n\nexport type OfferingPlanUpdateAttributes = PlanUpdateAttributes &\n OfferingPlanUpdateExtraAttributes\n\nexport type OfferingPlanUpdateExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations?: {\n [key: string]: FeaturePlanConfigurationUpdate\n }\n /**\n * A per-key add/replace/remove map of custom attributes. A key omitted from this map is left untouched; a key explicitly set to null is removed; a key set to a string value is added or replaced.\n */\n custom_attributes?: {\n [key: string]: string | null\n }\n}\n\nexport type PlanUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the plan.\n */\n name?: string\n /**\n * The plan or service description to display to customers.\n */\n description?: string | null\n /**\n * A stock keeping unit for the plan, if appropriate.\n */\n sku?: string | null\n /**\n * A URL from which an image or file for the plan can be fetched. You can either upload your images and files to Commerce using the Commerce Files API or you can use your own content delivery network. If you are using the Commerce Files API, use [**Create a File**](/docs/api/pxm/files/create-a-file) to upload your file and return an HREF link in the response. An extensive range of [**media and file extensions**](/docs/api/pxm/files/files-service-api) are supported.\n */\n main_image?: string | null\n price?: NullablePrice\n price_units?: NullablePriceUnits\n}\n\nexport type DunningRule = {\n id?: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n meta: DunningRuleMeta\n}\n\nexport type DunningRuleMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type DunningRuleCreate = {\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n}\n\nexport type DunningRuleUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleUpdateAttributes\n}\n\n/**\n * The dunning rule attributes you can use to configure your payment retry strategy.\n *\n */\nexport type DunningRuleAttributes = {\n /**\n * The strategy used to make payments. Always `fixed`. This means payments are retried on a fixed schedule as defined by the `payment_retry_unit` and `payment_retry_interval`, for example, every two days.\n *\n */\n payment_retry_type: \"fixed\" | \"backoff\" | \"tiered\"\n /**\n * The number of `payment_interval_unit`s to wait between each payment retry attempt.\n */\n payment_retry_interval?: number\n /**\n * The unit of time used to measure the intervals between payment attempts or retries.\n */\n payment_retry_unit?: \"day\" | \"week\"\n /**\n * The multiplier that increases the interval between consecutive each payment attempts or retries. This is typically used to gradually extend the time between retries. Allowing more time between attempts as failures persist, helps reduce the risk of triggering multiple failures in a short period and gives the subscriber more time to resolve the issue. Must only be set for backup types.\n */\n payment_retry_multiplier?: number\n /**\n * The number of times Subscriptions attempts payment retries before `action` is taken.\n */\n payment_retries_limit: number\n /**\n * The action to take after all payment attempts for an invoice have failed.\n *\n * - None - the subscription remains active and Subscriptions does not attempt to retry the payment. However, the subscription is still available for a subscriber to use.\n * - Suspend the subscription. Subscriptions does not attempt to retry the payment. A subscriber can choose to pay the outstanding invoice. However, a subscriber cannot renew their subscription; a merchandizer must renew the subscription on behalf of the subscriber.\n * - close a subscription. The subscription ends and it's status becomes `inactive`. However, a merchandizer can choose to resume the subscription if a subscriber pays the outstanding payment.\n *\n */\n action: \"none\" | \"pause\" | \"close\" | \"suspend\"\n /**\n * Set to `true` if you want this rule to be the default for the store.\n */\n default?: boolean\n}\n\nexport type DunningRuleUpdateAttributes = {\n /**\n * The strategy used to make payments. Always `fixed`. This means payments are retried on a fixed schedule as defined by the `payment_retry_unit` and `payment_retry_interval`, for example, every two days.\n *\n */\n payment_retry_type?: \"fixed\" | \"backoff\" | \"tiered\"\n /**\n * The number of `payment_interval_unit`s to wait between each payment retry attempt.\n */\n payment_retry_interval?: number | null\n /**\n * The unit of time used to measure the intervals between payment attempts or retries.\n */\n payment_retry_unit?: \"day\" | \"week\"\n /**\n * The multiplier that increases the interval between consecutive each payment attempts or retries. This is typically used to gradually extend the time between retries. Allowing more time between attempts as failures persist, helps reduce the risk of triggering multiple failures in a short period and gives the subscriber more time to resolve the issue. Must only be set for backup types.\n */\n payment_retry_multiplier?: number | null\n /**\n * The number of times Subscriptions attempts payment retries before `action` is taken.\n */\n payment_retries_limit?: number\n /**\n * The action to take after all payment attempts for an invoice have failed.\n */\n action?: \"none\" | \"pause\" | \"close\" | \"suspend\"\n /**\n * Set to `true` if you want this rule to be the default for the store.\n */\n default?: boolean\n}\n\nexport type ProrationPolicy = {\n id?: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyResponseAttributes\n meta: ProrationPolicyMeta\n}\n\nexport type ProrationPolicyUpdate = {\n id: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyUpdateAttributes\n}\n\nexport type ProrationPolicyRelationshipAttributes = {\n type: ProrationPolicyType\n id: SubscriptionsUuid\n}\n\nexport type ProrationPolicyUpdateRelationshipAttributes = {\n type: ProrationPolicyType\n id: SubscriptionsUuid\n} | null\n\nexport type ProrationPolicyResponseAttributes = ProrationPolicyAttributes\n\nexport type ProrationPolicyCreate = {\n type: ProrationPolicyType\n attributes: ProrationPolicyAttributes\n}\n\nexport type ProrationPolicyAttributes = {\n /**\n * A name for the proration policy.\n */\n name: string\n /**\n * When rounding in proration, you must decide how to round the units of time used to calculate the charges.\n *\n * - round up to the next unit, ensuring subscribers are charged slightly more to cover any partial use.\n * - round down to the previous whole unit, providing subscribers with a slight benefit by not charging for partial use.\n * - round to the nearest whole unit, whether up or down, based on standard rounding rules. For example, rounding 0.5 up and rounding 0.5 down.\n *\n */\n rounding: \"up\" | \"down\" | \"nearest\"\n external_ref?: ExternalRef\n /**\n * Set to `true` to allow an automatic gateway refund when a proration would otherwise be rejected for netting negative.\n */\n allow_negative_proration_refund?: boolean\n}\n\nexport type ProrationPolicyUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the proration policy.\n */\n name?: string\n /**\n * Whether to round up or down\n */\n rounding?: \"up\" | \"down\" | \"nearest\"\n /**\n * Set to `true` to allow an automatic gateway refund when a proration would otherwise be rejected for netting negative.\n */\n allow_negative_proration_refund?: boolean\n}\n\nexport type ProrationPolicyMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingPricingOptionCreate = {\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionAttributes\n}\n\nexport type PricingOptionResponseAttributes = PricingOptionAttributes &\n SubscriptionsTimestamps\n\nexport type PricingOptionAttributes = {\n external_ref?: ExternalRef\n /**\n * A name for the pricing option.\n */\n name: string\n /**\n * The pricing option description to display to customers.\n */\n description?: string\n /**\n * The unit of time that billing intervals are measured.\n */\n billing_interval_type: \"day\" | \"week\" | \"month\" | \"year\"\n /**\n * The number of intervals between issuing bills.\n */\n billing_frequency: number\n /**\n * The number of intervals from the start of the subscription before billing starts. Used with `billing_interval_type`. For example, if `billing_interval_type` is `months`, and `trial_period` is `1`, the trial period is 1 month.\n */\n trial_period?: number\n lead_time?: LeadTime\n notification_schedule?: Array<NotificationSchedule>\n /**\n * The number of intervals that the subscription runs for.\n */\n plan_length: number\n /**\n * Enables you to specify recurring payments. If `end_behavior` is `roll`, customers pay regularly and repeatedly. If `end_behavior` is `close`, customers pay a total amount in a limited number of partial payments.\n */\n end_behavior: \"close\" | \"roll\"\n /**\n * The subscriber can pause a subscription.\n */\n can_pause: boolean\n /**\n * The subscriber can resume a paused subscription.\n */\n can_resume: boolean\n /**\n * The subscriber can cancel a subscription.\n */\n can_cancel: boolean\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number\n fixed_price?: Price\n}\n\nexport type PricingOptionUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n name?: string\n /**\n * The pricing option description to display to customers.\n */\n description?: string | null\n /**\n * The unit of time in which billing intervals are measured.\n */\n billing_interval_type?: \"day\" | \"week\" | \"month\" | \"year\"\n /**\n * The number of intervals between issuing bills.\n */\n billing_frequency?: number\n /**\n * The number of intervals from the start of the subscription before billing starts. Used with `billing_interval_type`. For example, if `billing_interval_type` is `months`, and `trial_period` is `1`, the trial period is 1 month.\n */\n trial_period?: number | null\n /**\n * The length of time for which a subscription plan is valid. For example, six months after which the plan is renewed.\n */\n plan_length?: number\n lead_time?: NullableLeadTime\n notification_schedule?: Array<NotificationSchedule>\n /**\n * Enables you to specify recurring payments. If `end_behavior` is `roll`, customers pay regularly and repeatedly. If `end_behavior` is `close`, customers pay a total amount in a limited number of partial payments.\n */\n end_behavior?: \"close\" | \"roll\"\n /**\n * The subscriber can pause a subscription.\n */\n can_pause?: boolean\n /**\n * The subscriber can resume a paused subscription.\n */\n can_resume?: boolean\n /**\n * The subscriber can cancel a subscription.\n */\n can_cancel?: boolean\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number | null\n fixed_price?: NullablePrice\n}\n\nexport type BuildOffering = {\n external_ref?: ExternalRef\n /**\n * The name of the offering.\n */\n name: string\n /**\n * The offering description to display to customers.\n */\n description?: string\n /**\n * The unique ID or external ref of the proration policy\n */\n proration_policy_id?: string\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociations\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n /**\n * Plan information to be created within the offering\n */\n plans: Array<OfferingPlanAttributes>\n /**\n * Pricing options information to be created within the offering\n */\n pricing_options: Array<PricingOptionAttributes>\n}\n\nexport type Offering = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes: OfferingResponseAttributes\n relationships?: Relationships\n meta: OfferingMeta\n}\n\nexport type OfferingIncludes = {\n features?: Array<OfferingFeature>\n plans?: Array<OfferingPlan>\n pricing_options?: Array<OfferingPricingOption>\n}\n\nexport type OfferingMeta = {\n external_plan_refs: Array<OfferingPlanExternalRefMeta>\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingCreate = {\n type: SubscriptionOfferingType\n attributes: OfferingAttributes\n relationships?: OfferingRelationships\n}\n\nexport type OfferingPlanUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanUpdateAttributes\n}\n\n/**\n * Configures an access feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan.\n */\nexport type FeatureConfigAccessAttributes = {\n type: \"access\"\n}\n\n/**\n * Configures a promotion feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan. The tag of the specific promotion that it to be made available must be supplied.\n */\nexport type FeatureConfigPromotionAttributes = {\n type: \"promotion\"\n tag: FeatureTag\n}\n\n/**\n * Configures a usage feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan. The default value that the usage metrics adopts must be supplied.\n */\nexport type FeatureConfigUsageAttributes = {\n type: \"usage\"\n /**\n * The default initial value\n */\n default_value: number\n}\n\nexport type FeaturePlanConfiguration = (\n | FeatureConfigAccessAttributes\n | FeatureConfigPromotionAttributes\n | FeatureConfigUsageAttributes\n) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n}\n\nexport type FeaturePlanConfigurationUpdate =\n | ((\n | FeatureConfigAccessAttributes\n | FeatureConfigPromotionAttributes\n | FeatureConfigUsageAttributes\n | null\n ) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n })\n | null\n\nexport type OfferingBuildPlanPricingOptions = Array<string>\n\n/**\n * A map of plans keyed by plan UUID or external_ref to a list of associated pricing options, similarly keyed.\n */\nexport type OfferingBuildPricingOptionAssociations = {\n [key: string]: OfferingBuildPlanPricingOptions\n}\n\n/**\n * Map of feature configurations keyed by plan UUID or external_ref\n */\nexport type OfferingBuildConfiguredFeatures = {\n [key: string]: OfferingBuildPlanFeatures\n}\n\n/**\n * A map of configurations indicating which features are available for the plan\n */\nexport type OfferingBuildPlanFeatures = {\n [key: string]: FeaturePlanConfiguration\n}\n\nexport type OfferingFeatureUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureUpdateAttributes\n}\n\nexport type OfferingFeature = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureResponseAttributes\n relationships?: Relationships\n meta: FeatureMeta\n}\n\nexport type OfferingPlan = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanResponseAttributes\n relationships?: Relationships\n meta: PlanMeta\n}\n\nexport type OfferingPricingOptionUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionUpdateAttributes\n}\n\nexport type OfferingPricingOption = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionResponseAttributes\n relationships?: Relationships\n meta: OfferingPricingOptionMeta\n}\n\nexport type OfferingPricingOptionMeta = {\n prices?: OfferingPricingOptionPrices\n price?: Price\n display_price?: DisplayPrice2\n active_pricing_option?: ActivePricingOption\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * The price of each plan within the offering that this pricing option may be applied to.\n */\nexport type OfferingPricingOptionPrices = {\n [key: string]: OfferingPricingOptionPriceForPlan\n}\n\nexport type OfferingPricingOptionPriceForPlan = {\n price?: Price\n display_price?: DisplayPrice2\n}\n\n/**\n * A list of feature IDs to attach to the offering. See [**List Features**](/docs/api/subscriptions/list-features).\n */\nexport type OfferingFeatureAttach = {\n features: Array<SubscriptionsUuid>\n}\n\nexport type OfferingUpdate = unknown & {\n id: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes?: OfferingUpdateAttributes\n relationships?: OfferingUpdateRelationships\n}\n\nexport type OfferingResponseAttributes = OfferingAttributes &\n SubscriptionsTimestamps\n\nexport type OfferingAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the offering.\n */\n name: string\n /**\n * The offering description to display to customers.\n */\n description?: string\n}\n\nexport type OfferingUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the offering.\n */\n name?: string\n /**\n * The offering description to display to customers.\n */\n description?: string | null\n}\n\nexport type OfferingRelationships = {\n proration_policy?: ProrationPolicyRelationshipAttributes\n}\n\nexport type OfferingUpdateRelationships = {\n proration_policy?: ProrationPolicyUpdateRelationshipAttributes\n}\n\n/**\n * A subscription may optionally be associated with an item in an order by supplying both the order ID and the ID of the item within that order.\n */\nexport type BuildSubscriptionOrder = {\n order_id: SubscriptionsUuid\n order_item_id: SubscriptionsUuid\n}\n\nexport type BuildSubscription = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering_external_ref?: ExternalRef\n offering_id?: SubscriptionsUuid\n plan_id?: SubscriptionsUuid\n pricing_option_id?: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: CreatePaymentAuthority\n manual_payments: ManualPayments\n name: string\n email: string\n /**\n * Whether a subscription is pending activation or not. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n pending?: boolean\n /**\n * Indicates that payment for the first billing period of the subscription has already been taken. As well as creating the subscription a settled invoice is created to cover the first period.\n */\n first_invoice_paid?: boolean\n /**\n * When importing an active subscription from an existing system you can specify the date and time of the start of the most recent period. This may only be supplied when `first_invoice_paid` is true. As well as creating the subscription a settled invoice is created to cover the correct billing period.\n */\n started_at?: string\n /**\n * Optional. May only be set when `started_at` is set. When supplied, overrides the default first billing period end (start + 1 interval). The first billing period runs from the subscription start date to this date. The subscriber is charged the standard period price for the first period. Subsequent billing periods start from this date. Must be after the subscription start date.\n */\n override_first_period_end_date?: string\n offering?: OfferingAttributes\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n plans?: Array<PlanAttributesAndSelectedMeta>\n pricing_options?: Array<PricingOptionAttributesAndSelectedMeta>\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociations\n selected_plan?: ExternalRef\n selected_pricing_option?: ExternalRef\n order?: BuildSubscriptionOrder\n meta?: SubscriptionMeta\n}\n\nexport type PricingOptionAttributesAndSelectedMeta = PricingOptionAttributes &\n SelectedMeta\n\nexport type PlanAttributesAndSelectedMeta = PlanAttributes &\n SelectedMeta &\n EmbeddedOfferingPlanExtraAttributes\n\nexport type EmbeddedOfferingPlanExtraAttributes = {\n custom_attributes?: PlanCustomAttributes\n}\n\nexport type SelectedMeta = {\n meta?: SelectedMetaAttributes\n}\n\nexport type SelectedMetaAttributes = {\n /**\n * One item must be selected for use in the subscription\n */\n selected?: boolean\n}\n\nexport type Subscription = {\n id?: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionAttributes\n relationships?: Relationships\n meta: SubscriptionMeta\n}\n\nexport type ManageSubscriptionPlans = {\n type: \"detach\"\n plans: Array<SubscriptionsUuid>\n}\n\nexport type SubscriptionUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionUpdateAttributes\n}\n\nexport type SubscriptionUpdateAttributes = {\n pricing_option_id?: string\n plan_id?: string\n address_id?: string | null\n payment_authority?: PaymentAuthority\n /**\n * The date and time a `pending` subscription goes live and becomes active. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n go_live_after?: string | null\n}\n\nexport type SubscriptionIncludes = {\n plans?: Array<OfferingPlan>\n pricing_options?: Array<OfferingPricingOption>\n}\n\nexport type SubscriptionMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionTimestamps\n status: Status\n state?: SubscriptionState\n manual_payments: ManualPayments\n /**\n * Indicates that the first billing period of this subscription was paid for outside of the subscriptions service.\n */\n first_invoice_prepaid: boolean\n /**\n * Whether a subscription is canceled or not.\n */\n canceled: boolean\n /**\n * Whether a subscription is paused or not.\n */\n paused: boolean\n /**\n * Whether a subscription is closed or not.\n */\n closed: boolean\n /**\n * Whether a subscription is suspended or not.\n */\n suspended: boolean\n /**\n * Whether a subscription is pending activation or not.\n */\n pending: boolean\n /**\n * The time when the subscription becomes eligible for a new invoice. The next invoice will be generated at the next billing run after this point.\n */\n invoice_after: string\n pending_price_change?: SubscriptionPriceChanges\n /**\n * A history of price updates that have been applied to this subscription.\n */\n price_update_history?: Array<SubscriptionPriceUpdateHistoryEntry>\n /**\n * The ID of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_id?: string\n /**\n * The amount of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_amount?: number\n /**\n * Who or what most recently paused this subscription, while it remains paused. Absent when the subscription has never been paused, or is not currently paused (cleared on resume). Only visible to merchandizer/store or organization-scoped callers.\n */\n paused_by?: \"subscriber\" | \"merchandizer\" | \"dunning\"\n}\n\nexport type SubscriptionTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a subscription was cancelled.\n */\n canceled_at?: string\n /**\n * The date and time a subscription was paused.\n */\n paused_at?: string\n /**\n * The date and time a subscription was resumed.\n */\n resumed_at?: string\n /**\n * The date and time a subscription will end.\n * - If the subscription offering pricing option end behavior is `close`, `end_date` is set to the billing period end date upon subscription creation.\n * - If the subscription offering pricing option end behavior is \"roll\": `end_date` is set to the billing period end date when the subscription is cancelled.\n *\n */\n end_date?: string\n /**\n * The date and time a subscription will go live and become active.\n */\n go_live_after?: string\n /**\n * The date and time a subscription was released from the pending state and made active.\n */\n go_live?: string\n}\n\nexport type SubscriptionAttributes = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering: Offering\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: PaymentAuthority\n}\n\nexport type ChangeState = {\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n}\n\nexport type SubscriptionStateAttributes = {\n action: SubscriptionStateAction\n /**\n * When `action` is `cancel`, if `true`, the subscription moves to `inactive` immediately with entitlements updated in this request,\n * and a `canceled` event is emitted (not `pending_cancel`). Omitted or `false` preserves end-of-period cancellation.\n * Subscribers may not set this to `true` and will receive a 403.\n *\n * Immediate cancellation does **not** trigger any sort of refund; those require separate API flows.\n *\n * Canceling a subscription that is still `pending` (has not reached its `go_live_after` date and has no invoices) is always immediate,\n * regardless of this flag's value, since there is no billing period in progress to defer to. Subscribers may cancel their own pending\n * subscription without needing to set this flag.\n *\n */\n cancel_immediately?: boolean\n}\n\n/**\n * This represents the type of resource object being returned. Always `subscription_state`.\n */\nexport type SubscriptionStateType = \"subscription_state\"\n\n/**\n * The subscription lifecycle is the states that a subscription can go through when a customer subscribes to a service or a plan.\n *\n * A subscription can have the following states; `canceled`, `paused`, or `resumed`.\n *\n * See [**Managing the subscription lifecycle**](/docs/api/subscriptions/subscriptions#managing-the-subscription-lifecycle).\n *\n */\nexport type SubscriptionStateAction = \"cancel\" | \"pause\" | \"resume\" | \"pending\"\n\nexport type StateMeta = {\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type SubscriptionState = {\n id?: SubscriptionsUuid\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n meta: StateMeta\n}\n\n/**\n * The kind of prospective subscription change being previewed. Only `plan_pricing_option_change`\n * exists today; this discriminator allows other proration triggers to be added later without a\n * breaking change.\n *\n */\nexport type ProrationPreviewTriggerType = \"plan_pricing_option_change\"\n\n/**\n * This represents the type of resource object being sent. Always `proration_preview_request`.\n */\nexport type ProrationPreviewRequestType = \"proration_preview_request\"\n\nexport type ProrationPreviewRequestAttributes = {\n trigger: ProrationPreviewTriggerType\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n}\n\nexport type ProrationPreviewRequest = {\n type: ProrationPreviewRequestType\n attributes: ProrationPreviewRequestAttributes\n}\n\n/**\n * This represents the type of resource object being returned. Always `proration_preview`.\n */\nexport type ProrationPreviewType = \"proration_preview\"\n\nexport type ProrationPreviewAttributes = {\n trigger: ProrationPreviewTriggerType\n /**\n * Whether submitting this prospective change would actually result in a proration.\n */\n would_prorate: boolean\n /**\n * Whether this change would result in a Proration Refund - a real refund issued against the\n * subscription's previous invoice payment because the unused-time credit exceeds the new pricing\n * option's cost. Set alongside `would_prorate: true` for this case; omitted otherwise.\n *\n */\n would_refund?: boolean | null\n /**\n * The amount that would be refunded as a Proration Refund, as a whole number of the currency's\n * smallest subdivision. Set only when `would_refund` is `true`.\n *\n */\n refund_amount?: number | null\n /**\n * Why a previewed change would not result in a proration if actually submitted. Returned alongside\n * `would_prorate: false`; this is not an error response. `negative_amount` is retained for backward\n * compatibility but is no longer returned - a negative-net change now either proceeds with a\n * Proration Refund (`would_refund: true`), is rejected as `refund_not_possible`, or is rejected as\n * `refund_disallowed_by_policy` when the applicable proration policy does not allow refunds.\n *\n */\n rejection_reason:\n | \"negative_amount\"\n | \"no_change\"\n | \"refund_not_possible\"\n | \"refund_disallowed_by_policy\"\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n billing_cost_before_proration?: number | null\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n refunded_cost_for_unused_pricing_option_period?: number | null\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n new_pricing_option_cost?: number | null\n proration_policy_id?: string | null\n /**\n * The date and time the proration would be applied.\n */\n prorated_at?: string | null\n /**\n * The subscription's new billing period end date, if the change would alter it (only set when the\n * current and prospective pricing options differ in billing interval type or frequency).\n *\n */\n billing_period_end_date_after_proration?: string | null\n /**\n * The end of the period being refunded for the current pricing option's unused time.\n */\n refund_period_end_date?: string | null\n}\n\nexport type ProrationPreview = {\n type: ProrationPreviewType\n attributes: ProrationPreviewAttributes\n}\n\n/**\n * When configured to true, no payment gateway is used and a pending payment is created. See [External Payments](/docs/api/subscriptions/invoices#external-payments).\n */\nexport type ManualPayments = boolean\n\nexport type PaymentAuthority = (\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type NullablePaymentAuthority =\n | ((\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n | null\n ) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n })\n | null\n\nexport type CreatePaymentAuthority = (\n | CreatePaymentAuthorityEpPayments\n | CreatePaymentAuthorityStripe\n | CreatePaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type CreatePaymentAuthorityAuthorizeNet = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"authorize_net\"\n /**\n * The customer's payment profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n payment_profile_id: string\n /**\n * The customer's profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n customer_profile_id: string\n}\n\nexport type CreatePaymentAuthorityEpPayments = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"elastic_path_payments_stripe\"\n /**\n * The unique identifier for a customer.\n */\n customer_id: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription.\n */\n card_id: string\n}\n\nexport type CreatePaymentAuthorityStripe = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"stripe_payment_intents\"\n /**\n * The unique identifier for a customer.\n */\n customer_id: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription.\n */\n card_id: string\n}\n\nexport type PaymentAuthorityAuthorizeNet = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"authorize_net\"\n /**\n * The customer's payment profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n payment_profile_id?: string\n /**\n * The customer's profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n customer_profile_id?: string\n}\n\nexport type PaymentAuthorityEpPayments = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"elastic_path_payments_stripe\"\n /**\n * The unique identifier for a customer.\n */\n customer_id?: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).\n */\n card_id?: string\n}\n\nexport type PaymentAuthorityStripe = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"stripe_payment_intents\"\n /**\n * The unique identifier for a customer.\n */\n customer_id?: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).\n */\n card_id?: string\n}\n\nexport type Import = {\n id?: SubscriptionsUuid\n type: SubscriptionImportType\n attributes: ImportAttributes\n meta: ImportMeta\n}\n\nexport type ImportAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n * - **pending** - Commerce has received the request but is currently busy processing other requests.\n * - **started** - Commerce has started processing the job.\n * - **success** - The job has successfully completed.\n * - **failed** - The job has failed.\n *\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type ImportMeta = {\n owner: OwnerMeta\n timestamps: JobTimestamps\n records: ImportRecords\n}\n\n/**\n * You can track the number of records imported to ensure the completeness, accuracy and integrity of the import. Uploaded shows the number of records ready to be imported into Subscriptions. However, this does not mean they are valid subscription objects, only that they have the correct type and their JSON format is properly formatted. Imported shows the number of records that have been both validated and successfully added to Subscriptions.\n */\nexport type ImportRecords = {\n uploaded: {\n /**\n * The total number of features uploaded.\n */\n subscription_feature: number\n /**\n * The total number of subscribers uploaded.\n */\n subscription_subscriber: number\n /**\n * The total number of offerings uploaded.\n */\n subscription_offering: number\n /**\n * The total number of subscriptions uploaded.\n */\n subscription: number\n }\n imported: {\n /**\n * The total number of features uploaded.\n */\n subscription_feature: number\n /**\n * The total number of subscribers imported.\n */\n subscription_subscriber: number\n /**\n * The total number of offerings imported.\n */\n subscription_offering: number\n /**\n * The total number of subscriptions imported.\n */\n subscription: number\n }\n}\n\nexport type Job = {\n id?: SubscriptionsUuid\n type: SubscriptionJobType\n attributes: JobResponseAttributes\n relationships?: Relationships\n meta: JobMeta\n}\n\nexport type JobMeta = {\n owner: OwnerMeta\n timestamps: JobTimestamps\n report?: JobReport\n}\n\n/**\n * You can track your Subscriptions billing, tax, and payment operations using reports.\n */\nexport type JobReport =\n | BillingRunReport\n | TaxRunReport\n | PaymentRunReport\n | NotificationRunReport\n | SubscriptionUpdateReport\n\nexport type BillingRunReport = {\n /**\n * The total number of invoices created that are ready for payment.\n */\n invoices_ready_for_payment: number\n /**\n * The total number of invoices created that need taxes to be applied before payment can be made.\n */\n invoices_tax_required: number\n /**\n * The total number of invoices that were scheduled but creation failed.\n */\n invoice_failures: number\n total_ready_for_payment: unknown & Price\n total_tax_required: unknown & Price\n}\n\nexport type TaxRunReport = {\n /**\n * The total number of invoices to which tax was successfully added.\n */\n invoices_updated: number\n /**\n * The total number of invoices to which tax could not be added.\n */\n invoice_failures: number\n}\n\nexport type PaymentRunReport = {\n /**\n * The total number of invoices for which payment was attempted.\n */\n total_payment_attempts: number\n /**\n * The number of failed payment attempts.\n */\n failed_payments: number\n total_collected: unknown & Price\n}\n\nexport type NotificationRunReport = {\n /**\n * The total number of notifications sent.\n */\n total_notifications_sent: number\n /**\n * The number of failed notifications.\n */\n failed_notifications: number\n}\n\nexport type SubscriptionUpdateReport = {\n /**\n * The total number of subscriptions updated.\n */\n subscriptions_updated: number\n /**\n * The total number of subscriptions that failed to be updated.\n */\n subscription_failures: number\n /**\n * The total number of subscriptions processed.\n */\n total_processed: number\n}\n\nexport type JobTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a job is started.\n */\n started_at?: string\n /**\n * The date and time a job finished.\n */\n finished_at?: string\n}\n\nexport type JobCreate = {\n type: SubscriptionJobType\n attributes: JobCreateAttributes\n}\n\nexport type JobResponseAttributes = JobCreateAttributes &\n JobAttributes &\n SubscriptionsTimestamps\n\n/**\n * The type of job. One of the following:\n * - `billing-run` - a billing run job.\n * - `payment-run` - a payment run job.\n * - `notification-run` - a notification run job.\n *\n */\nexport type ScheduleJobType = \"billing-run\" | \"payment-run\" | \"notification-run\"\n\nexport type JobCreateAttributes = (\n | BillingRunJobAttributes\n | TaxRunJobAttributes\n | PaymentRunJobAttributes\n | ImportJobAttributes\n | NotificationRunJobAttributes\n | SubscriptionUpdateRunJobAttributes\n) & {\n external_ref?: ExternalRef\n /**\n * The type of job. One of the following:\n * - `billing-run` - a billing run job.\n * - `tax-run` - a tax run job.\n * - `payment-run` - a payment run job.\n * - `import` - an import job.\n * - `notification-run` - a notification run job.\n * - `subscription-update` - a subscription update run job.\n *\n */\n job_type:\n | \"billing-run\"\n | \"tax-run\"\n | \"payment-run\"\n | \"import\"\n | \"notification-run\"\n | \"subscription-update\"\n}\n\nexport type BillingRunJobAttributes = {\n job_type: string\n}\n\nexport type TaxRunJobAttributes = {\n job_type: string\n taxes?: Array<InvoiceTaxItems>\n}\n\nexport type PaymentRunJobAttributes = {\n job_type: string\n}\n\nexport type ImportJobAttributes = {\n job_type: string\n}\n\nexport type NotificationRunJobAttributes = {\n job_type: string\n}\n\nexport type SubscriptionUpdateRunJobAttributes = {\n job_type: string\n /**\n * The ID of the offering whose subscriptions should be updated. Mutually exclusive with `subscription_ids`.\n *\n */\n offering_id?: string\n /**\n * Subscriptions to exclude from the price update. Only valid when `offering_id` is provided.\n *\n */\n excluded_subscription_ids?: Array<SubscriptionsUuid>\n /**\n * Specific subscriptions to update. Mutually exclusive with `offering_id`.\n *\n */\n subscription_ids?: Array<SubscriptionsUuid>\n price_changes: SubscriptionPriceChanges\n}\n\nexport type SubscriptionPriceChanges = {\n plan_prices?: unknown\n pricing_option_prices?: unknown\n}\n\n/**\n * A record of the previous prices of a subscription before a price change was applied\n */\nexport type SubscriptionPriceUpdateHistoryEntry = {\n price_changes: SubscriptionPriceChanges\n /**\n * The date and time when the prices were changed (when these previous prices stopped being active)\n */\n valid_until: string\n}\n\nexport type PricingOptionPrice = {\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number\n fixed_price?: Price\n}\n\nexport type JobAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type InvoiceTaxItems = {\n invoice_id: SubscriptionsUuid\n tax_items: Array<TaxItem>\n}\n\nexport type TaxItem = {\n /**\n * This represents the type of resource object being returned. Always `tax_item`.\n */\n type: \"tax_item\"\n /**\n * The name that appears on your customer's invoice and usually describes the specific type of tax, for example, `Sales`, `VAT` or `GST`.\n */\n name?: string\n /**\n * The unique identifier assigned to goods and services for taxation purposes.\n */\n code?: string\n /**\n * The tax rate is the percentage of the subscription amount that is required to be paid as tax.\n */\n rate: number\n /**\n * The geographic area or political entity that has authority to levy and collect taxes.\n */\n jurisdiction?: string\n}\n\n/**\n * A notification scheduled for an invoice.\n */\nexport type InvoiceNotification = {\n /**\n * The name of the notification schedule that generated this notification.\n */\n name: string\n /**\n * The date and time when the notification is due to be sent.\n */\n due: string\n /**\n * The date and time when the notification was sent.\n */\n sent_at?: string\n}\n\nexport type SubscriptionInvoice = {\n id?: SubscriptionsUuid\n type: SubscriptionInvoiceType\n attributes: SubscriptionInvoiceAttributes\n relationships?: Relationships\n meta: SubscriptionInvoiceMeta\n}\n\nexport type UpdateInvoicePayment = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: UpdateInvoicePaymentAttributes\n}\n\nexport type UpdateInvoicePaymentAttributes = {\n /**\n * Whether the payment was successful.\n */\n success: boolean\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_payment_id?: string\n /**\n * A message generated by an external payment method that describes why a payment fails.\n */\n failure_detail?: string\n /**\n * The date and time the invoice payment was taken at.\n */\n payment_taken_at?: string\n}\n\nexport type SubscriptionInvoicePayment = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: SubscriptionInvoicePaymentAttributes\n meta: SubscriptionInvoicePaymentMeta\n}\n\nexport type SubscriptionInvoiceMeta = {\n owner: OwnerMeta\n subscription_id?: SubscriptionsUuid\n subscriber_id?: SubscriptionsUuid\n price?: SingleCurrencyPrice\n /**\n * Invoice totals formatted for display (`with_tax`, `without_tax`, `tax`). Amounts are in the\n * currency's smallest subdivision.\n *\n */\n display_price: DisplayPrice2\n /**\n * A list of notifications scheduled for this invoice. These are derived from the notification\n * schedules configured on the pricing option at the time the invoice was created. Each notification\n * has a due date calculated relative to the billing period end date.\n *\n */\n notifications?: Array<InvoiceNotification>\n timestamps: InvoiceTimestamps\n proration_events: Array<ProrationEvent> | null\n /**\n * The pro-rated remaining value for the billing period\n */\n pro_rata_remaining_value: number\n}\n\nexport type ProrationEvent = {\n proration_policy_id: SubscriptionsUuid\n /**\n * The value as a whole number of the currency's smallest subdivision\n */\n billing_cost_before_proration: number\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n refunded_amount_for_unused_pricing_option: number\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n new_pricing_option_cost: number\n /**\n * The date and time the subscription was prorated.\n */\n prorated_at: string\n}\n\nexport type SubscriptionInvoicePaymentRefund = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentRefundType\n attributes: SubscriptionInvoicePaymentRefundAttributes\n relationships: Relationships\n}\n\nexport type SubscriptionInvoicePaymentRefundAttributes = {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * The reason or note for the refund\n */\n reason: string\n /**\n * Specifies the payment gateway.\n */\n gateway: string\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_refund_id: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type CreateInvoicePaymentRefund = {\n type: SubscriptionInvoicePaymentRefundType\n attributes: {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * The reason or note for the refund\n */\n reason: string\n }\n}\n\nexport type InvoiceTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time taxes were added to an invoice.\n */\n taxes_added_at?: string\n}\n\nexport type SubscriptionInvoicePaymentMeta = {\n owner: OwnerMeta\n subscription_id: SubscriptionsUuid\n invoice_id: SubscriptionsUuid\n job_id: SubscriptionsUuid\n timestamps: InvoicePaymentTimestamps\n /**\n * Whether manual payments are enabled or the payment will be handled by the configured gateway.\n */\n manual_payment: boolean\n}\n\nexport type InvoicePaymentTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a payment was taken.\n */\n payment_taken_at?: string\n}\n\nexport type SubscriptionInvoiceAttributes = {\n billing_period: TimePeriod\n invoice_items: Array<SubscriptionInvoiceItem>\n tax_items?: Array<TaxItem>\n /**\n * The invoice still requires payment if `true`.\n */\n outstanding: boolean\n /**\n * A sequential number assigned by the billing run.\n */\n number?: number\n /**\n * Whether tax is required for this invoice.\n */\n tax_required: boolean\n /**\n * Whether the limit of payment retries has been reached.\n */\n payment_retries_limit_reached: boolean\n /**\n * The date and time an invoice was updated.\n */\n updated_at?: string\n /**\n * The date and time an invoice was created.\n */\n created_at?: string\n /**\n * Whether the invoice is a Pro Forma invoice (generated ahead of payment) or not.\n *\n * Pro Forma Invoices are created ahead of payment time (for example, a week in advance of payment so\n * you can notify customers) and will not be picked up by a payment run until on or after their valid_from\n * date.\n *\n */\n pro_forma: boolean\n /**\n * The date and time at which an invoice will be valid from.\n *\n * If generated with no lead time then the invoice will be valid immediately.\n *\n * If generated with a lead time, then the valid_from will be the data at which the Invoice transitions from\n * it's Pro Forma state to one that can have payment taken.\n *\n */\n valid_from?: string\n /**\n * Whether there is a manual pending payment pending on the invoice.\n */\n manual_payment_pending: boolean\n}\n\nexport type SubscriptionInvoicePaymentAttributes = {\n /**\n * Whether the payment was successful.\n */\n success: boolean\n /**\n * Whether the payment is pending (only for manual payments).\n */\n pending?: boolean\n /**\n * Specifies the payment gateway.\n */\n gateway: string\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_payment_id?: string\n failure_detail?: PaymentFailureDetail\n amount: SingleCurrencyPrice\n}\n\n/**\n * The reason the payment failed.\n */\nexport type PaymentFailureDetail = {\n reason?: string\n}\n\nexport type SubscriptionInvoiceItem = {\n /**\n * A description of the subscribed item.\n */\n description: string\n price: SingleCurrencyPrice\n plan_id?: SubscriptionsUuid\n /**\n * The start date and time of the billing period in this price\n */\n from_time_period?: string\n /**\n * The end date and time of the billing period in this price\n */\n until_time_period?: string\n}\n\n/**\n * The three-letter [**ISO currency code**](https://www.iso.org/iso-4217-currency-codes.html) in uppercase.\n */\nexport type CurrencyIdentifier = string\n\n/**\n * The owner of a resource, either `store` or `organization`.\n */\nexport type OwnerMeta = string\n\n/**\n * The offerings plan external_ref value\n */\nexport type OfferingPlanExternalRefMeta = string\n\nexport type Subscriber = {\n id?: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberResponseAttributes\n meta: SubscriberMeta\n}\n\nexport type SubscriberMeta = {\n /**\n * A list of entitlement tags currently active for the subscriber\n */\n feature_entitlements?: Array<FeatureTag>\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriptionSubscriberType = \"subscription_subscriber\"\n\nexport type SubscriberResponseAttributes = SubscriberAttributes &\n SubscriptionsTimestamps\n\nexport type SubscriberAttributes = {\n account_id: SubscriptionsUuid\n /**\n * The name of the subscriber.\n */\n name: string\n /**\n * The email of the subscriber.\n */\n email: string\n payment_authority?: PaymentAuthority\n}\n\nexport type SubscriberUpdateAttributes = {\n /**\n * The name of the subscriber.\n */\n name?: string\n /**\n * The email of the subscriber.\n */\n email?: string\n payment_authority?: NullablePaymentAuthority\n}\n\nexport type SubscriberCreate = {\n type: SubscriptionSubscriberType\n attributes: SubscriberAttributes\n}\n\nexport type SubscriberUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberUpdateAttributes\n}\n\nexport type ScheduleCreate = {\n type: SubscriptionScheduleType\n attributes: ScheduleAttributes\n}\n\nexport type Schedule2 = {\n id?: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleResponseAttributes\n meta: ScheduleMeta\n}\n\nexport type ScheduleMeta = {\n scheduled_for?: string\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriptionScheduleType = \"subscription_schedule\"\n\nexport type ScheduleResponseAttributes = ScheduleAttributes &\n SubscriptionsTimestamps\n\nexport type ScheduleAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the schedule.\n */\n name?: string\n /**\n * A cron-style specification of when the jobs should be created. See [**Schedules**](/docs/api/subscriptions/schedules).\n */\n specification: string\n /**\n * The location of the time zone that the schedule operates in. Subscriptions runs on Coordinated Universal Time (UTC) time and conforms to [**RFC 3339**](https://www.rfc-editor.org/rfc/rfc3339).\n */\n location: string\n job: ScheduleJob\n}\n\nexport type ScheduleUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the schedule.\n */\n name?: string | null\n /**\n * A cron-style specification of when the jobs should be created.\n */\n specification?: string\n /**\n * The location of the time zone that the schedule operates in.\n */\n location?: string\n job?: ScheduleJob\n}\n\nexport type ScheduleJob = {\n job_type: ScheduleJobType\n}\n\nexport type ScheduleUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleUpdateAttributes\n}\n\n/**\n * Configuration of the lead time to generate an invoice ahead of time in a pro-forma state\n */\nexport type LeadTime = {\n /**\n * The unit of time that lead time is measured in.\n */\n type: \"day\" | \"week\"\n /**\n * The lead time to generate an invoice ahead of time in a pro-forma state\n */\n time: number\n}\n\n/**\n * Configuration of the lead time to generate an invoice ahead of time in a pro-forma state\n */\nexport type NullableLeadTime = {\n /**\n * The unit of time that lead time is measured in.\n */\n type: \"day\" | \"week\"\n /**\n * The lead time to generate an invoice ahead of time in a pro-forma state\n */\n time: number\n} | null\n\nexport type NotificationSchedule = {\n /**\n * The name of the schedule.\n */\n name: string\n /**\n * The unit of time that the schedule is measured in.\n */\n unit: \"day\" | \"week\" | \"month\"\n /**\n * The number of units between each notification.\n */\n amount: number\n}\n\nexport type SubscriptionsTimestamps = {\n /**\n * The date and time a resource was updated.\n */\n updated_at: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\n/**\n * The subscription resource that is related.\n */\nexport type SubscriptionsSingleRelationship = {\n data?: RelationshipData\n links?: RelationshipLinks\n}\n\nexport type SubscriptionsErrorResponse = {\n errors: Array<SubscriptionsError>\n}\n\nexport type SubscriptionsError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\n/**\n * The unique identifier.\n */\nexport type SubscriptionsUuid = string\n\nexport type StockType = \"stock\"\n\nexport type StockTransactionType = \"stock-transaction\"\n\nexport type MultipleProducts = {\n type?: \"stock\"\n /**\n * The unique identifier of the product.\n */\n id: string\n}\n\nexport type TransactionResponseAttributes = {\n /**\n * The type of action performed by this transaction.\n *\n * - **increment** - use this when you want to make products available for purchase, for example, when you have received stock from a supplier.\n *\n * - **decrement** - Use this when you want to remove stock from product inventory.\n *\n * - **allocate** - Use this when you want to allocate stock, normally to a reseller who sells on the stock.\n *\n * - **deallocate** - Use this when you want to deallocate any previously allocated stock.\n *\n */\n action: \"increment\" | \"decrement\" | \"allocate\" | \"deallocate\"\n product_id: InventoriesUuid\n /**\n * The amount of stock affected by the stock transaction.\n */\n quantity: number\n /**\n * The slug of the location that the transaction should act on.\n */\n location?: string\n}\n\nexport type StockCreate = {\n id?: InventoriesUuid\n type: StockType\n attributes: StockCreateAttributes\n}\n\nexport type StockUpdateRequest = {\n id: InventoriesUuid\n type: StockType\n attributes: StockUpdateAttributes\n}\n\nexport type StockUpdateAttributes = {\n locations?: NullableLocations\n}\n\nexport type NullableLocation = {\n available: number\n} | null\n\nexport type NullableLocations = {\n [key: string]: NullableLocation\n}\n\nexport type StockCreateAttributes = {\n available?: number\n locations?: {\n [key: string]: {\n available: number\n }\n }\n}\n\nexport type StockResponse = {\n id: InventoriesUuid\n type: StockType\n attributes: StockResponseAttributes\n meta: StockMeta\n}\n\nexport type StockResponseAttributes = {\n available: number\n allocated: number\n total: number\n locations?: StockLocations\n}\n\nexport type StockLocations = {\n [key: string]: {\n available: number\n allocated: number\n total: number\n }\n}\n\nexport type TransactionCreate = {\n type: StockTransactionType\n attributes: TransactionCreateAttributes\n}\n\nexport type TransactionCreateAttributes = {\n product_id?: InventoriesUuid\n /**\n * The type of action being performed by this transaction.\n *\n * - **increment** - use this when you want to make products available for purchase, for example, when you have received stock from a supplier.\n *\n * - **decrement** - Use this when you want to remove stock from product inventory.\n *\n * - **allocate** - Use this when you want to allocate stock, normally to a reseller who sells on the stock.\n *\n * - **deallocate** - Use this when you want to deallocate any previously allocated stock.\n *\n * - **set** - Use this when you want to set total stock to a specific value.\n *\n */\n action: \"increment\" | \"decrement\" | \"allocate\" | \"deallocate\" | \"set\"\n /**\n * The amount of stock affected by the stock transaction.\n */\n quantity: number\n /**\n * The slug of the location that the transaction should act on.\n */\n location?: string\n}\n\nexport type Location = {\n id: InventoriesUuid\n type: InventoryLocationType\n attributes: LocationAttributes\n meta?: Meta\n}\n\nexport type LocationAttributes = {\n name: string\n external_ref?: string\n slug: string\n description?: string\n address?: Array<string>\n geolocation?: GeolocationDetails\n}\n\nexport type LocationUpdateAttributes = {\n name?: string\n external_ref?: string | null\n slug?: string\n description?: string | null\n address?: Array<string | null> | null\n geolocation?: GeolocationDetails\n}\n\n/**\n * The longitude and latitude of a location.\n */\nexport type GeolocationDetails = {\n lat: number\n lon: number\n} | null\n\nexport type LocationRequest = {\n type?: InventoryLocationType\n attributes: LocationAttributes\n}\n\nexport type LocationUpdateRequest = {\n id: InventoriesUuid\n type: InventoryLocationType\n attributes: LocationUpdateAttributes\n}\n\nexport type InventoryLocationType = \"inventory_location\"\n\nexport type StockMeta = {\n stock_id: InventoriesUuid\n timestamps: InventoriesTimestamps\n}\n\nexport type Meta = {\n timestamps: InventoriesTimestamps\n}\n\nexport type InventoriesImportType = \"inventories_import\"\n\nexport type InventoriesImportError = {\n id: InventoriesUuid\n type: InventoriesImportErrorType\n meta: InventoriesImportErrorMeta\n}\n\nexport type InventoriesImportErrorType = \"inventories_import_error\"\n\nexport type InventoriesImportErrorMeta = {\n timestamps: InventoriesTimestamps\n error: string\n field: string\n /**\n * The line in the imported JSONL file at which the validation error occurred. Starts from 1.\n */\n line_number: number\n external_ref?: ExternalRef\n}\n\nexport type InventoriesTransactionResponse = {\n id: InventoriesUuid\n type: StockTransactionType\n attributes: TransactionResponseAttributes\n meta?: Meta\n}\n\n/**\n * The unique identifier.\n */\nexport type InventoriesUuid = string\n\nexport type InventoriesTimestamps = {\n /**\n * The date and time a resource was updated.\n */\n updated_at?: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type InventoriesErrorResponse = {\n errors: Array<InventoriesError>\n}\n\nexport type InventoriesError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type InventoriesImport = {\n id: InventoriesUuid\n type: InventoriesImportType\n attributes: InventoriesImportAttributes\n meta: InventoriesImportMeta\n}\n\nexport type InventoriesImportAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n * - **pending** - Commerce has received the request but is currently busy processing other requests.\n * - **started** - Commerce has started processing the job.\n * - **success** - The job has successfully completed.\n * - **failed** - The job has failed.\n *\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type InventoriesImportMeta = {\n timestamps: InventoriesJobTimestamps\n records: InventoriesImportRecords\n}\n\n/**\n * You can track the number of records imported to ensure the completeness, accuracy and integrity of the import. Uploaded shows the number of records ready to be imported. However, this does not mean they are valid objects, only that they have the correct type and their JSON format is properly formatted. Imported shows the number of records that have been both validated and successfully added.\n */\nexport type InventoriesImportRecords = {\n uploaded: {\n /**\n * The total number of product transactions uploaded.\n */\n stock: number\n }\n imported: {\n /**\n * The total number of product transactions uploaded.\n */\n stock: number\n }\n}\n\nexport type InventoriesJobTimestamps = InventoriesTimestamps & {\n /**\n * The date and time a job is started.\n */\n started_at?: string\n /**\n * The date and time a job finished.\n */\n finished_at?: string\n}\n\nexport type AccessTokenRequest = {\n /**\n * The grant type, choices are `client_credentials` or `implicit`\n */\n grant_type: string\n /**\n * Your `client_id`\n */\n client_id: string\n /**\n * Your `client_secret`. Only required for client credentials.\n */\n client_secret?: string\n}\n\nexport type AccessTokenResponse = {\n /**\n * The access token you use to authenticate requests to the API.\n */\n access_token?: string\n /**\n * Right now this is only `Bearer`.\n */\n token_type?: string\n /**\n * The type of token requested. This can be a `client_credentials` or `implicit`.\n */\n identifier?: string\n /**\n * The duration in seconds after which the token expires.\n */\n expires_in?: number\n /**\n * The epoch time that this token expires at.\n */\n expires?: number\n}\n\nexport type ErrorResponse2 = {\n errors: Array<Error2>\n}\n\nexport type Error2 = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type PaginationPage = {\n /**\n * The maximum number of records per page.\n */\n limit?: number\n /**\n * The current offset by number of records.\n */\n offset?: number\n /**\n * The current page number.\n */\n current?: number\n /**\n * The total number of pages.\n */\n total?: number\n}\n\nexport type PaginationResults = {\n /**\n * The total number of results.\n */\n total?: number\n /**\n * The method used to calculate the total. `exact` means the precise count is known, `lower_bound` means the count is at least this value, `observed` means the count is estimated from observations.\n */\n total_method?: \"exact\" | \"lower_bound\" | \"observed\"\n}\n\nexport type PaginationMeta = {\n page?: PaginationPage\n results?: PaginationResults\n}\n\nexport type PaginationLinks = {\n /**\n * The URL to the current page.\n */\n current?: string\n /**\n * The URL to the first page.\n */\n first?: string\n /**\n * The URL to the last page. May be null if the total is unknown.\n */\n last?: string | null\n /**\n * The URL to the next page. Null if on the last page.\n */\n next?: string | null\n /**\n * The URL to the previous page. Null if on the first page.\n */\n prev?: string | null\n}\n\nexport type Address = {\n /**\n * Specifies the type of object. Set this value to `address`.\n */\n type?: \"address\"\n /**\n * The first name of the recipient on this address.\n */\n first_name?: string\n /**\n * The last name of the recipient on this address.\n */\n last_name?: string\n /**\n * The name for the address saved, such as `home`, `work` or `wife’s office`.\n */\n name?: string\n /**\n * A phone number for this address.\n */\n phone_number?: string\n /**\n * Any delivery instructions for this address.\n */\n instructions?: string\n /**\n * The company name at this address.\n */\n company_name?: string\n /**\n * The first portion of the address, usually the street address.\n */\n line_1?: string\n /**\n * The second portion of the address, usually an apartment or unit number.\n */\n line_2?: string\n /**\n * The city for this address.\n */\n city?: string\n /**\n * The county for this address.\n */\n county?: string\n /**\n * The state, province, territory, etc. for this address.\n */\n region?: string\n /**\n * The ZIP Code, Postcode, or other postal reference string for this delivery address.\n */\n postcode?: string\n /**\n * A two digit code for the country this address is in, expressed as per the ISO 3166-2 standard.\n */\n country?: string\n}\n\nexport type AddressResponse = Address & {\n /**\n * The unique identifier for an Address.\n */\n id?: string\n meta?: AccountAddressesMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountAddressResponse = AddressResponse & {\n relationships?: {\n account?: {\n /**\n * The ID of the account.\n */\n id?: string\n /**\n * The type of object being returned.\n */\n type?: string\n }\n }\n}\n\nexport type AccountAddressesMetaTimestamps = {\n timestamps?: {\n /**\n * The date the address is created.\n */\n created_at?: string\n /**\n * The date the address is updated.\n */\n updated_at?: string\n }\n}\n\nexport type AccountAddressesError = {\n /**\n * The HTTP response code of the error.\n */\n status?: number\n /**\n * A brief summary of the error.\n */\n title?: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Optional field indicating the source of the error.\n */\n source?: string\n}\n\nexport type AccountAddressesErrorResponse = {\n errors: Array<AccountAddressesError>\n}\n\nexport type Account = {\n /**\n * Specifies the type of object. Set this value to `account`.\n */\n type: \"account\"\n /**\n * Specifies the name of the account.\n */\n name: string\n /**\n * Specifies the legal name of the account.\n */\n legal_name?: string | null\n /**\n * Specifies the registration ID. If specified, this field is checked for uniqueness.\n */\n registration_id?: string | null\n /**\n * The unique attribute associated with the account. For example, this could be an external reference from a separate company system. The maximum length is 2048 characters. Default is `null`.\n */\n external_ref?: string | null\n}\n\nexport type ReadOnlyParentId = {\n /**\n * Specifies the ID of the parent account.\n */\n readonly parent_id?: string | null\n}\n\n/**\n * The unique identifier.\n */\nexport type Uuid = string\n\nexport type AccountResponse = Account &\n ReadOnlyParentId & {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n /**\n * Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.\n */\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n /**\n * Tags associated with the account.\n */\n account_tags?: {\n data?: Array<{\n /**\n * The unique identifier for an Account Tag.\n */\n id?: Uuid\n type?: \"account_tag\"\n }>\n }\n ancestors?: Array<{\n data?: {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n type?: \"account\"\n }\n }>\n parent?: {\n data?: {\n type?: \"account\"\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n }\n }\n }\n }\n\nexport type MetaListPage = {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100.\n */\n limit?: number\n /**\n * The current page.\n */\n current?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based.\n */\n offset?: number\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type MetaListResults = {\n /**\n * The total number of results after applying filters, if any, or all results.\n */\n total?: number\n}\n\nexport type MetaList = {\n page?: MetaListPage\n results?: MetaListResults\n}\n\nexport type WritableParentId = {\n /**\n * Specifies the ID of the parent account, this field cannot be changed after creation.\n */\n parent_id?: string | null\n}\n\nexport type AccountTagsRelationshipIdentifier = {\n /**\n * The unique identifier for the related Account Tag.\n */\n id?: string\n /**\n * Specifies the type of the resource object.\n */\n type?: \"account_tag\"\n}\n\nexport type AccountTagsRelationshipResponse = {\n data?: Array<AccountTagsRelationshipIdentifier>\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AddAccountTagsOnAccount = {\n data?: Array<AccountTagsRelationshipIdentifier>\n}\n\nexport type RemoveAccountTagsOnAccount = {\n data?: Array<AccountTagsRelationshipIdentifier>\n}\n\nexport type AccountMember = {\n /**\n * The unique identifier for the account member.\n */\n id?: string\n /**\n * The type of the object that is returned.\n */\n type?: \"account_member\"\n /**\n * The name of the account member.\n */\n name?: string\n /**\n * The given name of the account member. This field is optional and not computed or extracted from the name field.\n */\n given_name?: string | null\n /**\n * The middle name of the account member. This field is optional and not computed or extracted from the name field.\n */\n middle_name?: string | null\n /**\n * The family name of the account member. This field is optional and not computed or extracted from the name field.\n */\n family_name?: string | null\n /**\n * The email address of the account member.\n */\n email?: string\n}\n\nexport type AccountMemberResponse = AccountMember & {\n meta?: AccountManagementMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembershipResponse = {\n /**\n * Represents the unique identifier for the account membership.\n */\n id?: string\n /**\n * Represents the type of the object returned.\n */\n type?: \"account_membership\"\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n account_member?: {\n data?: {\n /**\n * Specifies the ID of the account member.\n */\n id?: string\n /**\n * Specifies the type of the account member.\n */\n type?: \"account_member\"\n }\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembership = {\n /**\n * Specifies the unique identifier of the account member that the membership is associated with.\n */\n account_member_id?: string\n /**\n * Specifies the type of the object. Set this value to `account_membership`.\n */\n type?: \"account_membership\"\n}\n\nexport type AccountMembershipResponseUsingAccountMemberId = {\n /**\n * Represents the unique identifier for the account membership.\n */\n id?: string\n /**\n * Represents the type of the object returned.\n */\n type?: \"account_membership\"\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n account?: {\n data?: {\n /**\n * Specifies the ID of the account.\n */\n id?: string\n /**\n * Specifies the type of the Account.\n */\n type?: \"account\"\n }\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembershipSettings = {\n data?: {\n /**\n * Specifies the type of object. Set this value to `account_membership_setting`.\n */\n type?: \"account_membership_setting\"\n /**\n * The number of accounts an account member can be associated with. You can set this value to any number up to 10,000.\n */\n membership_limit?: number\n }\n}\n\nexport type AccountAuthenticationSettings = {\n /**\n * Specifies the type of object. Set this value to `account_authentication_settings`.\n */\n type?: \"account_authentication_settings\"\n /**\n * Set to `true` to enable self signup.\n */\n enable_self_signup?: boolean\n /**\n * This will automatically create an account for each new account member, using the account member’s name as the account name.\n */\n auto_create_account_for_account_members?: boolean\n /**\n * Whether a user with an [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens) can update their own account member details. By default, this is `disabled`. Set to `update_only` if you want the user to be able to update their own account member details (e.g., name, email, and if applicable their username and password). The user can update their own account member details by updating their [User Authentication Info](/docs/authentication/single-sign-on/user-authentication-info-api/update-a-user-authentication-info) using the `account_member_id` retrieved from the `meta` in the response of [Generating an Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens) as the `id` and find the authentication credentials to update by calling the [Get All User Authentication Password Profile Info](/docs/authentication/single-sign-on/user-authentication-password-profiles-api/get-all-user-authentication-password-profile-info) endpoint.\n */\n account_member_self_management?: \"disabled\" | \"update_only\"\n /**\n * The expiry time for Account Management Authentication Token in seconds. If you want to implement idle timout for you application, see [Implementing Idle Timeout](/guides/How-To/Accounts/implement-idle-timeout)\n */\n account_management_authentication_token_timeout_secs?: number\n}\n\nexport type AccountAuthenticationSettingsResponse = {\n data?: AccountAuthenticationSettings & {\n id?: Uuid\n relationships?: {\n authentication_realm?: {\n data?: {\n /**\n * The ID of the authentication realm entity.\n */\n id?: string\n /**\n * The type of the authentication realm entity.\n */\n type?: \"authentication_realm\"\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n }\n }\n meta?: {\n /**\n * The client ID to be used in Single Sign On authentication flows for accounts.\n */\n client_id?: string\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountManagementAuthenticationToken = {\n /**\n * Specifies the type of the object. You must use `account_management_authentication_token`.\n */\n type?: \"account_management_authentication_token\"\n}\n\nexport type OpenIdConnectRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `oidc`.\n */\n authentication_mechanism: \"oidc\"\n /**\n * Specifies the code returned from the OpenID Connect Provider authentication.\n */\n oauth_authorization_code: string\n /**\n * Specifies the URL of the front-end that handles the callback of the token.\n */\n oauth_redirect_uri: string\n /**\n * Specifies the Proof Key for Code Exchange (PKCE) code verifier corresponding to the code challenge supplied to the authorization endpoint. For more information about code verifier and challenge, see Generating a [Code Verifier and Challenge](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/get-single-sign-on-customer-token#generate-proof-key-for-code-exchange-pkce-parameters).\n */\n oauth_code_verifier: string\n}\n\nexport type PasswordRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `password`.\n */\n authentication_mechanism: \"password\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The password.\n */\n password: string\n}\n\nexport type PasswordlessRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `passwordless`.\n */\n authentication_mechanism: \"passwordless\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The one-time password token.\n */\n one_time_password_token: string\n}\n\nexport type SelfSignupRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `self_signup`.\n */\n authentication_mechanism: \"self_signup\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The password.\n */\n password: string\n /**\n * The name.\n */\n name: string\n /**\n * The given name for the user.\n */\n given_name?: string | null\n /**\n * The middle name for the user.\n */\n middle_name?: string | null\n /**\n * The family name for the user.\n */\n family_name?: string | null\n /**\n * The email.\n */\n email: string\n}\n\nexport type SwitchingAccountRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `account_management_authentication_token`.\n */\n authentication_mechanism: \"account_management_authentication_token\"\n}\n\nexport type AccountManagementAuthenticationTokenResponse = {\n /**\n * Specifies the type of the object.\n */\n type?: \"account_management_authentication_token\"\n /**\n * The name of the account that this token grants access to.\n */\n account_name?: string\n /**\n * The ID of the account that this token grants access to.\n */\n account_id?: string\n /**\n * The JWT authentication token that the shopper uses as the `EP-Account-Management-Authentication-Token` header [in all other endpoints](https://elasticpath.dev/docs/commerce-cloud/authentication/tokens/account-management-authentication-token).\n */\n token?: string\n /**\n * The epoch time that this token expires at. The time is set to 24 hours after the token is generated.\n */\n expires?: string\n}\n\nexport type MetaAccountMemberId = {\n /**\n * The unique identifier for the Account Member that authenticated. This is useful if `account_member_self_management` is enabled in [Account Authentication Settings](/docs/api/accounts/get-v-2-settings-account-authentication), so that the user can update details for their account.\n */\n account_member_id?: string\n}\n\nexport type AccountTag = {\n /**\n * Specifies the type of the resource object, use `account_tag` for Account Tags.\n */\n type?: \"account_tag\"\n /**\n * Specifies the name of the account tag.\n */\n name?: string\n /**\n * Describes the account tag.\n */\n description?: string\n}\n\nexport type AccountTagResponse = AccountTag & {\n /**\n * The unique identifier for the account tag.\n */\n id?: Uuid\n /**\n * Additional information for this resource.\n */\n meta?: AccountManagementMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountManagementMetaTimestamps = {\n timestamps?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n }\n}\n\nexport type AccountManagementError = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type AccountManagementErrorResponse = {\n errors: Array<AccountManagementError>\n}\n\nexport type AuthenticationRealm = {\n /**\n * Specifies the type of object. Set this value to `authentication-realm`.\n */\n type: \"authentication-realm\"\n /**\n * Specifies the name of the authentication realm.\n */\n name: string\n /**\n * The values permitted for this parameter are, `allowed` or `api_only`. In Single Sign On (SSO) each user in the Identity Provider (IdP) has a unique identifier, but different IdPs might differ in whether distinct users can share the same email address. For the `allowed` setting, when a user with a new unique identifier signs in through SSO for the first time, the system creates a new user. However, for the `api_only` setting, the system assigns the new unique identifier to the existing user in the system, in this case both the old and new unique identifier from the IdP points to the same user in Commerce. The `api_only` setting is recommended only when all configured identity providers treat e-mail address as a unique identifier for the user, otherwise a user might get access to another user’s account and data. Thus the `api_only` value can simplify administration of users.\n */\n duplicate_email_policy?: \"allowed\" | \"disallowed\" | \"api_only\"\n /**\n * An array of Storefront URIs that can start Single Sign On authentication. These URIs must follow the rules for [redirection endpoints in OAuth 2.0.](https://tools.ietf.org/html/rfc6749#section-3.1.2) All URIs must start with https:// except for http://localhost.\n */\n redirect_uris?: Array<string>\n /**\n * Specifies the relationships for this authentication realm.\n */\n relationships?: {\n origin?: {\n data?: {\n /**\n * The ID of the origin entity.\n */\n id?: string\n /**\n * The type of the origin entity.\n */\n type?:\n | \"customer-authentication-settings\"\n | \"merchant-realm-mappings\"\n | \"account_authentication_settings\"\n }\n }\n }\n}\n\nexport type AuthenticationRealmResponse = AuthenticationRealm & {\n /**\n * The unique identifier for an Authentication Realm.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this realm.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type OidcProfile = {\n /**\n * Specifies the type of object. Set this value to `oidc-profile`.\n */\n type: \"oidc-profile\"\n /**\n * Specifies the name of the OIDC profile.\n */\n name: string\n /**\n * The OIDC discovery URL.\n */\n discovery_url?: string\n /**\n * The client ID for the OpenID Provider.\n */\n client_id?: string\n /**\n * The client secret for the OpenID Provider.\n */\n client_secret?: string\n}\n\nexport type OidcProfileResponse = OidcProfile & {\n /**\n * The unique identifier for an OIDC Profile.\n */\n id?: AuthenticationRealmsUuid\n meta?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n /**\n * The OIDC issuer URL.\n */\n issuer?: string\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n /**\n * The authorization endpoint URL.\n */\n \"authorization-endpoint\"?: string\n /**\n * The callback endpoint URL.\n */\n \"callback-endpoint\"?: string\n /**\n * The client discovery URL.\n */\n \"client-discovery-url\"?: string\n }\n}\n\nexport type OidcProfileLinks = AuthenticationRealmsSelfLink & {\n /**\n * The link that front-end applications should use to authenticate the OpenID Connect profile. The front-end application is responsible for appending all of the [required parameters](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) to the request. The endpoint also forwards some optional parameters, `display`, `prompt` and `ui_locales` to the configured Identity Provider. These parameters allow you to control the behavior of the authentication process on the Identity Provider. Additionally the query parameter `ep_report_callback_replay_error` can be set to `true` in which case if the user revisits the `callback-endpoint` multiple times (e.g., if they hit their Back button), we will redirect the user back to the front end with an [Authentication error response](https://openid.net/specs/openid-connect-core-1_0.html#AuthError) of `callback_replay`.\n */\n \"authorization-endpoint\"?: string\n /**\n * The link that should be supplied as the callback URL to the upstream authentication provider.\n */\n \"callback-endpoint\"?: string\n /**\n * The link to the [OpenID Connect Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) document for this provider, see [here](/docs/api/single-sign-on/get-oidc-idp-stores-store-id-authentication-realms-realm-id-well-known-openid-configuration).\n */\n \"client-discovery-url\"?: string\n}\n\nexport type PasswordProfile = {\n /**\n * Specifies the type of object. Set this value to `password_profile`.\n */\n type: \"password_profile\"\n /**\n * Specifies the name of the password profile.\n */\n name: string\n /**\n * The format the `username` field must be in when creating or updating a [User Authentication Password Profile Info](/docs/api/single-sign-on/post-v-2-authentication-realms-realm-id-user-authentication-info-user-auth-info-id-user-authentication-password-profile-info). You can change the `username_format` setting, however, the changes apply only to the users created or updated after changing this setting. The new setting does not change the `username_format` for existing users.\n */\n username_format?: \"email\" | \"any\"\n /**\n * This enables one time password token requests and events for authentication. This feature is disabled by default.\n */\n enable_one_time_password_token?: boolean\n}\n\nexport type PasswordProfileResponse = PasswordProfile & {\n /**\n * The unique identifier for a Password Profile.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this password profile.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type OneTimePasswordTokenRequestInput = {\n type: \"one_time_password_token_request\"\n /**\n * An information field indicating why the user submitted this request. Your [integration](/docs/api/integrations/integrations-introduction) can inspect this field and can change subsequent processing.\n */\n purpose: \"reset_password\" | \"passwordless_authentication\"\n /**\n * The username for the token request.\n */\n username: string\n}\n\nexport type OneTimePasswordTokenRequestResponse =\n OneTimePasswordTokenRequestInput & {\n /**\n * The unique identifier for the one-time password token request.\n */\n id?: string\n /**\n * The generated one-time password token.\n */\n token?: string\n /**\n * The expiration time of the token.\n */\n expires_at?: string\n meta?: AuthenticationRealmsMetaTimestamps\n }\n\nexport type UserAuthenticationInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_info`.\n */\n type: \"user_authentication_info\"\n /**\n * Specifies the name of the user.\n */\n name: string\n /**\n * Specifies the given name of the user.\n */\n given_name?: string | null\n /**\n * Specifies the family name of the user.\n */\n family_name?: string | null\n /**\n * Specifies the given name of the user.\n */\n middle_name?: string | null\n /**\n * Specifies the email address of the user.\n */\n email: string\n}\n\nexport type UserAuthenticationInfoResponse = UserAuthenticationInfo & {\n /**\n * The unique identifier for User Authentication Info.\n */\n id?: AuthenticationRealmsUuid\n meta?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The last updated date of this `user-authentication-info` object. This value also changes if subresources such as the `user-authentication-oidc-profile-info`, or `user-authentication-password-profile-info` change.The last updated date of this `user-authentication-info` object. This value also changes if subresources such as the `user-authentication-oidc-profile-info`, or `user-authentication-password-profile-info` change.\n */\n updated_at?: string\n /**\n * The creation status of the user authentication info.\n */\n creation_status?: \"COMPLETE\" | \"IN_PROGRESS\"\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type UserAuthenticationPasswordProfileInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_password_profile_info`.\n */\n type: \"user_authentication_password_profile_info\"\n /**\n * The username used to authenticate.\n */\n username: string\n /**\n * The ID of the associated password profile.\n */\n password_profile_id: string\n}\n\nexport type UserAuthenticationPasswordProfileInfoResponse =\n UserAuthenticationPasswordProfileInfo & {\n /**\n * The unique identifier for User Authentication Password Profile Info.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this resource.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n\nexport type UserAuthenticationPasswordProfileInfoInput =\n UserAuthenticationPasswordProfileInfo & {\n /**\n * The password used to authenticate.\n */\n password: string\n }\n\nexport type UserAuthenticationOidcProfileInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_oidc_profile_info`.\n */\n type: \"user_authentication_oidc_profile_info\"\n /**\n * The ID of the associated [OIDC profile](/docs/authentication/single-sign-on/openid-connect-profiles-api/openid-connect-profiles-api-overview).\n */\n oidc_profile_id: string\n /**\n * The identifier within the issuer for the `user-authentication-info` object. For more information, see the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#IDToken) section.\n */\n subject?: string\n /**\n * The identifier for the issuer of the ID Token. For more information, see the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#IDToken) section.\n */\n issuer?: string\n}\n\nexport type UserAuthenticationOidcProfileInfoResponse =\n UserAuthenticationOidcProfileInfo & {\n /**\n * The unique identifier for User Authentication OIDC Profile Info.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this resource.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n\n/**\n * The unique identifier.\n */\nexport type AuthenticationRealmsUuid = string\n\nexport type AuthenticationRealmsMetaTimestamps = {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n}\n\nexport type AuthenticationRealmsError = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type AuthenticationRealmsSelfLink = {\n /**\n * A URL to the specific resource.\n */\n self?: string\n}\n\nexport type AuthenticationRealmsErrorResponse = {\n errors: Array<AuthenticationRealmsError>\n links?: AuthenticationRealmsSelfLink\n}\n\nexport type AuthenticationRealmsPaginationLinks = {\n /**\n * The current page of data.\n */\n current?: string\n /**\n * The first page of data.\n */\n first?: string | null\n /**\n * The last page of data.\n */\n last?: string | null\n /**\n * The next page of data.\n */\n next?: string | null\n /**\n * The previous page of data.\n */\n prev?: string | null\n /**\n * The current resource URL.\n */\n self?: string\n}\n\nexport type AuthenticationRealmsPaginationMeta = {\n page?: {\n /**\n * The current page number.\n */\n current?: number\n /**\n * The number of items per page.\n */\n limit?: number\n /**\n * The number of items to offset by.\n */\n offset?: number\n /**\n * The total number of pages.\n */\n total?: number\n }\n results?: {\n /**\n * The total number of results after applying filters, if any, or all results.\n */\n total?: number\n }\n}\n\nexport type UserAuthenticationPasswordProfileInfoUpdateInput = {\n /**\n * The unique identifier for User Authentication Password Profile Info. Must match the id in the path.\n */\n id: string\n /**\n * Specifies the type of object. Set this value to `user_authentication_password_profile_info`.\n */\n type: \"user_authentication_password_profile_info\"\n /**\n * The username used to authenticate.\n */\n username?: string\n /**\n * The password used to authenticate.\n */\n password?: string\n}\n\nexport type UserAuthenticationInfoUpdateInput = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_info`.\n */\n type: \"user_authentication_info\"\n /**\n * Specifies the name of the user.\n */\n name?: string\n /**\n * Specifies the given name of the user.\n */\n given_name?: string | null\n /**\n * Specifies the family name of the user.\n */\n family_name?: string | null\n /**\n * Specifies the middle name of the user.\n */\n middle_name?: string | null\n /**\n * Specifies the email address of the user.\n */\n email?: string\n}\n\nexport type SelfLink2 = {\n /**\n * Specifies the URL of this currency.\n */\n self?: string\n}\n\nexport type Timestamps = {\n /**\n * Indicates the creation date of this currency.\n */\n created_at?: string\n /**\n * Indicates the updated date of this currency.\n */\n updated_at?: unknown\n}\n\nexport type ResponseMetaCurrency = {\n timestamps?: Timestamps\n /**\n * Indicates whether the owner is store or org.\n */\n owner?: string\n}\n\nexport type ResponseCurrency = {\n /**\n * The unique identifier for this currency.\n */\n id?: string\n /**\n * Represents the type represents the object being returned.\n */\n type?: string\n /**\n * Specifies the currency code. For example, YEN.\n */\n code?: string\n /**\n * Specifies the exchange rate from the default currency.\n */\n exchange_rate?: number\n /**\n * Specifies how the price currency is displayed. For example, \"£{price}\".\n */\n format?: string\n /**\n * Indicates the decimal point character.\n */\n decimal_point?: string\n /**\n * Indicates the thousand separator character.\n */\n thousand_separator?: string\n /**\n * Indicates how many decimal places the currency is formatted to.\n */\n decimal_places?: number\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default?: boolean\n /**\n * Specifies if this currency is available for products. Either `true` or `false`.\n */\n enabled?: boolean\n links?: SelfLink2\n meta?: ResponseMetaCurrency\n}\n\nexport type ResponseError = {\n errors?: Array<{\n /**\n * An application-specific error code.\n */\n code?: string\n detail?: string\n status?: number\n title?: string\n }>\n}\n\nexport type DataCreateCurrencies = {\n /**\n * Specifies the currency code. Example YEN.\n */\n code: string\n /**\n * Indicates how many decimal places the currency is formatted to.\n */\n decimal_places: number\n /**\n * Indicates the decimal point character.\n */\n decimal_point: string\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default: boolean\n /**\n * Specifies if this currency is available for products. Either `true` or `false`.\n */\n enabled: boolean\n /**\n * Specifies the exchange rate from the default currency.\n */\n exchange_rate: number\n /**\n * Specifies how the price currency is displayed. For example, \"¥{price}\".\n */\n format: string\n /**\n * Indicates the thousand separator character.\n */\n thousand_separator: string\n /**\n * Represents the type represents the object being returned.\n */\n type: string\n}\n\n/**\n * Request.CreateCurrencies\n */\nexport type RequestCreateCurrencies = {\n data?: DataCreateCurrencies\n}\n\n/**\n * Data.UpdateCurrencies\n */\nexport type DataUpdateCurrencies = {\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default?: boolean\n}\n\nexport type RequestUpdateCurrencies = {\n data?: DataUpdateCurrencies\n}\n\nexport type File = {\n /**\n * The unique identifier for this file.\n */\n id?: FilesUuid\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The name of the file.\n */\n file_name?: string\n /**\n * The mime type of the file.\n */\n mime_type?: string\n /**\n * The size of the file. Required when uploading files.\n */\n file_size?: number\n /**\n * DEPRECATED Whether the file public or not. Required when uploading files.\n */\n public?: boolean\n meta?: FileMeta\n links?: FilesLinks\n link?: FileLink\n}\n\nexport type FileMeta = {\n /**\n * The date and time the file was created.\n */\n timestamps?: {\n /**\n * The date and time the file was created.\n */\n created_at?: string\n }\n /**\n * The file dimensions.\n */\n dimensions?: {\n /**\n * The width of the file.\n */\n width?: number\n /**\n * The height of the file.\n */\n height?: number\n }\n}\n\nexport type ResultsMeta = {\n /**\n * Contains the results for the entire collection.\n */\n page?: {\n /**\n * The maximum number of records for all pages.\n */\n limit?: number\n /**\n * The current offset by number of pages.\n */\n offset?: number\n /**\n * The current number of pages.\n */\n current?: number\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n /**\n * Contains the results for the entire collection.\n */\n results?: {\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type ResultsLinks = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string | null\n /**\n * The current page.\n */\n current?: string | null\n /**\n * Always the first page.\n */\n first?: string | null\n /**\n * This is `null` if there is only one page.\n */\n last?: string | null\n /**\n * The previous page. This is `null` if on the first page.\n */\n prev?: string | null\n /**\n * The next page. This is `null` if there is no next page.\n */\n next?: string | null\n}\n\n/**\n * The publicly available URL for this file.\n */\nexport type FileLink = {\n /**\n * The publicly available URL for this file.\n */\n href?: string\n}\n\nexport type FilesErrorResponse = {\n errors: Array<FilesError>\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type FilesLinks = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string\n}\n\nexport type FilesUuid = string\n\nexport type FilesError = {\n /**\n * The HTTP response code of the error.\n */\n status: number\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Internal request ID.\n */\n request_id?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type MoveSearchRuleRequest = {\n data: {\n type: \"catalog_search_rule\"\n attributes: {\n placement: \"before\" | \"after\" | \"first\" | \"last\"\n target_rule_id?: string\n }\n }\n}\n\nexport type ReindexTenantReleasesJobRequest = {\n /**\n * The primary data for the request.\n */\n data?: {\n /**\n * Reindex all releases for tenant whether the release index is out of sync or not.\n */\n force_reindex?: boolean\n }\n}\n\n/**\n * Result of the job\n */\nexport type JobMetaResult = {\n [key: string]: unknown\n}\n\nexport type JobMetaError = {\n /**\n * A string describing the error.\n */\n detail: string\n /**\n * Any additional context of the error.\n */\n context?: {\n [key: string]: unknown\n }\n}\n\n/**\n * AutocompleteResponse\n *\n * An autocomplete suggestion with query frequency information.\n */\nexport type AutocompleteResponse = {\n /**\n * A unique identifier for the autocomplete suggestion.\n */\n id?: string\n /**\n * The query text for the autocomplete suggestion.\n */\n q?: string\n /**\n * The frequency count of this query.\n */\n count?: number\n}\n\nexport type MultiSearchRequest = {\n searches: Array<SearchQuery>\n}\n\nexport type SearchQuery = {\n /**\n * Type of search operation to perform\n */\n type?: \"search\" | \"autocomplete\"\n highlight_full_fields?: string\n q?: string\n facet_by?: FacetByField\n filter_by?: FilterByField\n sort_by?: SortByField\n max_facet_values?: number\n page?: number\n per_page?: number\n}\n\nexport type MultiSearchResponse = {\n results?: Array<SearchResult>\n included?: IncludedResponse2\n}\n\nexport type SearchResponse = SearchResult & {\n included?: IncludedResponse2\n}\n\nexport type SearchResult = {\n type?: SearchResultType\n facet_counts?: Array<FacetCount>\n found?: number\n hits?: Array<Hit>\n out_of?: number\n page?: number\n request_params?: {\n [key: string]: unknown\n }\n search_cutoff?: boolean\n search_time_ms?: number\n /**\n * References to the unique search rules that matched this search result.\n */\n matched_rules?: Array<MatchedRuleReference>\n}\n\nexport type MatchedRuleReference = {\n /**\n * The unique ID of the matching search rule.\n */\n id: string\n /**\n * The unique ID of the search rule group that owns the matching rule.\n */\n rule_group_id: string\n}\n\nexport type FacetCount = {\n counts?: Array<FacetValue>\n field_name?: string\n sampled?: boolean\n stats?: {\n [key: string]: unknown\n }\n}\n\nexport type FacetValue = {\n count?: number\n highlighted?: string\n value?: string\n}\n\n/**\n * Breakdown of how the text relevance score for this hit was derived. Values are copied unchanged from the underlying search engine response.\n *\n * These are **internal ranking signals** for debugging relevance and tuning Search Profiles — not user-facing match percentages. Scores are not normalized to a 0–100 scale. Higher `score` values indicate greater relevance **within the same search result set**; scores are not comparable across different queries.\n *\n * The overall relevance integer is available as `score` (string). Catalog Search does not expose the search engine's separate top-level `text_match` field.\n *\n * **Good uses:** debugging why one product ranks above another; building custom relative metrics (e.g. `tokens_matched` vs query length); merchandising and relevance tuning.\n *\n * **Poor uses:** displaying \"match %\" to shoppers; filtering by absolute thresholds without per-query calibration; comparing scores across unrelated searches.\n *\n * How the final `score` is aggregated depends on the active Search Profile's `text_match_type`:\n * - `max_score` (default): best field score wins; weights break ties\n * - `max_weight`: highest-weighted matching field drives the score\n * - `sum_score`: weighted field scores are summed\n *\n */\nexport type TextMatchInfo = {\n /**\n * Raw text match score of the single best-performing field in the Search Profile's `query_by` list.\n * A large opaque integer — field-level, not normalized. In `max_score` mode (default), this is the strongest per-field signal driving the document score.\n *\n */\n best_field_score?: string\n /**\n * The `query_by_weights` value of the best-matching field (0–127). For example, `15` indicates the winning match came from a high-priority profile field such as `meta.search.nodes.name`.\n * Under `max_score`, weight is mainly a tie-breaker when two documents share the same field score. Under `max_weight`, it determines which field's score represents the document.\n *\n */\n best_field_weight?: number\n /**\n * Number of `query_by` fields that contained at least one query token. May differ from the number of highlighted fields — highlighting scans all queried fields for display, while scoring weights fields differently.\n *\n */\n fields_matched?: number\n /**\n * Number of query tokens not matched in this document (`max(0, total_query_tokens − tokens_matched)`). `0` means full query coverage; `1` means one token was missing (e.g. searching \"Blue Vase Ceramic\" but the document only matches \"Blue Vase\").\n * Reports token coverage for this specific hit, not the global `drop_tokens_threshold` query-relaxation behaviour.\n *\n */\n num_tokens_dropped?: number\n /**\n * String form of the packed 64-bit text relevance score used to rank this hit. Equivalent to the search engine's `text_match` integer — use this field for the overall relevance value. Higher means more relevant within the current result set.\n *\n */\n score?: string\n /**\n * Number of distinct query words found in the document. Each query token is counted at most once per document, even if it appears multiple times in the text. Highlighting may show repeated occurrences; this count will not.\n *\n */\n tokens_matched?: number\n /**\n * Diagnostic signal indicating how much prefix matching or typo correction contributed to the match. `0` typically indicates an exact token match with no fuzzy or prefix-based relaxation; higher values may appear when `num_typos` or `prefix` matching was involved. Not a directly configurable parameter — treat as a tuning/debugging signal, not a display metric.\n *\n */\n typo_prefix_score?: number\n}\n\nexport type Hit = {\n /**\n * Document object - either a Product or AutocompleteResponse\n */\n document?: CatalogSearchProduct | AutocompleteResponse\n highlight?: {\n [key: string]: unknown\n }\n highlights?: Array<{\n [key: string]: unknown\n }>\n /**\n * Relevance metadata for this hit, included when the search engine returns it. Omitted when relevance metadata is unavailable (e.g. some autocomplete results).\n * Hit order in the response reflects ranking driven by these scores.\n *\n */\n text_match_info?: TextMatchInfo\n}\n\n/**\n * Type of search operation to performed\n */\nexport type SearchResultType = \"search\" | \"autocomplete\"\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type IncludedResponse2 = {\n [key: string]: Array<{\n [key: string]: unknown\n }>\n}\n\nexport type IndexableFieldsCreateRequest = {\n data: {\n type: IndexableFieldsType\n attributes: IndexableFieldsRequestAttributes\n }\n}\n\nexport type IndexableFieldsUpdateRequest = {\n data: IndexableFieldsUpdateRequestData\n}\n\nexport type IndexableFieldsUpdateRequestData = {\n /**\n * The unique identifier of the indexable fields. Must match the ID specified in the request path.\n */\n id: string\n type: IndexableFieldsType\n attributes: IndexableFieldsRequestAttributes\n}\n\nexport type ListIndexableFieldsResponse = {\n data: Array<IndexableFields>\n}\n\nexport type IndexableFieldsResponse = {\n data: IndexableFields\n}\n\nexport type IndexableFields = {\n /**\n * A unique identifier of the indexable fields.\n */\n id: string\n type: IndexableFieldsType\n attributes: IndexableFieldsAttributes\n meta: IndexableFieldsMeta\n}\n\nexport type IndexableFieldsRequestAttributes = {\n /**\n * IndexableFields\n *\n * A collection of indexable fields\n */\n fields?: Array<IndexableFieldRequest>\n /**\n * Per-field configuration for core product fields (e.g. name, description).\n */\n core_field_overrides?: Array<CoreFieldOverride>\n /**\n * Characters to use as token separators across all the index fields, in addition to spaces and newlines. Each element must be a single character. Defaults to none set.\n * For example, take text `non-tech`. By default, it will be tokenized to `nontech`. So, search for `non tech` will not match the product. Set `token_separators: [\"-\"]`. Then it will be tokenized to `non` and `tech`. Now, search for both `non-tech` and `non tech` will match this product.\n *\n */\n token_separators?: Array<string>\n /**\n * By default, special characters are removed from fields when indexing and searching for them. Provide list of special characters that should be indexed as part of the tokens across the all index fields. Each element must be a single character. Defaults to none set.\n *\n */\n symbols_to_index?: Array<string>\n /**\n * Enables word stemming across every text field in the index, using the [Snowball stemmer](https://snowballstem.org/). Stemming reduces words to their root form when indexing and when searching, so a search for `running` also matches products containing `run`, `runs`, or `runner`.\n * Defaults to `true`, so stemming applies to all text fields unless you turn it off here. Set `stem: false` to disable stemming for the whole index.\n * This is the recommended way to configure stemming. A `stem` value set on an individual field or core field override takes precedence over this setting for that field.\n *\n */\n stem?: boolean\n}\n\nexport type IndexableFieldsAttributes = {\n /**\n * IndexableFields\n *\n * A collection of indexable fields\n */\n fields?: Array<IndexableField>\n /**\n * Per-field configuration for core product fields (e.g. name, description).\n */\n core_field_overrides?: Array<CoreFieldOverride>\n /**\n * Characters used as token separators across the entire collection.\n *\n */\n token_separators?: Array<string>\n /**\n * Characters indexed as part of tokens across the entire collection.\n *\n */\n symbols_to_index?: Array<string>\n /**\n * Whether word stemming is enabled across every text field in the index. Omitted when it has never been set, in which case the default of `true` applies. A `stem` value on an individual field or core field override takes precedence over this setting for that field.\n *\n */\n stem?: boolean\n}\n\nexport type IndexableFieldsMeta = {\n owner: ResourceOwner\n}\n\nexport type IndexableFieldRequest = {\n /**\n * The name of the field to index. Two formats are supported:\n *\n * - **Extension fields**: `extensions.products(<template_slug>).<field_name>` — indexes a field from a product extension template. The field must exist and be enabled in the flows service.\n * - **Shopper attribute fields**: `shopper_attributes.<attribute_name>` — indexes a merchant-defined shopper attribute. Always typed as `string`. The attribute name must be no longer than **64 characters** and can only contain alphanumeric characters, underscores (`_`), and hyphens (`-`).\n * - **Admin attribute fields**: `admin_attributes.<attribute_name>` — indexes a merchant-defined admin attribute. Always typed as `string`. The attribute name must be no longer than **64 characters** and can only contain alphanumeric characters, underscores (`_`), and hyphens (`-`).\n *\n */\n name: string\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language of the field's text, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) — for example ja for Japanese. Defaults to en, which also broadly supports most European languages. Omitting it is identical to setting en, including for synonym matching. Codes that are not ISO 639-1, such as en-US, are rejected with a 400.\n */\n locale?: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n * For example, take text `non-tech`. By default, it will be tokenized to `nontech`. So, search for `non tech` will not match the product. Set `token_separators: [\"-\"]`. Then it will be tokenized to `non` and `tech`. Now, search for both `non-tech` and `non tech` will match this product.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n}\n\nexport type IndexableField = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language of the field's text, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Omitted when none was configured, in which case the field is indexed as en — omitting it and setting en are identical.\n */\n locale?: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this field, overriding the index-wide value. An empty array defers to the index-wide setting.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this field, overriding the index-wide value. An empty array defers to the index-wide setting.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n}\n\nexport type CoreFieldOverride = {\n /**\n * Name of the core field to configure. Must be one of the supported core fields.\n *\n */\n name: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this core field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this core field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n /**\n * When set to true, enables sorting on this core field. Only supported for specific core fields.\n *\n */\n sortable?: boolean\n /**\n * When set to true, enables faceting on this core field. A re-index is required for the change to take effect.\n *\n */\n facetable?: boolean\n}\n\n/**\n * Deprecated. Prefer the index-wide `stem` on the indexable fields resource, which applies to every text field. A per-field value still overrides it, but mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n * When true, enables word stemming on this field using [Snowball stemmer](https://snowballstem.org/). Stemming reduces words to their root form at index and query time, so a search for \"running\" will also match products containing \"run\", \"runs\", or \"runner\". This improves search recall for descriptive text fields where shoppers may use different word forms than those used in product data. Only valid for string-typed fields.\n * Text fields stem by default. Set `false` to turn stemming off for this field, overriding the index-wide `stem` setting.\n *\n *\n * @deprecated\n */\nexport type Stem = boolean\n\n/**\n * Represents the type of object being returned. Always `catalog_search_indexable_fields`.\n */\nexport type IndexableFieldsType = \"catalog_search_indexable_fields\"\n\nexport type SearchableFieldsResponse = {\n /**\n * A collection of searchable fields.\n */\n data: Array<SearchableField>\n meta: ListResponseMeta\n}\n\nexport type SearchableField = {\n /**\n * A unique identifier of the field.\n */\n id: string\n type: SearchableFieldType\n attributes: SearchableFieldAttributes\n meta: SearchableFieldMeta\n}\n\nexport type SearchableFieldAttributes = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language the field's text is indexed with, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Text fields always report a locale — en unless another was configured — and this is the locale a synonym must match to expand when the field is the highest-weighted search field. Fields that are not text report no locale.\n */\n locale?: string\n}\n\nexport type SearchableFieldMeta = {\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_searchable_field`.\n */\nexport type SearchableFieldType = \"catalog_searchable_field\"\n\nexport type IndexedFieldsResponse = {\n /**\n * A collection of indexed fields.\n */\n data: Array<IndexedField>\n meta: ListResponseMeta\n}\n\nexport type IndexedField = {\n /**\n * A unique identifier of the field.\n */\n id: string\n type: IndexedFieldType\n attributes: IndexedFieldAttributes\n meta: IndexedFieldMeta\n}\n\nexport type IndexedFieldAttributes = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Whether the field can be used for full-text search as a query field in a search profile. Only text fields are searchable.\n */\n searchable: boolean\n /**\n * Whether the field can be used in filter expressions.\n */\n filterable: boolean\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language the field's text is indexed with, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Text fields always report a locale — en unless another was configured — and this is the locale a synonym must match to expand when the field is the highest-weighted search field. Fields that are not text report no locale.\n */\n locale?: string\n}\n\nexport type IndexedFieldMeta = {\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_indexed_field`.\n */\nexport type IndexedFieldType = \"catalog_search_indexed_field\"\n\n/**\n * The type of the field.\n */\nexport type FieldType = \"string\" | \"int32\" | \"int64\" | \"bool\" | \"float\" | \"date\"\n\nexport type SearchProfileCreateRequest = {\n data: SearchProfileCreateRequestData\n}\n\nexport type SearchProfileCreateRequestData = {\n type: SearchProfileType\n attributes: SearchProfileAttributes\n}\n\nexport type SearchProfileUpdateRequest = {\n data: SearchProfileUpdateRequestData\n}\n\nexport type SearchProfileUpdateRequestData = {\n /**\n * The unique identifier of the search profile. Must match the ID specified in the request path.\n */\n id: string\n type: SearchProfileType\n attributes: SearchProfileUpdateAttributes\n}\n\nexport type SearchProfileUpdateAttributes = {\n /**\n * The unique slug of the search profile. 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. The sentinel `SYSTEMS_DEFAULT_PROFILE` is reserved for the built-in default and cannot be used as a tenant profile slug.\n */\n slug?: string\n /**\n * The description of the search profile.\n */\n description?: string\n /**\n * A collection of search fields\n */\n fields?: Array<SearchField>\n text_match_type?: TextMatchType\n /**\n * Optional list of filter expressions to apply to search results. Multiple filters in the array are combined using OR logic (records matching filter1 || filter2 || ... filterN).\n * To combine conditions with AND logic, include multiple conditions within a single filter string (e.g., \"meta.search.categories.lvl1:=`All Products > Mens Shoes` && meta.display_price.without_tax.float_price:>100\").\n * These profile-level filters are ANDed with any filters provided in the search request via the filter_by parameter, resulting in: (profile_filter1 || profile_filter2 || ... profile_filterN) && request_filters.\n *\n */\n filters?: Array<string>\n /**\n * A collection of exclusion expressions to apply to search results. Multiple exclusions in the array are combined using OR logic (records matching exclusion1 || exclusion2 || ... exclusionN).\n */\n exclusions?: Array<string>\n boosts?: Array<SearchBoostRule>\n /**\n * Profile-level default for prefix (partial match) behavior on the last query token. When true, the last word in the query is treated as a prefix for all fields that do not have an explicit per-field prefix value. For example, a search request for \"red app\" matches \"red apple\". When false, the last word must match exactly. If omitted, default of true applies. Per-field prefix values override this setting.\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean | null\n typo_tolerance?: TypoTolerance\n synonym_settings?: SynonymSettings\n /**\n * Optional list of synonym set IDs to apply at search time. Each synonym set must exist and must have been synced to the search engine at least once. Organization-level search profiles may only reference organization-level synonym sets. Store-level search profiles may reference organization-level and same-store synonym sets. Set to an empty array to remove all synonym sets from the search profile.\n *\n */\n synonym_sets?: Array<string>\n /**\n * Optional search rule group IDs. When non-empty, the query-time rules engine runs on every search for this profile; rule actions apply only when a trigger matches. Set to `[]` to disable rules and use profile-only behaviour.\n *\n */\n rule_groups?: Array<string>\n /**\n * When set to true, the default price is used for faceting and sorting for segmented catalogs even if the catalog rule has a supported price book.\n */\n force_use_default_price_for_faceting_and_sorting?: boolean\n}\n\nexport type SearchRuleGroupType = \"catalog_search_rule_group\"\n\nexport type SearchRuleType = \"catalog_search_rule\"\n\n/**\n * Attributes of a search rule group. Groups are attached to search profiles via `rule_groups` to activate query-time merchandising.\n */\nexport type SearchRuleGroupAttributes = {\n /**\n * Unique identifier for the group within the tenant. Used in tooling and logs.\n */\n slug: string\n /**\n * Human-readable summary of the group's merchandising intent.\n */\n description?: string\n}\n\nexport type SearchRuleGroupMeta = {\n created_at: string\n updated_at: string\n owner: ResourceOwner\n}\n\n/**\n * A named container for search merchandising rules evaluated at query time.\n */\nexport type SearchRuleGroup = {\n id: string\n type: SearchRuleGroupType\n attributes: SearchRuleGroupAttributes\n meta: SearchRuleGroupMeta\n}\n\nexport type SearchRuleGroupResponse = {\n data: SearchRuleGroup\n}\n\nexport type ListSearchRuleGroupsResponse = {\n data: Array<SearchRuleGroup>\n meta: ListResponseMeta\n}\n\n/**\n * Request body for creating a search rule group.\n */\nexport type CreateSearchRuleGroupRequest = {\n data: {\n type: SearchRuleGroupType\n attributes: SearchRuleGroupAttributes\n }\n}\n\n/**\n * Sparse updatable labels for a search rule group. Runtime rule fields are not accepted.\n */\nexport type SearchRuleGroupPatchAttributes = {\n /**\n * Unique identifier for the group within the tenant.\n */\n slug?: string\n /**\n * Human-readable summary of the group's merchandising intent.\n */\n description?: string\n}\n\n/**\n * Request body for updating a search rule group.\n */\nexport type UpdateSearchRuleGroupRequest = {\n data: {\n type: SearchRuleGroupType\n attributes: SearchRuleGroupPatchAttributes\n }\n}\n\n/**\n * Defines when a search rule matches a shopper query.\n */\nexport type SearchRuleTrigger = {\n /**\n * Trigger text compared against the normalized shopper query. Omit for a browse trigger.\n */\n query?: string\n /**\n * `exact` — normalized query must equal `query`.\n * `contains` — `query` must appear as a substring in the normalized query.\n * `browse` — matches a non-autocomplete wildcard query (`q=*`); omit `query`.\n *\n */\n match?: \"exact\" | \"contains\" | \"browse\"\n}\n\n/**\n * Actions applied when a rule matches. Provide at least one boost/bury condition, product pin, product hide, query replacement, or result filter.\n */\nexport type SearchRuleActions = {\n /**\n * One or more boost/bury conditions using standard `filter_by` syntax. Weights affect product ranking when the rule matches.\n */\n boosts?: Array<SearchBoostRule>\n /**\n * Products to fix at one-based global result positions when the rule matches. Pinned products still respect active filters.\n */\n pins?: Array<SearchPinRule>\n /**\n * Products to exclude from results when the rule matches.\n */\n hides?: Array<SearchHideRule>\n /**\n * Query text to use for the search after this rule matches.\n */\n replace_query?: string\n /**\n * Filter expression to apply to search results when the rule matches.\n */\n filter_by?: string\n}\n\n/**\n * Attributes of a search rule within a group.\n */\nexport type SearchRuleAttributes = {\n /**\n * Optional human-readable identifier for the rule within the group.\n */\n slug?: string\n /**\n * Optional summary of what the rule does for merchandisers.\n */\n description?: string\n /**\n * Lower values run first within the group and win conflicts over later rules. Must be unique per group.\n */\n execution_order: number\n trigger: SearchRuleTrigger\n actions: SearchRuleActions\n /**\n * When `true` and this rule matches, rules with a higher `execution_order` are not evaluated — including rules in other attached groups on the profile.\n */\n stop_after_match?: boolean\n}\n\nexport type SearchRuleMeta = {\n created_at: string\n updated_at: string\n owner: ResourceOwner\n}\n\n/**\n * A single merchandising rule with a query trigger and boost/bury actions.\n */\nexport type SearchRule = {\n id: string\n type: SearchRuleType\n attributes: SearchRuleAttributes\n meta: SearchRuleMeta\n}\n\nexport type SearchRuleResponse = {\n data: SearchRule\n}\n\nexport type ListSearchRulesResponse = {\n data: Array<SearchRule>\n meta: ListResponseMeta\n}\n\n/**\n * Request body for creating a search rule in a rule group.\n */\nexport type CreateSearchRuleRequest = {\n data: {\n type: SearchRuleType\n attributes: SearchRuleAttributes\n }\n}\n\n/**\n * Sparse updatable attributes of a search rule. A rule always remains in its current group.\n */\nexport type SearchRulePatchAttributes = {\n /**\n * Optional human-readable identifier for the rule within the group.\n */\n slug?: string\n /**\n * Optional summary of what the rule does for merchandisers.\n */\n description?: string\n /**\n * Lower values run first within the group and must remain unique within that group.\n */\n execution_order?: number\n trigger?: SearchRuleTrigger\n actions?: SearchRuleActions\n /**\n * Whether matching this rule stops evaluation of later attached rules.\n */\n stop_after_match?: boolean\n}\n\n/**\n * Request body for updating a search rule.\n */\nexport type UpdateSearchRuleRequest = {\n data: {\n type: SearchRuleType\n attributes: SearchRulePatchAttributes\n }\n}\n\nexport type StopwordSetResponse = {\n data: StopwordSet\n}\n\nexport type ListStopwordSetsResponse = {\n data: Array<StopwordSet>\n meta: ListResponseMeta\n}\n\nexport type StopwordSet = {\n /**\n * The unique identifier for the stopword set.\n */\n id: string\n type: StopwordSetType\n attributes: StopwordSetAttributes\n meta: StopwordSetMeta\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_stopword_set`.\n */\nexport type StopwordSetType = \"catalog_search_stopword_set\"\n\nexport type StopwordSetAttributes = {\n /**\n * [ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) for the stopwords set. Omit or pass null for the default set. At most one stopwords set per locale is allowed.\n *\n */\n locale?: string\n /**\n * The list of stopwords.\n */\n stopwords: Array<string>\n}\n\nexport type StopwordSetMeta = {\n /**\n * The date and time the stopword set was created.\n */\n created_at: string\n /**\n * The date and time the stopword set was last updated.\n */\n updated_at: string\n owner: ResourceOwner\n /**\n * The sync status of the stopword set.\n */\n sync_status: \"pending_sync\" | \"synced\" | \"sync_failed\" | \"pending_delete\"\n /**\n * The date and time the stopword set was last successfully synced.\n */\n last_synced_at?: string\n}\n\nexport type CreateStopwordSetRequest = {\n data: {\n type: StopwordSetType\n attributes: StopwordSetAttributes\n }\n}\n\nexport type UpdateStopwordSetRequest = {\n data: {\n id: string\n type: StopwordSetType\n attributes: UpdateStopwordSetAttributes\n }\n}\n\nexport type UpdateStopwordSetAttributes = {\n /**\n * The replacement list of stopwords. Must contain at least one entry.\n */\n stopwords: Array<string>\n}\n\nexport type SynonymSetResponse = {\n data: SynonymSet\n}\n\nexport type ListSynonymSetsResponse = {\n data: Array<SynonymSet>\n meta: ListResponseMeta\n}\n\nexport type SynonymSet = {\n /**\n * The unique identifier for the synonym set.\n */\n id: string\n type: SynonymSetType\n attributes: SynonymSetAttributes\n meta: SynonymSetMeta\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_synonym_set`.\n */\nexport type SynonymSetType = \"catalog_search_synonym_set\"\n\nexport type SynonymSetAttributes = {\n /**\n * Human-readable name for the synonym set.\n */\n name: string\n /**\n * The synonym items in this set.\n */\n items: Array<SynonymSetItem>\n}\n\nexport type SynonymSetItem = {\n /**\n * Unique identifier for the synonym item within the set. Alphanumeric, hyphen, and underscore only.\n */\n id: string\n /**\n * List of synonym terms.\n */\n synonyms: Array<string>\n /**\n * Makes this a one-way synonym. Searches for root also match synonyms, but not vice versa.\n */\n root?: string\n /**\n * [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) for this synonym item.\n *\n */\n locale?: string\n /**\n * Symbols to index for this synonym item. Each element must be exactly one character.\n */\n symbols_to_index?: Array<string>\n}\n\nexport type SynonymSetMeta = {\n /**\n * The date and time the synonym set was created.\n */\n created_at: string\n /**\n * The date and time the synonym set was last updated.\n */\n updated_at: string\n owner: ResourceOwner\n /**\n * The sync status of the synonym set.\n */\n sync_status: \"pending_sync\" | \"synced\" | \"sync_failed\" | \"pending_delete\"\n /**\n * The date and time the synonym set was last successfully synced.\n */\n last_synced_at?: string\n}\n\nexport type CreateSynonymSetRequest = {\n data: {\n type: SynonymSetType\n attributes: SynonymSetAttributes\n }\n}\n\nexport type UpdateSynonymSetRequest = {\n data: {\n id: string\n type: SynonymSetType\n attributes: UpdateSynonymSetAttributes\n }\n}\n\nexport type UpdateSynonymSetAttributes = {\n /**\n * Human-readable name for the synonym set.\n */\n name?: string\n /**\n * The synonym items in this set.\n */\n items?: Array<SynonymSetItem>\n}\n\nexport type SearchProfileResponse = {\n data: SearchProfile\n}\n\nexport type ListSearchProfilesResponse = {\n data: Array<SearchProfile>\n meta: ListResponseMeta\n}\n\nexport type SearchProfile = {\n /**\n * The unique identifier for the search profile.\n */\n id: string\n type: SearchProfileType\n attributes: SearchProfileAttributes\n meta: SearchProfileMeta\n}\n\nexport type SearchProfileAttributes = {\n /**\n * The unique slug of the search profile. 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. The sentinel `SYSTEMS_DEFAULT_PROFILE` is reserved for the built-in default and cannot be used as a tenant profile slug.\n */\n slug: string\n /**\n * The description of the search profile.\n */\n description: string\n /**\n * A collection of search fields\n */\n fields: Array<SearchField>\n text_match_type?: TextMatchType\n /**\n * Optional list of filter expressions to apply to search results. Multiple filters in the array are combined using OR logic (records matching filter1 || filter2 || ... filterN).\n * To combine conditions with AND logic, include multiple conditions within a single filter string (e.g., \"meta.search.categories.lvl1:=`All Products > Mens Shoes` && meta.display_price.without_tax.float_price:>100\").\n * These profile-level filters are ANDed with any filters provided in the search request via the filter_by parameter, resulting in: (profile_filter1 || profile_filter2 || ... profile_filterN) && request_filters.\n *\n */\n filters?: Array<string>\n /**\n * A collection of exclusion expressions to apply to search results. Multiple exclusions in the array are combined using OR logic (records matching exclusion1 || exclusion2 || ... exclusionN).\n */\n exclusions?: Array<string>\n boosts?: Array<SearchBoostRule>\n /**\n * Profile-level default for prefix (partial match) behavior on the last query token. When true, the last word in the query is treated as a prefix for all fields that do not have an explicit per-field prefix value. For example, a search request for \"red app\" matches \"red apple\". When false, the last word must match exactly. If omitted, default of true applies. Per-field prefix values override this setting.\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean\n typo_tolerance?: TypoTolerance\n synonym_settings?: SynonymSettings\n /**\n * Optional list of synonym set IDs to apply at search time. Each synonym set must exist and must have been synced to the search engine at least once. Organization-level search profiles may only reference organization-level synonym sets. Store-level search profiles may reference organization-level and same-store synonym sets.\n *\n */\n synonym_sets?: Array<string>\n /**\n * Optional search rule group IDs. When non-empty, the query-time rules engine runs on every search for this profile; rule actions apply only when a trigger matches. Each group must exist in tenant scope. Earlier IDs run before later IDs when matching rules from multiple groups conflict.\n *\n */\n rule_groups?: Array<string>\n /**\n * When set to true, the default price is used for faceting and sorting for segmented catalogs even if the catalog rule has a supported price book.\n */\n force_use_default_price_for_faceting_and_sorting: boolean\n}\n\nexport type SearchProfileMeta = {\n /**\n * Whether this is the default search profile.\n */\n default: boolean\n owner: ResourceOwner\n}\n\nexport type SearchField = {\n /**\n * The name of the search field.\n */\n name: string\n /**\n * The relative weight to give each field when ranking results. This can be used to boost fields in priority, when looking for matches.\n * If no explicit weights are provided for all fields, fields earlier in the fields list will be considered to have greater weight.\n * If no explicit weights are provided for some fields, the default weight of zero (0) will be used for the fields with no explicit weight.\n *\n */\n weight?: number\n /**\n * Per-field override for the maximum number of typographical errors [Damerau-Levenshtein distance](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) allowed\n * when matching this field. Accepted values: 0 (exact match only), 1, or 2.\n * Overrides `typo_tolerance.num_typos` for this field. Falls back to `typo_tolerance.num_typos`\n * if set, otherwise default of 2.\n *\n * For example, a search request for \"red appla\" matches \"red apple\" with a `num_typos` of 1.\n *\n * **`num_typos` is an upper bound, not a guarantee.** The number of corrections actually\n * applied to a query token is also capped by its length via\n * `typo_tolerance.min_len_to_allow_single_character_correction` (default 4) and\n * `typo_tolerance.min_len_to_allow_two_character_correction` (default 7):\n * - A token shorter than the single-character threshold gets **no** typo correction, even with `num_typos` 1 or 2.\n * - A token at least as long as the single-character threshold but shorter than the two-character threshold is corrected by **at most one** character, even with `num_typos` of 2.\n * - Only tokens at least as long as the two-character threshold can use the full two corrections.\n *\n * For example, with the defaults, \"appla\" → \"apple\" (length 5, one correction) is allowed,\n * but a 5-character query with two mistakes is not corrected even with `num_typos` of 2, because two-character correction requires a token of at least 7 characters.\n *\n */\n num_typos?: number\n /**\n * Per-field override for prefix (partial match) behavior on the last query token.\n * When true, the last word is treated as a prefix; when false, it must match exactly.\n * For example, when true, a search request for \"red app\" matches \"red apple\".\n * Overrides the profile-level `prefix` for this field. Falls back to the profile-level\n * `prefix` if set, otherwise default of true.\n *\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean\n}\n\n/**\n * When a search profile has multiple fields defined, this parameter determines how the representative text match score of a product is calculated.\n *\n * - `max_score (Default)`: In this mode, the products's representative score is simply the highest score from any single matching field. The field weights are used only as a tie-breaker if two products have the exact same highest score. This mode prioritizes the quality of the match in the single best-matching field.\n * - `max_weight`: This mode uses the score from the matching field that has the highest weight. This means a partial, lower-quality match on a heavily weighted field (e.g., name) can be prioritized over a perfect match on a lower-weighted field (e.g., description). This mode prioritizes matches in the most important fields, regardless of match quality.\n * - `sum_score`: This mode calculates a holistic score by summing the weighted scores from all matching fields. Its advantage is that it rewards products that match a query across multiple attributes. However, it carries the risk that a product with many weak, partial matches across several low-weighted fields could outrank a product with a single strong, perfect match in a high-weighted field.\n *\n */\nexport type TextMatchType = \"max_score\" | \"max_weight\" | \"sum_score\"\n\n/**\n * Defines a boosting rule that assigns a score to products matching a specific field value.\n */\nexport type SearchBoostRule = {\n /**\n * A filter expression used to identify a subset of products for boosting. This follows the standard filter_by syntax.\n *\n * It can be a simple condition like `meta.search.nodes.name:=\\`Electronics\\`` or complex like `meta.search.nodes.name:=\\`Electronics\\` && extensions.products(Details).brand:=Nike`.\n *\n */\n condition: string\n /**\n * A numerical value representing the boost intensity. Products matching the criteria are assigned this value. Higher weights will cause products to appear earlier in the results.\n *\n * **Impact of Weights:**\n * * **Boost (Positive):** Pushes products to the top.\n * * **Neutral (Zero):** No merchandising nudge — same result as products that match no clause. Useful with multiple clauses: add a narrower zero-weight condition to exempt a subset from a broader bury. Example: bury `brand:=Nike` at `-100`, exempt `brand:=Nike && is_featured:=true` at `0`.\n * * **Bury (Negative):** Pushes products to the bottom.\n *\n * **Rule Evaluation:** Within a rule, higher-weight matching clauses take precedence. Unmatched products use an implicit weight of `0`.\n *\n */\n weight: number\n}\n\n/**\n * Fixes a product at a one-based global search result position.\n */\nexport type SearchPinRule = {\n /**\n * Product identifier to pin.\n */\n product_id: string\n /**\n * One-based global result position for the pinned product.\n */\n position: number\n}\n\n/**\n * Excludes a product from matching search results.\n */\nexport type SearchHideRule = {\n /**\n * Product identifier to hide.\n */\n product_id: string\n}\n\n/**\n * Optional synonym tuning applied at search time. These settings control how synonym\n * matches are ranked and how query tokens are resolved against the synonym sets attached\n * to the search profile. All fields are optional; defaults are noted on each field.\n * They only have an observable effect when synonym sets are attached to the resolved profile.\n *\n */\nexport type SynonymSettings = {\n /**\n * When true, results matched via a synonym are ranked below direct (non-synonym) matches. When false, synonym matches and direct matches are ranked equally.\n * Default: false\n *\n */\n demote_synonym_match?: boolean\n /**\n * When true, an incomplete (prefix) query token can resolve to a synonym, i.e. synonym\n * expansion is attempted on prefix tokens.\n *\n * **This is not the same as the `prefix` setting.** The `prefix` setting treats only the\n * **last** word of the query as a prefix; `synonym_resolution_allowed_on_prefix` applies\n * prefix matching at **every** token position when looking words up in the synonym sets —\n * there is no last-token special-casing.\n *\n * **Exact matches always win.** A query token that exactly equals a synonym key resolves\n * regardless of this flag; the prefix behavior only affects the fuzzy fallback for tokens\n * with no exact synonym-key match. It composes with\n * `number_of_typos_allowed_when_resolving_synonyms`, which governs typo tolerance during\n * the prefix/fuzzy lookup.\n *\n * Worked example (synonym keys `red`, `apple`, `apparel`):\n * - `red app`: `red` matches exactly; `app` prefix-matches both `apple` and `apparel` — both expand.\n * - `re app`: `re` prefix-matches `red` **and** `app` prefix-matches `apple`/`apparel` — both expand.\n * The regular `prefix` setting would only treat the last word (`app`) as a prefix; here every\n * position is prefix-matched.\n *\n * Default: false\n *\n */\n synonym_resolution_allowed_on_prefix?: boolean\n /**\n * Number of typos allowed when resolving synonyms. Enables fuzzy synonym matching\n * so that a misspelled query term can still trigger a synonym expansion for the\n * synonym sets attached to the search profile.\n * Accepted values: 0 (exact synonym match only, default), 1, or 2.\n *\n */\n number_of_typos_allowed_when_resolving_synonyms?: number\n} | null\n\n/**\n * Optional typo tolerance configuration applied at search time.\n * All fields are optional; defaults are noted on each field.\n *\n */\nexport type TypoTolerance = {\n /**\n * Profile-level default for the maximum number of typographical errors\n * [Damerau-Levenshtein distance](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) allowed when matching any field.\n * Accepted values: 0 (exact match only), 1, or 2.\n * Per-field `num_typos` values override this setting. If omitted, default of 2 applies.\n *\n * For example, a search request for \"red appla\" matches \"red apple\" with a `num_typos` of 1.\n *\n * **`num_typos` is an upper bound, not a guarantee.** The number of corrections actually\n * applied to a query token is also capped by its length via\n * `min_len_to_allow_single_character_correction` (default 4) and\n * `min_len_to_allow_two_character_correction` (default 7): a token shorter than the\n * single-character threshold gets no correction at all, and a token shorter than the\n * two-character threshold is corrected by at most one character — even when `num_typos` is 2.\n * See those two fields for details.\n *\n */\n num_typos?: number\n /**\n * Minimum query-token length required before a single-character typo correction is attempted. This works together with `num_typos`: a token shorter than this length receives no typo correction at all, regardless of `num_typos`. For example, when set to 4, a search for \"appla\" will match \"apple\", but a search for \"apa\" will not match \"app\" because the length of \"apa\" is 3.\n * Default: 4.\n *\n */\n min_len_to_allow_single_character_correction?: number\n /**\n * Minimum query-token length required before a two-character typo correction is attempted. This works together with `num_typos`: even when `num_typos` is 2, a token shorter than this length is corrected by at most one character (and a token shorter than `min_len_to_allow_single_character_correction` is not corrected at all). For example, with the default of 7, the 7-character query \"monetar\" can be corrected to \"monitor\" (two corrections), but a 6-character query with two mistakes cannot.\n * Default: 7\n *\n */\n min_len_to_allow_two_character_correction?: number\n /**\n * Typo-corrected query variations are only generated if the number of exact results\n * found is fewer than this value. Set to 0 to disable typo tolerance entirely.\n * For example, when set to 5 and the search result only has 3 results, the search engine will apply typo correction to try to return 5 or more results.\n *\n * Default: 1\n *\n */\n typo_tokens_threshold?: number\n /**\n * For multi-word queries, tokens are progressively dropped if the number of results\n * is fewer than this value. Set to 0 to disable token dropping.\n *\n * For example, when set to 5 and the search result only has 3 results for \"red apple\" search,\n * the search engine will drop the last token \"apple\" and find more results with just by searching for \"red\".\n *\n * Default: 1\n *\n */\n drop_tokens_threshold?: number\n /**\n * Controls the direction in which tokens are dropped from a multi-word query when\n * results fall below drop_tokens_threshold.\n * - `right_to_left` (default): drops tokens from the right end of the query first.\n * - `left_to_right`: drops tokens from the left end first.\n * - `both_sides:N`: drops from both ends, limited to queries of N tokens or fewer\n * (e.g. `both_sides:3` applies only to queries with 3 or fewer tokens).\n *\n */\n drop_tokens_mode?: string\n /**\n * When false, typo tolerance is disabled for query tokens that are purely numeric (every character is a digit, e.g. \"98765\"). Such a token must then match exactly.\n * Default: true\n *\n */\n enable_typos_for_numerical_tokens?: boolean\n /**\n * When false, typo tolerance is disabled for query tokens that contain at least one non-alphanumeric character\n * (any character outside `a-z`, `A-Z`, `0-9`), forcing such tokens to match exactly.\n * Useful for keeping product codes / SKUs precise.\n *\n * Tokens like `abc-123`, `abc-def`, `123-456`, and `v1.2.0` are affected;\n * a plain alphanumeric token like `abc123` is not.\n *\n * Note: the special character must be indexed on the field (via `symbols_to_index`);\n * otherwise the search engine removes the special characters from tokens\n * (e.g. a token like v1.2.0 becomes v120) and it no longer qualifies.\n *\n * Default: true\n *\n */\n enable_typos_for_special_char_tokens?: boolean\n /**\n * Controls whether compound words and multi-word phrases are treated as equivalent during search.\n * For example, a query for \"nonstick\" may also match \"non stick\", and vice versa.\n * - `fallback` (default): tries the original query form first; falls back to split/joined variants if results are insufficient.\n * - `always`: always generates both split and joined token variants alongside the original query.\n * - `off`: disables split/join token handling.\n *\n */\n split_join_tokens?: \"fallback\" | \"always\" | \"off\"\n} | null\n\n/**\n * Represents the type of object being returned. Always `catalog_search_profile`.\n */\nexport type SearchProfileType = \"catalog_search_profile\"\n\nexport type ListSearchIndexesResponse = {\n data: Array<SearchIndex>\n meta: ListResponseMeta\n}\n\nexport type SearchIndex = {\n /**\n * The unique identifier for the search index.\n */\n id: string\n type: SearchIndexType\n meta: SearchIndexMeta\n}\n\nexport type SearchIndexMeta = {\n /**\n * The ID of the catalog.\n */\n catalog_id: string\n /**\n * The ID of the catalog release.\n */\n release_id: string\n /**\n * Whether the search index is out of sync and needs to re-indexed.\n */\n out_of_sync: boolean\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_index`.\n */\nexport type SearchIndexType = \"catalog_search_index\"\n\n/**\n * Specifies which fields to use for generating facets in search results. See [faceting](/guides/How-To/Catalogs/Search/faceting) for more details.\n */\nexport type FacetByField = string\n\n/**\n * Applies conditions to narrow down search results based on specific field values. See [filtering](/guides/How-To/Catalogs/Search/filtering) for more details.\n */\nexport type FilterByField = string\n\n/**\n * Orders search results by specified fields. See [sorting](/guides/How-To/Catalogs/Search/sorting) for more details.\n */\nexport type SortByField = string\n\n/**\n * The resource owner, either `organization` or `store`.\n */\nexport type ResourceOwner = \"organization\" | \"store\"\n\nexport type ListResponseMeta = {\n results: ListResponseMetaResults\n}\n\n/**\n * Contains the results for the entire collection.\n */\nexport type ListResponseMetaResults = {\n /**\n * Total number of results for the entire collection.\n */\n total: number\n}\n\nexport type CatalogSearchJob = {\n /**\n * The unique identifier for the job.\n */\n id: string\n /**\n * The type of the resource object.\n */\n type: \"job\"\n /**\n * The attributes of the job.\n */\n attributes: CatalogSearchJobAttributes\n meta?: CatalogSearchJobMeta\n}\n\nexport type CatalogSearchJobAttributes = {\n /**\n * The status of the job.\n */\n status: \"pending\" | \"processing\" | \"complete\" | \"failed\"\n /**\n * The ID of the catalog.\n */\n catalog_id?: string\n /**\n * The ID of the catalog release.\n */\n catalog_release_id?: string\n /**\n * The type of the job.\n */\n type: \"index-release\" | \"delete-release\" | \"reindex-tenant-releases\"\n}\n\n/**\n * Meta information of the job\n */\nexport type CatalogSearchJobMeta = {\n /**\n * Results of the job\n */\n results?: Array<JobMetaResult>\n /**\n * Errors occurred during the job\n */\n errors?: Array<JobMetaError>\n}\n\n/**\n * Product\n *\n * A product in a catalog with the following attributes.\n */\nexport type CatalogSearchProduct = {\n /**\n * Arbitrary document object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * A unique identifier for a product.\n */\n id?: string\n /**\n * Arbitrary document object\n */\n relationships?: {\n [key: string]: unknown\n }\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: string\n /**\n * Arbitrary document object\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type CatalogSearchErrorResponse = {\n errors: Array<CatalogSearchError>\n}\n\nexport type CatalogSearchError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\n/**\n * Extensions\n *\n * 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)**.\n */\nexport type ExtensionsWritable = {\n [key: string]: Extension\n}\n\n/**\n * CondensedPromotionResponse\n */\nexport type CondensedPromotionResponseWritable = {\n /**\n * Specifies the type of the resource. Always `promotion`.\n */\n type?: \"promotion\"\n /**\n * The name of the promotion.\n */\n name?: string\n /**\n * The description of the promotion.\n */\n description?: string\n /**\n * Whether the promotion is applied automatically.\n */\n automatic?: boolean\n /**\n * The type of promotion (for v1 promotions).\n */\n promotion_type?: string\n /**\n * The source of the promotion (for rule promotions).\n */\n promotion_source?: string\n /**\n * The start date and time of the promotion.\n */\n start?: string\n /**\n * The end date and time of the promotion.\n */\n end?: string\n}\n\nexport type CartEntityResponseWritable = {\n data: CartResponse\n /**\n * Related objects that are included in the response.\n */\n included?: CartIncludedWritable\n /**\n * Additional metadata for the cart response.\n */\n meta?: {\n /**\n * Payment intent details with nested structure including status and other Stripe payment intent fields\n */\n payment_intent?: {\n [key: string]: unknown\n }\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Cart Item Response\n */\nexport type CartItemResponseWritable = {\n [key: string]: unknown\n}\n\n/**\n * TaxItemResponse\n */\nexport type TaxItemResponseWritable = {\n /**\n * Specifies the type of the resource. Always `tax_item`.\n */\n type?: \"tax_item\"\n /**\n * The jurisdiction for the tax item.\n */\n jurisdiction?: string\n /**\n * The tax code for the tax item.\n */\n code?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (e.g., 0.085 for 8.5%).\n */\n rate?: number\n /**\n * The tax amount in the smallest currency unit.\n */\n amount?: number\n}\n\nexport type CartItemCollectionResponseWritable = {\n data: Array<CartItemResponseWritable>\n /**\n * Related objects that are included in the response.\n */\n included?: {\n custom_discounts?: Array<CustomDiscountResponse>\n promotions?: Array<{\n automatic?: boolean\n description?: string\n end?: string\n id?: string\n name?: string\n promotion_type?: string\n /**\n * The source of the promotion\n */\n promotion_source?: string\n start?: string\n type?: \"promotion\"\n }>\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponseWritable>\n }\n /**\n * Additional meta information about the cart items collection.\n */\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n authorized?: FormattedPriceData\n balance_owing?: FormattedPriceData\n paid?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Optional array of informational messages that provide feedback about operations performed on the cart items, such as promotions added or discounts applied. This field is only present when there are relevant messages to display.\n *\n */\n messages?: Array<{\n /**\n * Identifies the cart item that triggered this message\n */\n source?: {\n /**\n * The type of the source item\n */\n type: string\n /**\n * The unique identifier of the source item\n */\n id: string\n /**\n * The promotion code (present when source type is promotion)\n */\n code?: string\n }\n /**\n * A short descriptive title for the message\n */\n title: string\n /**\n * A detailed description of the message\n */\n description: string\n }>\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n /**\n * Whether this promotion should be automatically added\n */\n auto_add?: boolean\n /**\n * Array of promotion targets (alternative structure)\n */\n targets?: Array<{\n /**\n * The cart item ID for this target\n */\n cart_item_id?: string\n /**\n * The quantity for this target\n */\n quantity?: number\n /**\n * Array of SKU codes for this target\n */\n skus?: Array<string>\n }>\n }>\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Subscription Item Object\n */\nexport type SubscriptionItemObjectWritable = {\n data?: SubscriptionItemObjectData & CartItemResponseWritable\n}\n\nexport type CartsItemsTaxesCommonWritable = {\n /**\n * A unique tax code in this jurisdiction.\n */\n code?: string\n /**\n * The relevant tax jurisdiction.\n */\n jurisdiction?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (12.5% -> 0.125). You must specify either `rate` or `amount`, but not both.\n *\n */\n rate?: number\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). You must specify either `rate` or `amount`, but not both.\n *\n */\n amount?: number\n /**\n * The type of object being returned. Use `tax_item`.\n */\n type: \"tax_item\"\n}\n\n/**\n * Tax Object (With Rate)\n */\nexport type CartsItemsTaxesWithRateWritable = CartsItemsTaxesCommonWritable & {\n /**\n * The tax rate as a decimal (12.5% -> 0.125). Required when using rate-based taxation.\n *\n */\n rate: number\n /**\n * The tax as an absolute amount. Not allowed when rate is specified.\n *\n */\n amount?: number\n}\n\n/**\n * Tax Object (With Amount)\n */\nexport type CartsItemsTaxesWithAmountWritable =\n CartsItemsTaxesCommonWritable & {\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). Required when using amount-based taxation.\n *\n */\n amount: number\n /**\n * The tax rate as a decimal. Not allowed when amount is specified.\n *\n */\n rate?: number\n }\n\n/**\n * Carts Items Taxes Object\n *\n * A tax item that can be applied to cart items or bundle components. You must specify either a rate (percentage) or an amount (fixed value), but not both.\n *\n */\nexport type CartsItemsTaxesObjectWritable =\n | CartsItemsTaxesWithRateWritable\n | CartsItemsTaxesWithAmountWritable\n\nexport type CartItemTaxesEntityResponseWritable = {\n data: CartsItemsTaxesObjectWritable\n}\n\n/**\n * CartsBulkTaxes\n */\nexport type CartsBulkTaxesWritable = {\n data?: Array<CartsItemsTaxesObjectWritable & CartItemRelationship>\n errors?: Array<ResponseErrorItem>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsCustomDiscountsResponse\n */\nexport type CartsCustomDiscountsResponseObjectWritable = {\n amount?: {\n /**\n * Specifies an amount to be applied for the custom discount. It must be less than zero.\n */\n amount?: number\n /**\n * The currency set for the custom discount.\n */\n currency?: string\n /**\n * The formatted value for the custom discount.\n */\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\nexport type CartsCustomDiscountsEntityRequestWritable = {\n data?: CartsCustomDiscountsResponseObjectWritable\n}\n\n/**\n * DiscountData\n */\nexport type DiscountDataWritable = {\n amount?: OrderPriceData\n code?: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * OrderItemResponse\n */\nexport type OrderItemResponseWritable = {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The quantity of this item were ordered.\n */\n quantity?: number\n /**\n * The name of this order item.\n */\n name?: string\n /**\n * The SKU code for the order item.\n */\n sku?: string\n unit_price?: OrderPriceData\n value?: OrderPriceData\n discounts?: Array<DiscountDataWritable>\n links?: {\n [key: string]: unknown\n }\n meta?: {\n display_price?: {\n with_tax?: OrderItemFormattedUnitPriceData\n without_tax?: OrderItemFormattedUnitPriceData\n tax?: OrderItemFormattedUnitPriceData\n discount?: OrderItemFormattedUnitPriceData\n without_discount?: OrderItemFormattedUnitPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n /**\n * Detailed breakdown of discount constituents by ID\n */\n constituents?: {\n [key: string]: {\n /**\n * The discount amount\n */\n amount?: number\n /**\n * The currency code\n */\n currency?: string\n /**\n * The formatted discount amount\n */\n formatted?: string\n }\n }\n }\n }\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: OrderItemFormattedUnitPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n relationships?: {\n cart_item?: {\n data?: {\n /**\n * The type represents the object being returned.\n */\n type?: string\n }\n }\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The unique identifier of the catalog associated with the product is shown if `catalog_source=pim` is set.\n */\n catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Component product ID\n */\n id?: string\n /**\n * Component product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product metadata as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price information as a generic object\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the bundle product.\n */\n components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n /**\n * Custom inputs for the order item as a generic object\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * The shipping group ID for the order item\n */\n shipping_group_id?: string\n /**\n * The promotion source for the order item\n */\n promotion_source?: string\n /**\n * Subscription configuration for the order item\n */\n subscription_configuration?: {\n /**\n * Subscription plan details\n */\n plan?: string\n /**\n * Pricing option for the subscription\n */\n pricing_option?: string\n }\n}\n\nexport type ShippingGroupEntityResponseWritable = {\n data?: ShippingGroupResponse\n /**\n * Related objects that are included in the response when using the include query parameter.\n */\n included?: {\n /**\n * Array of order items associated with this shipping group.\n */\n items?: Array<OrderItemResponseWritable>\n }\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * OrderResponse\n */\nexport type OrderResponseWritable = {\n /**\n * Specifies the type of object being returned. You must use `order`.\n */\n type?: \"order\"\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n /**\n * Specifies the status of the order, such as `incomplete`, `complete`, `processing`, or `cancelled`.\n */\n status?: \"complete\" | \"incomplete\" | \"cancelled\" | \"processing\"\n /**\n * Specifies the status of the payment, such as `unpaid`, `authorized`, `paid`, or `refunded`.\n */\n payment?:\n | \"authorized\"\n | \"paid\"\n | \"unpaid\"\n | \"refunded\"\n | \"partially_paid\"\n | \"partially_authorized\"\n /**\n * Specifies the status of the shipment, such as `fulfilled` or `unfulfilled`.\n */\n shipping?: \"unfulfilled\" | \"fulfilled\"\n /**\n * Specifies if the order is anonymized.\n */\n anonymized?: boolean\n /**\n * Stripe Payment Intent ID. Please see Stripe's Payment Intent [documentation](https://docs.stripe.com/api/payment_intents) for more information on Payment Intents.\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n links?: {\n [key: string]: unknown\n }\n meta?: OrderMeta\n billing_address?: BillingAddress\n contact?: Contact\n customer?: Customer\n shipping_address?: ShippingAddress\n relationships?: {\n items?: RelationshipArray\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n customer?: SingleRelationship\n account?: SingleRelationship\n account_member?: SingleRelationship\n store?: SingleRelationship\n }\n}\n\n/**\n * OrderEntityResponse\n */\nexport type OrderEntityResponseWritable = {\n data?: OrderResponseWritable\n /**\n * Optional included data such as order items, tax items, custom discounts, and promotions.\n *\n */\n included?: OrderIncludedWritable\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type OrderCollectionResponseWritable = {\n data?: Array<OrderResponseWritable>\n links?: ResponsePageLinks\n meta?: ResponseMetaOrders\n included?: OrdersIncludedWritable\n}\n\nexport type OrderItemCollectionResponseWritable = {\n data?: Array<OrderItemResponseWritable>\n /**\n * Optional included data such as tax items, custom discounts, and promotions.\n *\n */\n included?: {\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponseWritable>\n /**\n * Array of custom discounts included in the response.\n */\n custom_discounts?: Array<CustomDiscountResponse>\n /**\n * Array of promotions included in the response.\n */\n promotions?: Array<CondensedPromotionResponseWritable>\n }\n}\n\nexport type OrdersListResponseWritable = {\n data: Array<OrderResponseWritable>\n}\n\n/**\n * TransactionResponse\n */\nexport type TransactionResponseWritable = {\n /**\n * The payment gateway reference.\n */\n reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend you not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * The name of the payment gateway used.\n */\n gateway?:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n | \"stripe_platform_account\"\n /**\n * The amount for this transaction.\n */\n amount?: number\n /**\n * The refunded amount.\n */\n refunded_amount?: number\n /**\n * The transaction currency.\n */\n currency?: string\n /**\n * The type of transaction, such as `purchase`, `capture`, `authorize` or `refund`.\n */\n transaction_type?: \"purchase\" | \"authorize\" | \"capture\" | \"refund\"\n /**\n * The type of object being returned.\n */\n type?: string\n /**\n * The status provided by the gateway for this transaction, such as `complete` or `failed`.\n */\n status?: string\n /**\n * Additional payment details specific to the gateway. Present when gateway is paypal_express_checkout.\n */\n payment_details?: {\n /**\n * Detailed status information from the payment gateway.\n */\n detailed_status?: string\n }\n /**\n * Non-PII payment failure details from the gateway. Only present on failed transactions where the gateway provided structured failure information.\n */\n failure_details?: FailureDetails\n /**\n * Payment intent details.\n */\n payment_intent?: {\n [key: string]: unknown\n }\n /**\n * The mechanism used for capturing the transaction.\n */\n capture_mechanism?: \"automatic\" | \"manual\"\n /**\n * The mechanism used for refunding the transaction.\n */\n refund_mechanism?: \"automatic\" | \"manual\"\n /**\n * Client parameters required for payment processing. Present when gateway is paypal_express_checkout.\n */\n client_parameters?: {\n /**\n * The URL to redirect the customer to complete the payment.\n */\n redirect_url?: string\n /**\n * Client secret for payment processing.\n */\n secret?: string\n /**\n * The token for the payment session.\n */\n token?: string\n }\n /**\n * Available actions that can be performed on this transaction. Present when gateway is paypal_express_checkout.\n */\n next_actions?: Array<\"cancel\" | \"capture\" | \"refund\">\n relationships?: {\n order?: {\n data?: {\n /**\n * Represents the type of the object being returned. It is always `order`.\n */\n type?: string\n /**\n * The ID of the order.\n */\n id?: string\n }\n }\n }\n meta?: {\n display_price?: FormattedPriceData\n display_refunded_amount?: {\n total?: FormattedPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n}\n\nexport type TransactionEntityResponseWritable = {\n data: TransactionResponseWritable\n}\n\nexport type TransactionListResponseWritable = {\n data: Array<TransactionResponseWritable>\n}\n\nexport type SettingsCartWritable = {\n data?: {\n /**\n * Describes the type of request payload you're sending. Set this value to `settings`.\n */\n type: string\n /**\n * Indicates the number of days before a cart expires.\n */\n cart_expiry_days?: number\n discounts?: {\n /**\n * When `true`, custom discounts are enabled. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to `true`, this parameter allows the cart to use rule promotions.\n */\n use_rule_promotions?: boolean\n }\n inventories?: {\n /**\n * When `true`, inventory checks are not performed when adding products to a cart but still occur on checkout as normal. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n defer_inventory_check?: boolean\n }\n items?: {\n /**\n * When `true`, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When `false` (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n }\n /**\n * When `true`, admins (users with admin scope) can retrieve all carts in the store via `GET /v2/carts`, regardless of customer or account associations. When `false`, admins can only see carts that are registered (associated with customers or accounts).\n *\n * For new stores, this defaults to `true`. For existing stores created before this feature was introduced, this defaults to `false` to maintain backward compatibility.\n *\n */\n show_all_carts?: boolean\n }\n}\n\n/**\n * Carts Response\n */\nexport type CartsResponseWritable = {\n data?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n }\n }\n }\n timestamps?: CartTimestamps\n }\n}\n\n/**\n * Cart Items Response\n */\nexport type CartItemsResponseWritable = {\n data?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n}\n\n/**\n * Cart Item Object\n */\nexport type CartItemObjectWritable = CartItemObjectData &\n CartItemResponseWritable\n\n/**\n * Custom Item Cart Object\n */\nexport type CustomItemCartObjectWritable = CartItemResponseWritable & {\n type: \"custom_item\"\n quantity: number\n}\n\n/**\n * Subscription Item Cart Object\n */\nexport type SubscriptionItemCartObjectWritable = CartItemResponseWritable & {\n type: \"subscription_item\"\n quantity: number\n}\n\n/**\n * Promotion Item Cart Object\n */\nexport type PromotionItemCartObjectWritable = CartItemResponseWritable & {\n type: \"promotion_item\"\n quantity: number\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type CartIncludedWritable = {\n /**\n * The cart items associated with a cart.\n */\n items?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n /**\n * The tax items associated with a cart.\n */\n tax_items?: Array<CartsItemsTaxesObjectWritable>\n /**\n * The custom discounts associated with a cart.\n */\n custom_discounts?: Array<CartsCustomDiscountsObject>\n /**\n * The promotions associated with a cart.\n */\n promotions?: Array<CartIncludedPromotion>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrdersIncludedWritable = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponseWritable>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrderIncludedWritable = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponseWritable>\n}\n\nexport type FeatureWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureResponseAttributes\n meta: FeatureMetaWritable\n}\n\nexport type FeatureMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type PlanMetaWritable = {\n prices?: OfferingPlanPrices\n display_price?: DisplayPrice2\n timestamps: SubscriptionsTimestamps\n active_plan?: ActivePlan\n}\n\nexport type DunningRuleWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n meta: DunningRuleMetaWritable\n}\n\nexport type DunningRuleMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type ProrationPolicyWritable = {\n id?: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyResponseAttributes\n meta: ProrationPolicyMetaWritable\n}\n\nexport type ProrationPolicyMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes: OfferingResponseAttributes\n relationships?: Relationships\n meta: OfferingMetaWritable\n}\n\nexport type OfferingIncludesWritable = {\n features?: Array<OfferingFeatureWritable>\n plans?: Array<OfferingPlanWritable>\n pricing_options?: Array<OfferingPricingOptionWritable>\n}\n\nexport type OfferingMetaWritable = {\n external_plan_refs: Array<unknown>\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * A map of plans keyed by plan UUID or external_ref to a list of associated pricing options, similarly keyed.\n */\nexport type OfferingBuildPricingOptionAssociationsWritable = {\n [key: string]: OfferingBuildPlanPricingOptions\n}\n\nexport type OfferingFeatureWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureResponseAttributes\n relationships?: Relationships\n meta: FeatureMetaWritable\n}\n\nexport type OfferingPlanWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanResponseAttributes\n relationships?: Relationships\n meta: PlanMetaWritable\n}\n\nexport type OfferingPricingOptionWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionResponseAttributes\n relationships?: Relationships\n meta: OfferingPricingOptionMetaWritable\n}\n\nexport type OfferingPricingOptionMetaWritable = {\n prices?: OfferingPricingOptionPricesWritable\n price?: Price\n display_price?: DisplayPrice2\n active_pricing_option?: ActivePricingOption\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * The price of each plan within the offering that this pricing option may be applied to.\n */\nexport type OfferingPricingOptionPricesWritable = {\n [key: string]: OfferingPricingOptionPriceForPlan\n}\n\nexport type BuildSubscriptionWritable = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering_external_ref?: ExternalRef\n offering_id?: SubscriptionsUuid\n plan_id?: SubscriptionsUuid\n pricing_option_id?: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: CreatePaymentAuthorityWritable\n manual_payments: ManualPayments\n name: string\n email: string\n /**\n * Whether a subscription is pending activation or not. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n pending?: boolean\n /**\n * Indicates that payment for the first billing period of the subscription has already been taken. As well as creating the subscription a settled invoice is created to cover the first period.\n */\n first_invoice_paid?: boolean\n /**\n * When importing an active subscription from an existing system you can specify the date and time of the start of the most recent period. This may only be supplied when `first_invoice_paid` is true. As well as creating the subscription a settled invoice is created to cover the correct billing period.\n */\n started_at?: string\n /**\n * Optional. May only be set when `started_at` is set. When supplied, overrides the default first billing period end (start + 1 interval). The first billing period runs from the subscription start date to this date. The subscriber is charged the standard period price for the first period. Subsequent billing periods start from this date. Must be after the subscription start date.\n */\n override_first_period_end_date?: string\n offering?: OfferingAttributes\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n plans?: Array<PlanAttributesAndSelectedMeta>\n pricing_options?: Array<PricingOptionAttributesAndSelectedMeta>\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociationsWritable\n selected_plan?: ExternalRef\n selected_pricing_option?: ExternalRef\n order?: BuildSubscriptionOrder\n meta?: SubscriptionMetaWritable\n}\n\nexport type SubscriptionWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionAttributesWritable\n relationships?: Relationships\n meta: SubscriptionMetaWritable\n}\n\nexport type SubscriptionUpdateWritable = {\n id: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionUpdateAttributesWritable\n}\n\nexport type SubscriptionUpdateAttributesWritable = {\n pricing_option_id?: string\n plan_id?: string\n address_id?: string | null\n payment_authority?: PaymentAuthorityWritable\n /**\n * The date and time a `pending` subscription goes live and becomes active. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n go_live_after?: string | null\n}\n\nexport type SubscriptionIncludesWritable = {\n plans?: Array<OfferingPlanWritable>\n pricing_options?: Array<OfferingPricingOptionWritable>\n}\n\nexport type SubscriptionMetaWritable = {\n timestamps: SubscriptionTimestamps\n status: Status\n state?: SubscriptionStateWritable\n manual_payments: ManualPayments\n /**\n * Indicates that the first billing period of this subscription was paid for outside of the subscriptions service.\n */\n first_invoice_prepaid: boolean\n /**\n * Whether a subscription is canceled or not.\n */\n canceled: boolean\n /**\n * Whether a subscription is paused or not.\n */\n paused: boolean\n /**\n * Whether a subscription is closed or not.\n */\n closed: boolean\n /**\n * Whether a subscription is suspended or not.\n */\n suspended: boolean\n /**\n * Whether a subscription is pending activation or not.\n */\n pending: boolean\n /**\n * The time when the subscription becomes eligible for a new invoice. The next invoice will be generated at the next billing run after this point.\n */\n invoice_after: string\n pending_price_change?: SubscriptionPriceChanges\n /**\n * A history of price updates that have been applied to this subscription.\n */\n price_update_history?: Array<SubscriptionPriceUpdateHistoryEntry>\n /**\n * The ID of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_id?: string\n /**\n * The amount of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_amount?: number\n /**\n * Who or what most recently paused this subscription, while it remains paused. Absent when the subscription has never been paused, or is not currently paused (cleared on resume). Only visible to merchandizer/store or organization-scoped callers.\n */\n paused_by?: \"subscriber\" | \"merchandizer\" | \"dunning\"\n}\n\nexport type SubscriptionAttributesWritable = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering: OfferingWritable\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: PaymentAuthorityWritable\n}\n\nexport type SubscriptionStateWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n meta: StateMeta\n}\n\nexport type PaymentAuthorityWritable = (\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type NullablePaymentAuthorityWritable =\n | ((\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n | null\n ) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n })\n | null\n\nexport type CreatePaymentAuthorityWritable = (\n | CreatePaymentAuthorityEpPayments\n | CreatePaymentAuthorityStripe\n | CreatePaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type ImportWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionImportType\n attributes: ImportAttributes\n meta: ImportMetaWritable\n}\n\nexport type ImportMetaWritable = {\n timestamps: JobTimestamps\n records: ImportRecords\n}\n\nexport type JobWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionJobType\n attributes: JobResponseAttributes\n relationships?: Relationships\n meta: JobMetaWritable\n}\n\nexport type JobMetaWritable = {\n timestamps: JobTimestamps\n report?: JobReport\n}\n\nexport type SubscriptionInvoiceWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionInvoiceType\n attributes: SubscriptionInvoiceAttributes\n relationships?: Relationships\n meta: SubscriptionInvoiceMetaWritable\n}\n\nexport type SubscriptionInvoicePaymentWritable = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: SubscriptionInvoicePaymentAttributes\n meta: SubscriptionInvoicePaymentMetaWritable\n}\n\nexport type SubscriptionInvoiceMetaWritable = {\n subscription_id?: SubscriptionsUuid\n subscriber_id?: SubscriptionsUuid\n price?: SingleCurrencyPrice\n /**\n * Invoice totals formatted for display (`with_tax`, `without_tax`, `tax`). Amounts are in the\n * currency's smallest subdivision.\n *\n */\n display_price: DisplayPrice2\n /**\n * A list of notifications scheduled for this invoice. These are derived from the notification\n * schedules configured on the pricing option at the time the invoice was created. Each notification\n * has a due date calculated relative to the billing period end date.\n *\n */\n notifications?: Array<InvoiceNotification>\n timestamps: InvoiceTimestamps\n proration_events: Array<ProrationEvent> | null\n /**\n * The pro-rated remaining value for the billing period\n */\n pro_rata_remaining_value: number\n}\n\nexport type SubscriptionInvoicePaymentMetaWritable = {\n subscription_id: SubscriptionsUuid\n invoice_id: SubscriptionsUuid\n job_id: SubscriptionsUuid\n timestamps: InvoicePaymentTimestamps\n /**\n * Whether manual payments are enabled or the payment will be handled by the configured gateway.\n */\n manual_payment: boolean\n}\n\nexport type SubscriberWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberResponseAttributesWritable\n meta: SubscriberMetaWritable\n}\n\nexport type SubscriberMetaWritable = {\n /**\n * A list of entitlement tags currently active for the subscriber\n */\n feature_entitlements?: Array<FeatureTag>\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriberResponseAttributesWritable =\n SubscriberAttributesWritable & SubscriptionsTimestamps\n\nexport type SubscriberAttributesWritable = {\n account_id: SubscriptionsUuid\n /**\n * The name of the subscriber.\n */\n name: string\n /**\n * The email of the subscriber.\n */\n email: string\n payment_authority?: PaymentAuthorityWritable\n}\n\nexport type SubscriberUpdateAttributesWritable = {\n /**\n * The name of the subscriber.\n */\n name?: string\n /**\n * The email of the subscriber.\n */\n email?: string\n payment_authority?: NullablePaymentAuthorityWritable\n}\n\nexport type SubscriberCreateWritable = {\n type: SubscriptionSubscriberType\n attributes: SubscriberAttributesWritable\n}\n\nexport type SubscriberUpdateWritable = {\n id: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberUpdateAttributesWritable\n}\n\nexport type ScheduleWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleResponseAttributes\n meta: ScheduleMetaWritable\n}\n\nexport type ScheduleMetaWritable = {\n scheduled_for?: string\n timestamps: SubscriptionsTimestamps\n}\n\nexport type InventoriesImportWritable = {\n id: InventoriesUuid\n type: InventoriesImportType\n attributes: InventoriesImportAttributes\n meta: InventoriesImportMeta\n}\n\nexport type AccountResponseWritable = Account & {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n /**\n * Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.\n */\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n /**\n * Tags associated with the account.\n */\n account_tags?: {\n data?: Array<{\n /**\n * The unique identifier for an Account Tag.\n */\n id?: Uuid\n type?: \"account_tag\"\n }>\n }\n ancestors?: Array<{\n data?: {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n type?: \"account\"\n }\n }>\n parent?: {\n data?: {\n type?: \"account\"\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n }\n }\n }\n}\n\n/**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\nexport type AcceptLanguage = string\n\n/**\n * 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.\n */\nexport type Channel = string\n\n/**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\nexport type FilterCatalog = string\n\n/**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterHierarchy = string\n\n/**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\nexport type FilterNode = string\n\n/**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterProduct = string\n\n/**\n * This endpoint supports filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterRule = string\n\n/**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\nexport type Include = Array<\"files\" | \"main_image\" | \"component_products\">\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type Limit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\nexport type Offset = number\n\n/**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\nexport type PricebookIdsForPriceSegmentationPreview = Array<string>\n\n/**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\nexport type PricebookIdsOfAvailablePricesToShow = Array<string>\n\n/**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\nexport type Tag = string\n\nexport type CartInclude = Array<\n \"items\" | \"tax_items\" | \"custom_discounts\" | \"promotions\"\n>\n\n/**\n * For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint documentation to understand the attributes and operators an endpoint supports.\n *\n */\nexport type CartCheckoutFilter = string\n\nexport type OrdersInclude = Array<\"items\">\n\nexport type OrderInclude = Array<\"items\">\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type CartCheckoutLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type CartCheckoutOffset = number\n\n/**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\nexport type OfferingInclude = Array<\"plans\" | \"pricing_options\" | \"features\">\n\n/**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\nexport type SubscriptionInclude = Array<\"plans\" | \"pricing_options\">\n\n/**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\nexport type SubscriptionsFilter = string\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type SubscriptionsPageLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type SubscriptionsPageOffset = number\n\n/**\n * Latitude, Longitude representing current location\n */\nexport type EpGeolocation = string\n\n/**\n * Some Inventories API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\nexport type InventoriesFilter = string\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type InventoriesPageLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type InventoriesPageOffset = number\n\n/**\n * Specifies the filter attributes.\n */\nexport type Filter = string\n\n/**\n * The number of records per page.\n */\nexport type PageLimit = number\n\n/**\n * The number of records to offset the results by.\n */\nexport type PageOffset = number\n\n/**\n * Parameter to retrieve more information about any related resources like account members.\n */\nexport type IncludeAccountMember = string\n\n/**\n * Parameter to retrieve more information about any related resources like accounts.\n */\nexport type IncludeAccount = string\n\n/**\n * The ID of the Account Tag.\n */\nexport type AccountTagId = string\n\n/**\n * The number of records per page.\n */\nexport type AuthenticationRealmspageLimit = number\n\n/**\n * The number of records to offset the results by.\n */\nexport type AuthenticationRealmspageOffset = number\n\n/**\n * Specifies the filter attributes.\n */\nexport type AuthenticationRealmsfilter = string\n\n/**\n *\n * Filtering is available for this endpoint. See [Filtering](/docs/api/pxm/files/get-all-files#filtering).\n *\n */\nexport type Filesfilter = string\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type FilespageOffset = string\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type FilespageLimit = string\n\n/**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\nexport type CatalogSearchacceptLanguage = string\n\n/**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\nexport type CatalogSearchpricebookIdsForPriceSegmentationPreview = Array<string>\n\n/**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\nexport type CatalogSearchpricebookIdsOfAvailablePricesToShow = Array<string>\n\n/**\n * The currency used to resolve product price. If not supplied, the organization/store default currency is used.\n */\nexport type Currency = string\n\n/**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\nexport type ProductsInclude = Array<\n \"files\" | \"main_image\" | \"component_products\"\n>\n\n/**\n * The slug of the search profile to use for this search.\n *\n * On shopper search (`/pcm/catalog/search`, `/pcm/catalog/multi-search`): used only when the matched catalog rule has no valid `search_profile_slug`. When the catalog rule carries a non-blank slug that resolves to a profile, that rule profile is used and this query parameter is silently ignored. Blank or whitespace-only values are treated as omitted. An invalid non-blank slug returns 400 with detail `Search profile '{slug}' not found`.\n *\n * On admin search (`/pcm/catalogs/{catalog_id}/releases/{release_id}/…`): catalog rule profiles are not applied. Resolution is this query parameter, then the tenant default profile, then the built-in default.\n *\n * Omit this parameter to use the tenant default profile (or the built-in default when no tenant default exists). The applied slug is returned in the `EP-Search-Profile` response header.\n *\n */\nexport type SearchProfile2 = string\n\n/**\n * Specifies which fields to use for generating facets in search results. See [faceting](/guides/How-To/Catalogs/Search/faceting) for more details.\n */\nexport type SearchQueryParamFacetBy = string\n\n/**\n * Applies conditions to narrow down search results based on specific field values. See [filtering](/guides/How-To/Catalogs/Search/filtering) for more details.\n */\nexport type SearchQueryParamFilterBy = string\n\n/**\n * Comma-separated list of fields to highlight\n */\nexport type SearchQueryParamHighlightFullFields = string\n\n/**\n * Maximum number of facet values to return\n */\nexport type SearchQueryParamMaxFacetValues = number\n\n/**\n * Search query\n */\nexport type SearchQueryParamQ = string\n\n/**\n * Orders search results by specified fields. See [sorting](/guides/How-To/Catalogs/Search/sorting) for more details.\n */\nexport type SearchQueryParamSortBy = string\n\n/**\n * Type of search operation to perform\n */\nexport type SearchQueryParamType = \"search\" | \"autocomplete\"\n\nexport type SimulatedShopperDate = string\n\n/**\n * The bundle configuration.\n */\nexport type BundleConfigurationData2 = BundleConfigurationData\n\n/**\n * A list of product id or sku and bundle configuration for cart.\n */\nexport type ProductsForCartConfiguration2 = ProductsForCartConfiguration\n\nexport type GetByContextReleaseData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: never\n url: \"/catalog\"\n}\n\nexport type GetByContextReleaseErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextReleaseError =\n GetByContextReleaseErrors[keyof GetByContextReleaseErrors]\n\nexport type GetByContextReleaseResponses = {\n /**\n * The catalog.\n */\n 200: ReleaseData\n}\n\nexport type GetByContextReleaseResponse =\n GetByContextReleaseResponses[keyof GetByContextReleaseResponses]\n\nexport type GetByContextAllHierarchiesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: {\n /**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies\"\n}\n\nexport type GetByContextAllHierarchiesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllHierarchiesError =\n GetByContextAllHierarchiesErrors[keyof GetByContextAllHierarchiesErrors]\n\nexport type GetByContextAllHierarchiesResponses = {\n /**\n * The hierarchies of the catalog.\n */\n 200: HierarchyListData\n}\n\nexport type GetByContextAllHierarchiesResponse =\n GetByContextAllHierarchiesResponses[keyof GetByContextAllHierarchiesResponses]\n\nexport type GetByContextHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: never\n url: \"/catalog/hierarchies/{hierarchy_id}\"\n}\n\nexport type GetByContextHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyError =\n GetByContextHierarchyErrors[keyof GetByContextHierarchyErrors]\n\nexport type GetByContextHierarchyResponses = {\n /**\n * The catalog hierarchy.\n */\n 200: HierarchyData\n}\n\nexport type GetByContextHierarchyResponse =\n GetByContextHierarchyResponses[keyof GetByContextHierarchyResponses]\n\nexport type GetByContextHierarchyNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/nodes\"\n}\n\nexport type GetByContextHierarchyNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyNodesError =\n GetByContextHierarchyNodesErrors[keyof GetByContextHierarchyNodesErrors]\n\nexport type GetByContextHierarchyNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetByContextHierarchyNodesResponse =\n GetByContextHierarchyNodesResponses[keyof GetByContextHierarchyNodesResponses]\n\nexport type GetByContextHierarchyChildNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/children\"\n}\n\nexport type GetByContextHierarchyChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyChildNodesError =\n GetByContextHierarchyChildNodesErrors[keyof GetByContextHierarchyChildNodesErrors]\n\nexport type GetByContextHierarchyChildNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetByContextHierarchyChildNodesResponse =\n GetByContextHierarchyChildNodesResponses[keyof GetByContextHierarchyChildNodesResponses]\n\nexport type GetByContextAllNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path?: never\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes\"\n}\n\nexport type GetByContextAllNodesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllNodesError =\n GetByContextAllNodesErrors[keyof GetByContextAllNodesErrors]\n\nexport type GetByContextAllNodesResponses = {\n /**\n * The nodes of the catalog.\n */\n 200: NodeListData\n}\n\nexport type GetByContextAllNodesResponse =\n GetByContextAllNodesResponses[keyof GetByContextAllNodesResponses]\n\nexport type GetByContextNodeData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: never\n url: \"/catalog/nodes/{node_id}\"\n}\n\nexport type GetByContextNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextNodeError =\n GetByContextNodeErrors[keyof GetByContextNodeErrors]\n\nexport type GetByContextNodeResponses = {\n /**\n * The catalog node.\n */\n 200: NodeData\n}\n\nexport type GetByContextNodeResponse =\n GetByContextNodeResponses[keyof GetByContextNodeResponses]\n\nexport type GetByContextChildNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes/{node_id}/relationships/children\"\n}\n\nexport type GetByContextChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextChildNodesError =\n GetByContextChildNodesErrors[keyof GetByContextChildNodesErrors]\n\nexport type GetByContextChildNodesResponses = {\n /**\n * The child nodes of a catalog node.\n */\n 200: NodeListData\n}\n\nexport type GetByContextChildNodesResponse =\n GetByContextChildNodesResponses[keyof GetByContextChildNodesResponses]\n\nexport type GetByContextAllProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products\"\n}\n\nexport type GetByContextAllProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllProductsError =\n GetByContextAllProductsErrors[keyof GetByContextAllProductsErrors]\n\nexport type GetByContextAllProductsResponses = {\n /**\n * The products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextAllProductsResponse =\n GetByContextAllProductsResponses[keyof GetByContextAllProductsResponses]\n\nexport type GetByContextProductData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalog/products/{product_id}\"\n}\n\nexport type GetByContextProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductError =\n GetByContextProductErrors[keyof GetByContextProductErrors]\n\nexport type GetByContextProductResponses = {\n /**\n * The product of a catalog.\n */\n 200: ProductData\n}\n\nexport type GetByContextProductResponse =\n GetByContextProductResponses[keyof GetByContextProductResponses]\n\nexport type GetByContextAllRelatedProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n /**\n * The custom relationship slug.\n */\n custom_relationship_slug: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/{custom_relationship_slug}/products\"\n}\n\nexport type GetByContextAllRelatedProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllRelatedProductsError =\n GetByContextAllRelatedProductsErrors[keyof GetByContextAllRelatedProductsErrors]\n\nexport type GetByContextAllRelatedProductsResponses = {\n /**\n * The related products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextAllRelatedProductsResponse =\n GetByContextAllRelatedProductsResponses[keyof GetByContextAllRelatedProductsResponses]\n\nexport type GetByContextComponentProductIdsData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/component_products\"\n}\n\nexport type GetByContextComponentProductIdsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextComponentProductIdsError =\n GetByContextComponentProductIdsErrors[keyof GetByContextComponentProductIdsErrors]\n\nexport type GetByContextComponentProductIdsResponses = {\n /**\n * The list of component product IDs of a bundle product from a catalog.\n */\n 200: ProductReferenceListData\n}\n\nexport type GetByContextComponentProductIdsResponse =\n GetByContextComponentProductIdsResponses[keyof GetByContextComponentProductIdsResponses]\n\nexport type GetByContextChildProductsData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/children\"\n}\n\nexport type GetByContextChildProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextChildProductsError =\n GetByContextChildProductsErrors[keyof GetByContextChildProductsErrors]\n\nexport type GetByContextChildProductsResponses = {\n /**\n * The list of child products of a parent product from a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextChildProductsResponse =\n GetByContextChildProductsResponses[keyof GetByContextChildProductsResponses]\n\nexport type GetByContextProductsForHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/products\"\n}\n\nexport type GetByContextProductsForHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductsForHierarchyError =\n GetByContextProductsForHierarchyErrors[keyof GetByContextProductsForHierarchyErrors]\n\nexport type GetByContextProductsForHierarchyResponses = {\n /**\n * The products of a catalog hierarchy.\n */\n 200: ProductListData\n}\n\nexport type GetByContextProductsForHierarchyResponse =\n GetByContextProductsForHierarchyResponses[keyof GetByContextProductsForHierarchyResponses]\n\nexport type GetByContextProductsForNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes/{node_id}/relationships/products\"\n}\n\nexport type GetByContextProductsForNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductsForNodeError =\n GetByContextProductsForNodeErrors[keyof GetByContextProductsForNodeErrors]\n\nexport type GetByContextProductsForNodeResponses = {\n /**\n * The products of a catalog node.\n */\n 200: ProductListData\n}\n\nexport type GetByContextProductsForNodeResponse =\n GetByContextProductsForNodeResponses[keyof GetByContextProductsForNodeResponses]\n\nexport type ConfigureByContextProductData = {\n /**\n * The bundle configuration.\n */\n body: BundleConfigurationData2\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalog/products/{product_id}/configure\"\n}\n\nexport type ConfigureByContextProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type ConfigureByContextProductError =\n ConfigureByContextProductErrors[keyof ConfigureByContextProductErrors]\n\nexport type ConfigureByContextProductResponses = {\n /**\n * The configured product of a catalog.\n */\n 200: ProductData\n}\n\nexport type ConfigureByContextProductResponse =\n ConfigureByContextProductResponses[keyof ConfigureByContextProductResponses]\n\nexport type GetCatalogsData = {\n body?: never\n path?: never\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs\"\n}\n\nexport type GetCatalogsErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetCatalogsError = GetCatalogsErrors[keyof GetCatalogsErrors]\n\nexport type GetCatalogsResponses = {\n /**\n * The list of catalogs.\n */\n 200: CatalogListData\n}\n\nexport type GetCatalogsResponse =\n GetCatalogsResponses[keyof GetCatalogsResponses]\n\nexport type CreateCatalogData = {\n /**\n * Creates a catalog with the following attributes.\n */\n body: CatalogCreateData\n path?: never\n query?: never\n url: \"/catalogs\"\n}\n\nexport type CreateCatalogErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type CreateCatalogError = CreateCatalogErrors[keyof CreateCatalogErrors]\n\nexport type CreateCatalogResponses = {\n /**\n * The created catalog\n */\n 201: CatalogData\n}\n\nexport type CreateCatalogResponse =\n CreateCatalogResponses[keyof CreateCatalogResponses]\n\nexport type DeleteCatalogByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type DeleteCatalogByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteCatalogByIdError =\n DeleteCatalogByIdErrors[keyof DeleteCatalogByIdErrors]\n\nexport type DeleteCatalogByIdResponses = {\n /**\n * A 204 response indicates that the catalog has been deleted.\n */\n 204: void\n}\n\nexport type DeleteCatalogByIdResponse =\n DeleteCatalogByIdResponses[keyof DeleteCatalogByIdResponses]\n\nexport type GetCatalogByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type GetCatalogByIdErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetCatalogByIdError =\n GetCatalogByIdErrors[keyof GetCatalogByIdErrors]\n\nexport type GetCatalogByIdResponses = {\n /**\n * The catalog.\n */\n 200: CatalogData\n}\n\nexport type GetCatalogByIdResponse =\n GetCatalogByIdResponses[keyof GetCatalogByIdResponses]\n\nexport type UpdateCatalogData = {\n /**\n * Updated catalog.\n */\n body: CatalogUpdateData\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type UpdateCatalogErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type UpdateCatalogError = UpdateCatalogErrors[keyof UpdateCatalogErrors]\n\nexport type UpdateCatalogResponses = {\n /**\n * An updated catalog with the following attributes.\n */\n 200: CatalogData\n}\n\nexport type UpdateCatalogResponse =\n UpdateCatalogResponses[keyof UpdateCatalogResponses]\n\nexport type DeleteReleasesData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type DeleteReleasesErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteReleasesError =\n DeleteReleasesErrors[keyof DeleteReleasesErrors]\n\nexport type DeleteReleasesResponses = {\n /**\n * A 204 response indicates that the releases have been deleted.\n */\n 204: void\n}\n\nexport type DeleteReleasesResponse =\n DeleteReleasesResponses[keyof DeleteReleasesResponses]\n\nexport type GetReleasesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type GetReleasesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetReleasesError = GetReleasesErrors[keyof GetReleasesErrors]\n\nexport type GetReleasesResponses = {\n /**\n * The list of catalogs.\n */\n 200: ReleaseListData\n}\n\nexport type GetReleasesResponse =\n GetReleasesResponses[keyof GetReleasesResponses]\n\nexport type PublishReleaseData = {\n /**\n * Options for catalog release publishing\n */\n body?: CatalogReleaseCreateData\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type PublishReleaseErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type PublishReleaseError =\n PublishReleaseErrors[keyof PublishReleaseErrors]\n\nexport type PublishReleaseResponses = {\n /**\n * Publishes a catalog release with the following attributes.\n */\n 201: ReleaseData\n}\n\nexport type PublishReleaseResponse =\n PublishReleaseResponses[keyof PublishReleaseResponses]\n\nexport type DeleteReleaseByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}\"\n}\n\nexport type DeleteReleaseByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteReleaseByIdError =\n DeleteReleaseByIdErrors[keyof DeleteReleaseByIdErrors]\n\nexport type DeleteReleaseByIdResponses = {\n /**\n * A 204 response indicates that the release has been deleted.\n */\n 204: void\n}\n\nexport type DeleteReleaseByIdResponse =\n DeleteReleaseByIdResponses[keyof DeleteReleaseByIdResponses]\n\nexport type GetReleaseByIdData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}\"\n}\n\nexport type GetReleaseByIdErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetReleaseByIdError =\n GetReleaseByIdErrors[keyof GetReleaseByIdErrors]\n\nexport type GetReleaseByIdResponses = {\n /**\n * The catalog.\n */\n 200: ReleaseData\n}\n\nexport type GetReleaseByIdResponse =\n GetReleaseByIdResponses[keyof GetReleaseByIdResponses]\n\nexport type GetRulesData = {\n body?: never\n path?: never\n query?: {\n /**\n * This endpoint supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/rules\"\n}\n\nexport type GetRulesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetRulesError = GetRulesErrors[keyof GetRulesErrors]\n\nexport type GetRulesResponses = {\n /**\n * The list of catalog rules.\n */\n 200: RuleListData\n}\n\nexport type GetRulesResponse = GetRulesResponses[keyof GetRulesResponses]\n\nexport type CreateRuleData = {\n /**\n * Creates a catalog rule with the following attributes.\n */\n body: RuleCreateData\n path?: never\n query?: never\n url: \"/catalogs/rules\"\n}\n\nexport type CreateRuleErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type CreateRuleError = CreateRuleErrors[keyof CreateRuleErrors]\n\nexport type CreateRuleResponses = {\n /**\n * The created catalog rule\n */\n 201: RuleData\n}\n\nexport type CreateRuleResponse = CreateRuleResponses[keyof CreateRuleResponses]\n\nexport type DeleteRuleByIdData = {\n body?: never\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type DeleteRuleByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteRuleByIdError =\n DeleteRuleByIdErrors[keyof DeleteRuleByIdErrors]\n\nexport type DeleteRuleByIdResponses = {\n /**\n * A 204 response indicates that the catalog rule has been deleted.\n */\n 204: void\n}\n\nexport type DeleteRuleByIdResponse =\n DeleteRuleByIdResponses[keyof DeleteRuleByIdResponses]\n\nexport type GetRuleByIdData = {\n body?: never\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type GetRuleByIdErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetRuleByIdError = GetRuleByIdErrors[keyof GetRuleByIdErrors]\n\nexport type GetRuleByIdResponses = {\n /**\n * The catalog rile.\n */\n 200: RuleData\n}\n\nexport type GetRuleByIdResponse =\n GetRuleByIdResponses[keyof GetRuleByIdResponses]\n\nexport type UpdateRuleData = {\n /**\n * An updated catalog rule with the following attributes.\n */\n body: RuleUpdateData\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type UpdateRuleErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type UpdateRuleError = UpdateRuleErrors[keyof UpdateRuleErrors]\n\nexport type UpdateRuleResponses = {\n /**\n * An Updated catalog rule with the following attributes.\n */\n 200: RuleData\n}\n\nexport type UpdateRuleResponse = UpdateRuleResponses[keyof UpdateRuleResponses]\n\nexport type ValidateCatalogRulesData = {\n body: CatalogRuleValidatorRequest\n path?: never\n query?: {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/rules/validate\"\n}\n\nexport type ValidateCatalogRulesErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type ValidateCatalogRulesError =\n ValidateCatalogRulesErrors[keyof ValidateCatalogRulesErrors]\n\nexport type ValidateCatalogRulesResponses = {\n /**\n * List of matching catalog rules\n */\n 200: RuleListData\n}\n\nexport type ValidateCatalogRulesResponse =\n ValidateCatalogRulesResponses[keyof ValidateCatalogRulesResponses]\n\nexport type GetAllHierarchiesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies\"\n}\n\nexport type GetAllHierarchiesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllHierarchiesError =\n GetAllHierarchiesErrors[keyof GetAllHierarchiesErrors]\n\nexport type GetAllHierarchiesResponses = {\n /**\n * The hierarchies of a catalog.\n */\n 200: HierarchyListData\n}\n\nexport type GetAllHierarchiesResponse =\n GetAllHierarchiesResponses[keyof GetAllHierarchiesResponses]\n\nexport type GetHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}\"\n}\n\nexport type GetHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyError = GetHierarchyErrors[keyof GetHierarchyErrors]\n\nexport type GetHierarchyResponses = {\n /**\n * The catalog hierarchy.\n */\n 200: HierarchyData\n}\n\nexport type GetHierarchyResponse =\n GetHierarchyResponses[keyof GetHierarchyResponses]\n\nexport type GetHierarchyNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/nodes\"\n}\n\nexport type GetHierarchyNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyNodesError =\n GetHierarchyNodesErrors[keyof GetHierarchyNodesErrors]\n\nexport type GetHierarchyNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetHierarchyNodesResponse =\n GetHierarchyNodesResponses[keyof GetHierarchyNodesResponses]\n\nexport type GetHierarchyChildNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/children\"\n}\n\nexport type GetHierarchyChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyChildNodesError =\n GetHierarchyChildNodesErrors[keyof GetHierarchyChildNodesErrors]\n\nexport type GetHierarchyChildNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetHierarchyChildNodesResponse =\n GetHierarchyChildNodesResponses[keyof GetHierarchyChildNodesResponses]\n\nexport type GetAllNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes\"\n}\n\nexport type GetAllNodesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllNodesError = GetAllNodesErrors[keyof GetAllNodesErrors]\n\nexport type GetAllNodesResponses = {\n /**\n * The nodes of a catalog.\n */\n 200: NodeListData\n}\n\nexport type GetAllNodesResponse =\n GetAllNodesResponses[keyof GetAllNodesResponses]\n\nexport type GetNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}\"\n}\n\nexport type GetNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetNodeError = GetNodeErrors[keyof GetNodeErrors]\n\nexport type GetNodeResponses = {\n /**\n * The catalog node.\n */\n 200: NodeData\n}\n\nexport type GetNodeResponse = GetNodeResponses[keyof GetNodeResponses]\n\nexport type GetChildNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/children\"\n}\n\nexport type GetChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetChildNodesError = GetChildNodesErrors[keyof GetChildNodesErrors]\n\nexport type GetChildNodesResponses = {\n /**\n * The child nodes of a catalog node.\n */\n 200: NodeListData\n}\n\nexport type GetChildNodesResponse =\n GetChildNodesResponses[keyof GetChildNodesResponses]\n\nexport type GetAllProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products\"\n}\n\nexport type GetAllProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllProductsError =\n GetAllProductsErrors[keyof GetAllProductsErrors]\n\nexport type GetAllProductsResponses = {\n /**\n * The products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetAllProductsResponse =\n GetAllProductsResponses[keyof GetAllProductsResponses]\n\nexport type GetProductData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}\"\n}\n\nexport type GetProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductError = GetProductErrors[keyof GetProductErrors]\n\nexport type GetProductResponses = {\n /**\n * The product of a catalog.\n */\n 200: ProductData\n}\n\nexport type GetProductResponse = GetProductResponses[keyof GetProductResponses]\n\nexport type GetAllRelatedProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n /**\n * The custom relationship slug.\n */\n custom_relationship_slug: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/{custom_relationship_slug}/products\"\n}\n\nexport type GetAllRelatedProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllRelatedProductsError =\n GetAllRelatedProductsErrors[keyof GetAllRelatedProductsErrors]\n\nexport type GetAllRelatedProductsResponses = {\n /**\n * The related products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetAllRelatedProductsResponse =\n GetAllRelatedProductsResponses[keyof GetAllRelatedProductsResponses]\n\nexport type GetComponentProductIdsData = {\n body?: never\n headers?: {\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/component_products\"\n}\n\nexport type GetComponentProductIdsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetComponentProductIdsError =\n GetComponentProductIdsErrors[keyof GetComponentProductIdsErrors]\n\nexport type GetComponentProductIdsResponses = {\n /**\n * The list of component product IDs of a specific bundle product from a catalog.\n */\n 200: ProductReferenceListData\n}\n\nexport type GetComponentProductIdsResponse =\n GetComponentProductIdsResponses[keyof GetComponentProductIdsResponses]\n\nexport type GetChildProductsData = {\n body?: never\n headers?: {\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/children\"\n}\n\nexport type GetChildProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetChildProductsError =\n GetChildProductsErrors[keyof GetChildProductsErrors]\n\nexport type GetChildProductsResponses = {\n /**\n * The list of child products of a specific base product from a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetChildProductsResponse =\n GetChildProductsResponses[keyof GetChildProductsResponses]\n\nexport type GetProductsForHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/products\"\n}\n\nexport type GetProductsForHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductsForHierarchyError =\n GetProductsForHierarchyErrors[keyof GetProductsForHierarchyErrors]\n\nexport type GetProductsForHierarchyResponses = {\n /**\n * The products of a catalog hierarchy.\n */\n 200: ProductListData\n}\n\nexport type GetProductsForHierarchyResponse =\n GetProductsForHierarchyResponses[keyof GetProductsForHierarchyResponses]\n\nexport type GetProductsForNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/products\"\n}\n\nexport type GetProductsForNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductsForNodeError =\n GetProductsForNodeErrors[keyof GetProductsForNodeErrors]\n\nexport type GetProductsForNodeResponses = {\n /**\n * The products of a catalog node.\n */\n 200: ProductListData\n}\n\nexport type GetProductsForNodeResponse =\n GetProductsForNodeResponses[keyof GetProductsForNodeResponses]\n\nexport type GetCartsData = {\n body?: never\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path?: never\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"custom_discounts\">\n /**\n * The maximum number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Filter expression for searching carts. For more information about filtering, see [Filtering](/guides/Getting-Started/filtering).\n *\n * :::note\n * Filtering is only supported when using **client credentials** (admin) authentication. When using a **customer token** (`X-Moltin-Customer-Token`) or **account token** (`EP-Account-Management-Authentication-Token`), the `filter` parameter is ignored and all carts associated with the customer or account are returned.\n * :::\n *\n * **Supported Fields:**\n * - `account_ids`: Filter carts by associated account ID (UUID format)\n * - `name`: Filter carts by cart name (case-insensitive)\n *\n * **Supported Operators:**\n * - `contains(field,value)`: Contains value in array field\n * - `ilike(field,value)`: Case-insensitive string matching\n *\n * **Examples:**\n * - `contains(account_ids,\"c24e5698-3b54-491b-9225-559c7a9cf2b2\")` - Find carts associated with a specific account\n * - `ilike(name,\"Shopping Cart\")` - Find carts with name matching \"Shopping Cart\" (case-insensitive)\n * - `ilike(name,\"*cart*\")` - Find carts with names containing \"cart\" (wildcard search)\n *\n * **Combining Filters:**\n * You can combine multiple filters using the `:`, and `|` operator for and and or respectively:\n * - `contains(account_ids,\"abc123\"):ilike(name,\"Holiday Cart\")` - Find carts matching both conditions\n * - `contains(account_ids,\"abc123\")|ilike(name,\"Holiday Cart\")` - Find carts matching either condition.\n *\n */\n filter?: string\n }\n url: \"/v2/carts\"\n}\n\nexport type GetCartsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n}\n\nexport type GetCartsError = GetCartsErrors[keyof GetCartsErrors]\n\nexport type GetCartsResponses = {\n 200: CartCollectionResponse\n}\n\nexport type GetCartsResponse = GetCartsResponses[keyof GetCartsResponses]\n\nexport type CreateACartData = {\n body?: CartsRequest\n headers?: {\n /**\n * An Account Management Authentication token for the account to be associated with the cart.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n /**\n * A customer token for the customer to be associated with the cart.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path?: never\n query?: never\n url: \"/v2/carts\"\n}\n\nexport type CreateACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n}\n\nexport type CreateACartError = CreateACartErrors[keyof CreateACartErrors]\n\nexport type CreateACartResponses = {\n 201: CartEntityResponse\n}\n\nexport type CreateACartResponse =\n CreateACartResponses[keyof CreateACartResponses]\n\nexport type DeleteACartData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart that you want to delete.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type DeleteACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type DeleteACartError = DeleteACartErrors[keyof DeleteACartErrors]\n\nexport type DeleteACartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteACartResponse =\n DeleteACartResponses[keyof DeleteACartResponses]\n\nexport type GetACartData = {\n body?: never\n path: {\n /**\n * The unique identifier for this cart that you created.\n */\n cartID: string\n }\n query?: {\n include?: Array<\"items\" | \"tax_items\" | \"custom_discounts\" | \"promotions\">\n }\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type GetACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type GetACartError = GetACartErrors[keyof GetACartErrors]\n\nexport type GetACartResponses = {\n /**\n * OK\n */\n 200: CartEntityResponse\n}\n\nexport type GetACartResponse = GetACartResponses[keyof GetACartResponses]\n\nexport type UpdateACartData = {\n body?: CartsRequest\n path: {\n /**\n * The unique identifier of a cart created by you.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type UpdateACartErrors = {\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Unprocessable Content\n */\n 422: ResponseErrorItem\n}\n\nexport type UpdateACartError = UpdateACartErrors[keyof UpdateACartErrors]\n\nexport type UpdateACartResponses = {\n 200: CartEntityResponse\n}\n\nexport type UpdateACartResponse =\n UpdateACartResponses[keyof UpdateACartResponses]\n\nexport type DeleteAllCartItemsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart created by you.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type DeleteAllCartItemsErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type DeleteAllCartItemsError =\n DeleteAllCartItemsErrors[keyof DeleteAllCartItemsErrors]\n\nexport type DeleteAllCartItemsResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAllCartItemsResponse =\n DeleteAllCartItemsResponses[keyof DeleteAllCartItemsResponses]\n\nexport type GetCartItemsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: {\n /**\n * A comma-separated list of related resources to include in the response.\n */\n include?: Array<\"tax_items\" | \"custom_discounts\" | \"promotions\">\n }\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type GetCartItemsResponses = {\n 200: CartItemsResponse\n}\n\nexport type GetCartItemsResponse =\n GetCartItemsResponses[keyof GetCartItemsResponses]\n\nexport type ManageCartsData = {\n body?:\n | CartItemObjectRequest\n | SubscriptionItemObjectWritable\n | CartMergeObjectRequest\n | CustomItemObject\n | ReOrderObjectRequest\n | PromotionItemObject\n | BulkAddItemsRequest\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type ManageCartsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found - occurs when a referenced product or promotion cannot be found. For bulk operations with add_all_or_nothing=true, the entire operation fails if any item is invalid.\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type ManageCartsError = ManageCartsErrors[keyof ManageCartsErrors]\n\nexport type ManageCartsResponses = {\n /**\n * Successfully added item(s) to cart. When promotions are added, the response includes informational messages in the `meta.messages` field describing the promotion and discount effects.\n */\n 201: CartsResponse\n}\n\nexport type ManageCartsResponse =\n ManageCartsResponses[keyof ManageCartsResponses]\n\nexport type BulkUpdateItemsInCartData = {\n body?: BulkUpdateCartsItems\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type BulkUpdateItemsInCartErrors = {\n /**\n * Insufficient Stock\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkUpdateItemsInCartError =\n BulkUpdateItemsInCartErrors[keyof BulkUpdateItemsInCartErrors]\n\nexport type BulkUpdateItemsInCartResponses = {\n /**\n * Successfully updated cart items\n */\n 200: CartItemCollectionResponse\n}\n\nexport type BulkUpdateItemsInCartResponse =\n BulkUpdateItemsInCartResponses[keyof BulkUpdateItemsInCartResponses]\n\nexport type DeleteACartItemData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart created by you.\n */\n cartID: string\n /**\n * The unique identifier of the cart that you want to delete.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}\"\n}\n\nexport type DeleteACartItemResponses = {\n 200: CartsResponse\n}\n\nexport type DeleteACartItemResponse =\n DeleteACartItemResponses[keyof DeleteACartItemResponses]\n\nexport type UpdateACartItemData = {\n body?: UpdateCartsItems\n path: {\n /**\n * A unique identifier of the cart that you created.\n */\n cartID: string\n /**\n * A unique identifier of the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}\"\n}\n\nexport type UpdateACartItemErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n}\n\nexport type UpdateACartItemError =\n UpdateACartItemErrors[keyof UpdateACartItemErrors]\n\nexport type UpdateACartItemResponses = {\n 200: CartsResponse\n}\n\nexport type UpdateACartItemResponse =\n UpdateACartItemResponses[keyof UpdateACartItemResponses]\n\nexport type DeleteAccountCartAssociationData = {\n body?: CartsRelationshipsAccountsData\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the account.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/accounts\"\n}\n\nexport type DeleteAccountCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type DeleteAccountCartAssociationError =\n DeleteAccountCartAssociationErrors[keyof DeleteAccountCartAssociationErrors]\n\nexport type DeleteAccountCartAssociationResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAccountCartAssociationResponse =\n DeleteAccountCartAssociationResponses[keyof DeleteAccountCartAssociationResponses]\n\nexport type CreateAccountCartAssociationData = {\n body?: CartsRelationshipsAccountsData\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the account. Ensure that you follow the guidelines for [Safe Characters](/guides/Getting-Started/safe-characters).\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/accounts\"\n}\n\nexport type CreateAccountCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateAccountCartAssociationError =\n CreateAccountCartAssociationErrors[keyof CreateAccountCartAssociationErrors]\n\nexport type CreateAccountCartAssociationResponses = {\n /**\n * OK\n */\n 200: CartsRelationshipsAccountsData\n /**\n * No Content is sent back in case the account has already been associated to the cart.\n */\n 204: void\n}\n\nexport type CreateAccountCartAssociationResponse =\n CreateAccountCartAssociationResponses[keyof CreateAccountCartAssociationResponses]\n\nexport type DeleteCustomerCartAssociationData = {\n body?: CartsRelationshipsCustomersData\n headers?: {\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the customer.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/customers\"\n}\n\nexport type DeleteCustomerCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type DeleteCustomerCartAssociationError =\n DeleteCustomerCartAssociationErrors[keyof DeleteCustomerCartAssociationErrors]\n\nexport type DeleteCustomerCartAssociationResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomerCartAssociationResponse =\n DeleteCustomerCartAssociationResponses[keyof DeleteCustomerCartAssociationResponses]\n\nexport type CreateCustomerCartAssociationData = {\n body?: CartsRelationshipsCustomersData\n headers?: {\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the customer. Ensure that you follow the guidelines for [Safe Characters](/guides/Getting-Started/safe-characters).\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/customers\"\n}\n\nexport type CreateCustomerCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateCustomerCartAssociationError =\n CreateCustomerCartAssociationErrors[keyof CreateCustomerCartAssociationErrors]\n\nexport type CreateCustomerCartAssociationResponses = {\n /**\n * OK\n */\n 200: CartsRelationshipsCustomersData\n /**\n * No Content\n */\n 204: void\n}\n\nexport type CreateCustomerCartAssociationResponse =\n CreateCustomerCartAssociationResponses[keyof CreateCustomerCartAssociationResponses]\n\nexport type DeleteAPromotionViaPromotionCodeData = {\n body?: never\n path: {\n /**\n * Specifies the unique identifier of a cart created by you.\n */\n cartID: string\n /**\n * Specifies the promotion code to be deleted.\n */\n promoCode: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/discounts/{promoCode}\"\n}\n\nexport type DeleteAPromotionViaPromotionCodeResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAPromotionViaPromotionCodeResponse =\n DeleteAPromotionViaPromotionCodeResponses[keyof DeleteAPromotionViaPromotionCodeResponses]\n\nexport type AddTaxItemToCartData = {\n body: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes\"\n}\n\nexport type AddTaxItemToCartErrors = {\n /**\n * Unauthorized\n */\n 422: ResponseErrorResponse\n}\n\nexport type AddTaxItemToCartError =\n AddTaxItemToCartErrors[keyof AddTaxItemToCartErrors]\n\nexport type AddTaxItemToCartResponses = {\n 200: CartItemTaxesEntityResponse\n /**\n * Created\n */\n 201: CartItemTaxesEntityResponse\n}\n\nexport type AddTaxItemToCartResponse =\n AddTaxItemToCartResponses[keyof AddTaxItemToCartResponses]\n\nexport type AddTaxItemToCartItemComponentData = {\n body: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes\"\n}\n\nexport type AddTaxItemToCartItemComponentErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type AddTaxItemToCartItemComponentError =\n AddTaxItemToCartItemComponentErrors[keyof AddTaxItemToCartItemComponentErrors]\n\nexport type AddTaxItemToCartItemComponentResponses = {\n /**\n * Created\n */\n 201: CartItemTaxesEntityResponse\n}\n\nexport type AddTaxItemToCartItemComponentResponse =\n AddTaxItemToCartItemComponentResponses[keyof AddTaxItemToCartItemComponentResponses]\n\nexport type DeleteTaxItemFromCartItemComponentData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n /**\n * The unique identifier of the tax item on the component product.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes/{taxitemID}\"\n}\n\nexport type DeleteTaxItemFromCartItemComponentErrors = {\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type DeleteTaxItemFromCartItemComponentError =\n DeleteTaxItemFromCartItemComponentErrors[keyof DeleteTaxItemFromCartItemComponentErrors]\n\nexport type DeleteTaxItemFromCartItemComponentResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteTaxItemFromCartItemComponentResponse =\n DeleteTaxItemFromCartItemComponentResponses[keyof DeleteTaxItemFromCartItemComponentResponses]\n\nexport type UpdateTaxItemFromCartItemComponentData = {\n body?: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n /**\n * The unique identifier of the tax item on the component product.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes/{taxitemID}\"\n}\n\nexport type UpdateTaxItemFromCartItemComponentResponses = {\n 200: CartItemTaxesEntityResponse\n}\n\nexport type UpdateTaxItemFromCartItemComponentResponse =\n UpdateTaxItemFromCartItemComponentResponses[keyof UpdateTaxItemFromCartItemComponentResponses]\n\nexport type BulkDeleteTaxItemsFromCartData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/taxes\"\n}\n\nexport type BulkDeleteTaxItemsFromCartErrors = {\n /**\n * Not Found - No tax items exist in the cart\n */\n 404: ResponseErrorResponse\n}\n\nexport type BulkDeleteTaxItemsFromCartError =\n BulkDeleteTaxItemsFromCartErrors[keyof BulkDeleteTaxItemsFromCartErrors]\n\nexport type BulkDeleteTaxItemsFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type BulkDeleteTaxItemsFromCartResponse =\n BulkDeleteTaxItemsFromCartResponses[keyof BulkDeleteTaxItemsFromCartResponses]\n\nexport type BulkAddTaxItemsToCartData = {\n body?: CartsBulkTaxesWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/taxes\"\n}\n\nexport type BulkAddTaxItemsToCartErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkAddTaxItemsToCartError =\n BulkAddTaxItemsToCartErrors[keyof BulkAddTaxItemsToCartErrors]\n\nexport type BulkAddTaxItemsToCartResponses = {\n 200: CartsBulkTaxes\n /**\n * Created\n */\n 201: CartsBulkTaxes\n}\n\nexport type BulkAddTaxItemsToCartResponse =\n BulkAddTaxItemsToCartResponses[keyof BulkAddTaxItemsToCartResponses]\n\nexport type DeleteATaxItemData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the tax item.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes/{taxitemID}\"\n}\n\nexport type DeleteATaxItemResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteATaxItemResponse =\n DeleteATaxItemResponses[keyof DeleteATaxItemResponses]\n\nexport type UpdateATaxItemData = {\n body?: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the tax item.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes/{taxitemID}\"\n}\n\nexport type UpdateATaxItemResponses = {\n 200: CartItemTaxesEntityResponse\n}\n\nexport type UpdateATaxItemResponse =\n UpdateATaxItemResponses[keyof UpdateATaxItemResponses]\n\nexport type BulkDeleteCustomDiscountsFromCartData = {\n body?: never\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts\"\n}\n\nexport type BulkDeleteCustomDiscountsFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type BulkDeleteCustomDiscountsFromCartResponse =\n BulkDeleteCustomDiscountsFromCartResponses[keyof BulkDeleteCustomDiscountsFromCartResponses]\n\nexport type BulkAddCustomDiscountsToCartData = {\n body?: CartsBulkCustomDiscounts\n path: {\n /**\n * Specifies the system generated ID for the cart that the shopper created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts\"\n}\n\nexport type BulkAddCustomDiscountsToCartErrors = {\n /**\n * Could not apply custom discount\n */\n 400: ResponseErrorResponse\n /**\n * Could not apply custom discount\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkAddCustomDiscountsToCartError =\n BulkAddCustomDiscountsToCartErrors[keyof BulkAddCustomDiscountsToCartErrors]\n\nexport type BulkAddCustomDiscountsToCartResponses = {\n 201:\n | CartsBulkCustomDiscountsResponse\n | CartsBulkCustomDiscountsCollectionResponse\n}\n\nexport type BulkAddCustomDiscountsToCartResponse =\n BulkAddCustomDiscountsToCartResponses[keyof BulkAddCustomDiscountsToCartResponses]\n\nexport type DeleteCustomDiscountFromCartData = {\n body?: never\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the custom discount to be deleted.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type DeleteCustomDiscountFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomDiscountFromCartResponse =\n DeleteCustomDiscountFromCartResponses[keyof DeleteCustomDiscountFromCartResponses]\n\nexport type UpdateCustomDiscountForCartData = {\n body?: CartsCustomDiscountsEntityRequestWritable\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the custom discount to be updated.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type UpdateCustomDiscountForCartResponses = {\n 200: CartsCustomDiscountsEntityResponse\n}\n\nexport type UpdateCustomDiscountForCartResponse =\n UpdateCustomDiscountForCartResponses[keyof UpdateCustomDiscountForCartResponses]\n\nexport type AddCustomDiscountToCartItemData = {\n body?: CartsCustomDiscountsObject\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the unique identifier for the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts\"\n}\n\nexport type AddCustomDiscountToCartItemErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Bad Request\n */\n 422: ResponseErrorResponse\n}\n\nexport type AddCustomDiscountToCartItemError =\n AddCustomDiscountToCartItemErrors[keyof AddCustomDiscountToCartItemErrors]\n\nexport type AddCustomDiscountToCartItemResponses = {\n /**\n * Successful request\n */\n 201:\n | CartsCustomDiscountsCollectionResponse\n | CartsCustomDiscountsEntityResponse\n}\n\nexport type AddCustomDiscountToCartItemResponse =\n AddCustomDiscountToCartItemResponses[keyof AddCustomDiscountToCartItemResponses]\n\nexport type DeleteCustomDiscountFromCartItemData = {\n body?: never\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the cart item.\n */\n cartitemID: string\n /**\n * Specifies the ID for the custom discount to be deleted.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type DeleteCustomDiscountFromCartItemResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomDiscountFromCartItemResponse =\n DeleteCustomDiscountFromCartItemResponses[keyof DeleteCustomDiscountFromCartItemResponses]\n\nexport type UpdateCustomDiscountForCartItemData = {\n body?: CartsCustomDiscountsEntityRequestWritable\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the cart item.\n */\n cartitemID: string\n /**\n * Specifies the ID for the custom discount to be updated.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type UpdateCustomDiscountForCartItemResponses = {\n 200: CartsCustomDiscountsEntityResponse\n}\n\nexport type UpdateCustomDiscountForCartItemResponse =\n UpdateCustomDiscountForCartItemResponses[keyof UpdateCustomDiscountForCartItemResponses]\n\nexport type GetShippingGroupsData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/shipping-groups\"\n}\n\nexport type GetShippingGroupsErrors = {\n /**\n * Cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupsError =\n GetShippingGroupsErrors[keyof GetShippingGroupsErrors]\n\nexport type GetShippingGroupsResponses = {\n /**\n * A list of shipping groups\n */\n 200: {\n data?: Array<ShippingGroupResponse>\n }\n}\n\nexport type GetShippingGroupsResponse =\n GetShippingGroupsResponses[keyof GetShippingGroupsResponses]\n\nexport type CreateShippingGroupData = {\n body: CreateShippingGroupRequest\n path: {\n /**\n * The ID of the cart\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/shipping-groups\"\n}\n\nexport type CreateShippingGroupErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type CreateShippingGroupError =\n CreateShippingGroupErrors[keyof CreateShippingGroupErrors]\n\nexport type CreateShippingGroupResponses = {\n /**\n * Shipping group created successfully\n */\n 201: ShippingGroupEntityResponse\n}\n\nexport type CreateShippingGroupResponse =\n CreateShippingGroupResponses[keyof CreateShippingGroupResponses]\n\nexport type DeleteCartShippingGroupData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group to delete\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type DeleteCartShippingGroupErrors = {\n /**\n * Cannot delete shipping group that is attached to cart items\n */\n 400: ResponseErrorResponse\n /**\n * Cart or shipping group not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type DeleteCartShippingGroupError =\n DeleteCartShippingGroupErrors[keyof DeleteCartShippingGroupErrors]\n\nexport type DeleteCartShippingGroupResponses = {\n /**\n * Successfully deleted the shipping group\n */\n 204: void\n}\n\nexport type DeleteCartShippingGroupResponse =\n DeleteCartShippingGroupResponses[keyof DeleteCartShippingGroupResponses]\n\nexport type GetShippingGroupByIdData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type GetShippingGroupByIdErrors = {\n /**\n * Shipping group or cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupByIdError =\n GetShippingGroupByIdErrors[keyof GetShippingGroupByIdErrors]\n\nexport type GetShippingGroupByIdResponses = {\n /**\n * Shipping group details\n */\n 200: {\n data?: ShippingGroupResponse\n }\n}\n\nexport type GetShippingGroupByIdResponse =\n GetShippingGroupByIdResponses[keyof GetShippingGroupByIdResponses]\n\nexport type UpdateShippingGroupData = {\n body: UpdateCartShippingGroupRequest\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type UpdateShippingGroupErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Shipping group or cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type UpdateShippingGroupError =\n UpdateShippingGroupErrors[keyof UpdateShippingGroupErrors]\n\nexport type UpdateShippingGroupResponses = {\n /**\n * Shipping group updated successfully\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type UpdateShippingGroupResponse =\n UpdateShippingGroupResponses[keyof UpdateShippingGroupResponses]\n\nexport type CreateCartPaymentIntentData = {\n body?: ElasticPathPaymentsPoweredByStripePayment\n path: {\n /**\n * The universally unique identifier of the cart for which you want to create a payment intent.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/payments\"\n}\n\nexport type CreateCartPaymentIntentResponses = {\n /**\n * Payment Intent created successfully.\n */\n 201: CartEntityResponse\n}\n\nexport type CreateCartPaymentIntentResponse =\n CreateCartPaymentIntentResponses[keyof CreateCartPaymentIntentResponses]\n\nexport type UpdateCartPaymentIntentData = {\n body: CartPaymentUpdate\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the payment intent.\n */\n paymentIntentID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/payments/{paymentIntentID}\"\n}\n\nexport type UpdateCartPaymentIntentResponses = {\n /**\n * Payment updated successfully\n */\n 200: CartEntityResponse\n}\n\nexport type UpdateCartPaymentIntentResponse =\n UpdateCartPaymentIntentResponses[keyof UpdateCartPaymentIntentResponses]\n\nexport type CheckoutApiData = {\n body?: CustomerCheckout | AccountCheckout\n headers?: {\n /**\n * An account management authentication token that identifies the authenticated account member.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID of the cart that you want to checkout.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/checkout\"\n}\n\nexport type CheckoutApiErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type CheckoutApiError = CheckoutApiErrors[keyof CheckoutApiErrors]\n\nexport type CheckoutApiResponses = {\n /**\n * OK\n */\n 201: OrderEntityResponse\n}\n\nexport type CheckoutApiResponse =\n CheckoutApiResponses[keyof CheckoutApiResponses]\n\nexport type GetCustomerOrdersData = {\n body?: never\n headers?: {\n /**\n * A customer token to access a specific customer's orders.\n */\n \"x-moltin-customer-token\"?: string\n }\n path?: never\n query?: {\n include?: Array<\"items\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint documentation to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n }\n url: \"/v2/orders\"\n}\n\nexport type GetCustomerOrdersResponses = {\n 200: OrderCollectionResponse\n}\n\nexport type GetCustomerOrdersResponse =\n GetCustomerOrdersResponses[keyof GetCustomerOrdersResponses]\n\nexport type GetAnOrderData = {\n body?: never\n path: {\n /**\n * The ID of the order.\n */\n orderID: string\n }\n query?: {\n include?: Array<\"items\">\n }\n url: \"/v2/orders/{orderID}\"\n}\n\nexport type GetAnOrderErrors = {\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetAnOrderError = GetAnOrderErrors[keyof GetAnOrderErrors]\n\nexport type GetAnOrderResponses = {\n /**\n * OK\n */\n 200: OrderEntityResponse\n}\n\nexport type GetAnOrderResponse = GetAnOrderResponses[keyof GetAnOrderResponses]\n\nexport type UpdateAnOrderData = {\n body?: OrdersUpdateRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}\"\n}\n\nexport type UpdateAnOrderErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type UpdateAnOrderError = UpdateAnOrderErrors[keyof UpdateAnOrderErrors]\n\nexport type UpdateAnOrderResponses = {\n /**\n * OK\n */\n 200: OrderEntityResponse\n}\n\nexport type UpdateAnOrderResponse =\n UpdateAnOrderResponses[keyof UpdateAnOrderResponses]\n\nexport type GetOrderItemsData = {\n body?: never\n path: {\n /**\n * The ID of the order.\n */\n orderID: string\n }\n query?: {\n /**\n * Comma-delimited string of entities to include (tax_items, custom_discounts, promotions).\n */\n include?: string\n }\n url: \"/v2/orders/{orderID}/items\"\n}\n\nexport type GetOrderItemsResponses = {\n 200: OrderItemCollectionResponse\n}\n\nexport type GetOrderItemsResponse =\n GetOrderItemsResponses[keyof GetOrderItemsResponses]\n\nexport type AnonymizeOrdersData = {\n body?: OrdersAnonymizeRequest & unknown\n path?: never\n query?: never\n url: \"/v2/orders/anonymize\"\n}\n\nexport type AnonymizeOrdersErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type AnonymizeOrdersError =\n AnonymizeOrdersErrors[keyof AnonymizeOrdersErrors]\n\nexport type AnonymizeOrdersResponses = {\n /**\n * OK\n */\n 200: OrdersListResponse\n}\n\nexport type AnonymizeOrdersResponse =\n AnonymizeOrdersResponses[keyof AnonymizeOrdersResponses]\n\nexport type ConfirmOrderData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order to confirm.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/confirm\"\n}\n\nexport type ConfirmOrderErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type ConfirmOrderError = ConfirmOrderErrors[keyof ConfirmOrderErrors]\n\nexport type ConfirmOrderResponses = {\n /**\n * Order confirmed successfully\n */\n 200: TransactionEntityResponse\n}\n\nexport type ConfirmOrderResponse =\n ConfirmOrderResponses[keyof ConfirmOrderResponses]\n\nexport type PaymentSetupData = {\n body?: PaymentsRequest\n path: {\n /**\n * The Universally Unique Identifier (UUID) of the order you want to pay for.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/payments\"\n}\n\nexport type PaymentSetupErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Conflict\n */\n 409: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type PaymentSetupError = PaymentSetupErrors[keyof PaymentSetupErrors]\n\nexport type PaymentSetupResponses = {\n /**\n * OK\n */\n 200: TransactionEntityResponse\n}\n\nexport type PaymentSetupResponse =\n PaymentSetupResponses[keyof PaymentSetupResponses]\n\nexport type ConfirmPaymentData = {\n body?: OrdersTransactionsConfirmRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n /**\n * The unique identifier of the transaction.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/confirm\"\n}\n\nexport type ConfirmPaymentErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type ConfirmPaymentError =\n ConfirmPaymentErrors[keyof ConfirmPaymentErrors]\n\nexport type ConfirmPaymentResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type ConfirmPaymentResponse =\n ConfirmPaymentResponses[keyof ConfirmPaymentResponses]\n\nexport type CaptureATransactionData = {\n body?: OrdersTransactionsCaptureRequest\n path: {\n /**\n * The UUID of the order.\n */\n orderID: string\n /**\n * The UUID of the transaction to capture.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/capture\"\n}\n\nexport type CaptureATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type CaptureATransactionError =\n CaptureATransactionErrors[keyof CaptureATransactionErrors]\n\nexport type CaptureATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type CaptureATransactionResponse =\n CaptureATransactionResponses[keyof CaptureATransactionResponses]\n\nexport type RefundATransactionData = {\n body?: OrdersTransactionsRefundRequest\n path: {\n /**\n * The UUID of the order.\n */\n orderID: string\n /**\n * The UUID of the transaction you want to refund.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/refund\"\n}\n\nexport type RefundATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type RefundATransactionError =\n RefundATransactionErrors[keyof RefundATransactionErrors]\n\nexport type RefundATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type RefundATransactionResponse =\n RefundATransactionResponses[keyof RefundATransactionResponses]\n\nexport type GetOrderTransactionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions\"\n}\n\nexport type GetOrderTransactionsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type GetOrderTransactionsError =\n GetOrderTransactionsErrors[keyof GetOrderTransactionsErrors]\n\nexport type GetOrderTransactionsResponses = {\n 200: TransactionListResponse\n}\n\nexport type GetOrderTransactionsResponse =\n GetOrderTransactionsResponses[keyof GetOrderTransactionsResponses]\n\nexport type GetATransactionData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order that you require transactions for.\n */\n orderID: string\n /**\n * The unique identifier of the transaction.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}\"\n}\n\nexport type GetATransactionResponses = {\n 200: ResponseData & {\n data?: TransactionResponse\n }\n}\n\nexport type GetATransactionResponse =\n GetATransactionResponses[keyof GetATransactionResponses]\n\nexport type CancelATransactionData = {\n body?: OrdersTransactionsCancelRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n /**\n * The unique identifier of the transaction to be canceled or voided.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/cancel\"\n}\n\nexport type CancelATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type CancelATransactionError =\n CancelATransactionErrors[keyof CancelATransactionErrors]\n\nexport type CancelATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type CancelATransactionResponse =\n CancelATransactionResponses[keyof CancelATransactionResponses]\n\nexport type GetOrderShippingGroupsData = {\n body?: never\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups\"\n}\n\nexport type GetOrderShippingGroupsErrors = {\n /**\n * Order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetOrderShippingGroupsError =\n GetOrderShippingGroupsErrors[keyof GetOrderShippingGroupsErrors]\n\nexport type GetOrderShippingGroupsResponses = {\n /**\n * A list of shipping groups\n */\n 200: {\n data?: Array<ShippingGroupResponse>\n }\n}\n\nexport type GetOrderShippingGroupsResponse =\n GetOrderShippingGroupsResponses[keyof GetOrderShippingGroupsResponses]\n\nexport type CreateOrderShippingGroupData = {\n /**\n * Shipping group details\n */\n body?: {\n data?: {\n type: \"shipping_group\"\n /**\n * The shipping type for this group\n */\n shipping_type?: string\n /**\n * Tracking reference for the shipment\n */\n tracking_reference?: string\n address?: {\n first_name?: string\n last_name?: string\n phone_number?: string\n company_name?: string\n line_1?: string\n line_2?: string\n city?: string\n postcode?: string\n county?: string\n country?: string\n region?: string\n instructions?: string\n }\n delivery_estimate?: {\n start?: string\n end?: string\n }\n }\n }\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups\"\n}\n\nexport type CreateOrderShippingGroupErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Order not found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateOrderShippingGroupError =\n CreateOrderShippingGroupErrors[keyof CreateOrderShippingGroupErrors]\n\nexport type CreateOrderShippingGroupResponses = {\n /**\n * Shipping group created\n */\n 201: {\n data?: ShippingGroupResponse\n }\n}\n\nexport type CreateOrderShippingGroupResponse =\n CreateOrderShippingGroupResponses[keyof CreateOrderShippingGroupResponses]\n\nexport type GetShippingGroupsByIdData = {\n body?: never\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n /**\n * The ID of the shipping group\n */\n shippingGroupID: string\n }\n query?: {\n /**\n * A comma-separated list of related resources to include in the response.\n */\n include?: \"items\"\n }\n url: \"/v2/orders/{orderID}/shipping-groups/{shippingGroupID}\"\n}\n\nexport type GetShippingGroupsByIdErrors = {\n /**\n * Shipping group or order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupsByIdError =\n GetShippingGroupsByIdErrors[keyof GetShippingGroupsByIdErrors]\n\nexport type GetShippingGroupsByIdResponses = {\n /**\n * Shipping group details\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type GetShippingGroupsByIdResponse =\n GetShippingGroupsByIdResponses[keyof GetShippingGroupsByIdResponses]\n\nexport type PutShippingGroupByIdData = {\n body: UpdateOrderShippingGroupRequest\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n /**\n * The ID of the shipping group\n */\n shippingGroupID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups/{shippingGroupID}\"\n}\n\nexport type PutShippingGroupByIdErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Shipping group or order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type PutShippingGroupByIdError =\n PutShippingGroupByIdErrors[keyof PutShippingGroupByIdErrors]\n\nexport type PutShippingGroupByIdResponses = {\n /**\n * Shipping group updated successfully\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type PutShippingGroupByIdResponse =\n PutShippingGroupByIdResponses[keyof PutShippingGroupByIdResponses]\n\nexport type GetV2SettingsCartData = {\n body?: never\n path?: never\n query?: never\n url: \"/v2/settings/cart\"\n}\n\nexport type GetV2SettingsCartErrors = {\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n}\n\nexport type GetV2SettingsCartError =\n GetV2SettingsCartErrors[keyof GetV2SettingsCartErrors]\n\nexport type GetV2SettingsCartResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type GetV2SettingsCartResponse =\n GetV2SettingsCartResponses[keyof GetV2SettingsCartResponses]\n\nexport type PutV2SettingsCartData = {\n body?: SettingsCartWritable\n path?: never\n query?: never\n url: \"/v2/settings/cart\"\n}\n\nexport type PutV2SettingsCartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type PutV2SettingsCartError =\n PutV2SettingsCartErrors[keyof PutV2SettingsCartErrors]\n\nexport type PutV2SettingsCartResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type PutV2SettingsCartResponse =\n PutV2SettingsCartResponses[keyof PutV2SettingsCartResponses]\n\nexport type GetV2SettingsCartStoreIdData = {\n body?: never\n path: {\n /**\n * The store ID.\n */\n storeID: string\n }\n query?: never\n url: \"/v2/settings/cart/{storeID}\"\n}\n\nexport type GetV2SettingsCartStoreIdErrors = {\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n}\n\nexport type GetV2SettingsCartStoreIdError =\n GetV2SettingsCartStoreIdErrors[keyof GetV2SettingsCartStoreIdErrors]\n\nexport type GetV2SettingsCartStoreIdResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type GetV2SettingsCartStoreIdResponse =\n GetV2SettingsCartStoreIdResponses[keyof GetV2SettingsCartStoreIdResponses]\n\nexport type PutV2SettingsCartStoreIdData = {\n body?: SettingsCartWritable\n path: {\n /**\n * The store ID.\n */\n storeID: string\n }\n query?: never\n url: \"/v2/settings/cart/{storeID}\"\n}\n\nexport type PutV2SettingsCartStoreIdErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type PutV2SettingsCartStoreIdError =\n PutV2SettingsCartStoreIdErrors[keyof PutV2SettingsCartStoreIdErrors]\n\nexport type PutV2SettingsCartStoreIdResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type PutV2SettingsCartStoreIdResponse =\n PutV2SettingsCartStoreIdResponses[keyof PutV2SettingsCartStoreIdResponses]\n\nexport type ListOfferingsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\" | \"features\">\n }\n url: \"/v2/subscriptions/offerings\"\n}\n\nexport type ListOfferingsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingsError = ListOfferingsErrors[keyof ListOfferingsErrors]\n\nexport type ListOfferingsResponses = {\n /**\n * Success. A list of offerings is returned.\n */\n 200: {\n data?: Array<Offering>\n included?: OfferingIncludes\n links?: Links2\n }\n}\n\nexport type ListOfferingsResponse =\n ListOfferingsResponses[keyof ListOfferingsResponses]\n\nexport type GetOfferingData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\" | \"features\">\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}\"\n}\n\nexport type GetOfferingErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetOfferingError = GetOfferingErrors[keyof GetOfferingErrors]\n\nexport type GetOfferingResponses = {\n /**\n * Success. The details of the subscription offering are returned.\n */\n 200: {\n data?: Offering\n included?: OfferingIncludes\n }\n}\n\nexport type GetOfferingResponse =\n GetOfferingResponses[keyof GetOfferingResponses]\n\nexport type ListOfferingPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/pricing-options\"\n}\n\nexport type ListOfferingPricingOptionsErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPricingOptionsError =\n ListOfferingPricingOptionsErrors[keyof ListOfferingPricingOptionsErrors]\n\nexport type ListOfferingPricingOptionsResponses = {\n /**\n * Success. A list of pricing options attached with the offering is returned.\n */\n 200: {\n data?: Array<OfferingPricingOption>\n links?: Links2\n }\n}\n\nexport type ListOfferingPricingOptionsResponse =\n ListOfferingPricingOptionsResponses[keyof ListOfferingPricingOptionsResponses]\n\nexport type ListOfferingFeaturesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/features\"\n}\n\nexport type ListOfferingFeaturesErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingFeaturesError =\n ListOfferingFeaturesErrors[keyof ListOfferingFeaturesErrors]\n\nexport type ListOfferingFeaturesResponses = {\n /**\n * Success. A list of subscription features attached to the offering is returned.\n */\n 200: {\n data?: Array<OfferingFeature>\n links?: Links2\n }\n}\n\nexport type ListOfferingFeaturesResponse =\n ListOfferingFeaturesResponses[keyof ListOfferingFeaturesResponses]\n\nexport type ListOfferingPlansData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/plans\"\n}\n\nexport type ListOfferingPlansErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPlansError =\n ListOfferingPlansErrors[keyof ListOfferingPlansErrors]\n\nexport type ListOfferingPlansResponses = {\n /**\n * Success. A list of subscription plans attached to the offering is returned.\n */\n 200: {\n data?: Array<OfferingPlan>\n links?: Links2\n }\n}\n\nexport type ListOfferingPlansResponse =\n ListOfferingPlansResponses[keyof ListOfferingPlansResponses]\n\nexport type ListOfferingPlanPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the plan.\n */\n plan_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/offerings/{offering_uuid}/plans/{plan_uuid}/relationships/pricing_options\"\n}\n\nexport type ListOfferingPlanPricingOptionsErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPlanPricingOptionsError =\n ListOfferingPlanPricingOptionsErrors[keyof ListOfferingPlanPricingOptionsErrors]\n\nexport type ListOfferingPlanPricingOptionsResponses = {\n /**\n * Success. The pricing option relationships are returned\n */\n 200: {\n data?: Array<RelationshipData>\n }\n}\n\nexport type ListOfferingPlanPricingOptionsResponse =\n ListOfferingPlanPricingOptionsResponses[keyof ListOfferingPlanPricingOptionsResponses]\n\nexport type ListSubscriptionsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\">\n }\n url: \"/v2/subscriptions/subscriptions\"\n}\n\nexport type ListSubscriptionsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionsError =\n ListSubscriptionsErrors[keyof ListSubscriptionsErrors]\n\nexport type ListSubscriptionsResponses = {\n /**\n * Success. A list of subscriptions is returned.\n */\n 200: {\n data?: Array<Subscription>\n included?: SubscriptionIncludes\n links?: Links2\n }\n}\n\nexport type ListSubscriptionsResponse =\n ListSubscriptionsResponses[keyof ListSubscriptionsResponses]\n\nexport type GetSubscriptionData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\">\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}\"\n}\n\nexport type GetSubscriptionErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionError =\n GetSubscriptionErrors[keyof GetSubscriptionErrors]\n\nexport type GetSubscriptionResponses = {\n /**\n * Success. The details of a subscription are returned.\n */\n 200: {\n data?: Subscription\n included?: SubscriptionIncludes\n }\n}\n\nexport type GetSubscriptionResponse =\n GetSubscriptionResponses[keyof GetSubscriptionResponses]\n\nexport type ListSubscriptionPlansData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/plans\"\n}\n\nexport type ListSubscriptionPlansErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionPlansError =\n ListSubscriptionPlansErrors[keyof ListSubscriptionPlansErrors]\n\nexport type ListSubscriptionPlansResponses = {\n /**\n * Success. A list of subscription plans is returned.\n */\n 200: {\n data?: Array<OfferingPlan>\n }\n}\n\nexport type ListSubscriptionPlansResponse =\n ListSubscriptionPlansResponses[keyof ListSubscriptionPlansResponses]\n\nexport type ListSubscriptionPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/pricing-options\"\n}\n\nexport type ListSubscriptionPricingOptionsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionPricingOptionsError =\n ListSubscriptionPricingOptionsErrors[keyof ListSubscriptionPricingOptionsErrors]\n\nexport type ListSubscriptionPricingOptionsResponses = {\n /**\n * Success. A list of subscription pricing options is returned.\n */\n 200: {\n data?: Array<OfferingPricingOption>\n }\n}\n\nexport type ListSubscriptionPricingOptionsResponse =\n ListSubscriptionPricingOptionsResponses[keyof ListSubscriptionPricingOptionsResponses]\n\nexport type ListSubscriptionStatesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states\"\n}\n\nexport type ListSubscriptionStatesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionStatesError =\n ListSubscriptionStatesErrors[keyof ListSubscriptionStatesErrors]\n\nexport type ListSubscriptionStatesResponses = {\n /**\n * Success. A list of subscription states is returned.\n */\n 200: {\n data?: Array<SubscriptionState>\n }\n}\n\nexport type ListSubscriptionStatesResponse =\n ListSubscriptionStatesResponses[keyof ListSubscriptionStatesResponses]\n\nexport type CreateSubscriptionStateData = {\n body?: {\n data: ChangeState\n }\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states\"\n}\n\nexport type CreateSubscriptionStateErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Forbidden. The operation is forbidden on this entity.\n */\n 403: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Unprocessable Content.\n */\n 422: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type CreateSubscriptionStateError =\n CreateSubscriptionStateErrors[keyof CreateSubscriptionStateErrors]\n\nexport type CreateSubscriptionStateResponses = {\n /**\n * Success. The subscription's state has changed.\n */\n 204: void\n}\n\nexport type CreateSubscriptionStateResponse =\n CreateSubscriptionStateResponses[keyof CreateSubscriptionStateResponses]\n\nexport type GetSubscriptionStateData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the subscription state.\n */\n state_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states/{state_uuid}\"\n}\n\nexport type GetSubscriptionStateErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionStateError =\n GetSubscriptionStateErrors[keyof GetSubscriptionStateErrors]\n\nexport type GetSubscriptionStateResponses = {\n /**\n * Success. A subscription state is returned.\n */\n 200: {\n data?: SubscriptionState\n }\n}\n\nexport type GetSubscriptionStateResponse =\n GetSubscriptionStateResponses[keyof GetSubscriptionStateResponses]\n\nexport type ListSubscriptionInvoicesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices\"\n}\n\nexport type ListSubscriptionInvoicesErrors = {\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionInvoicesError =\n ListSubscriptionInvoicesErrors[keyof ListSubscriptionInvoicesErrors]\n\nexport type ListSubscriptionInvoicesResponses = {\n /**\n * Success. A list of invoices is returned.\n */\n 200: {\n data?: Array<SubscriptionInvoice>\n links?: Links2\n }\n}\n\nexport type ListSubscriptionInvoicesResponse =\n ListSubscriptionInvoicesResponses[keyof ListSubscriptionInvoicesResponses]\n\nexport type ListSubscriptionInvoicePaymentsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}/payments\"\n}\n\nexport type ListSubscriptionInvoicePaymentsResponses = {\n /**\n * Success. Payments for the invoice are returned.\n */\n 200: {\n data?: Array<SubscriptionInvoicePayment>\n links?: Links2\n }\n}\n\nexport type ListSubscriptionInvoicePaymentsResponse =\n ListSubscriptionInvoicePaymentsResponses[keyof ListSubscriptionInvoicePaymentsResponses]\n\nexport type GetSubscriptionInvoicePaymentData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the payment.\n */\n payment_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}/payments/{payment_uuid}\"\n}\n\nexport type GetSubscriptionInvoicePaymentErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionInvoicePaymentError =\n GetSubscriptionInvoicePaymentErrors[keyof GetSubscriptionInvoicePaymentErrors]\n\nexport type GetSubscriptionInvoicePaymentResponses = {\n /**\n * Success. Specific payment for the invoice is returned.\n */\n 200: {\n data?: SubscriptionInvoicePayment\n }\n}\n\nexport type GetSubscriptionInvoicePaymentResponse =\n GetSubscriptionInvoicePaymentResponses[keyof GetSubscriptionInvoicePaymentResponses]\n\nexport type GetSubscriptionInvoiceData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}\"\n}\n\nexport type GetSubscriptionInvoiceErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionInvoiceError =\n GetSubscriptionInvoiceErrors[keyof GetSubscriptionInvoiceErrors]\n\nexport type GetSubscriptionInvoiceResponses = {\n /**\n * Success. An invoice is returned.\n */\n 200: {\n data?: SubscriptionInvoice\n }\n}\n\nexport type GetSubscriptionInvoiceResponse =\n GetSubscriptionInvoiceResponses[keyof GetSubscriptionInvoiceResponses]\n\nexport type ListInvoicesData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/invoices\"\n}\n\nexport type ListInvoicesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListInvoicesError = ListInvoicesErrors[keyof ListInvoicesErrors]\n\nexport type ListInvoicesResponses = {\n /**\n * Success. A list of invoices is returned.\n */\n 200: {\n data?: Array<SubscriptionInvoice>\n links?: Links2\n }\n}\n\nexport type ListInvoicesResponse =\n ListInvoicesResponses[keyof ListInvoicesResponses]\n\nexport type GetInvoiceData = {\n body?: never\n path: {\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/invoices/{invoice_uuid}\"\n}\n\nexport type GetInvoiceErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetInvoiceError = GetInvoiceErrors[keyof GetInvoiceErrors]\n\nexport type GetInvoiceResponses = {\n /**\n * Success. The details of the invoice are returned.\n */\n 200: {\n data?: SubscriptionInvoice\n }\n}\n\nexport type GetInvoiceResponse = GetInvoiceResponses[keyof GetInvoiceResponses]\n\nexport type GetFeatureData = {\n body?: never\n path: {\n /**\n * The unique identifier of a feature.\n */\n feature_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/features/{feature_uuid}\"\n}\n\nexport type GetFeatureErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetFeatureError = GetFeatureErrors[keyof GetFeatureErrors]\n\nexport type GetFeatureResponses = {\n /**\n * Success. The feature details are returned.\n */\n 200: {\n data?: Feature\n }\n}\n\nexport type GetFeatureResponse = GetFeatureResponses[keyof GetFeatureResponses]\n\nexport type GetStockData = {\n body?: never\n path: {\n /**\n * The unique identifier of the product.\n */\n product_uuid: InventoriesUuid\n }\n query?: never\n url: \"/v2/inventories/{product_uuid}\"\n}\n\nexport type GetStockErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: InventoriesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: InventoriesErrorResponse\n}\n\nexport type GetStockError = GetStockErrors[keyof GetStockErrors]\n\nexport type GetStockResponses = {\n /**\n * Success. Returns the stock for the given product UUID\n */\n 200: {\n data: StockResponse\n }\n}\n\nexport type GetStockResponse = GetStockResponses[keyof GetStockResponses]\n\nexport type ListLocationsData = {\n body?: never\n headers?: {\n /**\n * Latitude, Longitude representing current location\n */\n \"Ep-Geolocation\"?: string\n }\n path?: never\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * Some Inventories API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * Only supported value is `location`. When specified, the results are sorted in ascending order based on the value of the field. For `location`, this means ascending distance from the supplied geolocation. For more information, see [Sorting](/guides/Getting-Started/sorting). For location sorting, `Ep-Geolocation` header must be provided as well.\n */\n sort?: \"location\"\n }\n url: \"/v2/inventories/locations\"\n}\n\nexport type ListLocationsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: InventoriesErrorResponse\n}\n\nexport type ListLocationsError = ListLocationsErrors[keyof ListLocationsErrors]\n\nexport type ListLocationsResponses = {\n /**\n * Success. A list of locations is returned\n */\n 200: {\n data?: Array<Location>\n links?: Links2\n }\n}\n\nexport type ListLocationsResponse =\n ListLocationsResponses[keyof ListLocationsResponses]\n\nexport type CreateAnAccessTokenData = {\n body?: AccessTokenRequest\n path?: never\n query?: never\n url: \"/oauth/access_token\"\n}\n\nexport type CreateAnAccessTokenErrors = {\n /**\n * Bad Request\n */\n 400: ErrorResponse2\n /**\n * Unauthorized\n */\n 401: ErrorResponse2\n /**\n * Internal server error. There was a system failure in the platform.\n */\n default: ErrorResponse2\n}\n\nexport type CreateAnAccessTokenError =\n CreateAnAccessTokenErrors[keyof CreateAnAccessTokenErrors]\n\nexport type CreateAnAccessTokenResponses = {\n /**\n * OK\n */\n 200: AccessTokenResponse\n}\n\nexport type CreateAnAccessTokenResponse =\n CreateAnAccessTokenResponses[keyof CreateAnAccessTokenResponses]\n\nexport type GetV2AccountAddressesData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: {\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * The number of records per page. If not specified, defaults to the `page_length` setting from the Settings API.\n */\n \"page[limit]\"?: number\n /**\n * The method used to calculate the total count. `lower_bound` limits expensive count operations, `observed` uses a lightweight +1 fetch strategy that will indicate if there is a next page.\n */\n \"page[total_method]\"?: \"lower_bound\" | \"observed\"\n /**\n * Filter addresses using a simple query language.\n */\n filter?: string\n }\n url: \"/v2/accounts/{accountID}/addresses\"\n}\n\nexport type GetV2AccountAddressesErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type GetV2AccountAddressesError =\n GetV2AccountAddressesErrors[keyof GetV2AccountAddressesErrors]\n\nexport type GetV2AccountAddressesResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<AccountAddressResponse>\n meta?: PaginationMeta\n links?: PaginationLinks\n }\n}\n\nexport type GetV2AccountAddressesResponse =\n GetV2AccountAddressesResponses[keyof GetV2AccountAddressesResponses]\n\nexport type PostV2AccountAddressData = {\n body?: {\n data: Address\n }\n path: {\n /**\n * The ID of the account you want to create an address for.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses\"\n}\n\nexport type PostV2AccountAddressErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type PostV2AccountAddressError =\n PostV2AccountAddressErrors[keyof PostV2AccountAddressErrors]\n\nexport type PostV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n /**\n * Created\n */\n 201: {\n data?: AccountAddressResponse\n }\n}\n\nexport type PostV2AccountAddressResponse =\n PostV2AccountAddressResponses[keyof PostV2AccountAddressResponses]\n\nexport type DeleteV2AccountAddressData = {\n body?: never\n path: {\n /**\n * The ID of the account that contains the address to delete.\n */\n accountID: string\n /**\n * The ID of the address to delete.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type DeleteV2AccountAddressErrors = {\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type DeleteV2AccountAddressError =\n DeleteV2AccountAddressErrors[keyof DeleteV2AccountAddressErrors]\n\nexport type DeleteV2AccountAddressResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteV2AccountAddressResponse =\n DeleteV2AccountAddressResponses[keyof DeleteV2AccountAddressResponses]\n\nexport type GetV2AccountAddressData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n /**\n * The ID of the address you want to retrieve.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type GetV2AccountAddressErrors = {\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type GetV2AccountAddressError =\n GetV2AccountAddressErrors[keyof GetV2AccountAddressErrors]\n\nexport type GetV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n}\n\nexport type GetV2AccountAddressResponse =\n GetV2AccountAddressResponses[keyof GetV2AccountAddressResponses]\n\nexport type PutV2AccountAddressData = {\n body?: {\n data: Address\n }\n path: {\n /**\n * The ID of the account you want to create an address for.\n */\n accountID: string\n /**\n * The ID of the address you want to update.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type PutV2AccountAddressErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type PutV2AccountAddressError =\n PutV2AccountAddressErrors[keyof PutV2AccountAddressErrors]\n\nexport type PutV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n}\n\nexport type PutV2AccountAddressResponse =\n PutV2AccountAddressResponses[keyof PutV2AccountAddressResponses]\n\nexport type GetV2AccountsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Specifies the order in which accounts will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"id\"\n | \"-id\"\n | \"name\"\n | \"-name\"\n | \"updated_at\"\n | \"-updated_at\"\n }\n url: \"/v2/accounts\"\n}\n\nexport type GetV2AccountsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsError = GetV2AccountsErrors[keyof GetV2AccountsErrors]\n\nexport type GetV2AccountsResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<\n AccountResponse & {\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n >\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountsResponse =\n GetV2AccountsResponses[keyof GetV2AccountsResponses]\n\nexport type PostV2AccountsData = {\n body?: {\n data: Account & WritableParentId\n }\n path?: never\n query?: never\n url: \"/v2/accounts\"\n}\n\nexport type PostV2AccountsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Conflict\n */\n 409: AccountManagementErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PostV2AccountsError =\n PostV2AccountsErrors[keyof PostV2AccountsErrors]\n\nexport type PostV2AccountsResponses = {\n /**\n * Created\n */\n 201: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type PostV2AccountsResponse =\n PostV2AccountsResponses[keyof PostV2AccountsResponses]\n\nexport type GetV2AccountsAccountIdData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}\"\n}\n\nexport type GetV2AccountsAccountIdErrors = {\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsAccountIdError =\n GetV2AccountsAccountIdErrors[keyof GetV2AccountsAccountIdErrors]\n\nexport type GetV2AccountsAccountIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type GetV2AccountsAccountIdResponse =\n GetV2AccountsAccountIdResponses[keyof GetV2AccountsAccountIdResponses]\n\nexport type PutV2AccountsAccountIdData = {\n body?: {\n data: Account & ReadOnlyParentId\n }\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}\"\n}\n\nexport type PutV2AccountsAccountIdErrors = {\n /**\n * Bad Request\n */\n 400: {\n errors?: Array<{\n detail?: string\n status?: string\n title?: string\n }>\n }\n /**\n * Not Found\n */\n 404: {\n errors?: Array<{\n detail?: string\n status?: string\n title?: string\n }>\n }\n /**\n * Conflict\n */\n 409: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PutV2AccountsAccountIdError =\n PutV2AccountsAccountIdErrors[keyof PutV2AccountsAccountIdErrors]\n\nexport type PutV2AccountsAccountIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type PutV2AccountsAccountIdResponse =\n PutV2AccountsAccountIdResponses[keyof PutV2AccountsAccountIdResponses]\n\nexport type GetV2AccountMembersData = {\n body?: never\n path?: never\n query?: {\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * Specifies the order in which account members will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"email\"\n | \"-email\"\n | \"id\"\n | \"-id\"\n | \"name\"\n | \"-name\"\n | \"updated_at\"\n | \"-updated_at\"\n }\n url: \"/v2/account-members\"\n}\n\nexport type GetV2AccountMembersErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountMembersError =\n GetV2AccountMembersErrors[keyof GetV2AccountMembersErrors]\n\nexport type GetV2AccountMembersResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<AccountMemberResponse>\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountMembersResponse =\n GetV2AccountMembersResponses[keyof GetV2AccountMembersResponses]\n\nexport type GetV2AccountMembersAccountMemberIdData = {\n body?: never\n path: {\n /**\n * The unique identifier of the account member that you want to retrieve.\n */\n accountMemberID: string\n }\n query?: never\n url: \"/v2/account-members/{accountMemberID}\"\n}\n\nexport type GetV2AccountMembersAccountMemberIdErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountMembersAccountMemberIdError =\n GetV2AccountMembersAccountMemberIdErrors[keyof GetV2AccountMembersAccountMemberIdErrors]\n\nexport type GetV2AccountMembersAccountMemberIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountMemberResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type GetV2AccountMembersAccountMemberIdResponse =\n GetV2AccountMembersAccountMemberIdResponses[keyof GetV2AccountMembersAccountMemberIdResponses]\n\nexport type GetV2AccountsAccountIdAccountMembershipsData = {\n body?: never\n path: {\n /**\n * The ID of the account for which you want to get the list of unassigned account members.\n */\n accountID: string\n }\n query?: {\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Parameter to retrieve more information about any related resources like account members.\n */\n include?: string\n /**\n * Specifies the order in which account memberships will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"updated_at\"\n | \"-updated_at\"\n | \"id\"\n | \"-id\"\n }\n url: \"/v2/accounts/{accountID}/account-memberships\"\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsError =\n GetV2AccountsAccountIdAccountMembershipsErrors[keyof GetV2AccountsAccountIdAccountMembershipsErrors]\n\nexport type GetV2AccountsAccountIdAccountMembershipsResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<\n AccountMembershipResponse & {\n /**\n * The unique identifier for an Account Member.\n */\n account_member_id?: Uuid\n }\n >\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsResponse =\n GetV2AccountsAccountIdAccountMembershipsResponses[keyof GetV2AccountsAccountIdAccountMembershipsResponses]\n\nexport type PostV2AccountMembersTokensData = {\n body?: {\n data:\n | ({\n authentication_mechanism: \"oidc\"\n } & OpenIdConnectRequest)\n | ({\n authentication_mechanism: \"password\"\n } & PasswordRequest)\n | ({\n authentication_mechanism: \"passwordless\"\n } & PasswordlessRequest)\n | ({\n authentication_mechanism: \"self_signup\"\n } & SelfSignupRequest)\n | ({\n authentication_mechanism: \"account_management_authentication_token\"\n } & SwitchingAccountRequest)\n }\n path?: never\n query?: never\n url: \"/v2/account-members/tokens\"\n}\n\nexport type PostV2AccountMembersTokensErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Forbidden Error\n */\n 403: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PostV2AccountMembersTokensError =\n PostV2AccountMembersTokensErrors[keyof PostV2AccountMembersTokensErrors]\n\nexport type PostV2AccountMembersTokensResponses = {\n /**\n * Created\n */\n 201: {\n data?: Array<AccountManagementAuthenticationTokenResponse>\n meta?: MetaList & MetaAccountMemberId\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type PostV2AccountMembersTokensResponse =\n PostV2AccountMembersTokensResponses[keyof PostV2AccountMembersTokensResponses]\n\nexport type CreateOneTimePasswordTokenRequestData = {\n body: {\n data: OneTimePasswordTokenRequestInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the password profile.\n */\n profileId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/password-profiles/{profileId}/one-time-password-token-request\"\n}\n\nexport type CreateOneTimePasswordTokenRequestErrors = {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n}\n\nexport type CreateOneTimePasswordTokenRequestError =\n CreateOneTimePasswordTokenRequestErrors[keyof CreateOneTimePasswordTokenRequestErrors]\n\nexport type CreateOneTimePasswordTokenRequestResponses = {\n /**\n * Created\n */\n 201: {\n data?: OneTimePasswordTokenRequestResponse\n }\n /**\n * Accepted\n */\n 202: unknown\n}\n\nexport type CreateOneTimePasswordTokenRequestResponse =\n CreateOneTimePasswordTokenRequestResponses[keyof CreateOneTimePasswordTokenRequestResponses]\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdData =\n {\n body: {\n data: UserAuthenticationInfoUpdateInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the user authentication info.\n */\n userAuthInfoId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/user-authentication-info/{userAuthInfoId}\"\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors =\n {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdError =\n PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors[keyof PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors]\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses =\n {\n /**\n * OK\n */\n 200: {\n data?: UserAuthenticationInfoResponse\n links?: AuthenticationRealmsSelfLink\n }\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponse =\n PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses[keyof PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses]\n\nexport type UpdatePasswordProfileInfoData = {\n body: {\n data: UserAuthenticationPasswordProfileInfoUpdateInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the user authentication info.\n */\n userAuthInfoId: string\n /**\n * The ID of the password profile info.\n */\n passwordProfileInfoId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/user-authentication-info/{userAuthInfoId}/user-authentication-password-profile-info/{passwordProfileInfoId}\"\n}\n\nexport type UpdatePasswordProfileInfoErrors = {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n}\n\nexport type UpdatePasswordProfileInfoError =\n UpdatePasswordProfileInfoErrors[keyof UpdatePasswordProfileInfoErrors]\n\nexport type UpdatePasswordProfileInfoResponses = {\n /**\n * OK\n */\n 200: {\n data?: UserAuthenticationPasswordProfileInfoResponse\n links?: AuthenticationRealmsSelfLink\n }\n}\n\nexport type UpdatePasswordProfileInfoResponse =\n UpdatePasswordProfileInfoResponses[keyof UpdatePasswordProfileInfoResponses]\n\nexport type GetAllCurrenciesData = {\n body?: never\n path?: never\n query?: {\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: string\n }\n url: \"/v2/currencies\"\n}\n\nexport type GetAllCurrenciesErrors = {\n /**\n * Bad Request\n */\n 400: ResponseError\n /**\n * Unauthorized\n */\n 401: ResponseError\n}\n\nexport type GetAllCurrenciesError =\n GetAllCurrenciesErrors[keyof GetAllCurrenciesErrors]\n\nexport type GetAllCurrenciesResponses = {\n /**\n * OK\n */\n 200: ResponseData & {\n data?: Array<ResponseCurrency>\n }\n}\n\nexport type GetAllCurrenciesResponse =\n GetAllCurrenciesResponses[keyof GetAllCurrenciesResponses]\n\nexport type GetACurrencyData = {\n body?: never\n path: {\n /**\n * The ID for the requested currency.\n */\n currencyID: string\n }\n query?: never\n url: \"/v2/currencies/{currencyID}\"\n}\n\nexport type GetACurrencyErrors = {\n /**\n * Bad Request\n */\n 400: ResponseError\n /**\n * Unauthorized\n */\n 401: ResponseError\n /**\n * Not Found\n */\n 404: ResponseError\n}\n\nexport type GetACurrencyError = GetACurrencyErrors[keyof GetACurrencyErrors]\n\nexport type GetACurrencyResponses = {\n /**\n * OK\n */\n 200: ResponseData & {\n data?: ResponseCurrency\n }\n}\n\nexport type GetACurrencyResponse =\n GetACurrencyResponses[keyof GetACurrencyResponses]\n\nexport type GetAllFilesData = {\n body?: never\n path?: never\n query?: {\n /**\n *\n * Filtering is available for this endpoint. See [Filtering](/docs/api/pxm/files/get-all-files#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: string\n }\n url: \"/v2/files\"\n}\n\nexport type GetAllFilesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: FilesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: FilesErrorResponse\n}\n\nexport type GetAllFilesError = GetAllFilesErrors[keyof GetAllFilesErrors]\n\nexport type GetAllFilesResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<File>\n meta?: ResultsMeta\n links?: ResultsLinks\n }\n}\n\nexport type GetAllFilesResponse =\n GetAllFilesResponses[keyof GetAllFilesResponses]\n\nexport type GetAFileData = {\n body?: never\n path: {\n /**\n * The unique identifier for a file.\n */\n fileID: string\n }\n query?: never\n url: \"/v2/files/{fileID}\"\n}\n\nexport type GetAFileErrors = {\n /**\n * Forbidden. The operation is forbidden on this entity.\n */\n 404: FilesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: FilesErrorResponse\n}\n\nexport type GetAFileError = GetAFileErrors[keyof GetAFileErrors]\n\nexport type GetAFileResponses = {\n 200: {\n data?: File\n }\n}\n\nexport type GetAFileResponse = GetAFileResponses[keyof GetAFileResponses]\n\nexport type PostMultiSearchData = {\n body: MultiSearchRequest\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The currency used to resolve product price. If not supplied, the organization/store default currency is used.\n */\n \"x-moltin-currency\"?: string\n \"EP-Simulated-Shopper-Date\"?: string\n }\n path?: never\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The slug of the search profile to use for this search.\n *\n * On shopper search (`/pcm/catalog/search`, `/pcm/catalog/multi-search`): used only when the matched catalog rule has no valid `search_profile_slug`. When the catalog rule carries a non-blank slug that resolves to a profile, that rule profile is used and this query parameter is silently ignored. Blank or whitespace-only values are treated as omitted. An invalid non-blank slug returns 400 with detail `Search profile '{slug}' not found`.\n *\n * On admin search (`/pcm/catalogs/{catalog_id}/releases/{release_id}/…`): catalog rule profiles are not applied. Resolution is this query parameter, then the tenant default profile, then the built-in default.\n *\n * Omit this parameter to use the tenant default profile (or the built-in default when no tenant default exists). The applied slug is returned in the `EP-Search-Profile` response header.\n *\n */\n search_profile?: string\n }\n url: \"/pcm/catalog/multi-search\"\n}\n\nexport type PostMultiSearchErrors = {\n /**\n * Bad request - invalid search parameters\n */\n 400: CatalogSearchErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: CatalogSearchErrorResponse\n}\n\nexport type PostMultiSearchError =\n PostMultiSearchErrors[keyof PostMultiSearchErrors]\n\nexport type PostMultiSearchResponses = {\n /**\n * Multi-search results\n */\n 200: MultiSearchResponse\n}\n\nexport type PostMultiSearchResponse =\n PostMultiSearchResponses[keyof PostMultiSearchResponses]\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/client/types.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl:\n | \"https://euwest.api.elasticpath.com\"\n | \"https://useast.api.elasticpath.com\"\n | \"https://euwest.api.elasticpath.com/v2\"\n | \"https://useast.api.elasticpath.com/v2\"\n | (string & {})\n}\n\n/**\n * Amount\n *\n * The three-letter ISO code for the currency associated with this price.\n */\nexport type Amount = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * Whether this price includes tax.\n */\n includes_tax?: boolean\n}\n\n/**\n * 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\n */\nexport type AvailablePrices = Array<{\n /**\n * A unique identifier of a price book.\n */\n pricebook_id?: string\n shopper_attributes?: ShopperAttributes\n /**\n * Sales\n *\n * A set of sale specifications\n */\n sales?: {\n [key: string]: Sale\n }\n price?: Currencies\n tiers?: Tiers\n}>\n\n/**\n * If pricebook segmentation is enabled, this will show all the alternative prices for the product. Will just include 'List Price' initially\n */\nexport type AlternativePrices = Array<{\n /**\n * A name to signify what the alternative price means to the shopper... i.e. 'List Price'\n */\n name?: string\n /**\n * A unique identifier of a price book.\n */\n pricebook_id?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The unique identifier of a sale.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n price?: Currencies\n display_price?: DisplayPrice\n original_display_price?: DisplayPrice\n original_price?: Currencies\n /**\n * You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.\n */\n tiers?: {\n [key: string]: {\n original_price?: Currencies\n price?: Currencies\n display_price?: DisplayPrice\n original_display_price?: DisplayPrice\n }\n }\n}>\n\n/**\n * 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 according to the priority of the price books.\n */\nexport type PrioritizedPricebooks = Array<{\n /**\n * A unique identifier of a price book.\n */\n id: string\n /**\n * Priority is a number and the price book with the highest number has the highest priority.\n */\n priority: number\n}>\n\n/**\n * Catalog\n *\n * Creates a catalog with the following attributes.\n */\nexport type Catalog = {\n /**\n * A unique identifier of a catalog.\n */\n id: string\n attributes: {\n /**\n * The name of a catalog.\n */\n name: string\n /**\n * A brief description of the catalog, such as the purpose of the catalog.\n */\n description?: string\n /**\n * The unique identifiers of the hierarchies associated with a catalog.\n */\n hierarchy_ids: Array<string>\n /**\n * The unique identifier of a price book associated with a catalog. If no price book is selected, the catalog is displayed without prices.\n */\n pricebook_id?: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * The date and time a catalog is created.\n */\n created_at: string\n /**\n * The date and time a catalog was updated.\n */\n updated_at: string\n /**\n * The owner of this resource, can be either `organization` or `store`.\n */\n owner?: \"store\" | \"organization\"\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * CatalogRelationships\n *\n * 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.\n */\n relationships?: {\n /**\n * The catalog rules related to a catalog.\n */\n rules?: {\n links?: RelatedLink\n }\n /**\n * When a catalog is published, a catalog release is created. This is a URL to all catalog published releases available for this catalog.\n */\n releases?: {\n links?: RelatedLink\n meta?: {\n /**\n * The number releases available for a catalog.\n */\n count?: number\n }\n }\n }\n type: \"catalog\"\n}\n\n/**\n * CatalogCreateData\n *\n * Creates a catalog with the following attributes.\n */\nexport type CatalogCreateData = {\n data: {\n attributes: {\n /**\n * The name of the catalog.\n */\n name: string\n /**\n * A brief description of the catalog.\n */\n description?: string | null\n /**\n * The unique identifiers of the hierarchies to associate with a catalog.\n */\n hierarchy_ids: Array<string>\n /**\n * 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 *\n */\n pricebook_id?: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * Represents the type of object being returned. Always `Catalog`.\n */\n type: \"catalog\"\n }\n}\n\n/**\n * CatalogData\n *\n * Container for a single catalog.\n */\nexport type CatalogData = {\n data: Catalog\n links?: Links\n}\n\n/**\n * CatalogListData\n *\n * Container for a list of catalogs.\n */\nexport type CatalogListData = {\n data: Array<Catalog>\n meta?: PageMeta\n links?: Links\n}\n\n/**\n * CatalogUpdateData\n *\n * A catalog combines price books, product lists, and hierarchies.\n */\nexport type CatalogUpdateData = {\n data: {\n attributes: {\n /**\n * The name of the catalog.\n */\n name?: string | null\n /**\n * A brief description of the catalog.\n */\n description?: string | null\n /**\n * The unique identifiers of the hierarchies to associate with a catalog.\n */\n hierarchy_ids?: Array<string> | null\n /**\n * 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.\n */\n pricebook_id?: string | null\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.\n */\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n /**\n * This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n enable_price_segmentation?: boolean\n /**\n * 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).\n */\n include_draft_products?: boolean\n }\n /**\n * The unique identifier of the catalog to be updated.\n */\n id: string\n /**\n * This represents the type of object being returned. Always `catalog`.\n */\n type: \"catalog\"\n }\n}\n\n/**\n * Component Product\n *\n * The unique identifier of the component, for example, `games`.\n */\nexport type ComponentProduct = {\n /**\n * The component name is the name that is displayed in your storefront.\n */\n name?: string\n /**\n * The minimum number of product options a shopper can select from this component.\n */\n min?: number | null\n /**\n * The maximum number of product options a shopper can select from this component.\n */\n max?: number | null\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The product options included in a component. This can be the ID of another bundle.\n */\n options?: Array<ComponentProductOption>\n}\n\n/**\n * Component Product Option\n *\n * The product options included in a component. This can be the ID of another bundle.\n */\nexport type ComponentProductOption = {\n /**\n * A unique identifier of the product you want to add to a component.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: \"product\"\n /**\n * The number of this product option that a shopper must purchase.\n */\n quantity?: number\n /**\n * The minimum quantity of this product option that a shopper can select.\n */\n min?: number | null\n /**\n * The maximum quantity of this product option that a shopper can select.\n */\n max?: number | null\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The boolean indicates whether the current option is a default option for the component.\n */\n default?: boolean | null\n /**\n * 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.\n */\n product_should_be_substituted_with_child?: boolean | null\n /**\n * Merchants can exclude specific child products from a parent product when configuring a bundle.\n */\n excluded_children?: Array<string>\n}\n\n/**\n * Components\n *\n * 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.\n */\nexport type Components = {\n [key: string]: ComponentProduct\n}\n\n/**\n * The length of the custom input text field.\n */\nexport type CustomInputValidationRuleOptions = {\n /**\n * 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.\n */\n max_length?: number\n}\n\n/**\n * Custom Input Validation Rule\n *\n * The validation rules for the custom text.\n */\nexport type CustomInputValidationRule = {\n /**\n * This represents the type of object being returned. Must be `string`.\n */\n type?: \"string\"\n options?: CustomInputValidationRuleOptions\n}\n\n/**\n * Custom Input\n *\n * 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`.\n */\nexport type CustomInput = {\n /**\n * The name for the custom text field that is displayed in your storefront.\n */\n name?: string\n /**\n * The validation rules for the custom text.\n */\n validation_rules?: Array<CustomInputValidationRule>\n /**\n * This is `true` or `false` depending on whether the custom text is required.\n */\n required?: boolean | null\n}\n\n/**\n * Custom Inputs\n *\n * 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 using the `custom_inputs` attribute.\n *\n * - You can rename input to something more representative of the input that shoppers are adding, for example, `message` or `front`.\n * - `name` is the name that is displayed in your storefront.\n * - You can add validation rules. For example, the input field must be a string and/or up to 255 characters in length. The limit is 255 characters.\n *\n */\nexport type CustomInputs = {\n [key: string]: CustomInput\n}\n\n/**\n * Currencies\n *\n * 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.\n */\nexport type Currencies = {\n [key: string]: Amount\n}\n\n/**\n * ShopperAttributes\n *\n * A collection of key-value string pairs, viewable by shoppers.\n */\nexport type ShopperAttributes = {\n [key: string]: string\n}\n\n/**\n * DiffListData\n *\n * A list of differences between two releases.\n */\nexport type DiffListData = {\n data?: Array<ProductDiff>\n links?: Links\n}\n\n/**\n * A price formatted for display.\n */\nexport type DisplayPrice = {\n with_tax?: FormattedPrice\n without_tax?: FormattedPrice\n}\n\n/**\n * APIError\n *\n * APIError is a json-api style part of an error response.\n */\nexport type Error = {\n detail?: string\n status?: string\n title?: string\n}\n\n/**\n * ErrorResponse\n *\n * ErrorResponse is a json-api style Error response.\n */\nexport type ErrorResponse = {\n errors?: Array<Error>\n}\n\n/**\n * Extension\n *\n * The name of the product template.\n */\nexport type Extension = {\n [key: string]: unknown\n}\n\n/**\n * Extensions\n *\n * 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)**.\n */\nexport type Extensions = {\n [key: string]: Extension\n}\n\n/**\n * In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.\n */\nexport type FileReference = {\n /**\n * This represents the type of object being returned. Always `file`.\n */\n type?: \"file\"\n /**\n * A unique identifier for a file.\n */\n id?: string\n /**\n * The date and time a file is created.\n */\n created_at?: string\n}\n\n/**\n * In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.\n */\nexport type FilesRelationship = {\n data?: Array<FileReference>\n}\n\n/**\n * 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 bundle components.\n */\nexport type ComponentProductsRelationship = {\n data?: ProductReferences\n links?: SelfLink\n}\n\n/**\n * 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.\n */\nexport type CustomRelationship = {\n data?: ProductReferences\n links?: CustomRelationshipLinks\n}\n\n/**\n * FormattedPrice\n *\n * A price formatted for display.\n */\nexport type FormattedPrice = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * The three-letter ISO code of the currencies associated with this price and the amount.\n */\n currency?: string\n /**\n * The format of the price for display.\n */\n formatted?: string\n /**\n * The price in displayable float format\n */\n float_price?: number\n}\n\n/**\n * Hierarchy\n *\n * A category hierarchy in a catalog. Hierarchies can have parent nodes and child nodes, as well as a list of attached products.\n */\nexport type Hierarchy = {\n attributes?: HierarchyAttributes\n /**\n * A unique identifier of a hierarchy.\n */\n id?: string\n relationships?: HierarchyRelationships\n /**\n * This represents the type of object being returned. Always `hierarchy`.\n */\n type?: string\n meta?: HierarchyMeta\n}\n\n/**\n * HierarchyMeta\n *\n * A hierarchy's metadata.\n */\nexport type HierarchyMeta = {\n /**\n * 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.\n */\n language?: string\n /**\n * Hierarchy Breadcrumbs\n */\n breadcrumbs?: Array<{\n /**\n * The unique identifier of a hierarchy.\n */\n id?: string\n /**\n * The name of the hierarchy.\n */\n name?: string\n /**\n * A slug for the hierarchy.\n */\n slug?: string\n }>\n /**\n * Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.\n */\n has_children?: boolean | null\n}\n\n/**\n * HierarchyAttributes\n *\n * Resource attributes of a catalog hierarchy.\n */\nexport type HierarchyAttributes = {\n /**\n * The date and time a hierarchy is created.\n */\n created_at?: string\n /**\n * The date and time a hierarchy is published in a catalog.\n */\n published_at?: string | null\n /**\n * A description of a hierarchy.\n */\n description?: string\n /**\n * The name of a hierarchy.\n */\n name?: string\n /**\n * A unique slug for a hierarchy.\n */\n slug?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The date and time a hierarchy was updated.\n */\n updated_at?: string\n}\n\n/**\n * HierarchyData\n *\n * Container for hierarchies.\n */\nexport type HierarchyData = {\n data?: Hierarchy\n links?: Links\n}\n\n/**\n * HierarchyListData\n *\n * Container for a list of hierarchies.\n */\nexport type HierarchyListData = {\n meta?: PageMeta\n data?: Array<Hierarchy>\n links?: Links\n}\n\n/**\n * HierarchyRelationships\n *\n * Relationships to child nodes, and products.\n */\nexport type HierarchyRelationships = {\n /**\n * A URL to all the products associated with a hierarchy.\n */\n products?: {\n links?: RelatedLink\n }\n /**\n * A URL to all the child products associated with a hierarchy.\n */\n children?: {\n links: RelatedLink\n }\n /**\n * A URL to all the nodes associated with a hierarchy.\n */\n nodes?: {\n links: RelatedLink\n }\n}\n\n/**\n * Links allow you to move between requests.\n */\nexport type Links = {\n /**\n * Single entities use a `self` parameter with a link the specific resource.\n */\n self?: string | null\n /**\n * Always the first page.\n */\n first?: string | null\n /**\n * This is `null` if there is only one page.\n */\n last?: string | null\n /**\n * This is `null` if there is only one page.\n */\n prev?: string | null\n /**\n * This is `null` if there is only one page.\n */\n next?: string | null\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type IncludedResponse = {\n /**\n * The main images associated with a product.\n */\n main_images?: Array<ElasticPathFile>\n /**\n * 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.\n */\n component_products?: Array<Product>\n /**\n * The files associated with a product.\n */\n files?: Array<ElasticPathFile>\n}\n\n/**\n * ElasticPathFile\n */\nexport type ElasticPathFile = {\n /**\n * The unique identifier for this file.\n */\n id?: string\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The name of the file.\n */\n file_name?: string\n /**\n * The mime type of the file.\n */\n mime_type?: string\n /**\n * The size of the file. Required when uploading files.\n */\n file_size?: number\n /**\n * DEPRECATED Whether the file public or not. Required when uploading files.\n */\n public?: boolean\n meta?: {\n /**\n * The date and time the file was created.\n */\n timestamps?: {\n /**\n * The date and time the file was created.\n */\n created_at?: string\n }\n /**\n * The file dimensions.\n */\n dimensions?: {\n /**\n * The width of the file.\n */\n width?: number\n /**\n * The height of the file.\n */\n height?: number\n }\n }\n /**\n * Links are used to allow you to move between requests.\n */\n links?: {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string\n }\n /**\n * The publicly available URL for this file.\n */\n link?: {\n /**\n * The publicly available URL for this file.\n */\n href?: string\n meta?: {\n /**\n * Contains the results for the entire collection.\n */\n results?: {\n /**\n * Total number of results for the entire collection.\n */\n total?: number\n }\n }\n }\n}\n\n/**\n * In Product Experience Manager, products can also have associated product images.\n */\nexport type MainImageRelationship = {\n /**\n * The images associated with a product.\n */\n data?: {\n /**\n * This represents the type of object being returned. Always `main_image`.\n */\n type?: \"main_image\"\n /**\n * A unique identifier for an image.\n */\n id?: string\n }\n}\n\n/**\n * Node\n *\n * A category node in a catalog. Nodes can have child nodes, as well as a list of attached products.\n */\nexport type Node = {\n attributes?: NodeAttributes\n /**\n * The unique identifier of a node.\n */\n id?: string\n relationships?: NodeRelationships\n /**\n * This represents the type of object being returned. Always `node`.\n */\n type?: string\n meta?: NodeMeta\n}\n\n/**\n * NodeAttributes\n *\n * Resource attributes of a catalog node.\n */\nexport type NodeAttributes = {\n /**\n * The date and time a node was created.\n */\n created_at?: string\n /**\n * The date and time a node was published in a catalog.\n */\n published_at?: string | null\n /**\n * A description of a node.\n */\n description?: string\n label?: string\n /**\n * 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.\n */\n name?: string\n /**\n * 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.\n */\n slug?: string\n /**\n * 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.\n */\n curated_products?: Array<string>\n status?: string\n shopper_attributes?: ShopperAttributes\n /**\n * The date and time a node was updated.\n */\n updated_at?: string\n}\n\n/**\n * ReleaseIndexingCompleteData\n *\n * The response body for a successful release indexing complete request.\n */\nexport type ReleaseIndexingCompleteData = {\n data?: {\n /**\n * The final status of the search indexing process.\n */\n status: \"succeeded\" | \"failed\"\n /**\n * The elapsed time in milliseconds spent indexing the release.\n */\n duration_ms?: number | null\n }\n}\n\n/**\n * NodeCreateData\n *\n * Container for nodes.\n */\nexport type NodeCreateData = {\n /**\n * NodeCreateArgs\n *\n * A node in a catalog (e.g. a category node). Nodes can have child nodes, as well as a list of attached products\n */\n data: {\n /**\n * NodeCreateAttributes\n *\n * Resource attributes of a catalog node.\n */\n attributes: {\n description?: string\n /**\n * hierarchy id of the node\n */\n hierarchy_id?: string\n label?: string\n name: string\n slug?: string\n status?: string\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n }\n relationships?: NodeRelationships\n id?: string\n type: string\n }\n links?: Links\n}\n\n/**\n * NodeData\n *\n * Container for nodes.\n */\nexport type NodeData = {\n data?: Node\n links?: Links\n}\n\n/**\n * NodeListData\n *\n * Container for a list of nodes.\n */\nexport type NodeListData = {\n meta?: PageMeta\n data?: Array<Node>\n links?: Links\n}\n\n/**\n * NodeMeta\n *\n * A node's metadata.\n */\nexport type NodeMeta = {\n /**\n * The node details localized in the supported languages.\n */\n language?: string\n /**\n * 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.\n *\n * @deprecated\n */\n bread_crumb?: Array<string>\n /**\n * Node Breadcrumbs\n */\n breadcrumbs?: Array<{\n /**\n * The unique identifier of a hierarchy/node.\n */\n id?: string\n /**\n * The name of the hierarchy/node.\n */\n name?: string\n /**\n * A slug for the hierarchy/node.\n */\n slug?: string\n }>\n /**\n * Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.\n */\n has_children?: boolean | null\n}\n\n/**\n * NodeReference\n *\n * Minimum set of information to identify a catalog node.\n */\nexport type NodeReference = {\n /**\n * The unique identifier of a hierarchy.\n */\n id?: string\n /**\n * A label for a hierarchy.\n */\n label?: string\n /**\n * The name of a hierarchy.\n */\n name?: string\n}\n\n/**\n * NodeRelationships\n *\n * Relationships to parent and child nodes, and products.\n */\nexport type NodeRelationships = {\n /**\n * A URL to all products associated with a node.\n */\n products?: {\n data?: Array<ProductReference>\n links?: RelatedLink\n }\n /**\n * A URL to all child nodes associated with a node.\n */\n children?: {\n links: RelatedLink\n }\n /**\n * A URL to all parent nodes associated with a node.\n */\n parent?: {\n data: {\n type: \"node\"\n id: string\n }\n links?: RelatedLink\n }\n /**\n * A URL to the hierarchies associated with a node.\n */\n hierarchy?: {\n data: {\n type: \"hierarchy\"\n id: string\n }\n links?: RelatedLink\n }\n}\n\n/**\n * NodeRelationshipsData\n *\n * Container for node relationships.\n */\nexport type NodeRelationshipsData = {\n data?: NodeRelationships\n links?: Links\n}\n\n/**\n * PageMeta\n *\n * Contains the results for the entire collection.\n */\nexport type PageMeta = {\n /**\n * Total number of results for the entire collection.\n */\n results?: {\n /**\n * Total number of results for the entire collection.\n */\n total?: number\n }\n page?: {\n /**\n * The maximum number of records for all pages.\n */\n limit?: number\n /**\n * The current offset by number of pages.\n */\n offset?: number\n /**\n * The current number of pages.\n */\n current?: number\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n}\n\n/**\n * Pricebook\n *\n * Top level entity in the pricebooks domain model. It contains a list of product prices.\n */\nexport type Pricebook = {\n /**\n * The unique identifier of a price book.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `pricebook`.\n */\n type: \"pricebook\"\n attributes: {\n created_at?: string\n description?: string | null\n name: string | null\n updated_at?: string\n }\n}\n\n/**\n * PricebookData\n *\n * Container for pricebooks.\n */\nexport type PricebookCreateData = {\n /**\n * PricebookCreateArgs\n *\n * New top level pricebook.\n */\n data: {\n type: \"pricebook\"\n attributes: {\n description?: string | null\n name: string | null\n }\n }\n links?: Links\n}\n\n/**\n * PricebookData\n *\n * Container for pricebooks.\n */\nexport type PricebookData = {\n data: Pricebook\n links?: Links\n}\n\n/**\n * PricebookPrice\n *\n * ProductPrice associates a collection of locale specific prices with a product ID.\n */\nexport type PricebookPrice = {\n type: \"product-price\"\n attributes: {\n currencies: TieredCurrencies\n sales?: Sales\n sku: string\n }\n id: string\n}\n\n/**\n * PricebookPriceCreateData\n *\n * Container for pricebook prices.\n */\nexport type PricebookPriceCreateData = {\n /**\n * PricebookPriceCreateArgs\n *\n * ProductPrice associates a collection of locale specific prices with a product ID.\n */\n data: {\n type: \"product-price\"\n attributes: {\n currencies: TieredCurrencies\n sales?: Sales\n sku: string\n }\n }\n links?: Links\n}\n\n/**\n * PricebookPriceData\n *\n * Container for pricebook prices.\n */\nexport type PricebookPriceData = {\n data: PricebookPrice\n links?: Links\n}\n\n/**\n * Product\n *\n * A product in a catalog with the following attributes.\n */\nexport type Product = {\n attributes?: ProductAttributes\n /**\n * A unique identifier for a product.\n */\n id?: string\n relationships?: ProductRelationships\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: string\n meta?: ProductMeta\n}\n\n/**\n * ProductAttributes\n *\n * A product's attributes.\n */\nexport type ProductAttributes = {\n /**\n * The date and time a product was published in a catalog.\n */\n published_at?: string | null\n /**\n * 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.\n */\n base_product?: boolean\n /**\n * The unique identifier of a `parent` product.\n */\n base_product_id?: string\n /**\n * The commodity type, either `physical` or `digital`.\n */\n commodity_type?: string\n /**\n * 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.\n */\n curated_product?: boolean\n /**\n * The universal product code or european article number of the product.\n */\n upc_ean?: string\n /**\n * The manufacturer part number of the product.\n */\n manufacturer_part_num?: string\n /**\n * A list of tags associated with the product. A tag must be HTML compatible characters excluding commas and will be stored in lowercase letters.\n */\n tags?: Array<string>\n /**\n * A list of price modifier names.\n */\n price_modifiers?: Array<string>\n /**\n * The date and time a product was created.\n */\n created_at?: string\n /**\n * A description of the product.\n */\n description?: string\n /**\n * A name of a product.\n */\n name?: string\n price?: Currencies\n shopper_attributes?: ShopperAttributes\n tiers?: Tiers\n components?: Components\n custom_inputs?: CustomInputs\n /**\n * The unique stock keeping unit of the product.\n */\n sku?: string\n /**\n * 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.\n */\n slug?: string\n /**\n * The status of the product, either `live` or `draft`.\n */\n status?: string\n /**\n * The unique attribute associated with the product. This could be an external reference from a separate company system, for example.\n */\n external_ref?: string | null\n /**\n * The date and time a product was updated.\n */\n updated_at?: string\n extensions?: Extensions\n}\n\n/**\n * ProductData\n *\n * Container for products.\n */\nexport type ProductCreateData = {\n /**\n * ProductCreateArgs\n *\n * A new product in a catalog.\n */\n data?: {\n /**\n * ProductCreateAttributes\n *\n * A product's attributes.\n */\n attributes: {\n description?: string\n name: string\n sku?: string\n slug?: string\n status: string\n locales?: {\n [key: string]: {\n [key: string]: string\n }\n }\n }\n id?: string\n type: string\n }\n links?: Links\n}\n\n/**\n * ProductData\n *\n * Container for products.\n */\nexport type ProductData = {\n data?: Product\n included?: IncludedResponse\n links?: Links\n}\n\nexport type ProductDiff = {\n id?: string\n type?: string\n attributes?: {\n sku?: string\n this_release_id?: string\n other_release_id?: string\n diff_created_at?: string\n exists?: {\n this: boolean\n other: boolean\n }\n updated_at?: {\n this?: string | null\n other?: string | null\n }\n }\n}\n\n/**\n * ProductListData\n *\n * Container for a list of products.\n */\nexport type ProductListData = {\n meta?: PageMeta\n data?: Array<Product>\n included?: IncludedResponse\n links?: Links\n}\n\n/**\n * ProductMeta\n *\n * 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.\n */\nexport type ProductMeta = {\n /**\n * 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.\n */\n bread_crumbs?: {\n [key: string]: Array<string>\n }\n /**\n * 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.\n */\n bread_crumb_nodes?: Array<string>\n /**\n * A unique identifier of the catalog a product is associated with.\n */\n catalog_id?: string\n /**\n * The unique identifier of the price book a product is associated with.\n */\n pricebook_id?: string | null\n display_price?: DisplayPrice\n /**\n * The source of a catalog. Always `pim`.\n */\n catalog_source?: \"pim\"\n /**\n * 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.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n original_price?: Currencies\n original_display_price?: DisplayPrice\n bundle_configuration?: BundleConfiguration\n /**\n * 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.\n */\n component_products?: {\n [key: string]: {\n /**\n * 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.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n price?: Currencies\n display_price?: DisplayPrice\n original_price?: Currencies\n original_display_price?: DisplayPrice\n pricebook_id?: string | null\n alternative_prices?: AlternativePrices\n }\n }\n /**\n * This will contain the component product details (with bundle specific pricing) in the configure bundle response for the selected options.\n */\n component_product_data?: {\n [key: string]: Product\n }\n /**\n * 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.\n */\n price_modifiers?: {\n [key: string]: {\n /**\n * 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 *\n */\n modifier_type?: string\n currencies?: Currencies\n }\n }\n /**\n * You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.\n */\n tiers?: {\n [key: string]: {\n /**\n * The unique identifier of a sale.\n */\n sale_id?: string\n /**\n * The expiration date and time of the sale, provided in UTC.\n */\n sale_expires?: string | null\n display_price?: DisplayPrice\n original_price?: Currencies\n original_display_price?: DisplayPrice\n }\n }\n /**\n * 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.\n */\n variation_matrix?: {\n [key: string]: unknown\n }\n /**\n * 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.\n */\n variations?: Array<Variation>\n /**\n * An array of variation options IDs that a child product has.\n */\n child_option_ids?: Array<string> | null\n /**\n * If this is a child product, the `child_variations` object lists the variation option IDs that define this child product.\n */\n child_variations?: Array<Variation> | null\n /**\n * 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 *\n */\n product_types?: Array<string>\n /**\n * If you storefront supports multiple languages, your storefront's preferred language and locale.\n */\n language?: string\n /**\n * 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.\n * This 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\n * and provides the slug(s) needed to list the related products for the Product\n *\n */\n custom_relationships?: Array<string>\n available_prices?: AvailablePrices\n alternative_prices?: AlternativePrices\n /**\n * An array of all pricebooks that have prices for this product\n */\n available_pricebook_ids?: Array<string> | null\n}\n\n/**\n * The options available for a variation.\n */\nexport type VariationOption = {\n /**\n * A unique identifier for an option.\n */\n id?: string\n /**\n * The name of the option.\n */\n name?: string\n /**\n * 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.\n */\n sort_order?: number | null\n /**\n * The option description to display to customers.\n */\n description?: string\n}\n\nexport type Variation = {\n /**\n * A unique identifier of a variation.\n */\n id?: string\n /**\n * The name of a variation.\n */\n name?: string\n /**\n * 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.\n */\n sort_order?: number | null\n option?: VariationOption\n /**\n * The options available for this variation.\n */\n options?: Array<VariationOption>\n}\n\n/**\n * BundleConfigurationData\n *\n * Container for a bundle configuration.\n */\nexport type BundleConfigurationData = {\n data: BundleConfiguration\n}\n\n/**\n * BundleConfiguration\n *\n * 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.\n */\nexport type BundleConfiguration = {\n /**\n * The product options included in a component. This can be the ID of another bundle.\n */\n selected_options: {\n [key: string]: {\n [key: string]: number\n }\n }\n}\n\n/**\n * ProductReference\n *\n * A product identifier.\n */\nexport type ProductReference = {\n /**\n * A unique identifier for a product.\n */\n id?: string\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: \"product\"\n}\n\n/**\n * ProductReferenceListData\n *\n * Container for a list of product references.\n */\nexport type ProductReferenceListData = {\n meta?: PageMeta\n data?: ProductReferences\n links?: Links\n}\n\n/**\n * ProductReferences\n *\n * A list of product identifiers.\n */\nexport type ProductReferences = Array<ProductReference>\n\n/**\n * ProductRelationships\n *\n * 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.\n */\nexport type ProductRelationships = {\n /**\n * 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.\n */\n parent?: {\n data?: ProductReference\n }\n /**\n * 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.\n */\n children?: {\n data?: ProductReferences\n links?: SelfLink\n }\n files?: FilesRelationship\n main_image?: MainImageRelationship\n component_products?: ComponentProductsRelationship\n custom_relationships?: CustomRelationship\n}\n\n/**\n * ProductRelationshipsData\n *\n * Container for product relationships.\n */\nexport type ProductRelationshipsData = {\n data?: ProductRelationships\n links?: Links\n}\n\n/**\n * ProductsForCart\n *\n * A list of products to be added to cart. Can be type product-data or error-response.\n */\nexport type ProductsForCart = {\n data: Array<unknown>\n included?: {\n component_products?: Array<Product>\n } | null\n}\n\n/**\n * ProductsForCartConfiguration\n *\n * A list of product id or sku and bundle configuration for cart.\n */\nexport type ProductsForCartConfiguration = {\n data: Array<{\n id?: string | null\n sku?: string | null\n bundle_configuration?: BundleConfiguration\n }>\n}\n\n/**\n * A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.\n */\nexport type RelatedLink = {\n /**\n * A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.\n */\n related: string\n}\n\n/**\n * For each custom relationship in use on the product, there will be a link to follow.\n */\nexport type CustomRelationshipLinks = {\n [key: string]: unknown\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type SelfLink = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self: string\n}\n\n/**\n * Release\n *\n * A catalog release represents a collection of hierarchical product data, price books and catalogs rules.\n */\nexport type Release = {\n /**\n * A unique identifier for the catalog release.\n */\n id?: string\n attributes?: {\n /**\n * The name of a release.\n */\n name?: string\n /**\n * The date and time a release was published.\n */\n published_at?: string | null\n /**\n * A unique identifier for the catalog.\n */\n catalog_id?: string\n /**\n * A description of the catalog release.\n */\n description?: string\n /**\n * An array of hierarchy IDs associated with the release.\n */\n hierarchies?: Array<NodeReference>\n }\n relationships?: ReleaseRelationships\n /**\n * This represents the type of object being returned. Always `catalog-release`.\n */\n type?: string\n meta?: ReleaseMeta\n}\n\n/**\n * Release Data\n *\n * Container for a catalog release.\n */\nexport type ReleaseData = {\n data?: Release\n links?: Links\n}\n\n/**\n * ReleaseListData\n *\n * Container for a list of catalog releases.\n */\nexport type ReleaseListData = {\n data?: Array<Release>\n links?: Links\n}\n\n/**\n * ReleaseMeta\n *\n * A release's metadata.\n */\nexport type ReleaseMeta = {\n /**\n * The date and time a release is created.\n */\n created_at?: string\n /**\n * 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.\n */\n started_at?: string | null\n /**\n * The date and time a release is updated.\n */\n updated_at?: string | null\n /**\n * The status of the current release.\n */\n release_status?: \"PENDING\" | \"IN_PROGRESS\" | \"FAILED\" | \"PUBLISHED\"\n /**\n * Your storefront's preferred language code and locale.\n */\n language?: string\n /**\n * 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 *\n */\n is_full_publish?: boolean\n /**\n * 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 *\n */\n is_full_delta?: boolean\n /**\n * The total number of products displayed in a catalog release.\n */\n total_products?: number | null\n /**\n * The total number of hierarchy nodes displayed in a catalog release.\n */\n total_nodes?: number | null\n /**\n * An integer that represents the progress of a catalog publish. The attribute starts at `0` and reaches `100` when publishing is complete.\n */\n percent_completed?: number | null\n /**\n * The owner of the resource, can be either `organization` or `store`.\n */\n owner?: \"store\" | \"organization\"\n /**\n * This indicates whether the catalog release will support price segmentation using catalog rules to define which pricebook(s) to use for pricing\n */\n price_segmentation_enabled?: boolean\n /**\n * The elapsed time in milliseconds Catalog Search spent indexing this release.\n */\n indexing_duration_ms?: number | null\n /**\n * 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.\n */\n includes_draft_products?: boolean\n}\n\n/**\n * ReleaseRelationships\n *\n * 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.\n */\nexport type ReleaseRelationships = {\n /**\n * A URL to a delta document that describes the changes between catalog releases.\n */\n delta?: {\n links?: RelatedLink\n }\n /**\n * A URL to all products included in a catalog release.\n */\n products?: {\n links?: RelatedLink\n }\n /**\n * A URL to all hierarchies included in a catalog release.\n */\n hierarchies?: {\n links: RelatedLink\n }\n}\n\n/**\n * Catalog Rule\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type Rule = {\n /**\n * The catalog rule ID. Use this to get, modify, or delete the catalog rule.\n */\n id: string\n attributes: {\n /**\n * The name of a catalog rule. The name must not contain any spaces.\n */\n name: string\n /**\n * A brief description of the purpose of a catalog rule.\n */\n description?: string\n /**\n * The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string>\n /**\n * 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.\n */\n account_tag_ids?: Array<string>\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string>\n /**\n * 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.\n */\n channels?: Array<string>\n /**\n * 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.\n */\n tags?: Array<string>\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule>\n /**\n * The unique identifier of a catalog.\n */\n catalog_id: string\n /**\n * The date and time a catalog rule was created.\n */\n created_at: string\n /**\n * The date and time a catalog release is updated.\n */\n updated_at: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n * Omitted from responses when unset.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n meta?: RuleMeta\n}\n\n/**\n * ruleMeta\n *\n * A rule's metadata.\n */\nexport type RuleMeta = {\n /**\n * Indicates the similarity score of the rule to the supplied validation request.\n * The 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 *\n * Higher scores indicate greater similarity. Rules are sorted by similarity score in descending order.\n *\n */\n similarity_score?: number | null\n /**\n * will the rule be active at the supplied match date/time?\n */\n active?: boolean\n /**\n * Indicates whether this rule will be the one resolved for a shopper viewing the catalog at the supplied match date/time\n */\n resolved_for_shopper?: boolean\n /**\n * The unique identifier of the published release of the catalog for the rule\n */\n release_id?: string | null\n}\n\n/**\n * CatalogRuleCreateData\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type RuleCreateData = {\n data: {\n attributes: {\n /**\n * The name of a catalog rule. The name must not contain spaces.\n */\n name: string\n /**\n * A brief description of the purpose of a catalog rule.\n */\n description?: string | null\n /**\n * The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string> | null\n /**\n * 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.\n */\n account_tag_ids?: Array<string> | null\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string> | null\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule> | null\n /**\n * The unique identifier of a catalog.\n */\n catalog_id: string\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n }\n}\n\n/**\n * CatalogRuleData\n *\n * Container for a single catalog rule.\n */\nexport type RuleData = {\n data: Rule\n links?: Links\n}\n\n/**\n * CatalogRuleListData\n *\n * Container for a list of catalog rules.\n */\nexport type RuleListData = {\n meta?: PageMeta\n data: Array<Rule>\n links?: Links\n}\n\n/**\n * Catalog Schedule\n *\n * A period of time during which a catalog is valid\n */\nexport type RuleSchedule = {\n /**\n * Matches the date and time that the catalog is displayed from.\n */\n valid_from?: string | null\n /**\n * Matches the date and time the catalog is displayed to.\n */\n valid_to?: string | null\n}\n\n/**\n * CatalogRuleUpdateData\n *\n * A catalog rule specifies which catalog to use for a given shopper context.\n */\nexport type RuleUpdateData = {\n data: {\n /**\n * The catalog rule ID. Use this to get, modify, or delete the catalog rule.\n */\n id: string\n attributes?: {\n /**\n * The name of a catalog rule. The name must not contain spaces.\n */\n name?: string | null\n /**\n * A description of the purpose of a catalog rule.\n */\n description?: string | null\n /**\n * Specifies the list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.\n */\n account_ids?: Array<string> | null\n /**\n * 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.\n */\n account_tag_ids?: Array<string> | null\n /**\n * The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.\n */\n customer_ids?: Array<string> | null\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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 *\n * The 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 *\n * Commerce runs on UTC time.\n *\n * You 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 *\n */\n schedules?: Array<RuleSchedule> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * The unique identifier of a catalog rule.\n */\n catalog_id?: string | null\n pricebook_ids?: PrioritizedPricebooks\n /**\n * Optional slug of a Catalog Search profile to apply when this rule is selected for a shopper.\n * This is configuration on the rule (same role as `pricebook_ids`), not a shopper-context matching dimension.\n * Omit the field to leave unchanged. Send an empty string to clear. Invalid format or SYSTEMS_DEFAULT_PROFILE is rejected with 400.\n *\n */\n search_profile_slug?: string | null\n }\n /**\n * This represents the type of object being returned. Always `catalog_rule`.\n */\n type: \"catalog_rule\"\n }\n}\n\nexport type CatalogRuleValidatorRequest = {\n data?: {\n /**\n * 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 *\n */\n match_type: \"filter\" | \"similarity\" | \"conflict\" | \"resolve_for_shopper\"\n /**\n * 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.\n */\n channels?: Array<string> | null\n /**\n * 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.\n */\n tags?: Array<string> | null\n /**\n * List of account IDs.\n */\n account_ids?: Array<string> | null\n /**\n * List of account tag UUIDs.\n */\n account_tag_ids?: Array<string> | null\n /**\n * List of customer IDs.\n */\n customer_ids?: Array<string> | null\n /**\n * List of pricebook IDs.\n */\n pricebook_ids?: Array<string> | null\n schedules?: Array<{\n valid_from?: string\n valid_to?: string\n }> | null\n /**\n * The name of the catalog rule.\n */\n name?: string | null\n /**\n * The id of the catalog to match against.\n */\n catalog_id?: string | null\n /**\n * Optional. When `match_type` is `filter`, ANDs an exact match on the rule's\n * `search_profile_slug`. Not used as a shopper-context matching dimension for\n * `resolve_for_shopper`.\n *\n */\n search_profile_slug?: string | null\n /**\n * The date to match against the schedules.\n */\n match_date?: string | null\n }\n}\n\n/**\n * A set of sale prices and a validity period.\n */\nexport type Sale = {\n schedule?: Schedule\n currencies?: TieredCurrencies\n}\n\n/**\n * Sales\n *\n * A set of sale specifications\n */\nexport type Sales = {\n [key: string]: Sale\n}\n\n/**\n * A definition of the times at which a sale is valid\n */\nexport type Schedule = {\n valid_from?: string | null\n valid_to?: string | null\n}\n\n/**\n * Tier\n *\n * The name of the tier, for example, `Pencils`.\n */\nexport type Tier = {\n /**\n * The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.\n */\n minimum_quantity?: number\n price?: Currencies\n}\n\n/**\n * TieredAmount\n *\n * The three-letter ISO code for the currency associated with this price.\n */\nexport type TieredAmount = {\n /**\n * The price in the lowest denomination for the specified currency. This is a product's list price.\n */\n amount?: number\n /**\n * Whether this price includes tax.\n */\n includes_tax?: boolean\n /**\n * The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.\n */\n tiers?: {\n [key: string]: {\n /**\n * The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.\n */\n minimum_quantity?: number\n /**\n * The price for each quantity.\n */\n amount?: number\n }\n }\n}\n\n/**\n * TieredCurrencies\n *\n * Collection of currency specific prices for a product.\n */\nexport type TieredCurrencies = {\n [key: string]: TieredAmount\n}\n\n/**\n * Tiers\n *\n * The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.\n */\nexport type Tiers = {\n [key: string]: Tier\n}\n\n/**\n * CatalogReleaseCreateData\n *\n * Creates a catalog release with the following attributes.\n */\nexport type CatalogReleaseCreateData = {\n data?: {\n /**\n * 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 *\n */\n export_full_delta?: boolean\n /**\n * 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).\n */\n include_organization_resources?: boolean | null\n }\n}\n\n/**\n * CartContact\n */\nexport type CartContact = {\n /**\n * The email address attached to a cart.\n */\n email?: string\n}\n\n/**\n * DiscountSettings\n */\nexport type DiscountSettings = {\n /**\n * This parameter enables custom discounts for a cart. When set to true and `use_rule_promotions` is not enabled, Elastic Path promotions will not be applied to the new carts. Default is set from cart discount settings for the store. See [Cart Settings](/docs/api/carts/put-v-2-settings-cart).\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to true, this parameter allows the cart to use rule promotions. You can enable this setting together with `custom_discounts_enabled`, for example, while transitioning between promotion systems. However, an individual cart can only contain one type of discount at a time.\n */\n use_rule_promotions?: boolean\n}\n\n/**\n * InventorySettings\n */\nexport type InventorySettings = {\n /**\n * This parameter enables deferring inventory checks on the cart. This allows items to be added to or updating in the cart without checking stock levels. Inventory checks are still performed as normal on checkout\n */\n defer_inventory_check?: boolean\n}\n\n/**\n * ItemSettings\n */\nexport type ItemSettings = {\n /**\n * When set to true, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When false (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n}\n\n/**\n * CustomAttributes\n *\n * Specifies custom attributes for cart or order objects. Each attribute includes a top-level key, as well as corresponding type and value entries. Attribute values must correspond to the assigned types.\n *\n * Example:\n * ```\n * \"custom_attributes\": {\n * \"is_member\": {\n * \"type\": \"boolean\",\n * \"value\": true\n * },\n * \"membership_level\": {\n * \"type\": \"string\",\n * \"value\": \"premium\"\n * }\n * }\n * ```\n *\n */\nexport type CustomAttributes = {\n [key: string]: {\n /**\n * The type of the custom attribute value.\n */\n type: \"string\" | \"integer\" | \"boolean\" | \"float\"\n /**\n * The value of the custom attribute.\n */\n value: string | boolean | number\n }\n}\n\n/**\n * FormattedPriceData\n */\nexport type FormattedPriceData = {\n /**\n * The raw total.\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\nexport type CartTimestamps = {\n /**\n * The date this was created.\n */\n created_at?: string\n /**\n * The date this was last updated.\n */\n updated_at?: string\n /**\n * The date this expires.\n */\n expires_at?: string\n}\n\n/**\n * RelationshipItem\n *\n * Relationship data entry\n */\nexport type RelationshipItem = {\n /**\n * The type of related resource.\n */\n type: string\n /**\n * The ID of the related resource.\n */\n id: string\n}\n\n/**\n * RelationshipArray\n *\n * Array of relationships\n */\nexport type RelationshipArray = {\n /**\n * Individual relationships\n */\n data?: Array<RelationshipItem>\n}\n\n/**\n * BaseCartResponse\n */\nexport type BaseCartResponse = {\n /**\n * The unique identifier for the cart. Use SDK or create it yourself.\n */\n id?: string\n /**\n * The name of this cart.\n */\n name?: string\n /**\n * A description of the cart.\n */\n description?: string\n contact?: CartContact\n discount_settings?: DiscountSettings\n inventory_settings?: InventorySettings\n item_settings?: ItemSettings\n /**\n * Stripe-assigned unique identifier for the linked Payment Intent\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n /**\n * The snapshot date for the cart.\n */\n snapshot_date?: string\n links?: {\n /**\n * A link to that specific resource.\n */\n self?: string\n }\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n }>\n }\n relationships?: {\n customers?:\n | RelationshipArray\n | {\n [key: string]: unknown\n }\n items?:\n | RelationshipArray\n | {\n data: null | Array<{\n id?: string\n type?: string\n }>\n }\n accounts?:\n | RelationshipArray\n | {\n [key: string]: unknown\n }\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n }\n}\n\n/**\n * CartResponse\n */\nexport type CartResponse = BaseCartResponse & {\n /**\n * The type of object being returned.\n */\n type?: \"cart\"\n}\n\nexport type ResponsePageLinks = {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * If there is only one page, it is `null`.\n */\n last?: string\n /**\n * If there is only one page, it is `null`.\n */\n next?: string\n /**\n * if the user is on the first page, it is `null`.\n */\n prev?: string\n}\n\nexport type ResponsePaginationPage = {\n /**\n * The current page.\n */\n current?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100.\n */\n limit?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based.\n */\n offset?: number\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type ResponsePaginationResults = {\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type ResponseMetaCarts = {\n page?: ResponsePaginationPage\n results?: ResponsePaginationResults\n}\n\nexport type CartCollectionResponse = {\n data: Array<CartResponse>\n links?: ResponsePageLinks\n meta?: ResponseMetaCarts\n}\n\nexport type ResponseErrorItem = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string | number\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * The field or location that caused the validation error. For JSON schema validation errors, this contains the JSON path to the invalid field (e.g., 'data.name', 'request', 'data.items[0].quantity').\n */\n source?: string\n /**\n * Additional metadata associated with the error. May include arbitrary keys.\n */\n meta?: {\n /**\n * The resource id associated with the error\n */\n id?: string\n ids?: Array<string>\n item_ids?: Array<string>\n /**\n * The shipping group id associated with the error\n */\n shipping_group_id?: string\n shipping_group_ids?: Array<string>\n /**\n * The cart id associated with the error\n */\n cart_id?: string\n /**\n * The code associated with the error.\n */\n code?: string\n /**\n * The order id associated with the error.\n */\n order_id?: string\n /**\n * The SKU associated with the error.\n */\n sku?: string\n /**\n * The email address associated with the error.\n */\n email?: string\n /**\n * The component product ID associated with the error.\n */\n component_product_id?: string\n /**\n * Custom error metadata key used for additional error context (e.g., in payment rejections).\n */\n \"error-meta-key\"?: string\n /**\n * The value associated with the error.\n */\n value?:\n | string\n | number\n | boolean\n | {\n [key: string]: unknown\n }\n | Array<unknown>\n }\n}\n\nexport type ResponseErrorResponse = {\n errors: Array<ResponseErrorItem>\n}\n\n/**\n * CartsRequest\n */\nexport type CartsRequest = {\n data?: {\n /**\n * The cart description.\n */\n description?: string\n discount_settings?: DiscountSettings\n inventory_settings?: InventorySettings\n item_settings?: ItemSettings\n /**\n * The cart name provided by the shopper. A cart name must contain 1 to 255 characters. You cannot use whitespace characters, but special characters are permitted. For more information, see the [Safe Characters](/guides/Getting-Started/safe-characters) section.\n */\n name?: string\n contact?: CartContact\n /**\n * This optional parameter sets a reference date for the cart. If this parameter is set, it allows the cart to act as one that might occur on that specified date. For example, such future carts might acquire future-enabled discounts, allowing users to test and validate future interactions with carts. The snapshot_date must be in the format 2026-02-21T15:07:25Z. By default, this parameter is left empty.\n */\n snapshot_date?: string\n /**\n * Specifies custom attributes for cart objects. Each attribute includes a top-level key, as well as corresponding type and value entries. Attribute values must correspond to the assigned types.\n *\n * Attribute types include:\n * - string\n * - boolean\n * - integer\n * - float\n *\n * Multiple custom attributes may be submitted together. A cart can have a maximum of 20 custom attributes.\n *\n * Example:\n * ```\n * \"custom_attributes\": {\n * \"is_member\": {\n * \"type\": \"boolean\",\n * \"value\": true\n * },\n * \"membership_level\": {\n * \"type\": \"string\",\n * \"value\": \"premium\"\n * }\n * }\n * ```\n *\n * Updating an existing cart with new custom attributes clears previously-saved attributes. In order to maintain existing custom attributes on a cart, please include them in the update request along with any new attributes.\n *\n */\n custom_attributes?: CustomAttributes\n /**\n * To remove the Stripe payment intent from a cart, pass the empty value in the `payment_intent_id` field. You must use an empty value for this field. You cannot use this endpoint to directly update the cart to use an existing Payment Intent.\n */\n payment_intent_id?: string\n }\n}\n\n/**\n * CustomDiscountResponse\n */\nexport type CustomDiscountResponse = {\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n id?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies from where the custom discount is applied.\n *\n */\n discount_engine?: string\n /**\n * The amount of the custom discount.\n */\n amount?: FormattedPriceData\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The cart item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\n/**\n * CondensedPromotionResponse\n */\nexport type CondensedPromotionResponse = {\n /**\n * Specifies the type of the resource. Always `promotion`.\n */\n type?: \"promotion\"\n /**\n * Specifies the UUID of the promotion.\n */\n readonly id?: string\n /**\n * The name of the promotion.\n */\n name?: string\n /**\n * The description of the promotion.\n */\n description?: string\n /**\n * Whether the promotion is applied automatically.\n */\n automatic?: boolean\n /**\n * The type of promotion (for v1 promotions).\n */\n promotion_type?: string\n /**\n * The source of the promotion (for rule promotions).\n */\n promotion_source?: string\n /**\n * The start date and time of the promotion.\n */\n start?: string\n /**\n * The end date and time of the promotion.\n */\n end?: string\n}\n\nexport type CartEntityResponse = {\n data: CartResponse\n /**\n * Related objects that are included in the response.\n */\n included?: CartIncluded\n /**\n * Additional metadata for the cart response.\n */\n meta?: {\n /**\n * Payment intent details with nested structure including status and other Stripe payment intent fields\n */\n payment_intent?: {\n [key: string]: unknown\n }\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Order Price Data\n */\nexport type ItemPriceData = {\n /**\n * The amount for this item as an integer.\n */\n readonly amount?: number\n /**\n * The currency this item was added to the cart as.\n */\n readonly currency?: string\n /**\n * Whether or not this price is tax inclusive.\n */\n readonly includes_tax?: boolean\n}\n\nexport type Money = {\n /**\n * Amount in minor currency units (e.g., cents).\n */\n amount: number\n /**\n * ISO 4217 currency code (e.g., \"USD\").\n */\n currency: string\n /**\n * Whether the amount includes tax.\n */\n includes_tax: boolean\n}\n\nexport type Discount = {\n amount: Money\n /**\n * The discount code used, if applicable.\n */\n code?: string\n /**\n * Unique identifier for the discount.\n */\n id: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * CartItemFormattedPriceData\n */\nexport type CartItemFormattedPriceData = {\n /**\n * The amount per each single unit.\n */\n unit?: FormattedPriceData\n /**\n * The total amount of the item (i.e., unit * quantity).\n */\n value?: FormattedPriceData\n}\n\n/**\n * Cart Item Response\n */\nexport type CartItemResponse = {\n /**\n * The unique identifier for the cart item.\n */\n readonly id?: string\n /**\n * The type of cart item.\n */\n readonly type?:\n | \"cart_item\"\n | \"custom_item\"\n | \"subscription_item\"\n | \"promotion_item\"\n /**\n * The unique ID of the product (for cart_item type).\n */\n readonly product_id?: string\n /**\n * The unique ID of the promotion (for promotion_item type).\n */\n readonly promotion_id?: string\n /**\n * The unique ID of the subscription offering for subscription items.\n */\n readonly subscription_offering_id?: string\n /**\n * The name of this item\n */\n readonly name?: string\n /**\n * A description of the cart item.\n */\n readonly description?: string\n /**\n * The SKU of the cart item.\n */\n readonly sku?: string\n /**\n * The slug of the cart item.\n */\n readonly slug?: string\n /**\n * The unique identifier of the catalog associated with the product is shown if catalog_source=pim is set.\n */\n readonly catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n readonly catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n readonly bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Product ID\n */\n id?: string\n /**\n * Product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product meta information as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the cart item for bundle products.\n */\n readonly components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n readonly image?: {\n /**\n * The MIME type for the uploaded file.\n */\n readonly mime_type?: string\n /**\n * The name of the image file that was uploaded.\n */\n readonly file_name?: string\n /**\n * The link to the image.\n */\n readonly href?: string\n }\n /**\n * The quantity of the cart item.\n */\n readonly quantity?: number\n /**\n * The quantity automatically added (for gift items).\n */\n readonly auto_add_quantity?: number\n /**\n * Whether or not the quantity of the item will be checked against inventory.\n */\n readonly manage_stock?: boolean\n /**\n * The unit price of the item.\n */\n readonly unit_price?: ItemPriceData\n /**\n * The total price of the item (i.e., unit * quantity).\n */\n readonly value?: ItemPriceData\n /**\n * Array of discounts applied to the cart item.\n */\n readonly discounts?: Array<Discount>\n /**\n * Custom inputs for personalized products.\n */\n readonly custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Configuration for subscription items.\n */\n readonly subscription_configuration?: {\n /**\n * The subscription plan ID.\n */\n plan?: string\n /**\n * The subscription pricing option ID.\n */\n pricing_option?: string\n }\n readonly links?: {\n /**\n * A URL related to the resource.\n */\n product?: string\n /**\n * A URL related to the subscription offering resource.\n */\n subscription_offering?: string\n }\n readonly meta?: {\n display_price?: {\n /**\n * The amount of this item after discounts and taxes are applied.\n */\n with_tax?: CartItemFormattedPriceData\n /**\n * The amount of this item after discounts are applied and before taxes.\n */\n without_tax?: CartItemFormattedPriceData\n /**\n * The amount of taxes applied to this item.\n */\n tax?: CartItemFormattedPriceData\n /**\n * The amount of the discount applied to this item.\n */\n discount?: CartItemFormattedPriceData\n without_discount?: CartItemFormattedPriceData\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: CartItemFormattedPriceData\n /**\n * Detailed discount information.\n */\n discounts?: {\n [key: string]: {\n /**\n * The discount amount.\n */\n amount: number\n /**\n * The currency code.\n */\n currency: string\n /**\n * The formatted discount amount.\n */\n formatted: string\n /**\n * The discount constituents.\n */\n constituents?: {\n [key: string]: FormattedPriceData\n }\n }\n }\n }\n timestamps?: CartCheckoutTimestamps\n }\n /**\n * Relationships to other resources.\n */\n readonly relationships?: {\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related custom discounts.\n */\n custom_discounts?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The shipping group ID for this item.\n */\n readonly shipping_group_id?: string\n /**\n * The source of the promotion (for promotion items).\n */\n readonly promotion_source?: \"rule-promotion\"\n /**\n * The action ID within the rule promotion that produced this promotion item.\n */\n readonly promotion_action_id?: string\n /**\n * The stock location for this item.\n */\n readonly location?: string\n /**\n * Custom attributes attached to the cart item.\n */\n readonly custom_attributes?: CustomAttributes\n}\n\n/**\n * TaxItemResponse\n */\nexport type TaxItemResponse = {\n /**\n * Specifies the type of the resource. Always `tax_item`.\n */\n type?: \"tax_item\"\n /**\n * Specifies the UUID of the tax item.\n */\n readonly id?: string\n /**\n * The jurisdiction for the tax item.\n */\n jurisdiction?: string\n /**\n * The tax code for the tax item.\n */\n code?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (e.g., 0.085 for 8.5%).\n */\n rate?: number\n /**\n * The tax amount in the smallest currency unit.\n */\n amount?: number\n}\n\nexport type CartItemCollectionResponse = {\n data: Array<CartItemResponse>\n /**\n * Related objects that are included in the response.\n */\n included?: {\n custom_discounts?: Array<CustomDiscountResponse>\n promotions?: Array<{\n automatic?: boolean\n description?: string\n end?: string\n id?: string\n name?: string\n promotion_type?: string\n /**\n * The source of the promotion\n */\n promotion_source?: string\n start?: string\n type?: \"promotion\"\n }>\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponse>\n }\n /**\n * Additional meta information about the cart items collection.\n */\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n authorized?: FormattedPriceData\n balance_owing?: FormattedPriceData\n paid?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Optional array of informational messages that provide feedback about operations performed on the cart items, such as promotions added or discounts applied. This field is only present when there are relevant messages to display.\n *\n */\n messages?: Array<{\n /**\n * Identifies the cart item that triggered this message\n */\n source?: {\n /**\n * The type of the source item\n */\n type: string\n /**\n * The unique identifier of the source item\n */\n id: string\n /**\n * The promotion code (present when source type is promotion)\n */\n code?: string\n }\n /**\n * A short descriptive title for the message\n */\n title: string\n /**\n * A detailed description of the message\n */\n description: string\n }>\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n /**\n * Whether this promotion should be automatically added\n */\n auto_add?: boolean\n /**\n * Array of promotion targets (alternative structure)\n */\n targets?: Array<{\n /**\n * The cart item ID for this target\n */\n cart_item_id?: string\n /**\n * The quantity for this target\n */\n quantity?: number\n /**\n * Array of SKU codes for this target\n */\n skus?: Array<string>\n }>\n }>\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Bulk Update Carts Items (Common Properties)\n */\nexport type BulkUpdateCartsItemsCommon = {\n /**\n * Specifies the ID of the cart item that you want to update in cart.\n */\n id?: string\n /**\n * Specifies the amount of items to update in the cart.\n */\n quantity?: number\n /**\n * The type of cart item being updated.\n */\n type?: \"cart_item\" | \"custom_item\"\n /**\n * Specifies the custom text to be added to a product. See [custom inputs](https://elasticpath.dev/docs/pxm/products/ep-pxm-products-api/update-a-product#using-custom-inputs-attribute).\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Specifies custom attributes to be added to the cart item.\n */\n custom_attributes?: CustomAttributes\n /**\n * Specifies the shipping group ID for the cart item.\n */\n shipping_group_id?: string\n}\n\n/**\n * Update Cart Item Quantity\n */\nexport type BulkUpdateCartsItemsWithQuantity = BulkUpdateCartsItemsCommon & {\n quantity: unknown\n id: unknown\n}\n\n/**\n * Update Cart Item Shipping Group\n */\nexport type BulkUpdateCartsItemsWithShippingGroup =\n BulkUpdateCartsItemsCommon & {\n shipping_group_id: unknown\n id: unknown\n }\n\n/**\n * Update Cart Item Custom Inputs\n */\nexport type BulkUpdateCartsItemsWithCustomInputs =\n BulkUpdateCartsItemsCommon & {\n custom_inputs: unknown\n id: unknown\n }\n\n/**\n * Update All Or Nothing Options Object\n */\nexport type UpdateAllOrNothingOptionsObject = {\n /**\n * When set to`true`, if an error occurs for any item, no items are updated in the cart. When set to `false`, valid items are updated in the cart and the items with errors are reported in the response. Default is `true`.\n */\n update_all_or_nothing?: boolean\n}\n\n/**\n * Bulk Update Carts Items\n */\nexport type BulkUpdateCartsItems = {\n data?: Array<\n | BulkUpdateCartsItemsWithQuantity\n | BulkUpdateCartsItemsWithShippingGroup\n | BulkUpdateCartsItemsWithCustomInputs\n >\n options?: UpdateAllOrNothingOptionsObject\n}\n\n/**\n * Base Item Object Data\n */\nexport type BaseItemObjectData = {\n /**\n * The number of items to add.\n */\n quantity: number\n /**\n * Specifies the ID of the product you want to add. (use this OR sku)\n */\n id?: string\n /**\n * Specifies the item SKU that you want to add. (use this OR id)\n */\n sku?: string\n /**\n * Optional name for the product item. If not provided, the product name from catalog will be used.\n */\n name?: string\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Object used to describe the bundle options selected.\n */\n bundle_configuration?: {\n /**\n * Specifies selected options.\n */\n selected_options?: {\n [key: string]: unknown\n }\n /**\n * Array of component products for the selected options.\n */\n component_products?: Array<unknown>\n }\n /**\n * Identifier for a Shipping Group\n */\n shipping_group_id?: string\n /**\n * The slug of a stock location.\n */\n location?: string\n custom_attributes?: CustomAttributes\n}\n\n/**\n * Cart Item Object Data\n */\nexport type CartItemObjectData = {\n /**\n * The type of object being returned. Must be `cart_item` for cart items.\n */\n type: \"cart_item\"\n} & BaseItemObjectData\n\n/**\n * Cart Item Object Request\n */\nexport type CartItemObjectRequest = {\n data?: CartItemObjectData\n}\n\n/**\n * Subscription Item Object Data\n */\nexport type SubscriptionItemObjectData = {\n /**\n * The type of object being returned.\n */\n type: \"subscription_item\"\n /**\n * The number of items added to the cart.\n */\n quantity: number\n /**\n * Specifies the ID of the subscription offering you want to add to cart.\n */\n id: string\n /**\n * Specifies how the subscription offering should be configured.\n */\n subscription_configuration: {\n /**\n * The ID of the pricing option within the offering to use for the subscription.\n */\n pricing_option: string\n /**\n * The ID of the plan within the offering to use for the subscription.\n *\n * @deprecated\n */\n plan: string\n }\n}\n\n/**\n * Subscription Item Object\n */\nexport type SubscriptionItemObject = {\n data?: SubscriptionItemObjectData & CartItemResponse\n}\n\n/**\n * Cart Merge Object\n */\nexport type CartMergeObject = {\n /**\n * The type of object being returned. Must be `cart_items`.\n */\n type: \"cart_items\"\n /**\n * The original cart to be merged from.\n */\n cart_id: string\n}\n\n/**\n * Add All Or Nothing Options Object\n */\nexport type AddAllOrNothingOptionsObject = {\n /**\n * When `true`, if an error occurs for any item, no items are added to the cart. When `false`, valid items are added to the cart and the items with errors are reported in the response. Default is `false`.\n */\n add_all_or_nothing?: boolean\n}\n\n/**\n * Cart Merge Object Request\n */\nexport type CartMergeObjectRequest = {\n data?: CartMergeObject\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Custom Item Object Data\n */\nexport type CustomItemObjectData = {\n /**\n * The type of object being returned. Must be `custom_item`.\n */\n type: \"custom_item\"\n /**\n * The number of custom items to add to cart.\n */\n quantity: number\n price: {\n /**\n * The unit price of the custom item.\n */\n amount: number\n /**\n * Set to`true` if relevant taxes have been included in the price, `false` if not. Defaults to `true`.\n */\n includes_tax?: boolean\n }\n /**\n * A description of the custom item.\n */\n description?: string\n /**\n * The `SKU` code to use for the custom item. See [best practices](https://elasticpath.dev/docs/commerce-cloud/carts/cart-items/add-custom-item-to-cart#best-practices) to use the `SKU` code.\n */\n sku?: string\n /**\n * The name of the custom item.\n */\n name: string\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Identifier for a created Cart Shipping Group\n */\n shipping_group_id?: string\n custom_attributes?: CustomAttributes\n}\n\n/**\n * Custom Item Object\n */\nexport type CustomItemObject = {\n data?: CustomItemObjectData\n}\n\n/**\n * Re Order Object\n */\nexport type ReOrderObject = {\n /**\n * The type of resource being returned. Use `order_items`.\n */\n type: \"order_items\"\n /**\n * The unique identifier of the order.\n */\n order_id: string\n}\n\n/**\n * Re-Order Object Request\n */\nexport type ReOrderObjectRequest = {\n data?: ReOrderObject\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Promotion Item Object Data\n */\nexport type PromotionItemObjectData = {\n /**\n * Specifies the type of resource, which is `promotion_item`.\n */\n type: \"promotion_item\"\n /**\n * Specifies the promotion code. For more information about codes[].user[], see the [Create Promotion codes](/docs/api/promotions/create-promotion-codes) section.\n */\n code: string\n}\n\n/**\n * Promotion Item Object\n */\nexport type PromotionItemObject = {\n data?: PromotionItemObjectData\n}\n\n/**\n * Bulk Add Items Request\n */\nexport type BulkAddItemsRequest = {\n data?: Array<\n | CartItemObjectData\n | CartMergeObject\n | CustomItemObjectData\n | ReOrderObject\n | PromotionItemObjectData\n >\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * Update Carts Items\n */\nexport type UpdateCartsItems = {\n data?: {\n /**\n * The type of the cart item.\n */\n type?: \"cart_item\"\n /**\n * The unique identifier of the cart item.\n */\n id?: string\n /**\n * The amount of products to add to cart.\n */\n quantity?: number\n /**\n * The custom text to be added to a product.\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Custom attributes to be added to the cart item.\n */\n custom_attributes?: CustomAttributes\n /**\n * The unique identifier of the shipping group to be added to the cart.\n */\n shipping_group_id?: string\n }\n}\n\n/**\n * Carts Relationships Accounts Data\n */\nexport type CartsRelationshipsAccountsData = {\n data?: Array<{\n /**\n * The ID of the account.\n */\n id?: string\n /**\n * The type of related object. Ensure that it is account.\n */\n type?: string\n }>\n}\n\n/**\n * Carts Relationships Customers Data\n */\nexport type CartsRelationshipsCustomersData = {\n data?: Array<{\n /**\n * The ID of the customer.\n */\n id?: string\n /**\n * The type of related object. Ensure that it is customer.\n */\n type?: string\n }>\n}\n\nexport type CartsItemsTaxesCommon = {\n /**\n * A unique tax code in this jurisdiction.\n */\n code?: string\n /**\n * The relevant tax jurisdiction.\n */\n jurisdiction?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (12.5% -> 0.125). You must specify either `rate` or `amount`, but not both.\n *\n */\n rate?: number\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). You must specify either `rate` or `amount`, but not both.\n *\n */\n amount?: number\n /**\n * The type of object being returned. Use `tax_item`.\n */\n type: \"tax_item\"\n /**\n * The unique identifier for this tax item.\n */\n readonly id?: string\n}\n\n/**\n * Tax Object (With Rate)\n */\nexport type CartsItemsTaxesWithRate = CartsItemsTaxesCommon & {\n /**\n * The tax rate as a decimal (12.5% -> 0.125). Required when using rate-based taxation.\n *\n */\n rate: number\n /**\n * The tax as an absolute amount. Not allowed when rate is specified.\n *\n */\n amount?: number\n}\n\n/**\n * Tax Object (With Amount)\n */\nexport type CartsItemsTaxesWithAmount = CartsItemsTaxesCommon & {\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). Required when using amount-based taxation.\n *\n */\n amount: number\n /**\n * The tax rate as a decimal. Not allowed when amount is specified.\n *\n */\n rate?: number\n}\n\n/**\n * Carts Items Taxes Object\n *\n * A tax item that can be applied to cart items or bundle components. You must specify either a rate (percentage) or an amount (fixed value), but not both.\n *\n */\nexport type CartsItemsTaxesObject =\n | CartsItemsTaxesWithRate\n | CartsItemsTaxesWithAmount\n\nexport type CartItemTaxesEntityResponse = {\n data: CartsItemsTaxesObject\n}\n\n/**\n * CartItemRelationship\n */\nexport type CartItemRelationship = {\n relationships?: {\n item: {\n data: {\n /**\n * Specifies the type of item. For example, `custom_item` or `cart_item`.\n */\n type: string\n /**\n * Specifies the unique identifier of the `cart_item` or `custom_item` in the cart.\n */\n id: string\n }\n }\n }\n}\n\n/**\n * CartsBulkTaxes\n */\nexport type CartsBulkTaxes = {\n data?: Array<CartsItemsTaxesObject & CartItemRelationship>\n errors?: Array<ResponseErrorItem>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsCustomDiscountsObject\n */\nexport type CartsCustomDiscountsObject = {\n amount:\n | number\n | {\n amount?: number\n currency?: string\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n id?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\n/**\n * CustomDiscountRelationshipsCartItemRequest\n */\nexport type CustomDiscountRelationshipsCartItemRequest = {\n relationships?: {\n item?: {\n data?: {\n /**\n * Specifies the type of item. For example, `custom_item` or `cart_item`.\n */\n type: string\n /**\n * Specifies the unique identifier of the `cart_item` or `custom_item` in the cart.\n */\n id: string\n }\n }\n }\n}\n\n/**\n * CartItemBulkCustomDiscountObject\n */\nexport type CartItemBulkCustomDiscountObject = CartsCustomDiscountsObject &\n CustomDiscountRelationshipsCartItemRequest\n\n/**\n * CartsBulkCustomDiscounts\n */\nexport type CartsBulkCustomDiscounts = {\n data?: Array<CartsCustomDiscountsObject & CartItemBulkCustomDiscountObject>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsBulkCustomDiscountsResponse\n */\nexport type CartsBulkCustomDiscountsResponse = {\n data?: CartsCustomDiscountsObject\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * CartsBulkCustomDiscountsCollectionResponse\n */\nexport type CartsBulkCustomDiscountsCollectionResponse = {\n data?: Array<CartsCustomDiscountsObject>\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * CartsCustomDiscountsResponse\n */\nexport type CartsCustomDiscountsResponseObject = {\n amount?: {\n /**\n * Specifies an amount to be applied for the custom discount. It must be less than zero.\n */\n amount?: number\n /**\n * The currency set for the custom discount.\n */\n currency?: string\n /**\n * The formatted value for the custom discount.\n */\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Specifies the UUID of the custom discount.\n */\n readonly id?: string\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\nexport type CartsCustomDiscountsEntityRequest = {\n data?: CartsCustomDiscountsResponseObject\n}\n\nexport type CartsCustomDiscountsEntityResponse = {\n data?: CartsCustomDiscountsObject\n}\n\nexport type CartsCustomDiscountsCollectionResponse = {\n data?: Array<CartsCustomDiscountsObject>\n}\n\nexport type AddressCommon = {\n /**\n * First name of the recipient.\n */\n first_name: string\n /**\n * Last name of the recipient.\n */\n last_name: string\n /**\n * Company of the recipient.\n */\n company_name?: string\n /**\n * First line of the address.\n */\n line_1: string\n /**\n * Second line of the address.\n */\n line_2?: string\n /**\n * Third line of the address.\n */\n line_3?: string\n /**\n * City of the address.\n */\n city?: string\n /**\n * Post code of the address.\n */\n postcode: string\n /**\n * County of the address.\n */\n county?: string\n /**\n * Country of the address.\n */\n country: string\n /**\n * State, province, or region of the address.\n */\n region?: string\n}\n\n/**\n * Address with Region\n */\nexport type AddressWithRegion = AddressCommon & {\n /**\n * State, province, or region of the address.\n */\n region: string\n}\n\n/**\n * Address with County\n */\nexport type AddressWithCounty = AddressCommon & {\n /**\n * County of the address.\n */\n county: string\n}\n\n/**\n * ShippingAddress\n *\n * Shipping address information. You must specify at least one of region (state/province) or county.\n *\n */\nexport type ShippingAddress = (AddressWithRegion | AddressWithCounty) & {\n /**\n * Phone number of the shipping recipient.\n */\n phone_number?: string\n /**\n * Delivery instructions.\n */\n instructions?: string\n}\n\nexport type DeliveryEstimate = {\n start?: string\n end?: string\n}\n\n/**\n * SingleRelationship\n *\n * Single relationship\n */\nexport type SingleRelationship = {\n data?: RelationshipItem\n}\n\nexport type Discounts = Array<Discount>\n\nexport type ShippingPriceResponse = {\n total: FormattedPriceData\n base: FormattedPriceData\n tax?: FormattedPriceData\n fees?: FormattedPriceData\n discount?: FormattedPriceData\n}\n\n/**\n * NonNegativeFormattedPriceData\n */\nexport type NonNegativeFormattedPriceData = {\n /**\n * The raw total. Must be non-negative.\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\n/**\n * DiscountFormattedPriceData\n */\nexport type DiscountFormattedPriceData = {\n /**\n * The discount amount. Must be non-positive (zero or negative).\n */\n amount?: number\n /**\n * The currency set for this amount.\n */\n currency?: string\n /**\n * The formatted total based on the amount and currency.\n */\n formatted?: string\n}\n\n/**\n * Order pricing information.\n */\nexport type OrderPriceWrapperMeta = {\n with_tax: NonNegativeFormattedPriceData\n without_tax: NonNegativeFormattedPriceData\n tax: NonNegativeFormattedPriceData\n discount: DiscountFormattedPriceData\n balance_owing: NonNegativeFormattedPriceData\n paid: NonNegativeFormattedPriceData\n authorized: NonNegativeFormattedPriceData\n without_discount: NonNegativeFormattedPriceData\n shipping: NonNegativeFormattedPriceData\n shipping_discount: DiscountFormattedPriceData\n}\n\nexport type ShippingGroupMeta = {\n shipping_display_price?: ShippingPriceResponse\n total_display_price?: OrderPriceWrapperMeta\n}\n\n/**\n * Shipping Group Response\n */\nexport type ShippingGroupResponse = {\n type?: \"shipping_group\"\n id?: string\n relation?: string\n cart_id?: string\n order_id?: string\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n address?: ShippingAddress\n delivery_estimate?: DeliveryEstimate\n created_at?: string\n updated_at?: string\n relationships?: {\n cart?: SingleRelationship\n order?: SingleRelationship\n /**\n * The order items shipped by this shipping group. Present on order shipping groups that are associated with at least one order item, when the shipping group is retrieved or updated individually.\n */\n items?: RelationshipArray\n }\n discounts?: Discounts\n meta?: ShippingGroupMeta\n}\n\nexport type ShippingPriceRequest = {\n total?: number\n base?: number\n tax?: number\n fees?: number\n discount?: number\n}\n\nexport type CreateShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n shipping_price?: ShippingPriceRequest\n address?: ShippingAddress\n includes_tax?: boolean\n delivery_estimate?: DeliveryEstimate\n }\n}\n\n/**\n * OrderPriceData\n */\nexport type OrderPriceData = {\n /**\n * The amount for this item.\n */\n amount?: number\n /**\n * The currency this item.\n */\n currency?: string\n /**\n * Whether this price is tax inclusive.\n */\n includes_tax?: boolean\n}\n\n/**\n * DiscountData\n */\nexport type DiscountData = {\n amount?: OrderPriceData\n code?: string\n readonly id?: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * OrderItemFormattedUnitPriceData\n */\nexport type OrderItemFormattedUnitPriceData = {\n unit?: FormattedPriceData\n value?: FormattedPriceData\n}\n\n/**\n * OrderItemResponse\n */\nexport type OrderItemResponse = {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The unique identifier for this order item.\n */\n readonly id?: string\n /**\n * The quantity of this item were ordered.\n */\n quantity?: number\n /**\n * The unique identifier for this order item.\n */\n readonly product_id?: string\n /**\n * The unique identifier for the subscription offering for this order item.\n */\n readonly subscription_offering_id?: string\n /**\n * The name of this order item.\n */\n name?: string\n /**\n * The SKU code for the order item.\n */\n sku?: string\n /**\n * The stock location for this order item.\n */\n readonly location?: string\n unit_price?: OrderPriceData\n value?: OrderPriceData\n discounts?: Array<DiscountData>\n links?: {\n [key: string]: unknown\n }\n meta?: {\n display_price?: {\n with_tax?: OrderItemFormattedUnitPriceData\n without_tax?: OrderItemFormattedUnitPriceData\n tax?: OrderItemFormattedUnitPriceData\n discount?: OrderItemFormattedUnitPriceData\n without_discount?: OrderItemFormattedUnitPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n /**\n * Detailed breakdown of discount constituents by ID\n */\n constituents?: {\n [key: string]: {\n /**\n * The discount amount\n */\n amount?: number\n /**\n * The currency code\n */\n currency?: string\n /**\n * The formatted discount amount\n */\n formatted?: string\n }\n }\n }\n }\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: OrderItemFormattedUnitPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n relationships?: {\n cart_item?: {\n data?: {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The unique identifier for this item.\n */\n readonly id?: string\n }\n }\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The unique identifier of the catalog associated with the product is shown if `catalog_source=pim` is set.\n */\n catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Component product ID\n */\n id?: string\n /**\n * Component product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product metadata as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price information as a generic object\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the bundle product.\n */\n components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n /**\n * Custom inputs for the order item as a generic object\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * Custom attributes attached to the order item.\n */\n readonly custom_attributes?: CustomAttributes\n /**\n * The shipping group ID for the order item\n */\n shipping_group_id?: string\n /**\n * The promotion source for the order item\n */\n promotion_source?: string\n /**\n * The action ID within the rule promotion that produced this promotion item.\n */\n readonly promotion_action_id?: string\n /**\n * Subscription configuration for the order item\n */\n subscription_configuration?: {\n /**\n * Subscription plan details\n */\n plan?: string\n /**\n * Pricing option for the subscription\n */\n pricing_option?: string\n }\n}\n\nexport type ShippingGroupEntityResponse = {\n data?: ShippingGroupResponse\n /**\n * Related objects that are included in the response when using the include query parameter.\n */\n included?: {\n /**\n * Array of order items associated with this shipping group.\n */\n items?: Array<OrderItemResponse>\n }\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type UpdateCartShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n shipping_price?: ShippingPriceRequest\n address?: ShippingAddress\n includes_tax?: boolean\n delivery_estimate?: DeliveryEstimate\n }\n}\n\n/**\n * Data.BasePayments\n */\nexport type DataBasePayments = {\n gateway:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n /**\n * Specifies the transaction method, such as `purchase` or `authorize`.\n */\n method: \"authorize\" | \"purchase\" | \"purchase_setup\" | \"authorize_setup\"\n /**\n * The amount to be paid for the transaction.\n */\n amount?: number\n}\n\n/**\n * Elastic Path Payments Powered By Stripe\n */\nexport type ElasticPathPaymentsPoweredByStripePayment = {\n data?: DataBasePayments & {\n /**\n * Specifies the gateway. You must use `elastic_path_payments_stripe`.\n */\n gateway?: \"elastic_path_payments_stripe\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n /**\n * Parent object determining whether to use Stripe's `automatic_payment_methods` setting.\n */\n automatic_payment_methods?: {\n /**\n * When set to true, it displays all enabled payment methods from the Stripe dashboard. When set to false, the Stripe default, which is card, is used.\n */\n enabled?: boolean\n }\n }\n /**\n * Specifies the Stripe payment method types configured for the store. See [Stripe Documentation](https://docs.stripe.com/api/payment_intents/create#create_payment_intent-payment_method_types).\n */\n payment_method_types?: Array<string>\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n }\n}\n\n/**\n * Cart Payment Update\n */\nexport type CartPaymentUpdate = {\n data: {\n gateway: string\n method: string\n payment_method_types: Array<string>\n amount: number\n options?: {\n [key: string]: unknown\n }\n }\n}\n\n/**\n * BillingAddress\n *\n * Billing address information. You must specify at least one of region (state/province) or county.\n *\n */\nexport type BillingAddress = AddressWithRegion | AddressWithCounty\n\n/**\n * Customer Checkout\n */\nexport type CustomerCheckout = {\n data?: {\n /**\n * A user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n customer: {\n /**\n * The ID of the customer.\n */\n id?: string\n /**\n * The email of the customer.\n */\n email?: string\n /**\n * The name of the customer.\n */\n name?: string\n }\n billing_address?: BillingAddress\n shipping_address?: ShippingAddress\n }\n}\n\n/**\n * Account Checkout\n */\nexport type AccountCheckout = {\n data?: {\n /**\n * A user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n account?: {\n /**\n * The account ID.\n */\n id?: string\n /**\n * The account member ID.\n */\n member_id?: string\n }\n contact: {\n /**\n * The name of the account member.\n */\n name?: string\n /**\n * The email address of the account member.\n */\n email?: string\n }\n billing_address?: BillingAddress\n shipping_address?: ShippingAddress\n }\n}\n\nexport type OrderTimestamps = {\n /**\n * The date this order was created.\n */\n created_at?: string\n /**\n * The date this order was last updated.\n */\n updated_at?: string\n /**\n * The date this order was fully paid. Only present for orders with payment status 'paid'.\n */\n fully_paid_at?: string\n}\n\n/**\n * OrderMeta\n */\nexport type OrderMeta = {\n timestamps?: OrderTimestamps\n /**\n * Order pricing information including amounts, tax, discounts, and payment details.\n */\n display_price?: {\n with_tax?: NonNegativeFormattedPriceData\n without_tax?: NonNegativeFormattedPriceData\n tax?: NonNegativeFormattedPriceData\n discount?: DiscountFormattedPriceData\n balance_owing?: NonNegativeFormattedPriceData\n paid?: NonNegativeFormattedPriceData\n authorized?: NonNegativeFormattedPriceData\n without_discount?: NonNegativeFormattedPriceData\n shipping?: NonNegativeFormattedPriceData\n shipping_discount?: DiscountFormattedPriceData\n }\n /**\n * Specifies if the order was created manually.\n */\n is_manual?: boolean\n}\n\n/**\n * Contact\n */\nexport type Contact = {\n /**\n * The email address of the contact.\n */\n email?: string\n /**\n * The name of the contact.\n */\n name?: string\n}\n\n/**\n * Customer\n */\nexport type Customer = {\n /**\n * The name of the customer.\n */\n name?: string\n /**\n * The email address of the customer.\n */\n email?: string\n /**\n * The unique identifier of the customer.\n */\n id?: string\n}\n\n/**\n * OrderResponse\n */\nexport type OrderResponse = {\n /**\n * Specifies the type of object being returned. You must use `order`.\n */\n type?: \"order\"\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n /**\n * Specifies the unique identifier of the order.\n */\n readonly id?: string\n /**\n * Specifies the status of the order, such as `incomplete`, `complete`, `processing`, or `cancelled`.\n */\n status?: \"complete\" | \"incomplete\" | \"cancelled\" | \"processing\"\n /**\n * Specifies the status of the payment, such as `unpaid`, `authorized`, `paid`, or `refunded`.\n */\n payment?:\n | \"authorized\"\n | \"paid\"\n | \"unpaid\"\n | \"refunded\"\n | \"partially_paid\"\n | \"partially_authorized\"\n /**\n * Specifies the status of the shipment, such as `fulfilled` or `unfulfilled`.\n */\n shipping?: \"unfulfilled\" | \"fulfilled\"\n /**\n * Specifies if the order is anonymized.\n */\n anonymized?: boolean\n /**\n * Stripe Payment Intent ID. Please see Stripe's Payment Intent [documentation](https://docs.stripe.com/api/payment_intents) for more information on Payment Intents.\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n links?: {\n [key: string]: unknown\n }\n meta?: OrderMeta\n billing_address?: BillingAddress\n contact?: Contact\n customer?: Customer\n shipping_address?: ShippingAddress\n relationships?: {\n items?: RelationshipArray\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n customer?: SingleRelationship\n account?: SingleRelationship\n account_member?: SingleRelationship\n store?: SingleRelationship\n }\n}\n\n/**\n * OrderEntityResponse\n */\nexport type OrderEntityResponse = {\n data?: OrderResponse\n /**\n * Optional included data such as order items, tax items, custom discounts, and promotions.\n *\n */\n included?: OrderIncluded\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type ResponseMetaOrders = {\n page?: ResponsePaginationPage\n results?: ResponsePaginationResults\n}\n\nexport type OrderCollectionResponse = {\n data?: Array<OrderResponse>\n links?: ResponsePageLinks\n meta?: ResponseMetaOrders\n included?: OrdersIncluded\n}\n\n/**\n * OrdersAddressData\n */\nexport type OrdersAddressData = {\n /**\n * The type of the resource. You must use \"order\".\n */\n type: string\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing order_id. If provided, the order-number will be sent to Authorize.net instead of the order_id, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n shipping_address: {\n /**\n * Specifies the first name of the address holder.\n */\n first_name?: string\n /**\n * Specifies the last name of the address holder.\n */\n last_name?: string\n /**\n * Specifies the phone number of the address holder.\n */\n phone_number?: string\n /**\n * Specifies the company name.\n */\n company_name?: string\n /**\n * Specifies the first line of the address.\n */\n line_1?: string\n /**\n * Specifies the second line of the address.\n */\n line_2?: string\n /**\n * Specifies the third line of the address.\n */\n line_3?: string\n /**\n * Specifies the name of the city in the shipping address.\n */\n city?: string\n /**\n * Specifies the county of the shipping address.\n */\n county?: string\n /**\n * Specifies the state, province, or region of the shipping address.\n */\n region?: string\n /**\n * Specifies the postcode or ZIP code of the address.\n */\n postcode?: string\n /**\n * Specifies the country in the shipping address.\n */\n country?: string\n /**\n * Specifies any instructions provided with the shipping address.\n */\n instructions?: string\n }\n}\n\n/**\n * OrdersCancelData\n */\nexport type OrdersCancelData = {\n /**\n * The status of the order. You can only update the status to `cancelled`.\n */\n status: string\n /**\n * The type of the resource. You must use order.\n */\n type: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n}\n\n/**\n * OrdersFulfilledData\n */\nexport type OrdersFulfilledData = {\n /**\n * The shipping status of the order. You can only update the shipping status to `fulfilled`.\n */\n shipping: string\n /**\n * The type of the resource. You must use order.\n */\n type: string\n /**\n * Represents an optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n}\n\n/**\n * OrdersUpdateRequest\n */\nexport type OrdersUpdateRequest = {\n data?: OrdersAddressData | OrdersCancelData | OrdersFulfilledData\n}\n\nexport type OrderItemCollectionResponse = {\n data?: Array<OrderItemResponse>\n /**\n * Optional included data such as tax items, custom discounts, and promotions.\n *\n */\n included?: {\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponse>\n /**\n * Array of custom discounts included in the response.\n */\n custom_discounts?: Array<CustomDiscountResponse>\n /**\n * Array of promotions included in the response.\n */\n promotions?: Array<CondensedPromotionResponse>\n }\n}\n\n/**\n * OrdersAnonymizeData\n */\nexport type OrdersAnonymizeData = {\n /**\n * The unique identifiers of the orders to be anonymized. You can anonymize multiple orders at the same time.\n */\n order_ids?: Array<string>\n}\n\n/**\n * OrdersAnonymizeRequest\n */\nexport type OrdersAnonymizeRequest = {\n data?: OrdersAnonymizeData\n}\n\nexport type OrdersListResponse = {\n data: Array<OrderResponse>\n}\n\n/**\n * FailureDetails\n *\n * Non-PII payment failure information from the payment gateway. Only present on failed transactions where the gateway provided structured failure details.\n */\nexport type FailureDetails = {\n /**\n * Machine-readable failure or error code from the payment gateway.\n */\n code?: string\n /**\n * Human-readable failure reason or error message from the payment gateway.\n */\n reason?: string\n}\n\n/**\n * TransactionResponse\n */\nexport type TransactionResponse = {\n /**\n * The ID of the transaction.\n */\n readonly id?: string\n /**\n * The payment gateway reference.\n */\n reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend you not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * The name of the payment gateway used.\n */\n gateway?:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n | \"stripe_platform_account\"\n /**\n * The amount for this transaction.\n */\n amount?: number\n /**\n * The refunded amount.\n */\n refunded_amount?: number\n /**\n * The transaction currency.\n */\n currency?: string\n /**\n * The type of transaction, such as `purchase`, `capture`, `authorize` or `refund`.\n */\n transaction_type?: \"purchase\" | \"authorize\" | \"capture\" | \"refund\"\n /**\n * The type of object being returned.\n */\n type?: string\n /**\n * The status provided by the gateway for this transaction, such as `complete` or `failed`.\n */\n status?: string\n /**\n * Additional payment details specific to the gateway. Present when gateway is paypal_express_checkout.\n */\n payment_details?: {\n /**\n * Detailed status information from the payment gateway.\n */\n detailed_status?: string\n }\n /**\n * Non-PII payment failure details from the gateway. Only present on failed transactions where the gateway provided structured failure information.\n */\n failure_details?: FailureDetails\n /**\n * Payment intent details.\n */\n payment_intent?: {\n [key: string]: unknown\n }\n /**\n * The mechanism used for capturing the transaction.\n */\n capture_mechanism?: \"automatic\" | \"manual\"\n /**\n * The mechanism used for refunding the transaction.\n */\n refund_mechanism?: \"automatic\" | \"manual\"\n /**\n * Client parameters required for payment processing. Present when gateway is paypal_express_checkout.\n */\n client_parameters?: {\n /**\n * The URL to redirect the customer to complete the payment.\n */\n redirect_url?: string\n /**\n * Client secret for payment processing.\n */\n secret?: string\n /**\n * The token for the payment session.\n */\n token?: string\n }\n /**\n * Available actions that can be performed on this transaction. Present when gateway is paypal_express_checkout.\n */\n next_actions?: Array<\"cancel\" | \"capture\" | \"refund\">\n relationships?: {\n order?: {\n data?: {\n /**\n * Represents the type of the object being returned. It is always `order`.\n */\n type?: string\n /**\n * The ID of the order.\n */\n id?: string\n }\n }\n }\n meta?: {\n display_price?: FormattedPriceData\n display_refunded_amount?: {\n total?: FormattedPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n}\n\nexport type TransactionEntityResponse = {\n data: TransactionResponse\n}\n\n/**\n * Data.AdyenPayment\n */\nexport type DataAdyenPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `adyen`.\n */\n gateway: \"adyen\"\n options?: {\n /**\n * The shopper reference token associated with the saved payment method.\n */\n shopper_reference?: string\n /**\n * Enter CardOnFile for a one-time purchase.\n */\n recurring_processing_model?: string\n }\n /**\n * The Adyen recurringDetailReference payment method identifier.\n */\n payment: string\n}\n\n/**\n * Data.AuthorizeNetPayment\n */\nexport type DataAuthorizeNetPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `authorize_net`.\n */\n gateway: \"authorize_net\"\n options?: {\n /**\n * The Authorize.net customer payment profile ID.\n */\n customer_payment_profile_id?: string\n }\n /**\n * The Authorize.net customer profile ID.\n */\n payment: string\n}\n\n/**\n * Data.BraintreePayment\n */\nexport type DataBraintreePayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `braintree`.\n */\n gateway: \"braintree\"\n /**\n * The Braintree Customer ID that you want to bill.\n */\n payment: string\n}\n\n/**\n * Data.CardConnectPayment\n */\nexport type DataCardConnectPayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `card_connect`.\n */\n gateway: \"card_connect\"\n /**\n * Enter account_id, profile_id from CardPointe API. For example, 1|16178397535388255208.\n */\n payment: string\n}\n\n/**\n * Data.CyberSourcePayment\n */\nexport type DataCyberSourcePayment = DataBasePayments & {\n /**\n * Specifies the gateway. You must use `cyber_source`.\n */\n gateway: \"cyber_source\"\n /**\n * The CyberSource token.\n */\n payment: string\n}\n\n/**\n * Data.ManualPayment\n */\nexport type DataManualPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `manual`.\n */\n gateway: \"manual\"\n paymentmethod_meta?: {\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n }\n}\n\n/**\n * Data.PayPalExpressCheckoutPayment\n */\nexport type DataPayPalExpressCheckoutPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `paypal_express_checkout`.\n */\n gateway: \"paypal_express_checkout\"\n options?: {\n /**\n * The description for the payment.\n */\n description?: string\n /**\n * The descriptor appended to PayPal generated descriptor that is visible on the card statement of the payer.\n */\n soft_descriptor?: string\n application_context?: {\n /**\n * The label that overrides the business name in the PayPal account on the PayPal site.\n */\n brand_name?: string\n /**\n * The locale pages that appear based on language and country code. PayPal supports a five-character code. For example, ja-JP.\n */\n locale?: string\n /**\n * The type of landing page to show on the PayPal site for customer checkout. Use values LOGIN, BILLING, or NO_PREFERENCE.\n */\n landing_page?: string\n /**\n * The shipping preference. Use SET_PROVIDED_ADDRESS value. This parameter does allow the user to change their address on PayPal site.\n */\n shipping_preference?: string\n /**\n * If you set `useraction=commit` in the query string, the flow redirects the buyer to the PayPal payment page and displays a Pay Now button. When the shopper clicks **Pay Now**, call `DoExpressCheckoutPayment` to complete the payment without additional interaction from the shopper. Choose this flow when you know the final payment amount when you initiate the checkout flow.\n */\n user_action?: string\n /**\n * The callback URL for PayPal to redirect the user in the case of approved payment.\n */\n return_url?: string\n /**\n * The callback URL for PayPal to redirect user in the case a cancelled payment.\n */\n cancel_url?: string\n }\n }\n}\n\n/**\n * Data.StripePayment\n */\nexport type DataStripePayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe`.\n */\n gateway: \"stripe\"\n options?: {\n /**\n * The option to provide an email for Stripe receipts. Specify live mode to access this feature.\n */\n receipt_email?: string\n }\n /**\n * The Stripe token or source.\n */\n payment?: string\n}\n\n/**\n * Data.StripePaymentIntentsPayment\n */\nexport type DataStripePaymentIntentsPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe_payment_intents`.\n */\n gateway: \"stripe_payment_intents\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n }\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n}\n\nexport type DataPaymentObject =\n | DataAdyenPayment\n | DataAuthorizeNetPayment\n | DataBraintreePayment\n | DataCardConnectPayment\n | DataCyberSourcePayment\n | ElasticPathPaymentsPoweredByStripePayment\n | DataManualPayment\n | DataPayPalExpressCheckoutPayment\n | DataStripePayment\n | DataStripePaymentIntentsPayment\n\n/**\n * PaymentsRequest\n */\nexport type PaymentsRequest = {\n data?: DataPaymentObject\n}\n\n/**\n * OrdersTransactionsConfirmRequest\n */\nexport type OrdersTransactionsConfirmRequest = {\n data?: {\n [key: string]: unknown\n }\n}\n\n/**\n * OrdersTransactionsCaptureRequest\n */\nexport type OrdersTransactionsCaptureRequest = {\n data?: {\n options?: {\n soft_descriptor?: string\n note_to_payer?: string\n }\n }\n}\n\n/**\n * OrdersTransactionsRefundRequest\n */\nexport type OrdersTransactionsRefundRequest = {\n data?: {\n /**\n * The amount value to be refunded. If this field is not provided, it will be considered as manual refund (Mark as Refunded) and the refund process must be manually handled via payment provider. If the amount value is same as payment value, then it will be treated as a full refund and sent to the payment provider to process refund automatically.\n */\n amount?: number\n options?: {\n /**\n * Provides comments about the refund. It is used by PayPal Express.\n */\n note?: string\n }\n }\n}\n\nexport type TransactionListResponse = {\n data: Array<TransactionResponse>\n}\n\nexport type ResponseData = {\n data?: unknown\n}\n\n/**\n * OrdersTransactionsCancelRequest\n */\nexport type OrdersTransactionsCancelRequest = {\n data?: {\n options?: {\n [key: string]: unknown\n }\n /**\n * Specifies the reason for canceling the transaction. The reason may include `duplicate`, `fraudulent`, `requested_by_customer`, or `abandoned`.\n */\n reason?: string\n }\n}\n\nexport type UpdateOrderShippingGroupRequest = {\n data?: {\n type?: \"shipping_group\"\n shipping_type?: string\n tracking_reference?: string\n /**\n * An optional external ID reference for a shipping group. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters.\n */\n external_ref?: string\n address?: ShippingAddress\n delivery_estimate?: DeliveryEstimate\n }\n}\n\nexport type SettingsCart = {\n data?: {\n /**\n * Describes the type of request payload you're sending. Set this value to `settings`.\n */\n type: string\n /**\n * The unique identifier for the cart settings.\n */\n readonly id?: string\n /**\n * Indicates the number of days before a cart expires.\n */\n cart_expiry_days?: number\n discounts?: {\n /**\n * When `true`, custom discounts are enabled. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to `true`, this parameter allows the cart to use rule promotions.\n */\n use_rule_promotions?: boolean\n }\n inventories?: {\n /**\n * When `true`, inventory checks are not performed when adding products to a cart but still occur on checkout as normal. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n defer_inventory_check?: boolean\n }\n items?: {\n /**\n * When `true`, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When `false` (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n }\n /**\n * When `true`, admins (users with admin scope) can retrieve all carts in the store via `GET /v2/carts`, regardless of customer or account associations. When `false`, admins can only see carts that are registered (associated with customers or accounts).\n *\n * For new stores, this defaults to `true`. For existing stores created before this feature was introduced, this defaults to `false` to maintain backward compatibility.\n *\n */\n show_all_carts?: boolean\n }\n}\n\nexport type CartCheckoutTimestamps = {\n /**\n * The date this was created.\n */\n created_at?: string\n /**\n * The date this was last updated.\n */\n updated_at?: string\n}\n\n/**\n * Carts Response\n */\nexport type CartsResponse = {\n data?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n }\n }\n }\n timestamps?: CartTimestamps\n }\n}\n\n/**\n * Cart Items Response\n */\nexport type CartItemsResponse = {\n data?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n}\n\n/**\n * Cart Item Object\n */\nexport type CartItemObject = CartItemObjectData & CartItemResponse\n\n/**\n * Custom Item Cart Object\n */\nexport type CustomItemCartObject = CartItemResponse & {\n type: \"custom_item\"\n quantity: number\n}\n\n/**\n * Subscription Item Cart Object\n */\nexport type SubscriptionItemCartObject = CartItemResponse & {\n type: \"subscription_item\"\n quantity: number\n}\n\n/**\n * Promotion Item Cart Object\n */\nexport type PromotionItemCartObject = CartItemResponse & {\n type: \"promotion_item\"\n quantity: number\n}\n\n/**\n * Data.StripeConnectPayment\n */\nexport type DataStripeConnectPayment = DataBasePayments & {\n /**\n * Specifies the type of payment gateway. You must use `stripe_connect`.\n */\n gateway: \"stripe_connect\"\n options?: {\n /**\n * Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode.\n */\n receipt_email?: string\n }\n /**\n * Specifies the Stripe token or source.\n */\n payment?: string\n}\n\nexport type CartIncludedPromotion = {\n /**\n * The unique identifier of the promotion.\n */\n id: string\n /**\n * The name of the promotion.\n */\n name: string\n /**\n * A description of the promotion.\n */\n description?: string\n /**\n * Indicates if the promotion is automatic.\n */\n automatic: boolean\n /**\n * The source of the promotion.\n */\n promotion_source: string\n /**\n * The start date and time of the promotion.\n */\n start: string\n /**\n * The end date and time of the promotion.\n */\n end: string\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type CartIncluded = {\n /**\n * The cart items associated with a cart.\n */\n items?: Array<\n | CartItemObject\n | CustomItemCartObject\n | SubscriptionItemCartObject\n | PromotionItemCartObject\n >\n /**\n * The tax items associated with a cart.\n */\n tax_items?: Array<CartsItemsTaxesObject>\n /**\n * The custom discounts associated with a cart.\n */\n custom_discounts?: Array<CartsCustomDiscountsObject>\n /**\n * The promotions associated with a cart.\n */\n promotions?: Array<CartIncludedPromotion>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrdersIncluded = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponse>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrderIncluded = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponse>\n}\n\n/**\n * Whether a pricing option is active on a subscription using that offering. The `active_pricing_option` attribute is null if a pricing option is not active in a subscription.\n */\nexport type ActivePricingOption = boolean\n\n/**\n * Whether a plan is active on a subscription using that offering. The `active_plan` attribute is null if a plan is not active in a subscription.\n */\nexport type ActivePlan = boolean\n\n/**\n * A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.\n */\nexport type ExternalRef = string\n\n/**\n * A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.\n */\nexport type ExternalRefUpdate = string | null\n\nexport type SubscriptionType = \"subscription\"\n\nexport type ProrationPolicyType = \"subscription_proration_policy\"\n\nexport type SubscriptionDunningRuleType = \"subscription_dunning_rule\"\n\nexport type SubscriptionFeatureType = \"subscription_feature\"\n\nexport type SubscriptionOfferingType = \"subscription_offering\"\n\nexport type SubscriptionOfferingFeatureType = \"subscription_offering_feature\"\n\nexport type SubscriptionOfferingPlanType = \"subscription_offering_plan\"\n\nexport type SubscriptionOfferingPricingOptionType =\n \"subscription_offering_pricing_option\"\n\nexport type SubscriptionJobType = \"subscription_job\"\n\nexport type SubscriptionImportType = \"subscription_import\"\n\nexport type SubscriptionImportErrorType = \"subscription_import_error\"\n\nexport type SubscriptionImportError = {\n id: SubscriptionsUuid\n type: SubscriptionImportErrorType\n meta: SubscriptionImportErrorMeta\n}\n\nexport type SubscriptionImportErrorMeta = {\n owner: string\n timestamps: SubscriptionsTimestamps\n error: string\n field: string\n /**\n * The line in the imported JSONL file at which the validation error occurred. Starts from 1.\n */\n line_number: number\n external_ref?: ExternalRef\n}\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice`.\n */\nexport type SubscriptionInvoiceType = \"subscription_invoice\"\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice_payment`.\n */\nexport type SubscriptionInvoicePaymentType = \"subscription_invoice_payment\"\n\n/**\n * This represents the type of resource object being returned. Always `subscription_invoice_payment_refund`.\n */\nexport type SubscriptionInvoicePaymentRefundType =\n \"subscription_invoice_payment_refund\"\n\nexport type Links2 = {\n [key: string]: Link\n}\n\nexport type Link = LinkUri | LinkObject\n\nexport type LinkUri = string | null\n\nexport type LinkObject = {\n href?: string\n title?: string\n describedby?: string\n}\n\n/**\n * The status of a subscription, either `active` or `inactive`.\n */\nexport type Status = \"active\" | \"inactive\"\n\n/**\n * Enumerates a list of resources that are related.\n */\nexport type RelationshipsRequest = {\n data: Array<RelationshipData>\n}\n\n/**\n * Relationships are established between different subscription entities. For example, a plan and a pricing option are related to an offering, as both are attached to it.\n */\nexport type Relationships = unknown\n\nexport type Relationship = SubscriptionsSingleRelationship | ManyRelationship\n\n/**\n * The list of resources that are related.\n */\nexport type ManyRelationship = {\n data?: Array<RelationshipData>\n links?: RelationshipLinks\n}\n\nexport type RelationshipData = {\n id: SubscriptionsUuid\n /**\n * This represents the type of resource being returned.\n */\n type: string\n}\n\n/**\n * Links are used to allow you, as an API consumer, to move between requests. Single entities use a self parameter with a link to that specific resource. Sometimes, there aren’t enough entities for a project to fill multiple pages. In this situation, we return some defaults, instead of expecting you to check for these special cases.\n *\n * - current - Always the current page.\n * - first - Always the first page.\n * - last - always `null`.\n * - next - `null` if the user is on the first page.\n * - previous - `null` if there is only one page.\n *\n */\nexport type RelationshipLinks = {\n related?: string\n}\n\n/**\n * A period of time between a start and end point.\n */\nexport type TimePeriod = {\n /**\n * The date and time a billing period started.\n */\n start: string\n /**\n * The date and time a billing period ended.\n */\n end: string\n}\n\n/**\n * A price in a single currency.\n */\nexport type SingleCurrencyPrice = {\n /**\n * The three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase, associated with a price.\n */\n currency: string\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * Whether the amount includes any taxes.\n */\n includes_tax?: boolean\n}\n\n/**\n * The timeframe during which the plan price is applicable. For example, for a streaming service, the price is $12.99 and the `unit` is `months` and the `amount` is `1`. In other words, the streaming service is available for $12.99 a month. You may want to specify a unit price if you have many plans that all have different prices. Rather than having to create separate pricing options for each plan, you can specify the timeframe during which the plan price is applicable and then create one pricing option that determines the billing frequency for those plans.\n */\nexport type PriceUnits = {\n /**\n * A unit of time.\n */\n unit: \"day\" | \"month\"\n /**\n * The number of days or months the period covers.\n */\n amount: number\n}\n\n/**\n * The timeframe during which the plan price is applicable. For example, for a streaming service, the price is $12.99 and the `unit` is `months` and the `amount` is `1`. In other words, the streaming service is available for $12.99 a month. You may want to specify a unit price if you have many plans that all have different prices. Rather than having to create separate pricing options for each plan, you can specify the timeframe during which the plan price is applicable and then create one pricing option that determines the billing frequency for those plans.\n */\nexport type NullablePriceUnits = {\n /**\n * A unit of time, either days or months.\n */\n unit: \"day\" | \"month\"\n /**\n * The number of days or months the period covers.\n */\n amount: number\n} | null\n\nexport type Price = unknown\n\nexport type NullablePrice = {\n [key: string]: {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * Whether the amount includes any taxes.\n */\n includes_tax?: boolean\n } | null\n} | null\n\n/**\n * A list of plan prices for each of its pricing options.\n */\nexport type OfferingPlanPrices = {\n [key: string]: OfferingPlanPriceForPricingOption\n}\n\nexport type OfferingPlanPriceForPricingOption = {\n price?: Price\n display_price?: DisplayPrice2\n}\n\nexport type DisplayPrice2 = {\n without_tax?: PriceFormatting\n with_tax?: PriceFormatting\n /**\n * Tax component when itemized (for example on subscription invoices). Omitted for catalog prices\n * that only expose with/without tax.\n *\n */\n tax?: PriceFormatting\n}\n\nexport type PriceFormatting = {\n /**\n * The unformatted amount for the objects.\n */\n amount: number\n /**\n * The three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase, associated with a price.\n */\n currency: string\n /**\n * The formatted amount for the objects.\n */\n formatted: string\n}\n\nexport type Feature = {\n id?: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureResponseAttributes\n meta: FeatureMeta\n}\n\nexport type FeatureMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type FeatureCreate = {\n type: SubscriptionFeatureType\n attributes: FeatureAttributes\n}\n\nexport type FeatureUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureUpdateAttributes\n}\n\nexport type OfferingFeatureCreate = {\n type: SubscriptionOfferingFeatureType\n attributes: FeatureAttributes\n}\n\nexport type FeatureResponseAttributes = FeatureAttributes\n\n/**\n * A tag to add to the customer's account when entitled to the feature.\n */\nexport type FeatureTag = string\n\nexport type FeatureAccessAttributes = {\n type: \"access\"\n tag: FeatureTag\n}\n\nexport type FeaturePromotion = {\n /**\n * The name of the feature.\n */\n name: string\n tag: FeatureTag\n promotion_id?: SubscriptionsUuid\n}\n\nexport type FeaturePromotionAttributes = {\n type: \"promotion\"\n promotions: Array<FeaturePromotion>\n}\n\nexport type FeatureUsageAttributes = {\n type: \"usage\"\n tag: FeatureTag\n /**\n * The property that has a usage limit.\n */\n label: string\n /**\n * The default initial value\n */\n default_value: number\n}\n\nexport type FeatureConfiguration = (\n | FeatureAccessAttributes\n | FeaturePromotionAttributes\n | FeatureUsageAttributes\n) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n}\n\nexport type FeatureAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the feature.\n */\n name: string\n /**\n * The feature description to display to customers.\n */\n description?: string\n configuration: FeatureConfiguration\n}\n\nexport type FeatureUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the feature.\n */\n name?: string\n /**\n * The feature description to display to customers.\n */\n description?: string | null\n configuration?: FeatureConfiguration\n}\n\nexport type PlanMeta = {\n prices?: OfferingPlanPrices\n display_price?: DisplayPrice2\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n active_plan?: ActivePlan\n}\n\nexport type OfferingPlanCreate = {\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanAttributes\n relationships?: Relationships\n}\n\nexport type OfferingPlanAttributes = PlanAttributes &\n OfferingPlanExtraAttributes\n\nexport type OfferingPlanResponseAttributes = PlanResponseAttributes &\n OfferingPlanResponseExtraAttributes\n\n/**\n * A map of merchant-defined string attributes attached to the plan. Carried onto any subscription created from this plan.\n */\nexport type PlanCustomAttributes = {\n [key: string]: string\n}\n\nexport type OfferingPlanExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations?: {\n [key: string]: FeaturePlanConfiguration\n }\n custom_attributes?: PlanCustomAttributes\n}\n\nexport type OfferingPlanResponseExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations: {\n [key: string]: FeaturePlanConfiguration\n }\n /**\n * A map of merchant-defined string attributes attached to the plan. Carried onto any subscription created from this plan.\n */\n custom_attributes?: {\n [key: string]: string\n }\n}\n\nexport type PlanResponseAttributes = PlanAttributes & SubscriptionsTimestamps\n\nexport type PlanAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the plan.\n */\n name: string\n /**\n * The plan or service description to display to customers.\n */\n description?: string\n /**\n * A stock keeping unit for the plan, if appropriate.\n */\n sku?: string\n /**\n * A URL from which an image or file for the plan can be fetched. You can either upload your images and files to Commerce using the Commerce Files API or you can use your own content delivery network. If you are using the Commerce Files API, use [**Create a File**](/docs/api/pxm/files/create-a-file) to upload your file and return an HREF link in the response. An extensive range of [**media and file extensions**](/docs/api/pxm/files/files-service-api) are supported.\n */\n main_image?: string\n price?: Price\n price_units?: PriceUnits\n}\n\nexport type OfferingPlanUpdateAttributes = PlanUpdateAttributes &\n OfferingPlanUpdateExtraAttributes\n\nexport type OfferingPlanUpdateExtraAttributes = {\n /**\n * A map of configurations indicating which features are available for the plan\n */\n feature_configurations?: {\n [key: string]: FeaturePlanConfigurationUpdate\n }\n /**\n * A per-key add/replace/remove map of custom attributes. A key omitted from this map is left untouched; a key explicitly set to null is removed; a key set to a string value is added or replaced.\n */\n custom_attributes?: {\n [key: string]: string | null\n }\n}\n\nexport type PlanUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the plan.\n */\n name?: string\n /**\n * The plan or service description to display to customers.\n */\n description?: string | null\n /**\n * A stock keeping unit for the plan, if appropriate.\n */\n sku?: string | null\n /**\n * A URL from which an image or file for the plan can be fetched. You can either upload your images and files to Commerce using the Commerce Files API or you can use your own content delivery network. If you are using the Commerce Files API, use [**Create a File**](/docs/api/pxm/files/create-a-file) to upload your file and return an HREF link in the response. An extensive range of [**media and file extensions**](/docs/api/pxm/files/files-service-api) are supported.\n */\n main_image?: string | null\n price?: NullablePrice\n price_units?: NullablePriceUnits\n}\n\nexport type DunningRule = {\n id?: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n meta: DunningRuleMeta\n}\n\nexport type DunningRuleMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type DunningRuleCreate = {\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n}\n\nexport type DunningRuleUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleUpdateAttributes\n}\n\n/**\n * The dunning rule attributes you can use to configure your payment retry strategy.\n *\n */\nexport type DunningRuleAttributes = {\n /**\n * The strategy used to make payments. Always `fixed`. This means payments are retried on a fixed schedule as defined by the `payment_retry_unit` and `payment_retry_interval`, for example, every two days.\n *\n */\n payment_retry_type: \"fixed\" | \"backoff\" | \"tiered\"\n /**\n * The number of `payment_interval_unit`s to wait between each payment retry attempt.\n */\n payment_retry_interval?: number\n /**\n * The unit of time used to measure the intervals between payment attempts or retries.\n */\n payment_retry_unit?: \"day\" | \"week\"\n /**\n * The multiplier that increases the interval between consecutive each payment attempts or retries. This is typically used to gradually extend the time between retries. Allowing more time between attempts as failures persist, helps reduce the risk of triggering multiple failures in a short period and gives the subscriber more time to resolve the issue. Must only be set for backup types.\n */\n payment_retry_multiplier?: number\n /**\n * The number of times Subscriptions attempts payment retries before `action` is taken.\n */\n payment_retries_limit: number\n /**\n * The action to take after all payment attempts for an invoice have failed.\n *\n * - None - the subscription remains active and Subscriptions does not attempt to retry the payment. However, the subscription is still available for a subscriber to use.\n * - Suspend the subscription. Subscriptions does not attempt to retry the payment. A subscriber can choose to pay the outstanding invoice. However, a subscriber cannot renew their subscription; a merchandizer must renew the subscription on behalf of the subscriber.\n * - close a subscription. The subscription ends and it's status becomes `inactive`. However, a merchandizer can choose to resume the subscription if a subscriber pays the outstanding payment.\n *\n */\n action: \"none\" | \"pause\" | \"close\" | \"suspend\"\n /**\n * Set to `true` if you want this rule to be the default for the store.\n */\n default?: boolean\n}\n\nexport type DunningRuleUpdateAttributes = {\n /**\n * The strategy used to make payments. Always `fixed`. This means payments are retried on a fixed schedule as defined by the `payment_retry_unit` and `payment_retry_interval`, for example, every two days.\n *\n */\n payment_retry_type?: \"fixed\" | \"backoff\" | \"tiered\"\n /**\n * The number of `payment_interval_unit`s to wait between each payment retry attempt.\n */\n payment_retry_interval?: number | null\n /**\n * The unit of time used to measure the intervals between payment attempts or retries.\n */\n payment_retry_unit?: \"day\" | \"week\"\n /**\n * The multiplier that increases the interval between consecutive each payment attempts or retries. This is typically used to gradually extend the time between retries. Allowing more time between attempts as failures persist, helps reduce the risk of triggering multiple failures in a short period and gives the subscriber more time to resolve the issue. Must only be set for backup types.\n */\n payment_retry_multiplier?: number | null\n /**\n * The number of times Subscriptions attempts payment retries before `action` is taken.\n */\n payment_retries_limit?: number\n /**\n * The action to take after all payment attempts for an invoice have failed.\n */\n action?: \"none\" | \"pause\" | \"close\" | \"suspend\"\n /**\n * Set to `true` if you want this rule to be the default for the store.\n */\n default?: boolean\n}\n\nexport type ProrationPolicy = {\n id?: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyResponseAttributes\n meta: ProrationPolicyMeta\n}\n\nexport type ProrationPolicyUpdate = {\n id: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyUpdateAttributes\n}\n\nexport type ProrationPolicyRelationshipAttributes = {\n type: ProrationPolicyType\n id: SubscriptionsUuid\n}\n\nexport type ProrationPolicyUpdateRelationshipAttributes = {\n type: ProrationPolicyType\n id: SubscriptionsUuid\n} | null\n\nexport type ProrationPolicyResponseAttributes = ProrationPolicyAttributes\n\nexport type ProrationPolicyCreate = {\n type: ProrationPolicyType\n attributes: ProrationPolicyAttributes\n}\n\nexport type ProrationPolicyAttributes = {\n /**\n * A name for the proration policy.\n */\n name: string\n /**\n * When rounding in proration, you must decide how to round the units of time used to calculate the charges.\n *\n * - round up to the next unit, ensuring subscribers are charged slightly more to cover any partial use.\n * - round down to the previous whole unit, providing subscribers with a slight benefit by not charging for partial use.\n * - round to the nearest whole unit, whether up or down, based on standard rounding rules. For example, rounding 0.5 up and rounding 0.5 down.\n *\n */\n rounding: \"up\" | \"down\" | \"nearest\"\n external_ref?: ExternalRef\n /**\n * Set to `true` to allow an automatic gateway refund when a proration would otherwise be rejected for netting negative.\n */\n allow_negative_proration_refund?: boolean\n}\n\nexport type ProrationPolicyUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the proration policy.\n */\n name?: string\n /**\n * Whether to round up or down\n */\n rounding?: \"up\" | \"down\" | \"nearest\"\n /**\n * Set to `true` to allow an automatic gateway refund when a proration would otherwise be rejected for netting negative.\n */\n allow_negative_proration_refund?: boolean\n}\n\nexport type ProrationPolicyMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingPricingOptionCreate = {\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionAttributes\n}\n\nexport type PricingOptionResponseAttributes = PricingOptionAttributes &\n SubscriptionsTimestamps\n\nexport type PricingOptionAttributes = {\n external_ref?: ExternalRef\n /**\n * A name for the pricing option.\n */\n name: string\n /**\n * The pricing option description to display to customers.\n */\n description?: string\n /**\n * The unit of time that billing intervals are measured.\n */\n billing_interval_type: \"day\" | \"week\" | \"month\" | \"year\"\n /**\n * The number of intervals between issuing bills.\n */\n billing_frequency: number\n /**\n * The number of intervals from the start of the subscription before billing starts. Used with `billing_interval_type`. For example, if `billing_interval_type` is `months`, and `trial_period` is `1`, the trial period is 1 month.\n */\n trial_period?: number\n lead_time?: LeadTime\n notification_schedule?: Array<NotificationSchedule>\n /**\n * The number of intervals that the subscription runs for.\n */\n plan_length: number\n /**\n * Enables you to specify recurring payments. If `end_behavior` is `roll`, customers pay regularly and repeatedly. If `end_behavior` is `close`, customers pay a total amount in a limited number of partial payments.\n */\n end_behavior: \"close\" | \"roll\"\n /**\n * The subscriber can pause a subscription.\n */\n can_pause: boolean\n /**\n * The subscriber can resume a paused subscription.\n */\n can_resume: boolean\n /**\n * The subscriber can cancel a subscription.\n */\n can_cancel: boolean\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number\n fixed_price?: Price\n}\n\nexport type PricingOptionUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n name?: string\n /**\n * The pricing option description to display to customers.\n */\n description?: string | null\n /**\n * The unit of time in which billing intervals are measured.\n */\n billing_interval_type?: \"day\" | \"week\" | \"month\" | \"year\"\n /**\n * The number of intervals between issuing bills.\n */\n billing_frequency?: number\n /**\n * The number of intervals from the start of the subscription before billing starts. Used with `billing_interval_type`. For example, if `billing_interval_type` is `months`, and `trial_period` is `1`, the trial period is 1 month.\n */\n trial_period?: number | null\n /**\n * The length of time for which a subscription plan is valid. For example, six months after which the plan is renewed.\n */\n plan_length?: number\n lead_time?: NullableLeadTime\n notification_schedule?: Array<NotificationSchedule>\n /**\n * Enables you to specify recurring payments. If `end_behavior` is `roll`, customers pay regularly and repeatedly. If `end_behavior` is `close`, customers pay a total amount in a limited number of partial payments.\n */\n end_behavior?: \"close\" | \"roll\"\n /**\n * The subscriber can pause a subscription.\n */\n can_pause?: boolean\n /**\n * The subscriber can resume a paused subscription.\n */\n can_resume?: boolean\n /**\n * The subscriber can cancel a subscription.\n */\n can_cancel?: boolean\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number | null\n fixed_price?: NullablePrice\n}\n\nexport type BuildOffering = {\n external_ref?: ExternalRef\n /**\n * The name of the offering.\n */\n name: string\n /**\n * The offering description to display to customers.\n */\n description?: string\n /**\n * The unique ID or external ref of the proration policy\n */\n proration_policy_id?: string\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociations\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n /**\n * Plan information to be created within the offering\n */\n plans: Array<OfferingPlanAttributes>\n /**\n * Pricing options information to be created within the offering\n */\n pricing_options: Array<PricingOptionAttributes>\n}\n\nexport type Offering = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes: OfferingResponseAttributes\n relationships?: Relationships\n meta: OfferingMeta\n}\n\nexport type OfferingIncludes = {\n features?: Array<OfferingFeature>\n plans?: Array<OfferingPlan>\n pricing_options?: Array<OfferingPricingOption>\n}\n\nexport type OfferingMeta = {\n external_plan_refs: Array<OfferingPlanExternalRefMeta>\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingCreate = {\n type: SubscriptionOfferingType\n attributes: OfferingAttributes\n relationships?: OfferingRelationships\n}\n\nexport type OfferingPlanUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanUpdateAttributes\n}\n\n/**\n * Configures an access feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan.\n */\nexport type FeatureConfigAccessAttributes = {\n type: \"access\"\n}\n\n/**\n * Configures a promotion feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan. The tag of the specific promotion that it to be made available must be supplied.\n */\nexport type FeatureConfigPromotionAttributes = {\n type: \"promotion\"\n tag: FeatureTag\n}\n\n/**\n * Configures a usage feature against a plan in an offering, indicating that the referenced feature is a benefit of that plan. The default value that the usage metrics adopts must be supplied.\n */\nexport type FeatureConfigUsageAttributes = {\n type: \"usage\"\n /**\n * The default initial value\n */\n default_value: number\n}\n\nexport type FeaturePlanConfiguration = (\n | FeatureConfigAccessAttributes\n | FeatureConfigPromotionAttributes\n | FeatureConfigUsageAttributes\n) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n}\n\nexport type FeaturePlanConfigurationUpdate =\n | ((\n | FeatureConfigAccessAttributes\n | FeatureConfigPromotionAttributes\n | FeatureConfigUsageAttributes\n | null\n ) & {\n /**\n * The type of feature, one of access, promotion or usage.\n */\n type: \"access\" | \"promotion\" | \"usage\"\n })\n | null\n\nexport type OfferingBuildPlanPricingOptions = Array<string>\n\n/**\n * A map of plans keyed by plan UUID or external_ref to a list of associated pricing options, similarly keyed.\n */\nexport type OfferingBuildPricingOptionAssociations = {\n [key: string]: OfferingBuildPlanPricingOptions\n}\n\n/**\n * Map of feature configurations keyed by plan UUID or external_ref\n */\nexport type OfferingBuildConfiguredFeatures = {\n [key: string]: OfferingBuildPlanFeatures\n}\n\n/**\n * A map of configurations indicating which features are available for the plan\n */\nexport type OfferingBuildPlanFeatures = {\n [key: string]: FeaturePlanConfiguration\n}\n\nexport type OfferingFeatureUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureUpdateAttributes\n}\n\nexport type OfferingFeature = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureResponseAttributes\n relationships?: Relationships\n meta: FeatureMeta\n}\n\nexport type OfferingPlan = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanResponseAttributes\n relationships?: Relationships\n meta: PlanMeta\n}\n\nexport type OfferingPricingOptionUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionUpdateAttributes\n}\n\nexport type OfferingPricingOption = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionResponseAttributes\n relationships?: Relationships\n meta: OfferingPricingOptionMeta\n}\n\nexport type OfferingPricingOptionMeta = {\n prices?: OfferingPricingOptionPrices\n price?: Price\n display_price?: DisplayPrice2\n active_pricing_option?: ActivePricingOption\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * The price of each plan within the offering that this pricing option may be applied to.\n */\nexport type OfferingPricingOptionPrices = {\n [key: string]: OfferingPricingOptionPriceForPlan\n}\n\nexport type OfferingPricingOptionPriceForPlan = {\n price?: Price\n display_price?: DisplayPrice2\n}\n\n/**\n * A list of feature IDs to attach to the offering. See [**List Features**](/docs/api/subscriptions/list-features).\n */\nexport type OfferingFeatureAttach = {\n features: Array<SubscriptionsUuid>\n}\n\nexport type OfferingUpdate = unknown & {\n id: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes?: OfferingUpdateAttributes\n relationships?: OfferingUpdateRelationships\n}\n\nexport type OfferingResponseAttributes = OfferingAttributes &\n SubscriptionsTimestamps\n\nexport type OfferingAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the offering.\n */\n name: string\n /**\n * The offering description to display to customers.\n */\n description?: string\n}\n\nexport type OfferingUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the offering.\n */\n name?: string\n /**\n * The offering description to display to customers.\n */\n description?: string | null\n}\n\nexport type OfferingRelationships = {\n proration_policy?: ProrationPolicyRelationshipAttributes\n}\n\nexport type OfferingUpdateRelationships = {\n proration_policy?: ProrationPolicyUpdateRelationshipAttributes\n}\n\n/**\n * A subscription may optionally be associated with an item in an order by supplying both the order ID and the ID of the item within that order.\n */\nexport type BuildSubscriptionOrder = {\n order_id: SubscriptionsUuid\n order_item_id: SubscriptionsUuid\n}\n\nexport type BuildSubscription = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering_external_ref?: ExternalRef\n offering_id?: SubscriptionsUuid\n plan_id?: SubscriptionsUuid\n pricing_option_id?: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: CreatePaymentAuthority\n manual_payments: ManualPayments\n name: string\n email: string\n /**\n * Whether a subscription is pending activation or not. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n pending?: boolean\n /**\n * Indicates that payment for the first billing period of the subscription has already been taken. As well as creating the subscription a settled invoice is created to cover the first period.\n */\n first_invoice_paid?: boolean\n /**\n * When importing an active subscription from an existing system you can specify the date and time of the start of the most recent period. This may only be supplied when `first_invoice_paid` is true. As well as creating the subscription a settled invoice is created to cover the correct billing period.\n */\n started_at?: string\n /**\n * Optional. May only be set when `started_at` is set. When supplied, overrides the default first billing period end (start + 1 interval). The first billing period runs from the subscription start date to this date. The subscriber is charged the standard period price for the first period. Subsequent billing periods start from this date. Must be after the subscription start date.\n */\n override_first_period_end_date?: string\n offering?: OfferingAttributes\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n plans?: Array<PlanAttributesAndSelectedMeta>\n pricing_options?: Array<PricingOptionAttributesAndSelectedMeta>\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociations\n selected_plan?: ExternalRef\n selected_pricing_option?: ExternalRef\n order?: BuildSubscriptionOrder\n meta?: SubscriptionMeta\n}\n\nexport type PricingOptionAttributesAndSelectedMeta = PricingOptionAttributes &\n SelectedMeta\n\nexport type PlanAttributesAndSelectedMeta = PlanAttributes &\n SelectedMeta &\n EmbeddedOfferingPlanExtraAttributes\n\nexport type EmbeddedOfferingPlanExtraAttributes = {\n custom_attributes?: PlanCustomAttributes\n}\n\nexport type SelectedMeta = {\n meta?: SelectedMetaAttributes\n}\n\nexport type SelectedMetaAttributes = {\n /**\n * One item must be selected for use in the subscription\n */\n selected?: boolean\n}\n\nexport type Subscription = {\n id?: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionAttributes\n relationships?: Relationships\n meta: SubscriptionMeta\n}\n\nexport type ManageSubscriptionPlans = {\n type: \"detach\"\n plans: Array<SubscriptionsUuid>\n}\n\nexport type SubscriptionUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionUpdateAttributes\n}\n\nexport type SubscriptionUpdateAttributes = {\n pricing_option_id?: string\n plan_id?: string\n address_id?: string | null\n payment_authority?: PaymentAuthority\n /**\n * The date and time a `pending` subscription goes live and becomes active. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n go_live_after?: string | null\n}\n\nexport type SubscriptionIncludes = {\n plans?: Array<OfferingPlan>\n pricing_options?: Array<OfferingPricingOption>\n}\n\nexport type SubscriptionMeta = {\n owner: OwnerMeta\n timestamps: SubscriptionTimestamps\n status: Status\n state?: SubscriptionState\n manual_payments: ManualPayments\n /**\n * Indicates that the first billing period of this subscription was paid for outside of the subscriptions service.\n */\n first_invoice_prepaid: boolean\n /**\n * Whether a subscription is canceled or not.\n */\n canceled: boolean\n /**\n * Whether a subscription is paused or not.\n */\n paused: boolean\n /**\n * Whether a subscription is closed or not.\n */\n closed: boolean\n /**\n * Whether a subscription is suspended or not.\n */\n suspended: boolean\n /**\n * Whether a subscription is pending activation or not.\n */\n pending: boolean\n /**\n * The time when the subscription becomes eligible for a new invoice. The next invoice will be generated at the next billing run after this point.\n */\n invoice_after: string\n pending_price_change?: SubscriptionPriceChanges\n /**\n * A history of price updates that have been applied to this subscription.\n */\n price_update_history?: Array<SubscriptionPriceUpdateHistoryEntry>\n /**\n * The ID of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_id?: string\n /**\n * The amount of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_amount?: number\n /**\n * Who or what most recently paused this subscription, while it remains paused. Absent when the subscription has never been paused, or is not currently paused (cleared on resume). Only visible to merchandizer/store or organization-scoped callers.\n */\n paused_by?: \"subscriber\" | \"merchandizer\" | \"dunning\"\n}\n\nexport type SubscriptionTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a subscription was cancelled.\n */\n canceled_at?: string\n /**\n * The date and time a subscription was paused.\n */\n paused_at?: string\n /**\n * The date and time a subscription was resumed.\n */\n resumed_at?: string\n /**\n * The date and time a subscription will end.\n * - If the subscription offering pricing option end behavior is `close`, `end_date` is set to the billing period end date upon subscription creation.\n * - If the subscription offering pricing option end behavior is \"roll\": `end_date` is set to the billing period end date when the subscription is cancelled.\n *\n */\n end_date?: string\n /**\n * The date and time a subscription will go live and become active.\n */\n go_live_after?: string\n /**\n * The date and time a subscription was released from the pending state and made active.\n */\n go_live?: string\n}\n\nexport type SubscriptionAttributes = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering: Offering\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: PaymentAuthority\n}\n\nexport type ChangeState = {\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n}\n\nexport type SubscriptionStateAttributes = {\n action: SubscriptionStateAction\n /**\n * When `action` is `cancel`, if `true`, the subscription moves to `inactive` immediately with entitlements updated in this request,\n * and a `canceled` event is emitted (not `pending_cancel`). Omitted or `false` preserves end-of-period cancellation.\n * Subscribers may not set this to `true` and will receive a 403.\n *\n * Immediate cancellation does **not** trigger any sort of refund; those require separate API flows.\n *\n * Canceling a subscription that is still `pending` (has not reached its `go_live_after` date and has no invoices) is always immediate,\n * regardless of this flag's value, since there is no billing period in progress to defer to. Subscribers may cancel their own pending\n * subscription without needing to set this flag.\n *\n */\n cancel_immediately?: boolean\n}\n\n/**\n * This represents the type of resource object being returned. Always `subscription_state`.\n */\nexport type SubscriptionStateType = \"subscription_state\"\n\n/**\n * The subscription lifecycle is the states that a subscription can go through when a customer subscribes to a service or a plan.\n *\n * A subscription can have the following states; `canceled`, `paused`, or `resumed`.\n *\n * See [**Managing the subscription lifecycle**](/docs/api/subscriptions/subscriptions#managing-the-subscription-lifecycle).\n *\n */\nexport type SubscriptionStateAction = \"cancel\" | \"pause\" | \"resume\" | \"pending\"\n\nexport type StateMeta = {\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type SubscriptionState = {\n id?: SubscriptionsUuid\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n meta: StateMeta\n}\n\n/**\n * The kind of prospective subscription change being previewed. Only `plan_pricing_option_change`\n * exists today; this discriminator allows other proration triggers to be added later without a\n * breaking change.\n *\n */\nexport type ProrationPreviewTriggerType = \"plan_pricing_option_change\"\n\n/**\n * This represents the type of resource object being sent. Always `proration_preview_request`.\n */\nexport type ProrationPreviewRequestType = \"proration_preview_request\"\n\nexport type ProrationPreviewRequestAttributes = {\n trigger: ProrationPreviewTriggerType\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n}\n\nexport type ProrationPreviewRequest = {\n type: ProrationPreviewRequestType\n attributes: ProrationPreviewRequestAttributes\n}\n\n/**\n * This represents the type of resource object being returned. Always `proration_preview`.\n */\nexport type ProrationPreviewType = \"proration_preview\"\n\nexport type ProrationPreviewAttributes = {\n trigger: ProrationPreviewTriggerType\n /**\n * Whether submitting this prospective change would actually result in a proration.\n */\n would_prorate: boolean\n /**\n * Whether this change would result in a Proration Refund - a real refund issued against the\n * subscription's previous invoice payment because the unused-time credit exceeds the new pricing\n * option's cost. Set alongside `would_prorate: true` for this case; omitted otherwise.\n *\n */\n would_refund?: boolean | null\n /**\n * The amount that would be refunded as a Proration Refund, as a whole number of the currency's\n * smallest subdivision. Set only when `would_refund` is `true`.\n *\n */\n refund_amount?: number | null\n /**\n * Why a previewed change would not result in a proration if actually submitted. Returned alongside\n * `would_prorate: false`; this is not an error response. `negative_amount` is retained for backward\n * compatibility but is no longer returned - a negative-net change now either proceeds with a\n * Proration Refund (`would_refund: true`), is rejected as `refund_not_possible`, or is rejected as\n * `refund_disallowed_by_policy` when the applicable proration policy does not allow refunds.\n *\n */\n rejection_reason:\n | \"negative_amount\"\n | \"no_change\"\n | \"refund_not_possible\"\n | \"refund_disallowed_by_policy\"\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n billing_cost_before_proration?: number | null\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n refunded_cost_for_unused_pricing_option_period?: number | null\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n new_pricing_option_cost?: number | null\n proration_policy_id?: string | null\n /**\n * The date and time the proration would be applied.\n */\n prorated_at?: string | null\n /**\n * The subscription's new billing period end date, if the change would alter it (only set when the\n * current and prospective pricing options differ in billing interval type or frequency).\n *\n */\n billing_period_end_date_after_proration?: string | null\n /**\n * The end of the period being refunded for the current pricing option's unused time.\n */\n refund_period_end_date?: string | null\n}\n\nexport type ProrationPreview = {\n type: ProrationPreviewType\n attributes: ProrationPreviewAttributes\n}\n\n/**\n * When configured to true, no payment gateway is used and a pending payment is created. See [External Payments](/docs/api/subscriptions/invoices#external-payments).\n */\nexport type ManualPayments = boolean\n\nexport type PaymentAuthority = (\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type NullablePaymentAuthority =\n | ((\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n | null\n ) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n })\n | null\n\nexport type CreatePaymentAuthority = (\n | CreatePaymentAuthorityEpPayments\n | CreatePaymentAuthorityStripe\n | CreatePaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type CreatePaymentAuthorityAuthorizeNet = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"authorize_net\"\n /**\n * The customer's payment profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n payment_profile_id: string\n /**\n * The customer's profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n customer_profile_id: string\n}\n\nexport type CreatePaymentAuthorityEpPayments = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"elastic_path_payments_stripe\"\n /**\n * The unique identifier for a customer.\n */\n customer_id: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription.\n */\n card_id: string\n}\n\nexport type CreatePaymentAuthorityStripe = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"stripe_payment_intents\"\n /**\n * The unique identifier for a customer.\n */\n customer_id: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription.\n */\n card_id: string\n}\n\nexport type PaymentAuthorityAuthorizeNet = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"authorize_net\"\n /**\n * The customer's payment profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n payment_profile_id?: string\n /**\n * The customer's profile id, unique to Authorize.net, used to facilitate payment of the subscription.\n */\n customer_profile_id?: string\n}\n\nexport type PaymentAuthorityEpPayments = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"elastic_path_payments_stripe\"\n /**\n * The unique identifier for a customer.\n */\n customer_id?: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).\n */\n card_id?: string\n}\n\nexport type PaymentAuthorityStripe = {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type: \"stripe_payment_intents\"\n /**\n * The unique identifier for a customer.\n */\n customer_id?: string\n /**\n * The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).\n */\n card_id?: string\n}\n\nexport type Import = {\n id?: SubscriptionsUuid\n type: SubscriptionImportType\n attributes: ImportAttributes\n meta: ImportMeta\n}\n\nexport type ImportAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n * - **pending** - Commerce has received the request but is currently busy processing other requests.\n * - **started** - Commerce has started processing the job.\n * - **success** - The job has successfully completed.\n * - **failed** - The job has failed.\n *\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type ImportMeta = {\n owner: OwnerMeta\n timestamps: JobTimestamps\n records: ImportRecords\n}\n\n/**\n * You can track the number of records imported to ensure the completeness, accuracy and integrity of the import. Uploaded shows the number of records ready to be imported into Subscriptions. However, this does not mean they are valid subscription objects, only that they have the correct type and their JSON format is properly formatted. Imported shows the number of records that have been both validated and successfully added to Subscriptions.\n */\nexport type ImportRecords = {\n uploaded: {\n /**\n * The total number of features uploaded.\n */\n subscription_feature: number\n /**\n * The total number of subscribers uploaded.\n */\n subscription_subscriber: number\n /**\n * The total number of offerings uploaded.\n */\n subscription_offering: number\n /**\n * The total number of subscriptions uploaded.\n */\n subscription: number\n }\n imported: {\n /**\n * The total number of features uploaded.\n */\n subscription_feature: number\n /**\n * The total number of subscribers imported.\n */\n subscription_subscriber: number\n /**\n * The total number of offerings imported.\n */\n subscription_offering: number\n /**\n * The total number of subscriptions imported.\n */\n subscription: number\n }\n}\n\nexport type Job = {\n id?: SubscriptionsUuid\n type: SubscriptionJobType\n attributes: JobResponseAttributes\n relationships?: Relationships\n meta: JobMeta\n}\n\nexport type JobMeta = {\n owner: OwnerMeta\n timestamps: JobTimestamps\n report?: JobReport\n}\n\n/**\n * You can track your Subscriptions billing, tax, and payment operations using reports.\n */\nexport type JobReport =\n | BillingRunReport\n | TaxRunReport\n | PaymentRunReport\n | NotificationRunReport\n | SubscriptionUpdateReport\n\nexport type BillingRunReport = {\n /**\n * The total number of invoices created that are ready for payment.\n */\n invoices_ready_for_payment: number\n /**\n * The total number of invoices created that need taxes to be applied before payment can be made.\n */\n invoices_tax_required: number\n /**\n * The total number of invoices that were scheduled but creation failed.\n */\n invoice_failures: number\n total_ready_for_payment: unknown & Price\n total_tax_required: unknown & Price\n}\n\nexport type TaxRunReport = {\n /**\n * The total number of invoices to which tax was successfully added.\n */\n invoices_updated: number\n /**\n * The total number of invoices to which tax could not be added.\n */\n invoice_failures: number\n}\n\nexport type PaymentRunReport = {\n /**\n * The total number of invoices for which payment was attempted.\n */\n total_payment_attempts: number\n /**\n * The number of failed payment attempts.\n */\n failed_payments: number\n total_collected: unknown & Price\n}\n\nexport type NotificationRunReport = {\n /**\n * The total number of notifications sent.\n */\n total_notifications_sent: number\n /**\n * The number of failed notifications.\n */\n failed_notifications: number\n}\n\nexport type SubscriptionUpdateReport = {\n /**\n * The total number of subscriptions updated.\n */\n subscriptions_updated: number\n /**\n * The total number of subscriptions that failed to be updated.\n */\n subscription_failures: number\n /**\n * The total number of subscriptions processed.\n */\n total_processed: number\n}\n\nexport type JobTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a job is started.\n */\n started_at?: string\n /**\n * The date and time a job finished.\n */\n finished_at?: string\n}\n\nexport type JobCreate = {\n type: SubscriptionJobType\n attributes: JobCreateAttributes\n}\n\nexport type JobResponseAttributes = JobCreateAttributes &\n JobAttributes &\n SubscriptionsTimestamps\n\n/**\n * The type of job. One of the following:\n * - `billing-run` - a billing run job.\n * - `payment-run` - a payment run job.\n * - `notification-run` - a notification run job.\n *\n */\nexport type ScheduleJobType = \"billing-run\" | \"payment-run\" | \"notification-run\"\n\nexport type JobCreateAttributes = (\n | BillingRunJobAttributes\n | TaxRunJobAttributes\n | PaymentRunJobAttributes\n | ImportJobAttributes\n | NotificationRunJobAttributes\n | SubscriptionUpdateRunJobAttributes\n) & {\n external_ref?: ExternalRef\n /**\n * The type of job. One of the following:\n * - `billing-run` - a billing run job.\n * - `tax-run` - a tax run job.\n * - `payment-run` - a payment run job.\n * - `import` - an import job.\n * - `notification-run` - a notification run job.\n * - `subscription-update` - a subscription update run job.\n *\n */\n job_type:\n | \"billing-run\"\n | \"tax-run\"\n | \"payment-run\"\n | \"import\"\n | \"notification-run\"\n | \"subscription-update\"\n}\n\nexport type BillingRunJobAttributes = {\n job_type: string\n}\n\nexport type TaxRunJobAttributes = {\n job_type: string\n taxes?: Array<InvoiceTaxItems>\n}\n\nexport type PaymentRunJobAttributes = {\n job_type: string\n}\n\nexport type ImportJobAttributes = {\n job_type: string\n}\n\nexport type NotificationRunJobAttributes = {\n job_type: string\n}\n\nexport type SubscriptionUpdateRunJobAttributes = {\n job_type: string\n /**\n * The ID of the offering whose subscriptions should be updated. Mutually exclusive with `subscription_ids`.\n *\n */\n offering_id?: string\n /**\n * Subscriptions to exclude from the price update. Only valid when `offering_id` is provided.\n *\n */\n excluded_subscription_ids?: Array<SubscriptionsUuid>\n /**\n * Specific subscriptions to update. Mutually exclusive with `offering_id`.\n *\n */\n subscription_ids?: Array<SubscriptionsUuid>\n price_changes: SubscriptionPriceChanges\n}\n\nexport type SubscriptionPriceChanges = {\n plan_prices?: unknown\n pricing_option_prices?: unknown\n}\n\n/**\n * A record of the previous prices of a subscription before a price change was applied\n */\nexport type SubscriptionPriceUpdateHistoryEntry = {\n price_changes: SubscriptionPriceChanges\n /**\n * The date and time when the prices were changed (when these previous prices stopped being active)\n */\n valid_until: string\n}\n\nexport type PricingOptionPrice = {\n /**\n * A percentage discount on the total cost of any plans within an offering. For example, you can configure a percentage that equates the cost of a pricing option to the total value of all plans within the offering, reduced by a percentage. For example, if you specify `10`, a 10% discount is applied to the total value of all repeat plans in an offering.\n */\n base_price_percentage?: number\n fixed_price?: Price\n}\n\nexport type JobAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type InvoiceTaxItems = {\n invoice_id: SubscriptionsUuid\n tax_items: Array<TaxItem>\n}\n\nexport type TaxItem = {\n /**\n * This represents the type of resource object being returned. Always `tax_item`.\n */\n type: \"tax_item\"\n /**\n * The name that appears on your customer's invoice and usually describes the specific type of tax, for example, `Sales`, `VAT` or `GST`.\n */\n name?: string\n /**\n * The unique identifier assigned to goods and services for taxation purposes.\n */\n code?: string\n /**\n * The tax rate is the percentage of the subscription amount that is required to be paid as tax.\n */\n rate: number\n /**\n * The geographic area or political entity that has authority to levy and collect taxes.\n */\n jurisdiction?: string\n}\n\n/**\n * A notification scheduled for an invoice.\n */\nexport type InvoiceNotification = {\n /**\n * The name of the notification schedule that generated this notification.\n */\n name: string\n /**\n * The date and time when the notification is due to be sent.\n */\n due: string\n /**\n * The date and time when the notification was sent.\n */\n sent_at?: string\n}\n\nexport type SubscriptionInvoice = {\n id?: SubscriptionsUuid\n type: SubscriptionInvoiceType\n attributes: SubscriptionInvoiceAttributes\n relationships?: Relationships\n meta: SubscriptionInvoiceMeta\n}\n\nexport type UpdateInvoicePayment = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: UpdateInvoicePaymentAttributes\n}\n\nexport type UpdateInvoicePaymentAttributes = {\n /**\n * Whether the payment was successful.\n */\n success: boolean\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_payment_id?: string\n /**\n * A message generated by an external payment method that describes why a payment fails.\n */\n failure_detail?: string\n /**\n * The date and time the invoice payment was taken at.\n */\n payment_taken_at?: string\n}\n\nexport type SubscriptionInvoicePayment = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: SubscriptionInvoicePaymentAttributes\n meta: SubscriptionInvoicePaymentMeta\n}\n\nexport type SubscriptionInvoiceMeta = {\n owner: OwnerMeta\n subscription_id?: SubscriptionsUuid\n subscriber_id?: SubscriptionsUuid\n price?: SingleCurrencyPrice\n /**\n * Invoice totals formatted for display (`with_tax`, `without_tax`, `tax`). Amounts are in the\n * currency's smallest subdivision.\n *\n */\n display_price: DisplayPrice2\n /**\n * A list of notifications scheduled for this invoice. These are derived from the notification\n * schedules configured on the pricing option at the time the invoice was created. Each notification\n * has a due date calculated relative to the billing period end date.\n *\n */\n notifications?: Array<InvoiceNotification>\n timestamps: InvoiceTimestamps\n proration_events: Array<ProrationEvent> | null\n /**\n * The pro-rated remaining value for the billing period\n */\n pro_rata_remaining_value: number\n}\n\nexport type ProrationEvent = {\n proration_policy_id: SubscriptionsUuid\n /**\n * The value as a whole number of the currency's smallest subdivision\n */\n billing_cost_before_proration: number\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n refunded_amount_for_unused_pricing_option: number\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n new_pricing_option_cost: number\n /**\n * The date and time the subscription was prorated.\n */\n prorated_at: string\n}\n\nexport type SubscriptionInvoicePaymentRefund = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentRefundType\n attributes: SubscriptionInvoicePaymentRefundAttributes\n relationships: Relationships\n}\n\nexport type SubscriptionInvoicePaymentRefundAttributes = {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * The reason or note for the refund\n */\n reason: string\n /**\n * Specifies the payment gateway.\n */\n gateway: string\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_refund_id: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type CreateInvoicePaymentRefund = {\n type: SubscriptionInvoicePaymentRefundType\n attributes: {\n /**\n * The value as a whole number of the currency's smallest subdivision.\n */\n amount: number\n /**\n * The reason or note for the refund\n */\n reason: string\n }\n}\n\nexport type InvoiceTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time taxes were added to an invoice.\n */\n taxes_added_at?: string\n}\n\nexport type SubscriptionInvoicePaymentMeta = {\n owner: OwnerMeta\n subscription_id: SubscriptionsUuid\n invoice_id: SubscriptionsUuid\n job_id: SubscriptionsUuid\n timestamps: InvoicePaymentTimestamps\n /**\n * Whether manual payments are enabled or the payment will be handled by the configured gateway.\n */\n manual_payment: boolean\n}\n\nexport type InvoicePaymentTimestamps = SubscriptionsTimestamps & {\n /**\n * The date and time a payment was taken.\n */\n payment_taken_at?: string\n}\n\nexport type SubscriptionInvoiceAttributes = {\n billing_period: TimePeriod\n invoice_items: Array<SubscriptionInvoiceItem>\n tax_items?: Array<TaxItem>\n /**\n * The invoice still requires payment if `true`.\n */\n outstanding: boolean\n /**\n * A sequential number assigned by the billing run.\n */\n number?: number\n /**\n * Whether tax is required for this invoice.\n */\n tax_required: boolean\n /**\n * Whether the limit of payment retries has been reached.\n */\n payment_retries_limit_reached: boolean\n /**\n * The date and time an invoice was updated.\n */\n updated_at?: string\n /**\n * The date and time an invoice was created.\n */\n created_at?: string\n /**\n * Whether the invoice is a Pro Forma invoice (generated ahead of payment) or not.\n *\n * Pro Forma Invoices are created ahead of payment time (for example, a week in advance of payment so\n * you can notify customers) and will not be picked up by a payment run until on or after their valid_from\n * date.\n *\n */\n pro_forma: boolean\n /**\n * The date and time at which an invoice will be valid from.\n *\n * If generated with no lead time then the invoice will be valid immediately.\n *\n * If generated with a lead time, then the valid_from will be the data at which the Invoice transitions from\n * it's Pro Forma state to one that can have payment taken.\n *\n */\n valid_from?: string\n /**\n * Whether there is a manual pending payment pending on the invoice.\n */\n manual_payment_pending: boolean\n}\n\nexport type SubscriptionInvoicePaymentAttributes = {\n /**\n * Whether the payment was successful.\n */\n success: boolean\n /**\n * Whether the payment is pending (only for manual payments).\n */\n pending?: boolean\n /**\n * Specifies the payment gateway.\n */\n gateway: string\n /**\n * An optional external ID that is specific to the gateway used.\n */\n external_payment_id?: string\n failure_detail?: PaymentFailureDetail\n amount: SingleCurrencyPrice\n}\n\n/**\n * The reason the payment failed.\n */\nexport type PaymentFailureDetail = {\n reason?: string\n}\n\nexport type SubscriptionInvoiceItem = {\n /**\n * A description of the subscribed item.\n */\n description: string\n price: SingleCurrencyPrice\n plan_id?: SubscriptionsUuid\n /**\n * The start date and time of the billing period in this price\n */\n from_time_period?: string\n /**\n * The end date and time of the billing period in this price\n */\n until_time_period?: string\n}\n\n/**\n * The three-letter [**ISO currency code**](https://www.iso.org/iso-4217-currency-codes.html) in uppercase.\n */\nexport type CurrencyIdentifier = string\n\n/**\n * The owner of a resource, either `store` or `organization`.\n */\nexport type OwnerMeta = string\n\n/**\n * The offerings plan external_ref value\n */\nexport type OfferingPlanExternalRefMeta = string\n\nexport type Subscriber = {\n id?: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberResponseAttributes\n meta: SubscriberMeta\n}\n\nexport type SubscriberMeta = {\n /**\n * A list of entitlement tags currently active for the subscriber\n */\n feature_entitlements?: Array<FeatureTag>\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriptionSubscriberType = \"subscription_subscriber\"\n\nexport type SubscriberResponseAttributes = SubscriberAttributes &\n SubscriptionsTimestamps\n\nexport type SubscriberAttributes = {\n account_id: SubscriptionsUuid\n /**\n * The name of the subscriber.\n */\n name: string\n /**\n * The email of the subscriber.\n */\n email: string\n payment_authority?: PaymentAuthority\n}\n\nexport type SubscriberUpdateAttributes = {\n /**\n * The name of the subscriber.\n */\n name?: string\n /**\n * The email of the subscriber.\n */\n email?: string\n payment_authority?: NullablePaymentAuthority\n}\n\nexport type SubscriberCreate = {\n type: SubscriptionSubscriberType\n attributes: SubscriberAttributes\n}\n\nexport type SubscriberUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberUpdateAttributes\n}\n\nexport type ScheduleCreate = {\n type: SubscriptionScheduleType\n attributes: ScheduleAttributes\n}\n\nexport type Schedule2 = {\n id?: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleResponseAttributes\n meta: ScheduleMeta\n}\n\nexport type ScheduleMeta = {\n scheduled_for?: string\n owner: OwnerMeta\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriptionScheduleType = \"subscription_schedule\"\n\nexport type ScheduleResponseAttributes = ScheduleAttributes &\n SubscriptionsTimestamps\n\nexport type ScheduleAttributes = {\n external_ref?: ExternalRef\n /**\n * The name of the schedule.\n */\n name?: string\n /**\n * A cron-style specification of when the jobs should be created. See [**Schedules**](/docs/api/subscriptions/schedules).\n */\n specification: string\n /**\n * The location of the time zone that the schedule operates in. Subscriptions runs on Coordinated Universal Time (UTC) time and conforms to [**RFC 3339**](https://www.rfc-editor.org/rfc/rfc3339).\n */\n location: string\n job: ScheduleJob\n}\n\nexport type ScheduleUpdateAttributes = {\n external_ref?: ExternalRefUpdate\n /**\n * The name of the schedule.\n */\n name?: string | null\n /**\n * A cron-style specification of when the jobs should be created.\n */\n specification?: string\n /**\n * The location of the time zone that the schedule operates in.\n */\n location?: string\n job?: ScheduleJob\n}\n\nexport type ScheduleJob = {\n job_type: ScheduleJobType\n}\n\nexport type ScheduleUpdate = {\n id: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleUpdateAttributes\n}\n\n/**\n * Configuration of the lead time to generate an invoice ahead of time in a pro-forma state\n */\nexport type LeadTime = {\n /**\n * The unit of time that lead time is measured in.\n */\n type: \"day\" | \"week\"\n /**\n * The lead time to generate an invoice ahead of time in a pro-forma state\n */\n time: number\n}\n\n/**\n * Configuration of the lead time to generate an invoice ahead of time in a pro-forma state\n */\nexport type NullableLeadTime = {\n /**\n * The unit of time that lead time is measured in.\n */\n type: \"day\" | \"week\"\n /**\n * The lead time to generate an invoice ahead of time in a pro-forma state\n */\n time: number\n} | null\n\nexport type NotificationSchedule = {\n /**\n * The name of the schedule.\n */\n name: string\n /**\n * The unit of time that the schedule is measured in.\n */\n unit: \"day\" | \"week\" | \"month\"\n /**\n * The number of units between each notification.\n */\n amount: number\n}\n\nexport type SubscriptionsTimestamps = {\n /**\n * The date and time a resource was updated.\n */\n updated_at: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\n/**\n * The subscription resource that is related.\n */\nexport type SubscriptionsSingleRelationship = {\n data?: RelationshipData\n links?: RelationshipLinks\n}\n\nexport type SubscriptionsErrorResponse = {\n errors: Array<SubscriptionsError>\n}\n\nexport type SubscriptionsError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\n/**\n * The unique identifier.\n */\nexport type SubscriptionsUuid = string\n\nexport type StockType = \"stock\"\n\nexport type StockTransactionType = \"stock-transaction\"\n\nexport type MultipleProducts = {\n type?: \"stock\"\n /**\n * The unique identifier of the product.\n */\n id: string\n}\n\nexport type TransactionResponseAttributes = {\n /**\n * The type of action performed by this transaction.\n *\n * - **increment** - use this when you want to make products available for purchase, for example, when you have received stock from a supplier.\n *\n * - **decrement** - Use this when you want to remove stock from product inventory.\n *\n * - **allocate** - Use this when you want to allocate stock, normally to a reseller who sells on the stock.\n *\n * - **deallocate** - Use this when you want to deallocate any previously allocated stock.\n *\n */\n action: \"increment\" | \"decrement\" | \"allocate\" | \"deallocate\"\n product_id: InventoriesUuid\n /**\n * The amount of stock affected by the stock transaction.\n */\n quantity: number\n /**\n * The slug of the location that the transaction should act on.\n */\n location?: string\n}\n\nexport type StockCreate = {\n id?: InventoriesUuid\n type: StockType\n attributes: StockCreateAttributes\n}\n\nexport type StockUpdateRequest = {\n id: InventoriesUuid\n type: StockType\n attributes: StockUpdateAttributes\n}\n\nexport type StockUpdateAttributes = {\n locations?: NullableLocations\n}\n\nexport type NullableLocation = {\n available: number\n} | null\n\nexport type NullableLocations = {\n [key: string]: NullableLocation\n}\n\nexport type StockCreateAttributes = {\n available?: number\n locations?: {\n [key: string]: {\n available: number\n }\n }\n}\n\nexport type StockResponse = {\n id: InventoriesUuid\n type: StockType\n attributes: StockResponseAttributes\n meta: StockMeta\n}\n\nexport type StockResponseAttributes = {\n available: number\n allocated: number\n total: number\n locations?: StockLocations\n}\n\nexport type StockLocations = {\n [key: string]: {\n available: number\n allocated: number\n total: number\n }\n}\n\nexport type TransactionCreate = {\n type: StockTransactionType\n attributes: TransactionCreateAttributes\n}\n\nexport type TransactionCreateAttributes = {\n product_id?: InventoriesUuid\n /**\n * The type of action being performed by this transaction.\n *\n * - **increment** - use this when you want to make products available for purchase, for example, when you have received stock from a supplier.\n *\n * - **decrement** - Use this when you want to remove stock from product inventory.\n *\n * - **allocate** - Use this when you want to allocate stock, normally to a reseller who sells on the stock.\n *\n * - **deallocate** - Use this when you want to deallocate any previously allocated stock.\n *\n * - **set** - Use this when you want to set total stock to a specific value.\n *\n */\n action: \"increment\" | \"decrement\" | \"allocate\" | \"deallocate\" | \"set\"\n /**\n * The amount of stock affected by the stock transaction.\n */\n quantity: number\n /**\n * The slug of the location that the transaction should act on.\n */\n location?: string\n}\n\nexport type Location = {\n id: InventoriesUuid\n type: InventoryLocationType\n attributes: LocationAttributes\n meta?: Meta\n}\n\nexport type LocationAttributes = {\n name: string\n external_ref?: string\n slug: string\n description?: string\n address?: Array<string>\n geolocation?: GeolocationDetails\n}\n\nexport type LocationUpdateAttributes = {\n name?: string\n external_ref?: string | null\n slug?: string\n description?: string | null\n address?: Array<string | null> | null\n geolocation?: GeolocationDetails\n}\n\n/**\n * The longitude and latitude of a location.\n */\nexport type GeolocationDetails = {\n lat: number\n lon: number\n} | null\n\nexport type LocationRequest = {\n type?: InventoryLocationType\n attributes: LocationAttributes\n}\n\nexport type LocationUpdateRequest = {\n id: InventoriesUuid\n type: InventoryLocationType\n attributes: LocationUpdateAttributes\n}\n\nexport type InventoryLocationType = \"inventory_location\"\n\nexport type StockMeta = {\n stock_id: InventoriesUuid\n timestamps: InventoriesTimestamps\n}\n\nexport type Meta = {\n timestamps: InventoriesTimestamps\n}\n\nexport type InventoriesImportType = \"inventories_import\"\n\nexport type InventoriesImportError = {\n id: InventoriesUuid\n type: InventoriesImportErrorType\n meta: InventoriesImportErrorMeta\n}\n\nexport type InventoriesImportErrorType = \"inventories_import_error\"\n\nexport type InventoriesImportErrorMeta = {\n timestamps: InventoriesTimestamps\n error: string\n field: string\n /**\n * The line in the imported JSONL file at which the validation error occurred. Starts from 1.\n */\n line_number: number\n external_ref?: ExternalRef\n}\n\nexport type InventoriesTransactionResponse = {\n id: InventoriesUuid\n type: StockTransactionType\n attributes: TransactionResponseAttributes\n meta?: Meta\n}\n\n/**\n * The unique identifier.\n */\nexport type InventoriesUuid = string\n\nexport type InventoriesTimestamps = {\n /**\n * The date and time a resource was updated.\n */\n updated_at?: string\n /**\n * The date and time a resource was created.\n */\n created_at: string\n}\n\nexport type InventoriesErrorResponse = {\n errors: Array<InventoriesError>\n}\n\nexport type InventoriesError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type InventoriesImport = {\n id: InventoriesUuid\n type: InventoriesImportType\n attributes: InventoriesImportAttributes\n meta: InventoriesImportMeta\n}\n\nexport type InventoriesImportAttributes = {\n external_ref?: ExternalRef\n /**\n * The status of job.\n * - **pending** - Commerce has received the request but is currently busy processing other requests.\n * - **started** - Commerce has started processing the job.\n * - **success** - The job has successfully completed.\n * - **failed** - The job has failed.\n *\n */\n status: \"pending\" | \"started\" | \"success\" | \"failed\"\n}\n\nexport type InventoriesImportMeta = {\n timestamps: InventoriesJobTimestamps\n records: InventoriesImportRecords\n}\n\n/**\n * You can track the number of records imported to ensure the completeness, accuracy and integrity of the import. Uploaded shows the number of records ready to be imported. However, this does not mean they are valid objects, only that they have the correct type and their JSON format is properly formatted. Imported shows the number of records that have been both validated and successfully added.\n */\nexport type InventoriesImportRecords = {\n uploaded: {\n /**\n * The total number of product transactions uploaded.\n */\n stock: number\n }\n imported: {\n /**\n * The total number of product transactions uploaded.\n */\n stock: number\n }\n}\n\nexport type InventoriesJobTimestamps = InventoriesTimestamps & {\n /**\n * The date and time a job is started.\n */\n started_at?: string\n /**\n * The date and time a job finished.\n */\n finished_at?: string\n}\n\nexport type AccessTokenRequest = {\n /**\n * The grant type, choices are `client_credentials` or `implicit`\n */\n grant_type: string\n /**\n * Your `client_id`\n */\n client_id: string\n /**\n * Your `client_secret`. Only required for client credentials.\n */\n client_secret?: string\n}\n\nexport type AccessTokenResponse = {\n /**\n * The access token you use to authenticate requests to the API.\n */\n access_token?: string\n /**\n * Right now this is only `Bearer`.\n */\n token_type?: string\n /**\n * The type of token requested. This can be a `client_credentials` or `implicit`.\n */\n identifier?: string\n /**\n * The duration in seconds after which the token expires.\n */\n expires_in?: number\n /**\n * The epoch time that this token expires at.\n */\n expires?: number\n}\n\nexport type ErrorResponse2 = {\n errors: Array<Error2>\n}\n\nexport type Error2 = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type PaginationPage = {\n /**\n * The maximum number of records per page.\n */\n limit?: number\n /**\n * The current offset by number of records.\n */\n offset?: number\n /**\n * The current page number.\n */\n current?: number\n /**\n * The total number of pages.\n */\n total?: number\n}\n\nexport type PaginationResults = {\n /**\n * The total number of results.\n */\n total?: number\n /**\n * The method used to calculate the total. `exact` means the precise count is known, `lower_bound` means the count is at least this value, `observed` means the count is estimated from observations.\n */\n total_method?: \"exact\" | \"lower_bound\" | \"observed\"\n}\n\nexport type PaginationMeta = {\n page?: PaginationPage\n results?: PaginationResults\n}\n\nexport type PaginationLinks = {\n /**\n * The URL to the current page.\n */\n current?: string\n /**\n * The URL to the first page.\n */\n first?: string\n /**\n * The URL to the last page. May be null if the total is unknown.\n */\n last?: string | null\n /**\n * The URL to the next page. Null if on the last page.\n */\n next?: string | null\n /**\n * The URL to the previous page. Null if on the first page.\n */\n prev?: string | null\n}\n\nexport type Address = {\n /**\n * Specifies the type of object. Set this value to `address`.\n */\n type?: \"address\"\n /**\n * The first name of the recipient on this address.\n */\n first_name?: string\n /**\n * The last name of the recipient on this address.\n */\n last_name?: string\n /**\n * The name for the address saved, such as `home`, `work` or `wife’s office`.\n */\n name?: string\n /**\n * A phone number for this address.\n */\n phone_number?: string\n /**\n * Any delivery instructions for this address.\n */\n instructions?: string\n /**\n * The company name at this address.\n */\n company_name?: string\n /**\n * The first portion of the address, usually the street address.\n */\n line_1?: string\n /**\n * The second portion of the address, usually an apartment or unit number.\n */\n line_2?: string\n /**\n * The city for this address.\n */\n city?: string\n /**\n * The county for this address.\n */\n county?: string\n /**\n * The state, province, territory, etc. for this address.\n */\n region?: string\n /**\n * The ZIP Code, Postcode, or other postal reference string for this delivery address.\n */\n postcode?: string\n /**\n * A two digit code for the country this address is in, expressed as per the ISO 3166-2 standard.\n */\n country?: string\n}\n\nexport type AddressResponse = Address & {\n /**\n * The unique identifier for an Address.\n */\n id?: string\n meta?: AccountAddressesMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountAddressResponse = AddressResponse & {\n relationships?: {\n account?: {\n /**\n * The ID of the account.\n */\n id?: string\n /**\n * The type of object being returned.\n */\n type?: string\n }\n }\n}\n\nexport type AccountAddressesMetaTimestamps = {\n timestamps?: {\n /**\n * The date the address is created.\n */\n created_at?: string\n /**\n * The date the address is updated.\n */\n updated_at?: string\n }\n}\n\nexport type AccountAddressesError = {\n /**\n * The HTTP response code of the error.\n */\n status?: number\n /**\n * A brief summary of the error.\n */\n title?: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Optional field indicating the source of the error.\n */\n source?: string\n}\n\nexport type AccountAddressesErrorResponse = {\n errors: Array<AccountAddressesError>\n}\n\nexport type Account = {\n /**\n * Specifies the type of object. Set this value to `account`.\n */\n type: \"account\"\n /**\n * Specifies the name of the account.\n */\n name: string\n /**\n * Specifies the legal name of the account.\n */\n legal_name?: string | null\n /**\n * Specifies the registration ID. If specified, this field is checked for uniqueness.\n */\n registration_id?: string | null\n /**\n * The unique attribute associated with the account. For example, this could be an external reference from a separate company system. The maximum length is 2048 characters. Default is `null`.\n */\n external_ref?: string | null\n}\n\nexport type ReadOnlyParentId = {\n /**\n * Specifies the ID of the parent account.\n */\n readonly parent_id?: string | null\n}\n\n/**\n * The unique identifier.\n */\nexport type Uuid = string\n\nexport type AccountResponse = Account &\n ReadOnlyParentId & {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n /**\n * Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.\n */\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n /**\n * Tags associated with the account.\n */\n account_tags?: {\n data?: Array<{\n /**\n * The unique identifier for an Account Tag.\n */\n id?: Uuid\n type?: \"account_tag\"\n }>\n }\n ancestors?: Array<{\n data?: {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n type?: \"account\"\n }\n }>\n parent?: {\n data?: {\n type?: \"account\"\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n }\n }\n }\n }\n\nexport type MetaListPage = {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100.\n */\n limit?: number\n /**\n * The current page.\n */\n current?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based.\n */\n offset?: number\n /**\n * The total page count.\n */\n total?: number\n}\n\nexport type MetaListResults = {\n /**\n * The total number of results after applying filters, if any, or all results.\n */\n total?: number\n}\n\nexport type MetaList = {\n page?: MetaListPage\n results?: MetaListResults\n}\n\nexport type WritableParentId = {\n /**\n * Specifies the ID of the parent account, this field cannot be changed after creation.\n */\n parent_id?: string | null\n}\n\nexport type AccountTagsRelationshipIdentifier = {\n /**\n * The unique identifier for the related Account Tag.\n */\n id?: string\n /**\n * Specifies the type of the resource object.\n */\n type?: \"account_tag\"\n}\n\nexport type AccountTagsRelationshipResponse = {\n data?: Array<AccountTagsRelationshipIdentifier>\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AddAccountTagsOnAccount = {\n data?: Array<AccountTagsRelationshipIdentifier>\n}\n\nexport type RemoveAccountTagsOnAccount = {\n data?: Array<AccountTagsRelationshipIdentifier>\n}\n\nexport type AccountMember = {\n /**\n * The unique identifier for the account member.\n */\n id?: string\n /**\n * The type of the object that is returned.\n */\n type?: \"account_member\"\n /**\n * The name of the account member.\n */\n name?: string\n /**\n * The given name of the account member. This field is optional and not computed or extracted from the name field.\n */\n given_name?: string | null\n /**\n * The middle name of the account member. This field is optional and not computed or extracted from the name field.\n */\n middle_name?: string | null\n /**\n * The family name of the account member. This field is optional and not computed or extracted from the name field.\n */\n family_name?: string | null\n /**\n * The email address of the account member.\n */\n email?: string\n}\n\nexport type AccountMemberResponse = AccountMember & {\n meta?: AccountManagementMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembershipResponse = {\n /**\n * Represents the unique identifier for the account membership.\n */\n id?: string\n /**\n * Represents the type of the object returned.\n */\n type?: \"account_membership\"\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n account_member?: {\n data?: {\n /**\n * Specifies the ID of the account member.\n */\n id?: string\n /**\n * Specifies the type of the account member.\n */\n type?: \"account_member\"\n }\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembership = {\n /**\n * Specifies the unique identifier of the account member that the membership is associated with.\n */\n account_member_id?: string\n /**\n * Specifies the type of the object. Set this value to `account_membership`.\n */\n type?: \"account_membership\"\n}\n\nexport type AccountMembershipResponseUsingAccountMemberId = {\n /**\n * Represents the unique identifier for the account membership.\n */\n id?: string\n /**\n * Represents the type of the object returned.\n */\n type?: \"account_membership\"\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n account?: {\n data?: {\n /**\n * Specifies the ID of the account.\n */\n id?: string\n /**\n * Specifies the type of the Account.\n */\n type?: \"account\"\n }\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountMembershipSettings = {\n data?: {\n /**\n * Specifies the type of object. Set this value to `account_membership_setting`.\n */\n type?: \"account_membership_setting\"\n /**\n * The number of accounts an account member can be associated with. You can set this value to any number up to 10,000.\n */\n membership_limit?: number\n }\n}\n\nexport type AccountAuthenticationSettings = {\n /**\n * Specifies the type of object. Set this value to `account_authentication_settings`.\n */\n type?: \"account_authentication_settings\"\n /**\n * Set to `true` to enable self signup.\n */\n enable_self_signup?: boolean\n /**\n * This will automatically create an account for each new account member, using the account member’s name as the account name.\n */\n auto_create_account_for_account_members?: boolean\n /**\n * Whether a user with an [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens) can update their own account member details. By default, this is `disabled`. Set to `update_only` if you want the user to be able to update their own account member details (e.g., name, email, and if applicable their username and password). The user can update their own account member details by updating their [User Authentication Info](/docs/authentication/single-sign-on/user-authentication-info-api/update-a-user-authentication-info) using the `account_member_id` retrieved from the `meta` in the response of [Generating an Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens) as the `id` and find the authentication credentials to update by calling the [Get All User Authentication Password Profile Info](/docs/authentication/single-sign-on/user-authentication-password-profiles-api/get-all-user-authentication-password-profile-info) endpoint.\n */\n account_member_self_management?: \"disabled\" | \"update_only\"\n /**\n * The expiry time for Account Management Authentication Token in seconds. If you want to implement idle timout for you application, see [Implementing Idle Timeout](/guides/How-To/Accounts/implement-idle-timeout)\n */\n account_management_authentication_token_timeout_secs?: number\n}\n\nexport type AccountAuthenticationSettingsResponse = {\n data?: AccountAuthenticationSettings & {\n id?: Uuid\n relationships?: {\n authentication_realm?: {\n data?: {\n /**\n * The ID of the authentication realm entity.\n */\n id?: string\n /**\n * The type of the authentication realm entity.\n */\n type?: \"authentication_realm\"\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n }\n }\n meta?: {\n /**\n * The client ID to be used in Single Sign On authentication flows for accounts.\n */\n client_id?: string\n }\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountManagementAuthenticationToken = {\n /**\n * Specifies the type of the object. You must use `account_management_authentication_token`.\n */\n type?: \"account_management_authentication_token\"\n}\n\nexport type OpenIdConnectRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `oidc`.\n */\n authentication_mechanism: \"oidc\"\n /**\n * Specifies the code returned from the OpenID Connect Provider authentication.\n */\n oauth_authorization_code: string\n /**\n * Specifies the URL of the front-end that handles the callback of the token.\n */\n oauth_redirect_uri: string\n /**\n * Specifies the Proof Key for Code Exchange (PKCE) code verifier corresponding to the code challenge supplied to the authorization endpoint. For more information about code verifier and challenge, see Generating a [Code Verifier and Challenge](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/get-single-sign-on-customer-token#generate-proof-key-for-code-exchange-pkce-parameters).\n */\n oauth_code_verifier: string\n}\n\nexport type PasswordRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `password`.\n */\n authentication_mechanism: \"password\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The password.\n */\n password: string\n}\n\nexport type PasswordlessRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `passwordless`.\n */\n authentication_mechanism: \"passwordless\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The one-time password token.\n */\n one_time_password_token: string\n}\n\nexport type SelfSignupRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `self_signup`.\n */\n authentication_mechanism: \"self_signup\"\n /**\n * The password profile ID. For more information, see [password profiles page](https://elasticpath.dev/docs/commerce-cloud/authentication/single-sign-on/password-profiles-api/overview).\n */\n password_profile_id: string\n /**\n * The username.\n */\n username: string\n /**\n * The password.\n */\n password: string\n /**\n * The name.\n */\n name: string\n /**\n * The given name for the user.\n */\n given_name?: string | null\n /**\n * The middle name for the user.\n */\n middle_name?: string | null\n /**\n * The family name for the user.\n */\n family_name?: string | null\n /**\n * The email.\n */\n email: string\n}\n\nexport type SwitchingAccountRequest = AccountManagementAuthenticationToken & {\n /**\n * Species the authentication mechanism. You must use `account_management_authentication_token`.\n */\n authentication_mechanism: \"account_management_authentication_token\"\n}\n\nexport type AccountManagementAuthenticationTokenResponse = {\n /**\n * Specifies the type of the object.\n */\n type?: \"account_management_authentication_token\"\n /**\n * The name of the account that this token grants access to.\n */\n account_name?: string\n /**\n * The ID of the account that this token grants access to.\n */\n account_id?: string\n /**\n * The JWT authentication token that the shopper uses as the `EP-Account-Management-Authentication-Token` header [in all other endpoints](https://elasticpath.dev/docs/commerce-cloud/authentication/tokens/account-management-authentication-token).\n */\n token?: string\n /**\n * The epoch time that this token expires at. The time is set to 24 hours after the token is generated.\n */\n expires?: string\n}\n\nexport type MetaAccountMemberId = {\n /**\n * The unique identifier for the Account Member that authenticated. This is useful if `account_member_self_management` is enabled in [Account Authentication Settings](/docs/api/accounts/get-v-2-settings-account-authentication), so that the user can update details for their account.\n */\n account_member_id?: string\n}\n\nexport type AccountTag = {\n /**\n * Specifies the type of the resource object, use `account_tag` for Account Tags.\n */\n type?: \"account_tag\"\n /**\n * Specifies the name of the account tag.\n */\n name?: string\n /**\n * Describes the account tag.\n */\n description?: string\n}\n\nexport type AccountTagResponse = AccountTag & {\n /**\n * The unique identifier for the account tag.\n */\n id?: Uuid\n /**\n * Additional information for this resource.\n */\n meta?: AccountManagementMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type AccountManagementMetaTimestamps = {\n timestamps?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n }\n}\n\nexport type AccountManagementError = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type AccountManagementErrorResponse = {\n errors: Array<AccountManagementError>\n}\n\nexport type AuthenticationRealm = {\n /**\n * Specifies the type of object. Set this value to `authentication-realm`.\n */\n type: \"authentication-realm\"\n /**\n * Specifies the name of the authentication realm.\n */\n name: string\n /**\n * The values permitted for this parameter are, `allowed` or `api_only`. In Single Sign On (SSO) each user in the Identity Provider (IdP) has a unique identifier, but different IdPs might differ in whether distinct users can share the same email address. For the `allowed` setting, when a user with a new unique identifier signs in through SSO for the first time, the system creates a new user. However, for the `api_only` setting, the system assigns the new unique identifier to the existing user in the system, in this case both the old and new unique identifier from the IdP points to the same user in Commerce. The `api_only` setting is recommended only when all configured identity providers treat e-mail address as a unique identifier for the user, otherwise a user might get access to another user’s account and data. Thus the `api_only` value can simplify administration of users.\n */\n duplicate_email_policy?: \"allowed\" | \"disallowed\" | \"api_only\"\n /**\n * An array of Storefront URIs that can start Single Sign On authentication. These URIs must follow the rules for [redirection endpoints in OAuth 2.0.](https://tools.ietf.org/html/rfc6749#section-3.1.2) All URIs must start with https:// except for http://localhost.\n */\n redirect_uris?: Array<string>\n /**\n * Specifies the relationships for this authentication realm.\n */\n relationships?: {\n origin?: {\n data?: {\n /**\n * The ID of the origin entity.\n */\n id?: string\n /**\n * The type of the origin entity.\n */\n type?:\n | \"customer-authentication-settings\"\n | \"merchant-realm-mappings\"\n | \"account_authentication_settings\"\n }\n }\n }\n}\n\nexport type AuthenticationRealmResponse = AuthenticationRealm & {\n /**\n * The unique identifier for an Authentication Realm.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this realm.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type OidcProfile = {\n /**\n * Specifies the type of object. Set this value to `oidc-profile`.\n */\n type: \"oidc-profile\"\n /**\n * Specifies the name of the OIDC profile.\n */\n name: string\n /**\n * The OIDC discovery URL.\n */\n discovery_url?: string\n /**\n * The client ID for the OpenID Provider.\n */\n client_id?: string\n /**\n * The client secret for the OpenID Provider.\n */\n client_secret?: string\n}\n\nexport type OidcProfileResponse = OidcProfile & {\n /**\n * The unique identifier for an OIDC Profile.\n */\n id?: AuthenticationRealmsUuid\n meta?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n /**\n * The OIDC issuer URL.\n */\n issuer?: string\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n /**\n * The authorization endpoint URL.\n */\n \"authorization-endpoint\"?: string\n /**\n * The callback endpoint URL.\n */\n \"callback-endpoint\"?: string\n /**\n * The client discovery URL.\n */\n \"client-discovery-url\"?: string\n }\n}\n\nexport type OidcProfileLinks = AuthenticationRealmsSelfLink & {\n /**\n * The link that front-end applications should use to authenticate the OpenID Connect profile. The front-end application is responsible for appending all of the [required parameters](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) to the request. The endpoint also forwards some optional parameters, `display`, `prompt` and `ui_locales` to the configured Identity Provider. These parameters allow you to control the behavior of the authentication process on the Identity Provider. Additionally the query parameter `ep_report_callback_replay_error` can be set to `true` in which case if the user revisits the `callback-endpoint` multiple times (e.g., if they hit their Back button), we will redirect the user back to the front end with an [Authentication error response](https://openid.net/specs/openid-connect-core-1_0.html#AuthError) of `callback_replay`.\n */\n \"authorization-endpoint\"?: string\n /**\n * The link that should be supplied as the callback URL to the upstream authentication provider.\n */\n \"callback-endpoint\"?: string\n /**\n * The link to the [OpenID Connect Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) document for this provider, see [here](/docs/api/single-sign-on/get-oidc-idp-stores-store-id-authentication-realms-realm-id-well-known-openid-configuration).\n */\n \"client-discovery-url\"?: string\n}\n\nexport type PasswordProfile = {\n /**\n * Specifies the type of object. Set this value to `password_profile`.\n */\n type: \"password_profile\"\n /**\n * Specifies the name of the password profile.\n */\n name: string\n /**\n * The format the `username` field must be in when creating or updating a [User Authentication Password Profile Info](/docs/api/single-sign-on/post-v-2-authentication-realms-realm-id-user-authentication-info-user-auth-info-id-user-authentication-password-profile-info). You can change the `username_format` setting, however, the changes apply only to the users created or updated after changing this setting. The new setting does not change the `username_format` for existing users.\n */\n username_format?: \"email\" | \"any\"\n /**\n * This enables one time password token requests and events for authentication. This feature is disabled by default.\n */\n enable_one_time_password_token?: boolean\n}\n\nexport type PasswordProfileResponse = PasswordProfile & {\n /**\n * The unique identifier for a Password Profile.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this password profile.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type OneTimePasswordTokenRequestInput = {\n type: \"one_time_password_token_request\"\n /**\n * An information field indicating why the user submitted this request. Your [integration](/docs/api/integrations/integrations-introduction) can inspect this field and can change subsequent processing.\n */\n purpose: \"reset_password\" | \"passwordless_authentication\"\n /**\n * The username for the token request.\n */\n username: string\n}\n\nexport type OneTimePasswordTokenRequestResponse =\n OneTimePasswordTokenRequestInput & {\n /**\n * The unique identifier for the one-time password token request.\n */\n id?: string\n /**\n * The generated one-time password token.\n */\n token?: string\n /**\n * The expiration time of the token.\n */\n expires_at?: string\n meta?: AuthenticationRealmsMetaTimestamps\n }\n\nexport type UserAuthenticationInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_info`.\n */\n type: \"user_authentication_info\"\n /**\n * Specifies the name of the user.\n */\n name: string\n /**\n * Specifies the given name of the user.\n */\n given_name?: string | null\n /**\n * Specifies the family name of the user.\n */\n family_name?: string | null\n /**\n * Specifies the given name of the user.\n */\n middle_name?: string | null\n /**\n * Specifies the email address of the user.\n */\n email: string\n}\n\nexport type UserAuthenticationInfoResponse = UserAuthenticationInfo & {\n /**\n * The unique identifier for User Authentication Info.\n */\n id?: AuthenticationRealmsUuid\n meta?: {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The last updated date of this `user-authentication-info` object. This value also changes if subresources such as the `user-authentication-oidc-profile-info`, or `user-authentication-password-profile-info` change.The last updated date of this `user-authentication-info` object. This value also changes if subresources such as the `user-authentication-oidc-profile-info`, or `user-authentication-password-profile-info` change.\n */\n updated_at?: string\n /**\n * The creation status of the user authentication info.\n */\n creation_status?: \"COMPLETE\" | \"IN_PROGRESS\"\n }\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n}\n\nexport type UserAuthenticationPasswordProfileInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_password_profile_info`.\n */\n type: \"user_authentication_password_profile_info\"\n /**\n * The username used to authenticate.\n */\n username: string\n /**\n * The ID of the associated password profile.\n */\n password_profile_id: string\n}\n\nexport type UserAuthenticationPasswordProfileInfoResponse =\n UserAuthenticationPasswordProfileInfo & {\n /**\n * The unique identifier for User Authentication Password Profile Info.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this resource.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n\nexport type UserAuthenticationPasswordProfileInfoInput =\n UserAuthenticationPasswordProfileInfo & {\n /**\n * The password used to authenticate.\n */\n password: string\n }\n\nexport type UserAuthenticationOidcProfileInfo = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_oidc_profile_info`.\n */\n type: \"user_authentication_oidc_profile_info\"\n /**\n * The ID of the associated [OIDC profile](/docs/authentication/single-sign-on/openid-connect-profiles-api/openid-connect-profiles-api-overview).\n */\n oidc_profile_id: string\n /**\n * The identifier within the issuer for the `user-authentication-info` object. For more information, see the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#IDToken) section.\n */\n subject?: string\n /**\n * The identifier for the issuer of the ID Token. For more information, see the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#IDToken) section.\n */\n issuer?: string\n}\n\nexport type UserAuthenticationOidcProfileInfoResponse =\n UserAuthenticationOidcProfileInfo & {\n /**\n * The unique identifier for User Authentication OIDC Profile Info.\n */\n id?: AuthenticationRealmsUuid\n /**\n * Additional information for this resource.\n */\n meta?: AuthenticationRealmsMetaTimestamps\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n\n/**\n * The unique identifier.\n */\nexport type AuthenticationRealmsUuid = string\n\nexport type AuthenticationRealmsMetaTimestamps = {\n /**\n * The date the resource is created.\n */\n created_at?: string\n /**\n * The date the resource is updated.\n */\n updated_at?: string\n}\n\nexport type AuthenticationRealmsError = {\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n}\n\nexport type AuthenticationRealmsSelfLink = {\n /**\n * A URL to the specific resource.\n */\n self?: string\n}\n\nexport type AuthenticationRealmsErrorResponse = {\n errors: Array<AuthenticationRealmsError>\n links?: AuthenticationRealmsSelfLink\n}\n\nexport type AuthenticationRealmsPaginationLinks = {\n /**\n * The current page of data.\n */\n current?: string\n /**\n * The first page of data.\n */\n first?: string | null\n /**\n * The last page of data.\n */\n last?: string | null\n /**\n * The next page of data.\n */\n next?: string | null\n /**\n * The previous page of data.\n */\n prev?: string | null\n /**\n * The current resource URL.\n */\n self?: string\n}\n\nexport type AuthenticationRealmsPaginationMeta = {\n page?: {\n /**\n * The current page number.\n */\n current?: number\n /**\n * The number of items per page.\n */\n limit?: number\n /**\n * The number of items to offset by.\n */\n offset?: number\n /**\n * The total number of pages.\n */\n total?: number\n }\n results?: {\n /**\n * The total number of results after applying filters, if any, or all results.\n */\n total?: number\n }\n}\n\nexport type UserAuthenticationPasswordProfileInfoUpdateInput = {\n /**\n * The unique identifier for User Authentication Password Profile Info. Must match the id in the path.\n */\n id: string\n /**\n * Specifies the type of object. Set this value to `user_authentication_password_profile_info`.\n */\n type: \"user_authentication_password_profile_info\"\n /**\n * The username used to authenticate.\n */\n username?: string\n /**\n * The password used to authenticate.\n */\n password?: string\n}\n\nexport type UserAuthenticationInfoUpdateInput = {\n /**\n * Specifies the type of object. Set this value to `user_authentication_info`.\n */\n type: \"user_authentication_info\"\n /**\n * Specifies the name of the user.\n */\n name?: string\n /**\n * Specifies the given name of the user.\n */\n given_name?: string | null\n /**\n * Specifies the family name of the user.\n */\n family_name?: string | null\n /**\n * Specifies the middle name of the user.\n */\n middle_name?: string | null\n /**\n * Specifies the email address of the user.\n */\n email?: string\n}\n\nexport type SelfLink2 = {\n /**\n * Specifies the URL of this currency.\n */\n self?: string\n}\n\nexport type Timestamps = {\n /**\n * Indicates the creation date of this currency.\n */\n created_at?: string\n /**\n * Indicates the updated date of this currency.\n */\n updated_at?: unknown\n}\n\nexport type ResponseMetaCurrency = {\n timestamps?: Timestamps\n /**\n * Indicates whether the owner is store or org.\n */\n owner?: string\n}\n\nexport type ResponseCurrency = {\n /**\n * The unique identifier for this currency.\n */\n id?: string\n /**\n * Represents the type represents the object being returned.\n */\n type?: string\n /**\n * Specifies the currency code. For example, YEN.\n */\n code?: string\n /**\n * Specifies the exchange rate from the default currency.\n */\n exchange_rate?: number\n /**\n * Specifies how the price currency is displayed. For example, \"£{price}\".\n */\n format?: string\n /**\n * Indicates the decimal point character.\n */\n decimal_point?: string\n /**\n * Indicates the thousand separator character.\n */\n thousand_separator?: string\n /**\n * Indicates how many decimal places the currency is formatted to.\n */\n decimal_places?: number\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default?: boolean\n /**\n * Specifies if this currency is available for products. Either `true` or `false`.\n */\n enabled?: boolean\n links?: SelfLink2\n meta?: ResponseMetaCurrency\n}\n\nexport type ResponseError = {\n errors?: Array<{\n /**\n * An application-specific error code.\n */\n code?: string\n detail?: string\n status?: number\n title?: string\n }>\n}\n\nexport type DataCreateCurrencies = {\n /**\n * Specifies the currency code. Example YEN.\n */\n code: string\n /**\n * Indicates how many decimal places the currency is formatted to.\n */\n decimal_places: number\n /**\n * Indicates the decimal point character.\n */\n decimal_point: string\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default: boolean\n /**\n * Specifies if this currency is available for products. Either `true` or `false`.\n */\n enabled: boolean\n /**\n * Specifies the exchange rate from the default currency.\n */\n exchange_rate: number\n /**\n * Specifies how the price currency is displayed. For example, \"¥{price}\".\n */\n format: string\n /**\n * Indicates the thousand separator character.\n */\n thousand_separator: string\n /**\n * Represents the type represents the object being returned.\n */\n type: string\n}\n\n/**\n * Request.CreateCurrencies\n */\nexport type RequestCreateCurrencies = {\n data?: DataCreateCurrencies\n}\n\n/**\n * Data.UpdateCurrencies\n */\nexport type DataUpdateCurrencies = {\n /**\n * Specifies whether this is the default currency or not. Either `true` or `false`.\n */\n default?: boolean\n}\n\nexport type RequestUpdateCurrencies = {\n data?: DataUpdateCurrencies\n}\n\nexport type File = {\n /**\n * The unique identifier for this file.\n */\n id?: FilesUuid\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The name of the file.\n */\n file_name?: string\n /**\n * The mime type of the file.\n */\n mime_type?: string\n /**\n * The size of the file. Required when uploading files.\n */\n file_size?: number\n /**\n * DEPRECATED Whether the file public or not. Required when uploading files.\n */\n public?: boolean\n meta?: FileMeta\n links?: FilesLinks\n link?: FileLink\n}\n\nexport type FileMeta = {\n /**\n * The date and time the file was created.\n */\n timestamps?: {\n /**\n * The date and time the file was created.\n */\n created_at?: string\n }\n /**\n * The file dimensions.\n */\n dimensions?: {\n /**\n * The width of the file.\n */\n width?: number\n /**\n * The height of the file.\n */\n height?: number\n }\n}\n\nexport type ResultsMeta = {\n /**\n * Contains the results for the entire collection.\n */\n page?: {\n /**\n * The maximum number of records for all pages.\n */\n limit?: number\n /**\n * The current offset by number of pages.\n */\n offset?: number\n /**\n * The current number of pages.\n */\n current?: number\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n /**\n * Contains the results for the entire collection.\n */\n results?: {\n /**\n * The total number of records for the entire collection.\n */\n total?: number\n }\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type ResultsLinks = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string | null\n /**\n * The current page.\n */\n current?: string | null\n /**\n * Always the first page.\n */\n first?: string | null\n /**\n * This is `null` if there is only one page.\n */\n last?: string | null\n /**\n * The previous page. This is `null` if on the first page.\n */\n prev?: string | null\n /**\n * The next page. This is `null` if there is no next page.\n */\n next?: string | null\n}\n\n/**\n * The publicly available URL for this file.\n */\nexport type FileLink = {\n /**\n * The publicly available URL for this file.\n */\n href?: string\n}\n\nexport type FilesErrorResponse = {\n errors: Array<FilesError>\n}\n\n/**\n * Links are used to allow you to move between requests.\n */\nexport type FilesLinks = {\n /**\n * Single entities use a self parameter with a link to that specific resource.\n */\n self?: string\n}\n\nexport type FilesUuid = string\n\nexport type FilesError = {\n /**\n * The HTTP response code of the error.\n */\n status: number\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Internal request ID.\n */\n request_id?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type MoveSearchRuleRequest = {\n data: {\n type: \"catalog_search_rule\"\n attributes: {\n placement: \"before\" | \"after\" | \"first\" | \"last\"\n target_rule_id?: string\n }\n }\n}\n\nexport type ReindexTenantReleasesJobRequest = {\n /**\n * The primary data for the request.\n */\n data?: {\n /**\n * Reindex all releases for tenant whether the release index is out of sync or not.\n */\n force_reindex?: boolean\n }\n}\n\n/**\n * Result of the job\n */\nexport type JobMetaResult = {\n [key: string]: unknown\n}\n\nexport type JobMetaError = {\n /**\n * A string describing the error.\n */\n detail: string\n /**\n * Any additional context of the error.\n */\n context?: {\n [key: string]: unknown\n }\n}\n\n/**\n * AutocompleteResponse\n *\n * An autocomplete suggestion with query frequency information.\n */\nexport type AutocompleteResponse = {\n /**\n * A unique identifier for the autocomplete suggestion.\n */\n id?: string\n /**\n * The query text for the autocomplete suggestion.\n */\n q?: string\n /**\n * The frequency count of this query.\n */\n count?: number\n}\n\nexport type MultiSearchRequest = {\n searches: Array<SearchQuery>\n}\n\nexport type SearchQuery = {\n /**\n * Type of search operation to perform\n */\n type?: \"search\" | \"autocomplete\"\n highlight_full_fields?: string\n q?: string\n facet_by?: FacetByField\n filter_by?: FilterByField\n sort_by?: SortByField\n max_facet_values?: number\n page?: number\n per_page?: number\n}\n\nexport type MultiSearchResponse = {\n results?: Array<SearchResult>\n included?: IncludedResponse2\n}\n\nexport type SearchResponse = SearchResult & {\n included?: IncludedResponse2\n}\n\nexport type SearchResult = {\n type?: SearchResultType\n facet_counts?: Array<FacetCount>\n found?: number\n hits?: Array<Hit>\n out_of?: number\n page?: number\n request_params?: {\n [key: string]: unknown\n }\n search_cutoff?: boolean\n search_time_ms?: number\n /**\n * References to the unique search rules that matched this search result.\n */\n matched_rules?: Array<MatchedRuleReference>\n}\n\nexport type MatchedRuleReference = {\n /**\n * The unique ID of the matching search rule.\n */\n id: string\n /**\n * The unique ID of the search rule group that owns the matching rule.\n */\n rule_group_id: string\n}\n\nexport type FacetCount = {\n counts?: Array<FacetValue>\n field_name?: string\n sampled?: boolean\n stats?: {\n [key: string]: unknown\n }\n}\n\nexport type FacetValue = {\n count?: number\n highlighted?: string\n value?: string\n}\n\n/**\n * Breakdown of how the text relevance score for this hit was derived. Values are copied unchanged from the underlying search engine response.\n *\n * These are **internal ranking signals** for debugging relevance and tuning Search Profiles — not user-facing match percentages. Scores are not normalized to a 0–100 scale. Higher `score` values indicate greater relevance **within the same search result set**; scores are not comparable across different queries.\n *\n * The overall relevance integer is available as `score` (string). Catalog Search does not expose the search engine's separate top-level `text_match` field.\n *\n * **Good uses:** debugging why one product ranks above another; building custom relative metrics (e.g. `tokens_matched` vs query length); merchandising and relevance tuning.\n *\n * **Poor uses:** displaying \"match %\" to shoppers; filtering by absolute thresholds without per-query calibration; comparing scores across unrelated searches.\n *\n * How the final `score` is aggregated depends on the active Search Profile's `text_match_type`:\n * - `max_score` (default): best field score wins; weights break ties\n * - `max_weight`: highest-weighted matching field drives the score\n * - `sum_score`: weighted field scores are summed\n *\n */\nexport type TextMatchInfo = {\n /**\n * Raw text match score of the single best-performing field in the Search Profile's `query_by` list.\n * A large opaque integer — field-level, not normalized. In `max_score` mode (default), this is the strongest per-field signal driving the document score.\n *\n */\n best_field_score?: string\n /**\n * The `query_by_weights` value of the best-matching field (0–127). For example, `15` indicates the winning match came from a high-priority profile field such as `meta.search.nodes.name`.\n * Under `max_score`, weight is mainly a tie-breaker when two documents share the same field score. Under `max_weight`, it determines which field's score represents the document.\n *\n */\n best_field_weight?: number\n /**\n * Number of `query_by` fields that contained at least one query token. May differ from the number of highlighted fields — highlighting scans all queried fields for display, while scoring weights fields differently.\n *\n */\n fields_matched?: number\n /**\n * Number of query tokens not matched in this document (`max(0, total_query_tokens − tokens_matched)`). `0` means full query coverage; `1` means one token was missing (e.g. searching \"Blue Vase Ceramic\" but the document only matches \"Blue Vase\").\n * Reports token coverage for this specific hit, not the global `drop_tokens_threshold` query-relaxation behaviour.\n *\n */\n num_tokens_dropped?: number\n /**\n * String form of the packed 64-bit text relevance score used to rank this hit. Equivalent to the search engine's `text_match` integer — use this field for the overall relevance value. Higher means more relevant within the current result set.\n *\n */\n score?: string\n /**\n * Number of distinct query words found in the document. Each query token is counted at most once per document, even if it appears multiple times in the text. Highlighting may show repeated occurrences; this count will not.\n *\n */\n tokens_matched?: number\n /**\n * Diagnostic signal indicating how much prefix matching or typo correction contributed to the match. `0` typically indicates an exact token match with no fuzzy or prefix-based relaxation; higher values may appear when `num_typos` or `prefix` matching was involved. Not a directly configurable parameter — treat as a tuning/debugging signal, not a display metric.\n *\n */\n typo_prefix_score?: number\n}\n\nexport type Hit = {\n /**\n * Document object - either a Product or AutocompleteResponse\n */\n document?: CatalogSearchProduct | AutocompleteResponse\n highlight?: {\n [key: string]: unknown\n }\n highlights?: Array<{\n [key: string]: unknown\n }>\n /**\n * Relevance metadata for this hit, included when the search engine returns it. Omitted when relevance metadata is unavailable (e.g. some autocomplete results).\n * Hit order in the response reflects ranking driven by these scores.\n *\n */\n text_match_info?: TextMatchInfo\n}\n\n/**\n * Type of search operation to performed\n */\nexport type SearchResultType = \"search\" | \"autocomplete\"\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type IncludedResponse2 = {\n [key: string]: Array<{\n [key: string]: unknown\n }>\n}\n\nexport type IndexableFieldsCreateRequest = {\n data: {\n type: IndexableFieldsType\n attributes: IndexableFieldsRequestAttributes\n }\n}\n\nexport type IndexableFieldsUpdateRequest = {\n data: IndexableFieldsUpdateRequestData\n}\n\nexport type IndexableFieldsUpdateRequestData = {\n /**\n * The unique identifier of the indexable fields. Must match the ID specified in the request path.\n */\n id: string\n type: IndexableFieldsType\n attributes: IndexableFieldsRequestAttributes\n}\n\nexport type ListIndexableFieldsResponse = {\n data: Array<IndexableFields>\n}\n\nexport type IndexableFieldsResponse = {\n data: IndexableFields\n}\n\nexport type IndexableFields = {\n /**\n * A unique identifier of the indexable fields.\n */\n id: string\n type: IndexableFieldsType\n attributes: IndexableFieldsAttributes\n meta: IndexableFieldsMeta\n}\n\nexport type IndexableFieldsRequestAttributes = {\n /**\n * IndexableFields\n *\n * A collection of indexable fields\n */\n fields?: Array<IndexableFieldRequest>\n /**\n * Per-field configuration for core product fields (e.g. name, description).\n */\n core_field_overrides?: Array<CoreFieldOverride>\n /**\n * Characters to use as token separators across all the index fields, in addition to spaces and newlines. Each element must be a single character. Defaults to none set.\n * For example, take text `non-tech`. By default, it will be tokenized to `nontech`. So, search for `non tech` will not match the product. Set `token_separators: [\"-\"]`. Then it will be tokenized to `non` and `tech`. Now, search for both `non-tech` and `non tech` will match this product.\n *\n */\n token_separators?: Array<string>\n /**\n * By default, special characters are removed from fields when indexing and searching for them. Provide list of special characters that should be indexed as part of the tokens across the all index fields. Each element must be a single character. Defaults to none set.\n *\n */\n symbols_to_index?: Array<string>\n /**\n * Enables word stemming across every text field in the index, using the [Snowball stemmer](https://snowballstem.org/). Stemming reduces words to their root form when indexing and when searching, so a search for `running` also matches products containing `run`, `runs`, or `runner`.\n * Defaults to `true`, so stemming applies to all text fields unless you turn it off here. Set `stem: false` to disable stemming for the whole index.\n * This is the recommended way to configure stemming. A `stem` value set on an individual field or core field override takes precedence over this setting for that field.\n *\n */\n stem?: boolean\n}\n\nexport type IndexableFieldsAttributes = {\n /**\n * IndexableFields\n *\n * A collection of indexable fields\n */\n fields?: Array<IndexableField>\n /**\n * Per-field configuration for core product fields (e.g. name, description).\n */\n core_field_overrides?: Array<CoreFieldOverride>\n /**\n * Characters used as token separators across the entire collection.\n *\n */\n token_separators?: Array<string>\n /**\n * Characters indexed as part of tokens across the entire collection.\n *\n */\n symbols_to_index?: Array<string>\n /**\n * Whether word stemming is enabled across every text field in the index. Omitted when it has never been set, in which case the default of `true` applies. A `stem` value on an individual field or core field override takes precedence over this setting for that field.\n *\n */\n stem?: boolean\n}\n\nexport type IndexableFieldsMeta = {\n owner: ResourceOwner\n}\n\nexport type IndexableFieldRequest = {\n /**\n * The name of the field to index. Two formats are supported:\n *\n * - **Extension fields**: `extensions.products(<template_slug>).<field_name>` — indexes a field from a product extension template. The field must exist and be enabled in the flows service.\n * - **Shopper attribute fields**: `shopper_attributes.<attribute_name>` — indexes a merchant-defined shopper attribute. Always typed as `string`. The attribute name must be no longer than **64 characters** and can only contain alphanumeric characters, underscores (`_`), and hyphens (`-`).\n * - **Admin attribute fields**: `admin_attributes.<attribute_name>` — indexes a merchant-defined admin attribute. Always typed as `string`. The attribute name must be no longer than **64 characters** and can only contain alphanumeric characters, underscores (`_`), and hyphens (`-`).\n *\n */\n name: string\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language of the field's text, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) — for example ja for Japanese. Defaults to en, which also broadly supports most European languages. Omitting it is identical to setting en, including for synonym matching. Codes that are not ISO 639-1, such as en-US, are rejected with a 400.\n */\n locale?: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n * For example, take text `non-tech`. By default, it will be tokenized to `nontech`. So, search for `non tech` will not match the product. Set `token_separators: [\"-\"]`. Then it will be tokenized to `non` and `tech`. Now, search for both `non-tech` and `non tech` will match this product.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n}\n\nexport type IndexableField = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language of the field's text, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Omitted when none was configured, in which case the field is indexed as en — omitting it and setting en are identical.\n */\n locale?: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this field, overriding the index-wide value. An empty array defers to the index-wide setting.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this field, overriding the index-wide value. An empty array defers to the index-wide setting.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n}\n\nexport type CoreFieldOverride = {\n /**\n * Name of the core field to configure. Must be one of the supported core fields.\n *\n */\n name: string\n stem?: Stem\n /**\n * Deprecated. Prefer the index-wide `token_separators`. Per-field token separators for this core field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n token_separators?: Array<string>\n /**\n * Deprecated. Prefer the index-wide `symbols_to_index`. Per-field special characters to index for this core field, overriding the index-wide value. An empty array defers to the index-wide setting. Each element must be a single character. Mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n *\n *\n * @deprecated\n */\n symbols_to_index?: Array<string>\n /**\n * When set to true, enables sorting on this core field. Only supported for specific core fields.\n *\n */\n sortable?: boolean\n /**\n * When set to true, enables faceting on this core field. A re-index is required for the change to take effect.\n *\n */\n facetable?: boolean\n}\n\n/**\n * Deprecated. Prefer the index-wide `stem` on the indexable fields resource, which applies to every text field. A per-field value still overrides it, but mixing tokenization settings across the query fields of one search profile changes how queries are matched — see the Indexable Fields guide.\n * When true, enables word stemming on this field using [Snowball stemmer](https://snowballstem.org/). Stemming reduces words to their root form at index and query time, so a search for \"running\" will also match products containing \"run\", \"runs\", or \"runner\". This improves search recall for descriptive text fields where shoppers may use different word forms than those used in product data. Only valid for string-typed fields.\n * Text fields stem by default. Set `false` to turn stemming off for this field, overriding the index-wide `stem` setting.\n *\n *\n * @deprecated\n */\nexport type Stem = boolean\n\n/**\n * Represents the type of object being returned. Always `catalog_search_indexable_fields`.\n */\nexport type IndexableFieldsType = \"catalog_search_indexable_fields\"\n\nexport type SearchableFieldsResponse = {\n /**\n * A collection of searchable fields.\n */\n data: Array<SearchableField>\n meta: ListResponseMeta\n}\n\nexport type SearchableField = {\n /**\n * A unique identifier of the field.\n */\n id: string\n type: SearchableFieldType\n attributes: SearchableFieldAttributes\n meta: SearchableFieldMeta\n}\n\nexport type SearchableFieldAttributes = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language the field's text is indexed with, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Text fields always report a locale — en unless another was configured — and this is the locale a synonym must match to expand when the field is the highest-weighted search field. Fields that are not text report no locale.\n */\n locale?: string\n}\n\nexport type SearchableFieldMeta = {\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_searchable_field`.\n */\nexport type SearchableFieldType = \"catalog_searchable_field\"\n\nexport type IndexedFieldsResponse = {\n /**\n * A collection of indexed fields.\n */\n data: Array<IndexedField>\n meta: ListResponseMeta\n}\n\nexport type IndexedField = {\n /**\n * A unique identifier of the field.\n */\n id: string\n type: IndexedFieldType\n attributes: IndexedFieldAttributes\n meta: IndexedFieldMeta\n}\n\nexport type IndexedFieldAttributes = {\n /**\n * The name of the field.\n */\n name: string\n type: FieldType\n /**\n * Whether the field can be used for full-text search as a query field in a search profile. Only text fields are searchable.\n */\n searchable: boolean\n /**\n * Whether the field can be used in filter expressions.\n */\n filterable: boolean\n /**\n * Enables faceting on the field.\n */\n facetable?: boolean\n /**\n * When set to true, the field will be sortable. Default: true for numbers, false otherwise.\n */\n sortable?: boolean\n /**\n * Language the field's text is indexed with, as an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Text fields always report a locale — en unless another was configured — and this is the locale a synonym must match to expand when the field is the highest-weighted search field. Fields that are not text report no locale.\n */\n locale?: string\n}\n\nexport type IndexedFieldMeta = {\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_indexed_field`.\n */\nexport type IndexedFieldType = \"catalog_search_indexed_field\"\n\n/**\n * The type of the field.\n */\nexport type FieldType = \"string\" | \"int32\" | \"int64\" | \"bool\" | \"float\" | \"date\"\n\nexport type SearchProfileCreateRequest = {\n data: SearchProfileCreateRequestData\n}\n\nexport type SearchProfileCreateRequestData = {\n type: SearchProfileType\n attributes: SearchProfileAttributes\n}\n\nexport type SearchProfileUpdateRequest = {\n data: SearchProfileUpdateRequestData\n}\n\nexport type SearchProfileUpdateRequestData = {\n /**\n * The unique identifier of the search profile. Must match the ID specified in the request path.\n */\n id: string\n type: SearchProfileType\n attributes: SearchProfileUpdateAttributes\n}\n\nexport type SearchProfileUpdateAttributes = {\n /**\n * The unique slug of the search profile. 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. The sentinel `SYSTEMS_DEFAULT_PROFILE` is reserved for the built-in default and cannot be used as a tenant profile slug.\n */\n slug?: string\n /**\n * The description of the search profile.\n */\n description?: string\n /**\n * A collection of search fields\n */\n fields?: Array<SearchField>\n text_match_type?: TextMatchType\n /**\n * Optional list of filter expressions to apply to search results. Multiple filters in the array are combined using OR logic (records matching filter1 || filter2 || ... filterN).\n * To combine conditions with AND logic, include multiple conditions within a single filter string (e.g., \"meta.search.categories.lvl1:=`All Products > Mens Shoes` && meta.display_price.without_tax.float_price:>100\").\n * These profile-level filters are ANDed with any filters provided in the search request via the filter_by parameter, resulting in: (profile_filter1 || profile_filter2 || ... profile_filterN) && request_filters.\n *\n */\n filters?: Array<string>\n /**\n * A collection of exclusion expressions to apply to search results. Multiple exclusions in the array are combined using OR logic (records matching exclusion1 || exclusion2 || ... exclusionN).\n */\n exclusions?: Array<string>\n boosts?: Array<SearchBoostRule>\n /**\n * Profile-level default for prefix (partial match) behavior on the last query token. When true, the last word in the query is treated as a prefix for all fields that do not have an explicit per-field prefix value. For example, a search request for \"red app\" matches \"red apple\". When false, the last word must match exactly. If omitted, default of true applies. Per-field prefix values override this setting.\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean | null\n typo_tolerance?: TypoTolerance\n synonym_settings?: SynonymSettings\n /**\n * Optional list of synonym set IDs to apply at search time. Each synonym set must exist and must have been synced to the search engine at least once. Organization-level search profiles may only reference organization-level synonym sets. Store-level search profiles may reference organization-level and same-store synonym sets. Set to an empty array to remove all synonym sets from the search profile.\n *\n */\n synonym_sets?: Array<string>\n /**\n * Optional search rule group IDs. When non-empty, the query-time rules engine runs on every search for this profile; rule actions apply only when a trigger matches. Set to `[]` to disable rules and use profile-only behaviour.\n *\n */\n rule_groups?: Array<string>\n /**\n * When set to true, the default price is used for faceting and sorting for segmented catalogs even if the catalog rule has a supported price book.\n */\n force_use_default_price_for_faceting_and_sorting?: boolean\n}\n\nexport type SearchRuleGroupType = \"catalog_search_rule_group\"\n\nexport type SearchRuleType = \"catalog_search_rule\"\n\n/**\n * Attributes of a search rule group. Groups are attached to search profiles via `rule_groups` to activate query-time merchandising.\n */\nexport type SearchRuleGroupAttributes = {\n /**\n * Unique identifier for the group within the tenant. Used in tooling and logs.\n */\n slug: string\n /**\n * Human-readable summary of the group's merchandising intent.\n */\n description?: string\n}\n\nexport type SearchRuleGroupMeta = {\n created_at: string\n updated_at: string\n owner: ResourceOwner\n}\n\n/**\n * A named container for search merchandising rules evaluated at query time.\n */\nexport type SearchRuleGroup = {\n id: string\n type: SearchRuleGroupType\n attributes: SearchRuleGroupAttributes\n meta: SearchRuleGroupMeta\n}\n\nexport type SearchRuleGroupResponse = {\n data: SearchRuleGroup\n}\n\nexport type ListSearchRuleGroupsResponse = {\n data: Array<SearchRuleGroup>\n meta: ListResponseMeta\n}\n\n/**\n * Request body for creating a search rule group.\n */\nexport type CreateSearchRuleGroupRequest = {\n data: {\n type: SearchRuleGroupType\n attributes: SearchRuleGroupAttributes\n }\n}\n\n/**\n * Sparse updatable labels for a search rule group. Runtime rule fields are not accepted.\n */\nexport type SearchRuleGroupPatchAttributes = {\n /**\n * Unique identifier for the group within the tenant.\n */\n slug?: string\n /**\n * Human-readable summary of the group's merchandising intent.\n */\n description?: string\n}\n\n/**\n * Request body for updating a search rule group.\n */\nexport type UpdateSearchRuleGroupRequest = {\n data: {\n type: SearchRuleGroupType\n attributes: SearchRuleGroupPatchAttributes\n }\n}\n\n/**\n * Defines when a search rule matches a shopper query.\n */\nexport type SearchRuleTrigger = {\n /**\n * Trigger text compared against the normalized shopper query. Omit for a browse trigger.\n */\n query?: string\n /**\n * `exact` — normalized query must equal `query`.\n * `contains` — `query` must appear as a substring in the normalized query.\n * `browse` — matches a non-autocomplete wildcard query (`q=*`); omit `query`.\n *\n */\n match?: \"exact\" | \"contains\" | \"browse\"\n}\n\n/**\n * Actions applied when a rule matches. Provide at least one boost/bury condition, product pin, product hide, query replacement, or result filter.\n */\nexport type SearchRuleActions = {\n /**\n * One or more boost/bury conditions using standard `filter_by` syntax. Weights affect product ranking when the rule matches.\n */\n boosts?: Array<SearchBoostRule>\n /**\n * Products to fix at one-based global result positions when the rule matches. Pinned products still respect active filters.\n */\n pins?: Array<SearchPinRule>\n /**\n * Products to exclude from results when the rule matches.\n */\n hides?: Array<SearchHideRule>\n /**\n * Query text to use for the search after this rule matches.\n */\n replace_query?: string\n /**\n * Filter expression to apply to search results when the rule matches.\n */\n filter_by?: string\n}\n\n/**\n * Attributes of a search rule within a group.\n */\nexport type SearchRuleAttributes = {\n /**\n * Optional human-readable identifier for the rule within the group.\n */\n slug?: string\n /**\n * Optional summary of what the rule does for merchandisers.\n */\n description?: string\n /**\n * Lower values run first within the group and win conflicts over later rules. Must be unique per group.\n */\n execution_order: number\n trigger: SearchRuleTrigger\n actions: SearchRuleActions\n /**\n * When `true` and this rule matches, rules with a higher `execution_order` are not evaluated — including rules in other attached groups on the profile.\n */\n stop_after_match?: boolean\n}\n\nexport type SearchRuleMeta = {\n created_at: string\n updated_at: string\n owner: ResourceOwner\n}\n\n/**\n * A single merchandising rule with a query trigger and boost/bury actions.\n */\nexport type SearchRule = {\n id: string\n type: SearchRuleType\n attributes: SearchRuleAttributes\n meta: SearchRuleMeta\n}\n\nexport type SearchRuleResponse = {\n data: SearchRule\n}\n\nexport type ListSearchRulesResponse = {\n data: Array<SearchRule>\n meta: ListResponseMeta\n}\n\n/**\n * Request body for creating a search rule in a rule group.\n */\nexport type CreateSearchRuleRequest = {\n data: {\n type: SearchRuleType\n attributes: SearchRuleAttributes\n }\n}\n\n/**\n * Sparse updatable attributes of a search rule. A rule always remains in its current group.\n */\nexport type SearchRulePatchAttributes = {\n /**\n * Optional human-readable identifier for the rule within the group.\n */\n slug?: string\n /**\n * Optional summary of what the rule does for merchandisers.\n */\n description?: string\n /**\n * Lower values run first within the group and must remain unique within that group.\n */\n execution_order?: number\n trigger?: SearchRuleTrigger\n actions?: SearchRuleActions\n /**\n * Whether matching this rule stops evaluation of later attached rules.\n */\n stop_after_match?: boolean\n}\n\n/**\n * Request body for updating a search rule.\n */\nexport type UpdateSearchRuleRequest = {\n data: {\n type: SearchRuleType\n attributes: SearchRulePatchAttributes\n }\n}\n\nexport type StopwordSetResponse = {\n data: StopwordSet\n}\n\nexport type ListStopwordSetsResponse = {\n data: Array<StopwordSet>\n meta: ListResponseMeta\n}\n\nexport type StopwordSet = {\n /**\n * The unique identifier for the stopword set.\n */\n id: string\n type: StopwordSetType\n attributes: StopwordSetAttributes\n meta: StopwordSetMeta\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_stopword_set`.\n */\nexport type StopwordSetType = \"catalog_search_stopword_set\"\n\nexport type StopwordSetAttributes = {\n /**\n * [ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) for the stopwords set. Omit or pass null for the default set. At most one stopwords set per locale is allowed.\n *\n */\n locale?: string\n /**\n * The list of stopwords.\n */\n stopwords: Array<string>\n}\n\nexport type StopwordSetMeta = {\n /**\n * The date and time the stopword set was created.\n */\n created_at: string\n /**\n * The date and time the stopword set was last updated.\n */\n updated_at: string\n owner: ResourceOwner\n /**\n * The sync status of the stopword set.\n */\n sync_status: \"pending_sync\" | \"synced\" | \"sync_failed\" | \"pending_delete\"\n /**\n * The date and time the stopword set was last successfully synced.\n */\n last_synced_at?: string\n}\n\nexport type CreateStopwordSetRequest = {\n data: {\n type: StopwordSetType\n attributes: StopwordSetAttributes\n }\n}\n\nexport type UpdateStopwordSetRequest = {\n data: {\n id: string\n type: StopwordSetType\n attributes: UpdateStopwordSetAttributes\n }\n}\n\nexport type UpdateStopwordSetAttributes = {\n /**\n * The replacement list of stopwords. Must contain at least one entry.\n */\n stopwords: Array<string>\n}\n\nexport type SynonymSetResponse = {\n data: SynonymSet\n}\n\nexport type ListSynonymSetsResponse = {\n data: Array<SynonymSet>\n meta: ListResponseMeta\n}\n\nexport type SynonymSet = {\n /**\n * The unique identifier for the synonym set.\n */\n id: string\n type: SynonymSetType\n attributes: SynonymSetAttributes\n meta: SynonymSetMeta\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_synonym_set`.\n */\nexport type SynonymSetType = \"catalog_search_synonym_set\"\n\nexport type SynonymSetAttributes = {\n /**\n * Human-readable name for the synonym set.\n */\n name: string\n /**\n * The synonym items in this set.\n */\n items: Array<SynonymSetItem>\n}\n\nexport type SynonymSetItem = {\n /**\n * Unique identifier for the synonym item within the set. Alphanumeric, hyphen, and underscore only.\n */\n id: string\n /**\n * List of synonym terms.\n */\n synonyms: Array<string>\n /**\n * Makes this a one-way synonym. Searches for root also match synonyms, but not vice versa.\n */\n root?: string\n /**\n * [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) for this synonym item.\n *\n */\n locale?: string\n /**\n * Symbols to index for this synonym item. Each element must be exactly one character.\n */\n symbols_to_index?: Array<string>\n}\n\nexport type SynonymSetMeta = {\n /**\n * The date and time the synonym set was created.\n */\n created_at: string\n /**\n * The date and time the synonym set was last updated.\n */\n updated_at: string\n owner: ResourceOwner\n /**\n * The sync status of the synonym set.\n */\n sync_status: \"pending_sync\" | \"synced\" | \"sync_failed\" | \"pending_delete\"\n /**\n * The date and time the synonym set was last successfully synced.\n */\n last_synced_at?: string\n}\n\nexport type CreateSynonymSetRequest = {\n data: {\n type: SynonymSetType\n attributes: SynonymSetAttributes\n }\n}\n\nexport type UpdateSynonymSetRequest = {\n data: {\n id: string\n type: SynonymSetType\n attributes: UpdateSynonymSetAttributes\n }\n}\n\nexport type UpdateSynonymSetAttributes = {\n /**\n * Human-readable name for the synonym set.\n */\n name?: string\n /**\n * The synonym items in this set.\n */\n items?: Array<SynonymSetItem>\n}\n\nexport type SearchProfileResponse = {\n data: SearchProfile\n}\n\nexport type ListSearchProfilesResponse = {\n data: Array<SearchProfile>\n meta: ListResponseMeta\n}\n\nexport type SearchProfile = {\n /**\n * The unique identifier for the search profile.\n */\n id: string\n type: SearchProfileType\n attributes: SearchProfileAttributes\n meta: SearchProfileMeta\n}\n\nexport type SearchProfileAttributes = {\n /**\n * The unique slug of the search profile. 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. The sentinel `SYSTEMS_DEFAULT_PROFILE` is reserved for the built-in default and cannot be used as a tenant profile slug.\n */\n slug: string\n /**\n * The description of the search profile.\n */\n description: string\n /**\n * A collection of search fields\n */\n fields: Array<SearchField>\n text_match_type?: TextMatchType\n /**\n * Optional list of filter expressions to apply to search results. Multiple filters in the array are combined using OR logic (records matching filter1 || filter2 || ... filterN).\n * To combine conditions with AND logic, include multiple conditions within a single filter string (e.g., \"meta.search.categories.lvl1:=`All Products > Mens Shoes` && meta.display_price.without_tax.float_price:>100\").\n * These profile-level filters are ANDed with any filters provided in the search request via the filter_by parameter, resulting in: (profile_filter1 || profile_filter2 || ... profile_filterN) && request_filters.\n *\n */\n filters?: Array<string>\n /**\n * A collection of exclusion expressions to apply to search results. Multiple exclusions in the array are combined using OR logic (records matching exclusion1 || exclusion2 || ... exclusionN).\n */\n exclusions?: Array<string>\n boosts?: Array<SearchBoostRule>\n /**\n * Profile-level default for prefix (partial match) behavior on the last query token. When true, the last word in the query is treated as a prefix for all fields that do not have an explicit per-field prefix value. For example, a search request for \"red app\" matches \"red apple\". When false, the last word must match exactly. If omitted, default of true applies. Per-field prefix values override this setting.\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean\n typo_tolerance?: TypoTolerance\n synonym_settings?: SynonymSettings\n /**\n * Optional list of synonym set IDs to apply at search time. Each synonym set must exist and must have been synced to the search engine at least once. Organization-level search profiles may only reference organization-level synonym sets. Store-level search profiles may reference organization-level and same-store synonym sets.\n *\n */\n synonym_sets?: Array<string>\n /**\n * Optional search rule group IDs. When non-empty, the query-time rules engine runs on every search for this profile; rule actions apply only when a trigger matches. Each group must exist in tenant scope. Earlier IDs run before later IDs when matching rules from multiple groups conflict.\n *\n */\n rule_groups?: Array<string>\n /**\n * When set to true, the default price is used for faceting and sorting for segmented catalogs even if the catalog rule has a supported price book.\n */\n force_use_default_price_for_faceting_and_sorting: boolean\n}\n\nexport type SearchProfileMeta = {\n /**\n * Whether this is the default search profile.\n */\n default: boolean\n owner: ResourceOwner\n}\n\nexport type SearchField = {\n /**\n * The name of the search field.\n */\n name: string\n /**\n * The relative weight to give each field when ranking results. This can be used to boost fields in priority, when looking for matches.\n * If no explicit weights are provided for all fields, fields earlier in the fields list will be considered to have greater weight.\n * If no explicit weights are provided for some fields, the default weight of zero (0) will be used for the fields with no explicit weight.\n *\n */\n weight?: number\n /**\n * Per-field override for the maximum number of typographical errors [Damerau-Levenshtein distance](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) allowed\n * when matching this field. Accepted values: 0 (exact match only), 1, or 2.\n * Overrides `typo_tolerance.num_typos` for this field. Falls back to `typo_tolerance.num_typos`\n * if set, otherwise default of 2.\n *\n * For example, a search request for \"red appla\" matches \"red apple\" with a `num_typos` of 1.\n *\n * **`num_typos` is an upper bound, not a guarantee.** The number of corrections actually\n * applied to a query token is also capped by its length via\n * `typo_tolerance.min_len_to_allow_single_character_correction` (default 4) and\n * `typo_tolerance.min_len_to_allow_two_character_correction` (default 7):\n * - A token shorter than the single-character threshold gets **no** typo correction, even with `num_typos` 1 or 2.\n * - A token at least as long as the single-character threshold but shorter than the two-character threshold is corrected by **at most one** character, even with `num_typos` of 2.\n * - Only tokens at least as long as the two-character threshold can use the full two corrections.\n *\n * For example, with the defaults, \"appla\" → \"apple\" (length 5, one correction) is allowed,\n * but a 5-character query with two mistakes is not corrected even with `num_typos` of 2, because two-character correction requires a token of at least 7 characters.\n *\n */\n num_typos?: number\n /**\n * Per-field override for prefix (partial match) behavior on the last query token.\n * When true, the last word is treated as a prefix; when false, it must match exactly.\n * For example, when true, a search request for \"red app\" matches \"red apple\".\n * Overrides the profile-level `prefix` for this field. Falls back to the profile-level\n * `prefix` if set, otherwise default of true.\n *\n * The primary use case is to show results as the user is typing in the search box.\n *\n */\n prefix?: boolean\n}\n\n/**\n * When a search profile has multiple fields defined, this parameter determines how the representative text match score of a product is calculated.\n *\n * - `max_score (Default)`: In this mode, the products's representative score is simply the highest score from any single matching field. The field weights are used only as a tie-breaker if two products have the exact same highest score. This mode prioritizes the quality of the match in the single best-matching field.\n * - `max_weight`: This mode uses the score from the matching field that has the highest weight. This means a partial, lower-quality match on a heavily weighted field (e.g., name) can be prioritized over a perfect match on a lower-weighted field (e.g., description). This mode prioritizes matches in the most important fields, regardless of match quality.\n * - `sum_score`: This mode calculates a holistic score by summing the weighted scores from all matching fields. Its advantage is that it rewards products that match a query across multiple attributes. However, it carries the risk that a product with many weak, partial matches across several low-weighted fields could outrank a product with a single strong, perfect match in a high-weighted field.\n *\n */\nexport type TextMatchType = \"max_score\" | \"max_weight\" | \"sum_score\"\n\n/**\n * Defines a boosting rule that assigns a score to products matching a specific field value.\n */\nexport type SearchBoostRule = {\n /**\n * A filter expression used to identify a subset of products for boosting. This follows the standard filter_by syntax.\n *\n * It can be a simple condition like `meta.search.nodes.name:=\\`Electronics\\`` or complex like `meta.search.nodes.name:=\\`Electronics\\` && extensions.products(Details).brand:=Nike`.\n *\n */\n condition: string\n /**\n * A numerical value representing the boost intensity. Products matching the criteria are assigned this value. Higher weights will cause products to appear earlier in the results.\n *\n * **Impact of Weights:**\n * * **Boost (Positive):** Pushes products to the top.\n * * **Neutral (Zero):** No merchandising nudge — same result as products that match no clause. Useful with multiple clauses: add a narrower zero-weight condition to exempt a subset from a broader bury. Example: bury `brand:=Nike` at `-100`, exempt `brand:=Nike && is_featured:=true` at `0`.\n * * **Bury (Negative):** Pushes products to the bottom.\n *\n * **Rule Evaluation:** Within a rule, higher-weight matching clauses take precedence. Unmatched products use an implicit weight of `0`.\n *\n */\n weight: number\n}\n\n/**\n * Fixes a product at a one-based global search result position.\n */\nexport type SearchPinRule = {\n /**\n * Product identifier to pin.\n */\n product_id: string\n /**\n * One-based global result position for the pinned product.\n */\n position: number\n}\n\n/**\n * Excludes a product from matching search results.\n */\nexport type SearchHideRule = {\n /**\n * Product identifier to hide.\n */\n product_id: string\n}\n\n/**\n * Optional synonym tuning applied at search time. These settings control how synonym\n * matches are ranked and how query tokens are resolved against the synonym sets attached\n * to the search profile. All fields are optional; defaults are noted on each field.\n * They only have an observable effect when synonym sets are attached to the resolved profile.\n *\n */\nexport type SynonymSettings = {\n /**\n * When true, results matched via a synonym are ranked below direct (non-synonym) matches. When false, synonym matches and direct matches are ranked equally.\n * Default: false\n *\n */\n demote_synonym_match?: boolean\n /**\n * When true, an incomplete (prefix) query token can resolve to a synonym, i.e. synonym\n * expansion is attempted on prefix tokens.\n *\n * **This is not the same as the `prefix` setting.** The `prefix` setting treats only the\n * **last** word of the query as a prefix; `synonym_resolution_allowed_on_prefix` applies\n * prefix matching at **every** token position when looking words up in the synonym sets —\n * there is no last-token special-casing.\n *\n * **Exact matches always win.** A query token that exactly equals a synonym key resolves\n * regardless of this flag; the prefix behavior only affects the fuzzy fallback for tokens\n * with no exact synonym-key match. It composes with\n * `number_of_typos_allowed_when_resolving_synonyms`, which governs typo tolerance during\n * the prefix/fuzzy lookup.\n *\n * Worked example (synonym keys `red`, `apple`, `apparel`):\n * - `red app`: `red` matches exactly; `app` prefix-matches both `apple` and `apparel` — both expand.\n * - `re app`: `re` prefix-matches `red` **and** `app` prefix-matches `apple`/`apparel` — both expand.\n * The regular `prefix` setting would only treat the last word (`app`) as a prefix; here every\n * position is prefix-matched.\n *\n * Default: false\n *\n */\n synonym_resolution_allowed_on_prefix?: boolean\n /**\n * Number of typos allowed when resolving synonyms. Enables fuzzy synonym matching\n * so that a misspelled query term can still trigger a synonym expansion for the\n * synonym sets attached to the search profile.\n * Accepted values: 0 (exact synonym match only, default), 1, or 2.\n *\n */\n number_of_typos_allowed_when_resolving_synonyms?: number\n} | null\n\n/**\n * Optional typo tolerance configuration applied at search time.\n * All fields are optional; defaults are noted on each field.\n *\n */\nexport type TypoTolerance = {\n /**\n * Profile-level default for the maximum number of typographical errors\n * [Damerau-Levenshtein distance](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) allowed when matching any field.\n * Accepted values: 0 (exact match only), 1, or 2.\n * Per-field `num_typos` values override this setting. If omitted, default of 2 applies.\n *\n * For example, a search request for \"red appla\" matches \"red apple\" with a `num_typos` of 1.\n *\n * **`num_typos` is an upper bound, not a guarantee.** The number of corrections actually\n * applied to a query token is also capped by its length via\n * `min_len_to_allow_single_character_correction` (default 4) and\n * `min_len_to_allow_two_character_correction` (default 7): a token shorter than the\n * single-character threshold gets no correction at all, and a token shorter than the\n * two-character threshold is corrected by at most one character — even when `num_typos` is 2.\n * See those two fields for details.\n *\n */\n num_typos?: number\n /**\n * Minimum query-token length required before a single-character typo correction is attempted. This works together with `num_typos`: a token shorter than this length receives no typo correction at all, regardless of `num_typos`. For example, when set to 4, a search for \"appla\" will match \"apple\", but a search for \"apa\" will not match \"app\" because the length of \"apa\" is 3.\n * Default: 4.\n *\n */\n min_len_to_allow_single_character_correction?: number\n /**\n * Minimum query-token length required before a two-character typo correction is attempted. This works together with `num_typos`: even when `num_typos` is 2, a token shorter than this length is corrected by at most one character (and a token shorter than `min_len_to_allow_single_character_correction` is not corrected at all). For example, with the default of 7, the 7-character query \"monetar\" can be corrected to \"monitor\" (two corrections), but a 6-character query with two mistakes cannot.\n * Default: 7\n *\n */\n min_len_to_allow_two_character_correction?: number\n /**\n * Typo-corrected query variations are only generated if the number of exact results\n * found is fewer than this value. Set to 0 to disable typo tolerance entirely.\n * For example, when set to 5 and the search result only has 3 results, the search engine will apply typo correction to try to return 5 or more results.\n *\n * Default: 1\n *\n */\n typo_tokens_threshold?: number\n /**\n * For multi-word queries, tokens are progressively dropped if the number of results\n * is fewer than this value. Set to 0 to disable token dropping.\n *\n * For example, when set to 5 and the search result only has 3 results for \"red apple\" search,\n * the search engine will drop the last token \"apple\" and find more results with just by searching for \"red\".\n *\n * Default: 1\n *\n */\n drop_tokens_threshold?: number\n /**\n * Controls the direction in which tokens are dropped from a multi-word query when\n * results fall below drop_tokens_threshold.\n * - `right_to_left` (default): drops tokens from the right end of the query first.\n * - `left_to_right`: drops tokens from the left end first.\n * - `both_sides:N`: drops from both ends, limited to queries of N tokens or fewer\n * (e.g. `both_sides:3` applies only to queries with 3 or fewer tokens).\n *\n */\n drop_tokens_mode?: string\n /**\n * When false, typo tolerance is disabled for query tokens that are purely numeric (every character is a digit, e.g. \"98765\"). Such a token must then match exactly.\n * Default: true\n *\n */\n enable_typos_for_numerical_tokens?: boolean\n /**\n * When false, typo tolerance is disabled for query tokens that contain at least one non-alphanumeric character\n * (any character outside `a-z`, `A-Z`, `0-9`), forcing such tokens to match exactly.\n * Useful for keeping product codes / SKUs precise.\n *\n * Tokens like `abc-123`, `abc-def`, `123-456`, and `v1.2.0` are affected;\n * a plain alphanumeric token like `abc123` is not.\n *\n * Note: the special character must be indexed on the field (via `symbols_to_index`);\n * otherwise the search engine removes the special characters from tokens\n * (e.g. a token like v1.2.0 becomes v120) and it no longer qualifies.\n *\n * Default: true\n *\n */\n enable_typos_for_special_char_tokens?: boolean\n /**\n * Controls whether compound words and multi-word phrases are treated as equivalent during search.\n * For example, a query for \"nonstick\" may also match \"non stick\", and vice versa.\n * - `fallback` (default): tries the original query form first; falls back to split/joined variants if results are insufficient.\n * - `always`: always generates both split and joined token variants alongside the original query.\n * - `off`: disables split/join token handling.\n *\n */\n split_join_tokens?: \"fallback\" | \"always\" | \"off\"\n} | null\n\n/**\n * Represents the type of object being returned. Always `catalog_search_profile`.\n */\nexport type SearchProfileType = \"catalog_search_profile\"\n\nexport type ListSearchIndexesResponse = {\n data: Array<SearchIndex>\n meta: ListResponseMeta\n}\n\nexport type SearchIndex = {\n /**\n * The unique identifier for the search index.\n */\n id: string\n type: SearchIndexType\n meta: SearchIndexMeta\n}\n\nexport type SearchIndexMeta = {\n /**\n * The ID of the catalog.\n */\n catalog_id: string\n /**\n * The ID of the catalog release.\n */\n release_id: string\n /**\n * Whether the search index is out of sync and needs to re-indexed.\n */\n out_of_sync: boolean\n owner: ResourceOwner\n}\n\n/**\n * Represents the type of object being returned. Always `catalog_search_index`.\n */\nexport type SearchIndexType = \"catalog_search_index\"\n\n/**\n * Specifies which fields to use for generating facets in search results. See [faceting](/guides/How-To/Catalogs/Search/faceting) for more details.\n */\nexport type FacetByField = string\n\n/**\n * Applies conditions to narrow down search results based on specific field values. See [filtering](/guides/How-To/Catalogs/Search/filtering) for more details.\n */\nexport type FilterByField = string\n\n/**\n * Orders search results by specified fields. See [sorting](/guides/How-To/Catalogs/Search/sorting) for more details.\n */\nexport type SortByField = string\n\n/**\n * The resource owner, either `organization` or `store`.\n */\nexport type ResourceOwner = \"organization\" | \"store\"\n\nexport type ListResponseMeta = {\n results: ListResponseMetaResults\n}\n\n/**\n * Contains the results for the entire collection.\n */\nexport type ListResponseMetaResults = {\n /**\n * Total number of results for the entire collection.\n */\n total: number\n}\n\nexport type CatalogSearchJob = {\n /**\n * The unique identifier for the job.\n */\n id: string\n /**\n * The type of the resource object.\n */\n type: \"job\"\n /**\n * The attributes of the job.\n */\n attributes: CatalogSearchJobAttributes\n meta?: CatalogSearchJobMeta\n}\n\nexport type CatalogSearchJobAttributes = {\n /**\n * The status of the job.\n */\n status: \"pending\" | \"processing\" | \"complete\" | \"failed\"\n /**\n * The ID of the catalog.\n */\n catalog_id?: string\n /**\n * The ID of the catalog release.\n */\n catalog_release_id?: string\n /**\n * The type of the job.\n */\n type: \"index-release\" | \"delete-release\" | \"reindex-tenant-releases\"\n}\n\n/**\n * Meta information of the job\n */\nexport type CatalogSearchJobMeta = {\n /**\n * Results of the job\n */\n results?: Array<JobMetaResult>\n /**\n * Errors occurred during the job\n */\n errors?: Array<JobMetaError>\n}\n\n/**\n * Product\n *\n * A product in a catalog with the following attributes.\n */\nexport type CatalogSearchProduct = {\n /**\n * Arbitrary document object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * A unique identifier for a product.\n */\n id?: string\n /**\n * Arbitrary document object\n */\n relationships?: {\n [key: string]: unknown\n }\n /**\n * This represents the type of object being returned. Always `product`.\n */\n type?: string\n /**\n * Arbitrary document object\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\nexport type CatalogSearchErrorResponse = {\n errors: Array<CatalogSearchError>\n}\n\nexport type CatalogSearchError = {\n /**\n * The HTTP response code of the error.\n */\n status: string\n /**\n * A brief summary of the error.\n */\n title: string\n /**\n * Optional additional detail about the error.\n */\n detail?: string\n /**\n * Additional supporting meta data for the error.\n */\n meta?: {\n [key: string]: unknown\n }\n}\n\n/**\n * Extensions\n *\n * 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)**.\n */\nexport type ExtensionsWritable = {\n [key: string]: Extension\n}\n\n/**\n * CondensedPromotionResponse\n */\nexport type CondensedPromotionResponseWritable = {\n /**\n * Specifies the type of the resource. Always `promotion`.\n */\n type?: \"promotion\"\n /**\n * The name of the promotion.\n */\n name?: string\n /**\n * The description of the promotion.\n */\n description?: string\n /**\n * Whether the promotion is applied automatically.\n */\n automatic?: boolean\n /**\n * The type of promotion (for v1 promotions).\n */\n promotion_type?: string\n /**\n * The source of the promotion (for rule promotions).\n */\n promotion_source?: string\n /**\n * The start date and time of the promotion.\n */\n start?: string\n /**\n * The end date and time of the promotion.\n */\n end?: string\n}\n\nexport type CartEntityResponseWritable = {\n data: CartResponse\n /**\n * Related objects that are included in the response.\n */\n included?: CartIncludedWritable\n /**\n * Additional metadata for the cart response.\n */\n meta?: {\n /**\n * Payment intent details with nested structure including status and other Stripe payment intent fields\n */\n payment_intent?: {\n [key: string]: unknown\n }\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Cart Item Response\n */\nexport type CartItemResponseWritable = {\n [key: string]: unknown\n}\n\n/**\n * TaxItemResponse\n */\nexport type TaxItemResponseWritable = {\n /**\n * Specifies the type of the resource. Always `tax_item`.\n */\n type?: \"tax_item\"\n /**\n * The jurisdiction for the tax item.\n */\n jurisdiction?: string\n /**\n * The tax code for the tax item.\n */\n code?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (e.g., 0.085 for 8.5%).\n */\n rate?: number\n /**\n * The tax amount in the smallest currency unit.\n */\n amount?: number\n}\n\nexport type CartItemCollectionResponseWritable = {\n data: Array<CartItemResponseWritable>\n /**\n * Related objects that are included in the response.\n */\n included?: {\n custom_discounts?: Array<CustomDiscountResponse>\n promotions?: Array<{\n automatic?: boolean\n description?: string\n end?: string\n id?: string\n name?: string\n promotion_type?: string\n /**\n * The source of the promotion\n */\n promotion_source?: string\n start?: string\n type?: \"promotion\"\n }>\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponseWritable>\n }\n /**\n * Additional meta information about the cart items collection.\n */\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n authorized?: FormattedPriceData\n balance_owing?: FormattedPriceData\n paid?: FormattedPriceData\n }\n timestamps?: CartTimestamps\n /**\n * Optional array of informational messages that provide feedback about operations performed on the cart items, such as promotions added or discounts applied. This field is only present when there are relevant messages to display.\n *\n */\n messages?: Array<{\n /**\n * Identifies the cart item that triggered this message\n */\n source?: {\n /**\n * The type of the source item\n */\n type: string\n /**\n * The unique identifier of the source item\n */\n id: string\n /**\n * The promotion code (present when source type is promotion)\n */\n code?: string\n }\n /**\n * A short descriptive title for the message\n */\n title: string\n /**\n * A detailed description of the message\n */\n description: string\n }>\n /**\n * Array of promotion suggestions\n */\n promotion_suggestions?: Array<{\n /**\n * Bundle configuration with promotion targets\n */\n bundle?: Array<{\n /**\n * Whether to automatically add free gift\n */\n auto_add_free_gift?: boolean\n /**\n * Cart item ID for the target\n */\n cart_item_id?: string\n /**\n * Quantity for the promotion\n */\n quantity?: number\n /**\n * Array of target SKUs\n */\n targets?: Array<string>\n [key: string]: unknown\n }>\n code?: string\n info?: string\n message?: string\n promotion_id?: string\n /**\n * Whether this promotion should be automatically added\n */\n auto_add?: boolean\n /**\n * Array of promotion targets (alternative structure)\n */\n targets?: Array<{\n /**\n * The cart item ID for this target\n */\n cart_item_id?: string\n /**\n * The quantity for this target\n */\n quantity?: number\n /**\n * Array of SKU codes for this target\n */\n skus?: Array<string>\n }>\n }>\n }\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * Subscription Item Object\n */\nexport type SubscriptionItemObjectWritable = {\n data?: SubscriptionItemObjectData & CartItemResponseWritable\n}\n\nexport type CartsItemsTaxesCommonWritable = {\n /**\n * A unique tax code in this jurisdiction.\n */\n code?: string\n /**\n * The relevant tax jurisdiction.\n */\n jurisdiction?: string\n /**\n * The name of the tax item.\n */\n name?: string\n /**\n * The tax rate as a decimal (12.5% -> 0.125). You must specify either `rate` or `amount`, but not both.\n *\n */\n rate?: number\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). You must specify either `rate` or `amount`, but not both.\n *\n */\n amount?: number\n /**\n * The type of object being returned. Use `tax_item`.\n */\n type: \"tax_item\"\n}\n\n/**\n * Tax Object (With Rate)\n */\nexport type CartsItemsTaxesWithRateWritable = CartsItemsTaxesCommonWritable & {\n /**\n * The tax rate as a decimal (12.5% -> 0.125). Required when using rate-based taxation.\n *\n */\n rate: number\n /**\n * The tax as an absolute amount. Not allowed when rate is specified.\n *\n */\n amount?: number\n}\n\n/**\n * Tax Object (With Amount)\n */\nexport type CartsItemsTaxesWithAmountWritable =\n CartsItemsTaxesCommonWritable & {\n /**\n * The tax as an absolute amount in the smallest currency unit (e.g., $10 -> 1000). Required when using amount-based taxation.\n *\n */\n amount: number\n /**\n * The tax rate as a decimal. Not allowed when amount is specified.\n *\n */\n rate?: number\n }\n\n/**\n * Carts Items Taxes Object\n *\n * A tax item that can be applied to cart items or bundle components. You must specify either a rate (percentage) or an amount (fixed value), but not both.\n *\n */\nexport type CartsItemsTaxesObjectWritable =\n | CartsItemsTaxesWithRateWritable\n | CartsItemsTaxesWithAmountWritable\n\nexport type CartItemTaxesEntityResponseWritable = {\n data: CartsItemsTaxesObjectWritable\n}\n\n/**\n * CartsBulkTaxes\n */\nexport type CartsBulkTaxesWritable = {\n data?: Array<CartsItemsTaxesObjectWritable & CartItemRelationship>\n errors?: Array<ResponseErrorItem>\n options?: AddAllOrNothingOptionsObject\n}\n\n/**\n * CartsCustomDiscountsResponse\n */\nexport type CartsCustomDiscountsResponseObjectWritable = {\n amount?: {\n /**\n * Specifies an amount to be applied for the custom discount. It must be less than zero.\n */\n amount?: number\n /**\n * The currency set for the custom discount.\n */\n currency?: string\n /**\n * The formatted value for the custom discount.\n */\n formatted?: string\n }\n /**\n * Specifies a description for the custom discount.\n */\n description?: string\n /**\n * Specifies the discount code used for the custom discount.\n */\n discount_code?: string\n /**\n * Specifies from where the custom discount is applied. For example, Talon.one.\n */\n discount_engine?: string\n /**\n * Specifies an external id for the custom discount.\n */\n external_id?: string\n /**\n * Specifies the type of the resource. Always `custom_discount`.\n */\n type?: \"custom_discount\"\n /**\n * Relationships to other resources like cart items\n */\n relationships?: {\n item?: {\n data?: {\n /**\n * The item ID this discount is related to\n */\n id?: string\n type?: \"cart_item\" | \"custom_item\"\n }\n }\n }\n}\n\nexport type CartsCustomDiscountsEntityRequestWritable = {\n data?: CartsCustomDiscountsResponseObjectWritable\n}\n\n/**\n * DiscountData\n */\nexport type DiscountDataWritable = {\n amount?: OrderPriceData\n code?: string\n /**\n * The source or origin of the promotion, if applicable.\n */\n promotion_source?: string\n /**\n * Indicates whether the discount applies to the entire cart.\n */\n is_cart_discount?: boolean\n /**\n * Order in which the discount was applied.\n */\n ordinal?: number\n /**\n * Identifies the specific action within a multi-action rule promotion that produced this discount.\n */\n promotion_action_id?: string\n}\n\n/**\n * OrderItemResponse\n */\nexport type OrderItemResponseWritable = {\n /**\n * The type represents the object being returned.\n */\n type?: string\n /**\n * The quantity of this item were ordered.\n */\n quantity?: number\n /**\n * The name of this order item.\n */\n name?: string\n /**\n * The SKU code for the order item.\n */\n sku?: string\n unit_price?: OrderPriceData\n value?: OrderPriceData\n discounts?: Array<DiscountDataWritable>\n links?: {\n [key: string]: unknown\n }\n meta?: {\n display_price?: {\n with_tax?: OrderItemFormattedUnitPriceData\n without_tax?: OrderItemFormattedUnitPriceData\n tax?: OrderItemFormattedUnitPriceData\n discount?: OrderItemFormattedUnitPriceData\n without_discount?: OrderItemFormattedUnitPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n /**\n * Detailed breakdown of discount constituents by ID\n */\n constituents?: {\n [key: string]: {\n /**\n * The discount amount\n */\n amount?: number\n /**\n * The currency code\n */\n currency?: string\n /**\n * The formatted discount amount\n */\n formatted?: string\n }\n }\n }\n }\n /**\n * The product's original catalog price before any catalog-level sales, tiered pricing adjustments, or cart/item level promotions are applied. This value is sourced from the product's `meta.original_display_price` field in the catalog response. See [Get a Product](/docs/api/pxm/catalog/get-by-context-product).\n */\n original_price?: OrderItemFormattedUnitPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n relationships?: {\n cart_item?: {\n data?: {\n /**\n * The type represents the object being returned.\n */\n type?: string\n }\n }\n /**\n * Related tax items.\n */\n taxes?: {\n data?: null | Array<RelationshipItem>\n }\n /**\n * Related promotions.\n */\n promotions?: {\n data?: null | Array<RelationshipItem>\n }\n }\n /**\n * The unique identifier of the catalog associated with the product is shown if `catalog_source=pim` is set.\n */\n catalog_id?: string\n /**\n * The catalog source. Always `pim` or `legacy`.\n */\n catalog_source?: string\n /**\n * Configuration for bundle products.\n */\n bundle_configuration?: {\n selected_options?: {\n [key: string]: {\n [key: string]: number\n }\n }\n /**\n * Array of component products for bundle configuration\n */\n component_products?: Array<{\n /**\n * Component product ID\n */\n id?: string\n /**\n * Component product type\n */\n type?: string\n /**\n * Product attributes as a generic object\n */\n attributes?: {\n [key: string]: unknown\n }\n /**\n * Product metadata as a generic object\n */\n meta?: {\n [key: string]: unknown\n }\n /**\n * Product price information as a generic object\n */\n price?: {\n [key: string]: unknown\n }\n /**\n * Product relationships as a generic object\n */\n relationships?: {\n [key: string]: unknown\n }\n }>\n }\n /**\n * Components of the bundle product.\n */\n components?: {\n [key: string]: {\n name?: string\n options?: Array<{\n id?: string\n quantity?: number\n type?: string\n }>\n }\n }\n /**\n * Custom inputs for the order item as a generic object\n */\n custom_inputs?: {\n [key: string]: unknown\n }\n /**\n * The shipping group ID for the order item\n */\n shipping_group_id?: string\n /**\n * The promotion source for the order item\n */\n promotion_source?: string\n /**\n * Subscription configuration for the order item\n */\n subscription_configuration?: {\n /**\n * Subscription plan details\n */\n plan?: string\n /**\n * Pricing option for the subscription\n */\n pricing_option?: string\n }\n}\n\nexport type ShippingGroupEntityResponseWritable = {\n data?: ShippingGroupResponse\n /**\n * Related objects that are included in the response when using the include query parameter.\n */\n included?: {\n /**\n * Array of order items associated with this shipping group.\n */\n items?: Array<OrderItemResponseWritable>\n }\n /**\n * Array of validation or processing errors\n */\n errors?: Array<ResponseErrorItem>\n}\n\n/**\n * OrderResponse\n */\nexport type OrderResponseWritable = {\n /**\n * Specifies the type of object being returned. You must use `order`.\n */\n type?: \"order\"\n /**\n * Specifies a user-managed, optional field used as an alternative to the existing `order_id`. If provided, the order-number will be sent to Authorize.net instead of the `order_id`, and will appear as the invoice number in Authorize.net transactions.\n */\n order_number?: string\n /**\n * An optional external ID reference for an order. It can contain alphanumeric characters, special characters, and spaces, and is not required to be unique. The maximum allowed length is 64 characters. It can be used to include an external reference from a separate company system.\n */\n external_ref?: string\n /**\n * Specifies the status of the order, such as `incomplete`, `complete`, `processing`, or `cancelled`.\n */\n status?: \"complete\" | \"incomplete\" | \"cancelled\" | \"processing\"\n /**\n * Specifies the status of the payment, such as `unpaid`, `authorized`, `paid`, or `refunded`.\n */\n payment?:\n | \"authorized\"\n | \"paid\"\n | \"unpaid\"\n | \"refunded\"\n | \"partially_paid\"\n | \"partially_authorized\"\n /**\n * Specifies the status of the shipment, such as `fulfilled` or `unfulfilled`.\n */\n shipping?: \"unfulfilled\" | \"fulfilled\"\n /**\n * Specifies if the order is anonymized.\n */\n anonymized?: boolean\n /**\n * Stripe Payment Intent ID. Please see Stripe's Payment Intent [documentation](https://docs.stripe.com/api/payment_intents) for more information on Payment Intents.\n */\n payment_intent_id?: string\n custom_attributes?: CustomAttributes\n links?: {\n [key: string]: unknown\n }\n meta?: OrderMeta\n billing_address?: BillingAddress\n contact?: Contact\n customer?: Customer\n shipping_address?: ShippingAddress\n relationships?: {\n items?: RelationshipArray\n custom_discounts?: RelationshipArray\n promotions?: RelationshipArray\n customer?: SingleRelationship\n account?: SingleRelationship\n account_member?: SingleRelationship\n store?: SingleRelationship\n }\n}\n\n/**\n * OrderEntityResponse\n */\nexport type OrderEntityResponseWritable = {\n data?: OrderResponseWritable\n /**\n * Optional included data such as order items, tax items, custom discounts, and promotions.\n *\n */\n included?: OrderIncludedWritable\n /**\n * Array of error objects, if any errors occurred.\n */\n errors?: Array<ResponseErrorItem>\n}\n\nexport type OrderCollectionResponseWritable = {\n data?: Array<OrderResponseWritable>\n links?: ResponsePageLinks\n meta?: ResponseMetaOrders\n included?: OrdersIncludedWritable\n}\n\nexport type OrderItemCollectionResponseWritable = {\n data?: Array<OrderItemResponseWritable>\n /**\n * Optional included data such as tax items, custom discounts, and promotions.\n *\n */\n included?: {\n /**\n * Array of tax items included in the response.\n */\n tax_items?: Array<TaxItemResponseWritable>\n /**\n * Array of custom discounts included in the response.\n */\n custom_discounts?: Array<CustomDiscountResponse>\n /**\n * Array of promotions included in the response.\n */\n promotions?: Array<CondensedPromotionResponseWritable>\n }\n}\n\nexport type OrdersListResponseWritable = {\n data: Array<OrderResponseWritable>\n}\n\n/**\n * TransactionResponse\n */\nexport type TransactionResponseWritable = {\n /**\n * The payment gateway reference.\n */\n reference?: string\n /**\n * A custom name associated with the payment method.\n */\n name?: string\n /**\n * A reference associated with the payment method. This might include loyalty points or gift card identifiers. We recommend you not to include personal information in this field.\n */\n custom_reference?: string\n /**\n * The name of the payment gateway used.\n */\n gateway?:\n | \"adyen\"\n | \"authorize_net\"\n | \"braintree\"\n | \"card_connect\"\n | \"cyber_source\"\n | \"elastic_path_payments_stripe\"\n | \"manual\"\n | \"paypal_express_checkout\"\n | \"stripe\"\n | \"stripe_payment_intents\"\n | \"stripe_platform_account\"\n /**\n * The amount for this transaction.\n */\n amount?: number\n /**\n * The refunded amount.\n */\n refunded_amount?: number\n /**\n * The transaction currency.\n */\n currency?: string\n /**\n * The type of transaction, such as `purchase`, `capture`, `authorize` or `refund`.\n */\n transaction_type?: \"purchase\" | \"authorize\" | \"capture\" | \"refund\"\n /**\n * The type of object being returned.\n */\n type?: string\n /**\n * The status provided by the gateway for this transaction, such as `complete` or `failed`.\n */\n status?: string\n /**\n * Additional payment details specific to the gateway. Present when gateway is paypal_express_checkout.\n */\n payment_details?: {\n /**\n * Detailed status information from the payment gateway.\n */\n detailed_status?: string\n }\n /**\n * Non-PII payment failure details from the gateway. Only present on failed transactions where the gateway provided structured failure information.\n */\n failure_details?: FailureDetails\n /**\n * Payment intent details.\n */\n payment_intent?: {\n [key: string]: unknown\n }\n /**\n * The mechanism used for capturing the transaction.\n */\n capture_mechanism?: \"automatic\" | \"manual\"\n /**\n * The mechanism used for refunding the transaction.\n */\n refund_mechanism?: \"automatic\" | \"manual\"\n /**\n * Client parameters required for payment processing. Present when gateway is paypal_express_checkout.\n */\n client_parameters?: {\n /**\n * The URL to redirect the customer to complete the payment.\n */\n redirect_url?: string\n /**\n * Client secret for payment processing.\n */\n secret?: string\n /**\n * The token for the payment session.\n */\n token?: string\n }\n /**\n * Available actions that can be performed on this transaction. Present when gateway is paypal_express_checkout.\n */\n next_actions?: Array<\"cancel\" | \"capture\" | \"refund\">\n relationships?: {\n order?: {\n data?: {\n /**\n * Represents the type of the object being returned. It is always `order`.\n */\n type?: string\n /**\n * The ID of the order.\n */\n id?: string\n }\n }\n }\n meta?: {\n display_price?: FormattedPriceData\n display_refunded_amount?: {\n total?: FormattedPriceData\n }\n timestamps?: CartCheckoutTimestamps\n }\n}\n\nexport type TransactionEntityResponseWritable = {\n data: TransactionResponseWritable\n}\n\nexport type TransactionListResponseWritable = {\n data: Array<TransactionResponseWritable>\n}\n\nexport type SettingsCartWritable = {\n data?: {\n /**\n * Describes the type of request payload you're sending. Set this value to `settings`.\n */\n type: string\n /**\n * Indicates the number of days before a cart expires.\n */\n cart_expiry_days?: number\n discounts?: {\n /**\n * When `true`, custom discounts are enabled. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n custom_discounts_enabled?: boolean\n /**\n * When set to `true`, this parameter allows the cart to use rule promotions.\n */\n use_rule_promotions?: boolean\n }\n inventories?: {\n /**\n * When `true`, inventory checks are not performed when adding products to a cart but still occur on checkout as normal. Default is false. This setting only affects the new empty carts while the existing active carts will not be affected.\n */\n defer_inventory_check?: boolean\n }\n items?: {\n /**\n * When `true`, cart items with the same SKU but different locations are kept as separate line items instead of being merged. When `false` (default), items with the same SKU are merged and the location is updated to the most recent value.\n */\n separate_items_by_location?: boolean\n }\n /**\n * When `true`, admins (users with admin scope) can retrieve all carts in the store via `GET /v2/carts`, regardless of customer or account associations. When `false`, admins can only see carts that are registered (associated with customers or accounts).\n *\n * For new stores, this defaults to `true`. For existing stores created before this feature was introduced, this defaults to `false` to maintain backward compatibility.\n *\n */\n show_all_carts?: boolean\n }\n}\n\n/**\n * Carts Response\n */\nexport type CartsResponseWritable = {\n data?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n meta?: {\n display_price?: {\n with_tax?: FormattedPriceData\n without_tax?: FormattedPriceData\n tax?: FormattedPriceData\n discount?: FormattedPriceData\n without_discount?: FormattedPriceData\n shipping?: FormattedPriceData\n shipping_discount?: FormattedPriceData\n discounts?: {\n [key: string]: {\n amount?: number\n currency?: string\n formatted?: string\n }\n }\n }\n timestamps?: CartTimestamps\n }\n}\n\n/**\n * Cart Items Response\n */\nexport type CartItemsResponseWritable = {\n data?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n}\n\n/**\n * Cart Item Object\n */\nexport type CartItemObjectWritable = CartItemObjectData &\n CartItemResponseWritable\n\n/**\n * Custom Item Cart Object\n */\nexport type CustomItemCartObjectWritable = CartItemResponseWritable & {\n type: \"custom_item\"\n quantity: number\n}\n\n/**\n * Subscription Item Cart Object\n */\nexport type SubscriptionItemCartObjectWritable = CartItemResponseWritable & {\n type: \"subscription_item\"\n quantity: number\n}\n\n/**\n * Promotion Item Cart Object\n */\nexport type PromotionItemCartObjectWritable = CartItemResponseWritable & {\n type: \"promotion_item\"\n quantity: number\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type CartIncludedWritable = {\n /**\n * The cart items associated with a cart.\n */\n items?: Array<\n | CartItemObjectWritable\n | CustomItemCartObjectWritable\n | SubscriptionItemCartObjectWritable\n | PromotionItemCartObjectWritable\n >\n /**\n * The tax items associated with a cart.\n */\n tax_items?: Array<CartsItemsTaxesObjectWritable>\n /**\n * The custom discounts associated with a cart.\n */\n custom_discounts?: Array<CartsCustomDiscountsObject>\n /**\n * The promotions associated with a cart.\n */\n promotions?: Array<CartIncludedPromotion>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrdersIncludedWritable = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponseWritable>\n}\n\n/**\n * Included is an array of resources that are included in the response.\n */\nexport type OrderIncludedWritable = {\n /**\n * The order items associated with an order.\n */\n items?: Array<OrderItemResponseWritable>\n}\n\nexport type FeatureWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionFeatureType\n attributes: FeatureResponseAttributes\n meta: FeatureMetaWritable\n}\n\nexport type FeatureMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type PlanMetaWritable = {\n prices?: OfferingPlanPrices\n display_price?: DisplayPrice2\n timestamps: SubscriptionsTimestamps\n active_plan?: ActivePlan\n}\n\nexport type DunningRuleWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionDunningRuleType\n attributes: DunningRuleAttributes\n meta: DunningRuleMetaWritable\n}\n\nexport type DunningRuleMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type ProrationPolicyWritable = {\n id?: SubscriptionsUuid\n type: ProrationPolicyType\n attributes: ProrationPolicyResponseAttributes\n meta: ProrationPolicyMetaWritable\n}\n\nexport type ProrationPolicyMetaWritable = {\n timestamps: SubscriptionsTimestamps\n}\n\nexport type OfferingWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingType\n attributes: OfferingResponseAttributes\n relationships?: Relationships\n meta: OfferingMetaWritable\n}\n\nexport type OfferingIncludesWritable = {\n features?: Array<OfferingFeatureWritable>\n plans?: Array<OfferingPlanWritable>\n pricing_options?: Array<OfferingPricingOptionWritable>\n}\n\nexport type OfferingMetaWritable = {\n external_plan_refs: Array<unknown>\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * A map of plans keyed by plan UUID or external_ref to a list of associated pricing options, similarly keyed.\n */\nexport type OfferingBuildPricingOptionAssociationsWritable = {\n [key: string]: OfferingBuildPlanPricingOptions\n}\n\nexport type OfferingFeatureWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingFeatureType\n attributes: FeatureResponseAttributes\n relationships?: Relationships\n meta: FeatureMetaWritable\n}\n\nexport type OfferingPlanWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPlanType\n attributes: OfferingPlanResponseAttributes\n relationships?: Relationships\n meta: PlanMetaWritable\n}\n\nexport type OfferingPricingOptionWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionOfferingPricingOptionType\n attributes: PricingOptionResponseAttributes\n relationships?: Relationships\n meta: OfferingPricingOptionMetaWritable\n}\n\nexport type OfferingPricingOptionMetaWritable = {\n prices?: OfferingPricingOptionPricesWritable\n price?: Price\n display_price?: DisplayPrice2\n active_pricing_option?: ActivePricingOption\n timestamps: SubscriptionsTimestamps\n}\n\n/**\n * The price of each plan within the offering that this pricing option may be applied to.\n */\nexport type OfferingPricingOptionPricesWritable = {\n [key: string]: OfferingPricingOptionPriceForPlan\n}\n\nexport type BuildSubscriptionWritable = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering_external_ref?: ExternalRef\n offering_id?: SubscriptionsUuid\n plan_id?: SubscriptionsUuid\n pricing_option_id?: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: CreatePaymentAuthorityWritable\n manual_payments: ManualPayments\n name: string\n email: string\n /**\n * Whether a subscription is pending activation or not. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n pending?: boolean\n /**\n * Indicates that payment for the first billing period of the subscription has already been taken. As well as creating the subscription a settled invoice is created to cover the first period.\n */\n first_invoice_paid?: boolean\n /**\n * When importing an active subscription from an existing system you can specify the date and time of the start of the most recent period. This may only be supplied when `first_invoice_paid` is true. As well as creating the subscription a settled invoice is created to cover the correct billing period.\n */\n started_at?: string\n /**\n * Optional. May only be set when `started_at` is set. When supplied, overrides the default first billing period end (start + 1 interval). The first billing period runs from the subscription start date to this date. The subscriber is charged the standard period price for the first period. Subsequent billing periods start from this date. Must be after the subscription start date.\n */\n override_first_period_end_date?: string\n offering?: OfferingAttributes\n /**\n * Either references of existing features (id or external_ref) to be attached to the offering or feature information to be created directly within the offering\n */\n features?: Array<ExternalRef | FeatureAttributes | SubscriptionsUuid>\n plans?: Array<PlanAttributesAndSelectedMeta>\n pricing_options?: Array<PricingOptionAttributesAndSelectedMeta>\n configured_features?: OfferingBuildConfiguredFeatures\n pricing_option_associations?: OfferingBuildPricingOptionAssociationsWritable\n selected_plan?: ExternalRef\n selected_pricing_option?: ExternalRef\n order?: BuildSubscriptionOrder\n meta?: SubscriptionMetaWritable\n}\n\nexport type SubscriptionWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionAttributesWritable\n relationships?: Relationships\n meta: SubscriptionMetaWritable\n}\n\nexport type SubscriptionUpdateWritable = {\n id: SubscriptionsUuid\n type: SubscriptionType\n attributes: SubscriptionUpdateAttributesWritable\n}\n\nexport type SubscriptionUpdateAttributesWritable = {\n pricing_option_id?: string\n plan_id?: string\n address_id?: string | null\n payment_authority?: PaymentAuthorityWritable\n /**\n * The date and time a `pending` subscription goes live and becomes active. See [Creating a pending subscription](/docs/api/subscriptions/subscriptions#creating-a-pending-subscription).\n */\n go_live_after?: string | null\n}\n\nexport type SubscriptionIncludesWritable = {\n plans?: Array<OfferingPlanWritable>\n pricing_options?: Array<OfferingPricingOptionWritable>\n}\n\nexport type SubscriptionMetaWritable = {\n timestamps: SubscriptionTimestamps\n status: Status\n state?: SubscriptionStateWritable\n manual_payments: ManualPayments\n /**\n * Indicates that the first billing period of this subscription was paid for outside of the subscriptions service.\n */\n first_invoice_prepaid: boolean\n /**\n * Whether a subscription is canceled or not.\n */\n canceled: boolean\n /**\n * Whether a subscription is paused or not.\n */\n paused: boolean\n /**\n * Whether a subscription is closed or not.\n */\n closed: boolean\n /**\n * Whether a subscription is suspended or not.\n */\n suspended: boolean\n /**\n * Whether a subscription is pending activation or not.\n */\n pending: boolean\n /**\n * The time when the subscription becomes eligible for a new invoice. The next invoice will be generated at the next billing run after this point.\n */\n invoice_after: string\n pending_price_change?: SubscriptionPriceChanges\n /**\n * A history of price updates that have been applied to this subscription.\n */\n price_update_history?: Array<SubscriptionPriceUpdateHistoryEntry>\n /**\n * The ID of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_id?: string\n /**\n * The amount of the most recent Proration Refund issued for this subscription, if any.\n */\n last_refund_amount?: number\n /**\n * Who or what most recently paused this subscription, while it remains paused. Absent when the subscription has never been paused, or is not currently paused (cleared on resume). Only visible to merchandizer/store or organization-scoped callers.\n */\n paused_by?: \"subscriber\" | \"merchandizer\" | \"dunning\"\n}\n\nexport type SubscriptionAttributesWritable = {\n external_ref?: ExternalRef\n account_id: SubscriptionsUuid\n address_id?: SubscriptionsUuid\n offering: OfferingWritable\n pricing_option_id: SubscriptionsUuid\n plan_id: SubscriptionsUuid\n currency: CurrencyIdentifier\n payment_authority?: PaymentAuthorityWritable\n}\n\nexport type SubscriptionStateWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionStateType\n attributes: SubscriptionStateAttributes\n meta: StateMeta\n}\n\nexport type PaymentAuthorityWritable = (\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type NullablePaymentAuthorityWritable =\n | ((\n | PaymentAuthorityEpPayments\n | PaymentAuthorityStripe\n | PaymentAuthorityAuthorizeNet\n | null\n ) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n })\n | null\n\nexport type CreatePaymentAuthorityWritable = (\n | CreatePaymentAuthorityEpPayments\n | CreatePaymentAuthorityStripe\n | CreatePaymentAuthorityAuthorizeNet\n) & {\n /**\n * The name of the payment gateway facilitating the secure transmission of payment data.\n */\n type:\n | \"authorize_net\"\n | \"elastic_path_payments_stripe\"\n | \"stripe_payment_intents\"\n}\n\nexport type ImportWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionImportType\n attributes: ImportAttributes\n meta: ImportMetaWritable\n}\n\nexport type ImportMetaWritable = {\n timestamps: JobTimestamps\n records: ImportRecords\n}\n\nexport type JobWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionJobType\n attributes: JobResponseAttributes\n relationships?: Relationships\n meta: JobMetaWritable\n}\n\nexport type JobMetaWritable = {\n timestamps: JobTimestamps\n report?: JobReport\n}\n\nexport type SubscriptionInvoiceWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionInvoiceType\n attributes: SubscriptionInvoiceAttributes\n relationships?: Relationships\n meta: SubscriptionInvoiceMetaWritable\n}\n\nexport type SubscriptionInvoicePaymentWritable = {\n id: SubscriptionsUuid\n type: SubscriptionInvoicePaymentType\n attributes: SubscriptionInvoicePaymentAttributes\n meta: SubscriptionInvoicePaymentMetaWritable\n}\n\nexport type SubscriptionInvoiceMetaWritable = {\n subscription_id?: SubscriptionsUuid\n subscriber_id?: SubscriptionsUuid\n price?: SingleCurrencyPrice\n /**\n * Invoice totals formatted for display (`with_tax`, `without_tax`, `tax`). Amounts are in the\n * currency's smallest subdivision.\n *\n */\n display_price: DisplayPrice2\n /**\n * A list of notifications scheduled for this invoice. These are derived from the notification\n * schedules configured on the pricing option at the time the invoice was created. Each notification\n * has a due date calculated relative to the billing period end date.\n *\n */\n notifications?: Array<InvoiceNotification>\n timestamps: InvoiceTimestamps\n proration_events: Array<ProrationEvent> | null\n /**\n * The pro-rated remaining value for the billing period\n */\n pro_rata_remaining_value: number\n}\n\nexport type SubscriptionInvoicePaymentMetaWritable = {\n subscription_id: SubscriptionsUuid\n invoice_id: SubscriptionsUuid\n job_id: SubscriptionsUuid\n timestamps: InvoicePaymentTimestamps\n /**\n * Whether manual payments are enabled or the payment will be handled by the configured gateway.\n */\n manual_payment: boolean\n}\n\nexport type SubscriberWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberResponseAttributesWritable\n meta: SubscriberMetaWritable\n}\n\nexport type SubscriberMetaWritable = {\n /**\n * A list of entitlement tags currently active for the subscriber\n */\n feature_entitlements?: Array<FeatureTag>\n timestamps: SubscriptionsTimestamps\n}\n\nexport type SubscriberResponseAttributesWritable =\n SubscriberAttributesWritable & SubscriptionsTimestamps\n\nexport type SubscriberAttributesWritable = {\n account_id: SubscriptionsUuid\n /**\n * The name of the subscriber.\n */\n name: string\n /**\n * The email of the subscriber.\n */\n email: string\n payment_authority?: PaymentAuthorityWritable\n}\n\nexport type SubscriberUpdateAttributesWritable = {\n /**\n * The name of the subscriber.\n */\n name?: string\n /**\n * The email of the subscriber.\n */\n email?: string\n payment_authority?: NullablePaymentAuthorityWritable\n}\n\nexport type SubscriberCreateWritable = {\n type: SubscriptionSubscriberType\n attributes: SubscriberAttributesWritable\n}\n\nexport type SubscriberUpdateWritable = {\n id: SubscriptionsUuid\n type: SubscriptionSubscriberType\n attributes: SubscriberUpdateAttributesWritable\n}\n\nexport type ScheduleWritable = {\n id?: SubscriptionsUuid\n type: SubscriptionScheduleType\n attributes: ScheduleResponseAttributes\n meta: ScheduleMetaWritable\n}\n\nexport type ScheduleMetaWritable = {\n scheduled_for?: string\n timestamps: SubscriptionsTimestamps\n}\n\nexport type InventoriesImportWritable = {\n id: InventoriesUuid\n type: InventoriesImportType\n attributes: InventoriesImportAttributes\n meta: InventoriesImportMeta\n}\n\nexport type AccountResponseWritable = Account & {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n /**\n * Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.\n */\n meta?: AccountManagementMetaTimestamps\n relationships?: {\n /**\n * Tags associated with the account.\n */\n account_tags?: {\n data?: Array<{\n /**\n * The unique identifier for an Account Tag.\n */\n id?: Uuid\n type?: \"account_tag\"\n }>\n }\n ancestors?: Array<{\n data?: {\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n type?: \"account\"\n }\n }>\n parent?: {\n data?: {\n type?: \"account\"\n /**\n * The unique identifier for an Account.\n */\n id?: Uuid\n }\n }\n }\n}\n\n/**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\nexport type AcceptLanguage = string\n\n/**\n * 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.\n */\nexport type Channel = string\n\n/**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\nexport type FilterCatalog = string\n\n/**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterHierarchy = string\n\n/**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\nexport type FilterNode = string\n\n/**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterProduct = string\n\n/**\n * This endpoint supports filtering. See [Filtering](#filtering).\n *\n */\nexport type FilterRule = string\n\n/**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\nexport type Include = Array<\"files\" | \"main_image\" | \"component_products\">\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type Limit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\nexport type Offset = number\n\n/**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\nexport type PricebookIdsForPriceSegmentationPreview = Array<string>\n\n/**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\nexport type PricebookIdsOfAvailablePricesToShow = Array<string>\n\n/**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\nexport type Tag = string\n\nexport type CartInclude = Array<\n \"items\" | \"tax_items\" | \"custom_discounts\" | \"promotions\"\n>\n\n/**\n * For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint documentation to understand the attributes and operators an endpoint supports.\n *\n */\nexport type CartCheckoutFilter = string\n\nexport type OrdersInclude = Array<\"items\">\n\nexport type OrderInclude = Array<\"items\">\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type CartCheckoutLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\nexport type CartCheckoutOffset = number\n\n/**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\nexport type OfferingInclude = Array<\"plans\" | \"pricing_options\" | \"features\">\n\n/**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\nexport type SubscriptionInclude = Array<\"plans\" | \"pricing_options\">\n\n/**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\nexport type SubscriptionsFilter = string\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type SubscriptionsPageLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type SubscriptionsPageOffset = number\n\n/**\n * Latitude, Longitude representing current location\n */\nexport type EpGeolocation = string\n\n/**\n * Some Inventories API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\nexport type InventoriesFilter = string\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type InventoriesPageLimit = number\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type InventoriesPageOffset = number\n\n/**\n * Specifies the filter attributes.\n */\nexport type Filter = string\n\n/**\n * The number of records per page.\n */\nexport type PageLimit = number\n\n/**\n * The number of records to offset the results by.\n */\nexport type PageOffset = number\n\n/**\n * Parameter to retrieve more information about any related resources like account members.\n */\nexport type IncludeAccountMember = string\n\n/**\n * Parameter to retrieve more information about any related resources like accounts.\n */\nexport type IncludeAccount = string\n\n/**\n * The ID of the Account Tag.\n */\nexport type AccountTagId = string\n\n/**\n * The number of records per page.\n */\nexport type AuthenticationRealmspageLimit = number\n\n/**\n * The number of records to offset the results by.\n */\nexport type AuthenticationRealmspageOffset = number\n\n/**\n * Specifies the filter attributes.\n */\nexport type AuthenticationRealmsfilter = string\n\n/**\n *\n * Filtering is available for this endpoint. See [Filtering](/docs/api/pxm/files/get-all-files#filtering).\n *\n */\nexport type Filesfilter = string\n\n/**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type FilespageOffset = number\n\n/**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\nexport type FilespageLimit = number\n\n/**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\nexport type CatalogSearchacceptLanguage = string\n\n/**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\nexport type CatalogSearchpricebookIdsForPriceSegmentationPreview = Array<string>\n\n/**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\nexport type CatalogSearchpricebookIdsOfAvailablePricesToShow = Array<string>\n\n/**\n * The currency used to resolve product price. If not supplied, the organization/store default currency is used.\n */\nexport type Currency = string\n\n/**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\nexport type ProductsInclude = Array<\n \"files\" | \"main_image\" | \"component_products\"\n>\n\n/**\n * The slug of the search profile to use for this search.\n *\n * On shopper search (`/pcm/catalog/search`, `/pcm/catalog/multi-search`): used only when the matched catalog rule has no valid `search_profile_slug`. When the catalog rule carries a non-blank slug that resolves to a profile, that rule profile is used and this query parameter is silently ignored. Blank or whitespace-only values are treated as omitted. An invalid non-blank slug returns 400 with detail `Search profile '{slug}' not found`.\n *\n * On admin search (`/pcm/catalogs/{catalog_id}/releases/{release_id}/…`): catalog rule profiles are not applied. Resolution is this query parameter, then the tenant default profile, then the built-in default.\n *\n * Omit this parameter to use the tenant default profile (or the built-in default when no tenant default exists). The applied slug is returned in the `EP-Search-Profile` response header.\n *\n */\nexport type SearchProfile2 = string\n\n/**\n * Specifies which fields to use for generating facets in search results. See [faceting](/guides/How-To/Catalogs/Search/faceting) for more details.\n */\nexport type SearchQueryParamFacetBy = string\n\n/**\n * Applies conditions to narrow down search results based on specific field values. See [filtering](/guides/How-To/Catalogs/Search/filtering) for more details.\n */\nexport type SearchQueryParamFilterBy = string\n\n/**\n * Comma-separated list of fields to highlight\n */\nexport type SearchQueryParamHighlightFullFields = string\n\n/**\n * Maximum number of facet values to return\n */\nexport type SearchQueryParamMaxFacetValues = number\n\n/**\n * Search query\n */\nexport type SearchQueryParamQ = string\n\n/**\n * Orders search results by specified fields. See [sorting](/guides/How-To/Catalogs/Search/sorting) for more details.\n */\nexport type SearchQueryParamSortBy = string\n\n/**\n * Type of search operation to perform\n */\nexport type SearchQueryParamType = \"search\" | \"autocomplete\"\n\nexport type SimulatedShopperDate = string\n\n/**\n * The bundle configuration.\n */\nexport type BundleConfigurationData2 = BundleConfigurationData\n\n/**\n * A list of product id or sku and bundle configuration for cart.\n */\nexport type ProductsForCartConfiguration2 = ProductsForCartConfiguration\n\nexport type GetByContextReleaseData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: never\n url: \"/catalog\"\n}\n\nexport type GetByContextReleaseErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextReleaseError =\n GetByContextReleaseErrors[keyof GetByContextReleaseErrors]\n\nexport type GetByContextReleaseResponses = {\n /**\n * The catalog.\n */\n 200: ReleaseData\n}\n\nexport type GetByContextReleaseResponse =\n GetByContextReleaseResponses[keyof GetByContextReleaseResponses]\n\nexport type GetByContextAllHierarchiesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: {\n /**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies\"\n}\n\nexport type GetByContextAllHierarchiesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllHierarchiesError =\n GetByContextAllHierarchiesErrors[keyof GetByContextAllHierarchiesErrors]\n\nexport type GetByContextAllHierarchiesResponses = {\n /**\n * The hierarchies of the catalog.\n */\n 200: HierarchyListData\n}\n\nexport type GetByContextAllHierarchiesResponse =\n GetByContextAllHierarchiesResponses[keyof GetByContextAllHierarchiesResponses]\n\nexport type GetByContextHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: never\n url: \"/catalog/hierarchies/{hierarchy_id}\"\n}\n\nexport type GetByContextHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyError =\n GetByContextHierarchyErrors[keyof GetByContextHierarchyErrors]\n\nexport type GetByContextHierarchyResponses = {\n /**\n * The catalog hierarchy.\n */\n 200: HierarchyData\n}\n\nexport type GetByContextHierarchyResponse =\n GetByContextHierarchyResponses[keyof GetByContextHierarchyResponses]\n\nexport type GetByContextHierarchyNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/nodes\"\n}\n\nexport type GetByContextHierarchyNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyNodesError =\n GetByContextHierarchyNodesErrors[keyof GetByContextHierarchyNodesErrors]\n\nexport type GetByContextHierarchyNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetByContextHierarchyNodesResponse =\n GetByContextHierarchyNodesResponses[keyof GetByContextHierarchyNodesResponses]\n\nexport type GetByContextHierarchyChildNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/children\"\n}\n\nexport type GetByContextHierarchyChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextHierarchyChildNodesError =\n GetByContextHierarchyChildNodesErrors[keyof GetByContextHierarchyChildNodesErrors]\n\nexport type GetByContextHierarchyChildNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetByContextHierarchyChildNodesResponse =\n GetByContextHierarchyChildNodesResponses[keyof GetByContextHierarchyChildNodesResponses]\n\nexport type GetByContextAllNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path?: never\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes\"\n}\n\nexport type GetByContextAllNodesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllNodesError =\n GetByContextAllNodesErrors[keyof GetByContextAllNodesErrors]\n\nexport type GetByContextAllNodesResponses = {\n /**\n * The nodes of the catalog.\n */\n 200: NodeListData\n}\n\nexport type GetByContextAllNodesResponse =\n GetByContextAllNodesResponses[keyof GetByContextAllNodesResponses]\n\nexport type GetByContextNodeData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: never\n url: \"/catalog/nodes/{node_id}\"\n}\n\nexport type GetByContextNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextNodeError =\n GetByContextNodeErrors[keyof GetByContextNodeErrors]\n\nexport type GetByContextNodeResponses = {\n /**\n * The catalog node.\n */\n 200: NodeData\n}\n\nexport type GetByContextNodeResponse =\n GetByContextNodeResponses[keyof GetByContextNodeResponses]\n\nexport type GetByContextChildNodesData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes/{node_id}/relationships/children\"\n}\n\nexport type GetByContextChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextChildNodesError =\n GetByContextChildNodesErrors[keyof GetByContextChildNodesErrors]\n\nexport type GetByContextChildNodesResponses = {\n /**\n * The child nodes of a catalog node.\n */\n 200: NodeListData\n}\n\nexport type GetByContextChildNodesResponse =\n GetByContextChildNodesResponses[keyof GetByContextChildNodesResponses]\n\nexport type GetByContextAllProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path?: never\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products\"\n}\n\nexport type GetByContextAllProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllProductsError =\n GetByContextAllProductsErrors[keyof GetByContextAllProductsErrors]\n\nexport type GetByContextAllProductsResponses = {\n /**\n * The products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextAllProductsResponse =\n GetByContextAllProductsResponses[keyof GetByContextAllProductsResponses]\n\nexport type GetByContextProductData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalog/products/{product_id}\"\n}\n\nexport type GetByContextProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductError =\n GetByContextProductErrors[keyof GetByContextProductErrors]\n\nexport type GetByContextProductResponses = {\n /**\n * The product of a catalog.\n */\n 200: ProductData\n}\n\nexport type GetByContextProductResponse =\n GetByContextProductResponses[keyof GetByContextProductResponses]\n\nexport type GetByContextAllRelatedProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n /**\n * The custom relationship slug.\n */\n custom_relationship_slug: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/{custom_relationship_slug}/products\"\n}\n\nexport type GetByContextAllRelatedProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextAllRelatedProductsError =\n GetByContextAllRelatedProductsErrors[keyof GetByContextAllRelatedProductsErrors]\n\nexport type GetByContextAllRelatedProductsResponses = {\n /**\n * The related products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextAllRelatedProductsResponse =\n GetByContextAllRelatedProductsResponses[keyof GetByContextAllRelatedProductsResponses]\n\nexport type GetByContextComponentProductIdsData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/component_products\"\n}\n\nexport type GetByContextComponentProductIdsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextComponentProductIdsError =\n GetByContextComponentProductIdsErrors[keyof GetByContextComponentProductIdsErrors]\n\nexport type GetByContextComponentProductIdsResponses = {\n /**\n * The list of component product IDs of a bundle product from a catalog.\n */\n 200: ProductReferenceListData\n}\n\nexport type GetByContextComponentProductIdsResponse =\n GetByContextComponentProductIdsResponses[keyof GetByContextComponentProductIdsResponses]\n\nexport type GetByContextChildProductsData = {\n body?: never\n headers?: {\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/products/{product_id}/relationships/children\"\n}\n\nexport type GetByContextChildProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextChildProductsError =\n GetByContextChildProductsErrors[keyof GetByContextChildProductsErrors]\n\nexport type GetByContextChildProductsResponses = {\n /**\n * The list of child products of a parent product from a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetByContextChildProductsResponse =\n GetByContextChildProductsResponses[keyof GetByContextChildProductsResponses]\n\nexport type GetByContextProductsForHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/hierarchies/{hierarchy_id}/products\"\n}\n\nexport type GetByContextProductsForHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductsForHierarchyError =\n GetByContextProductsForHierarchyErrors[keyof GetByContextProductsForHierarchyErrors]\n\nexport type GetByContextProductsForHierarchyResponses = {\n /**\n * The products of a catalog hierarchy.\n */\n 200: ProductListData\n}\n\nexport type GetByContextProductsForHierarchyResponse =\n GetByContextProductsForHierarchyResponses[keyof GetByContextProductsForHierarchyResponses]\n\nexport type GetByContextProductsForNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalog/nodes/{node_id}/relationships/products\"\n}\n\nexport type GetByContextProductsForNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetByContextProductsForNodeError =\n GetByContextProductsForNodeErrors[keyof GetByContextProductsForNodeErrors]\n\nexport type GetByContextProductsForNodeResponses = {\n /**\n * The products of a catalog node.\n */\n 200: ProductListData\n}\n\nexport type GetByContextProductsForNodeResponse =\n GetByContextProductsForNodeResponses[keyof GetByContextProductsForNodeResponses]\n\nexport type ConfigureByContextProductData = {\n /**\n * The bundle configuration.\n */\n body: BundleConfigurationData2\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n }\n path: {\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalog/products/{product_id}/configure\"\n}\n\nexport type ConfigureByContextProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type ConfigureByContextProductError =\n ConfigureByContextProductErrors[keyof ConfigureByContextProductErrors]\n\nexport type ConfigureByContextProductResponses = {\n /**\n * The configured product of a catalog.\n */\n 200: ProductData\n}\n\nexport type ConfigureByContextProductResponse =\n ConfigureByContextProductResponses[keyof ConfigureByContextProductResponses]\n\nexport type GetCatalogsData = {\n body?: never\n path?: never\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs\"\n}\n\nexport type GetCatalogsErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetCatalogsError = GetCatalogsErrors[keyof GetCatalogsErrors]\n\nexport type GetCatalogsResponses = {\n /**\n * The list of catalogs.\n */\n 200: CatalogListData\n}\n\nexport type GetCatalogsResponse =\n GetCatalogsResponses[keyof GetCatalogsResponses]\n\nexport type CreateCatalogData = {\n /**\n * Creates a catalog with the following attributes.\n */\n body: CatalogCreateData\n path?: never\n query?: never\n url: \"/catalogs\"\n}\n\nexport type CreateCatalogErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type CreateCatalogError = CreateCatalogErrors[keyof CreateCatalogErrors]\n\nexport type CreateCatalogResponses = {\n /**\n * The created catalog\n */\n 201: CatalogData\n}\n\nexport type CreateCatalogResponse =\n CreateCatalogResponses[keyof CreateCatalogResponses]\n\nexport type DeleteCatalogByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type DeleteCatalogByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteCatalogByIdError =\n DeleteCatalogByIdErrors[keyof DeleteCatalogByIdErrors]\n\nexport type DeleteCatalogByIdResponses = {\n /**\n * A 204 response indicates that the catalog has been deleted.\n */\n 204: void\n}\n\nexport type DeleteCatalogByIdResponse =\n DeleteCatalogByIdResponses[keyof DeleteCatalogByIdResponses]\n\nexport type GetCatalogByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type GetCatalogByIdErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetCatalogByIdError =\n GetCatalogByIdErrors[keyof GetCatalogByIdErrors]\n\nexport type GetCatalogByIdResponses = {\n /**\n * The catalog.\n */\n 200: CatalogData\n}\n\nexport type GetCatalogByIdResponse =\n GetCatalogByIdResponses[keyof GetCatalogByIdResponses]\n\nexport type UpdateCatalogData = {\n /**\n * Updated catalog.\n */\n body: CatalogUpdateData\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}\"\n}\n\nexport type UpdateCatalogErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type UpdateCatalogError = UpdateCatalogErrors[keyof UpdateCatalogErrors]\n\nexport type UpdateCatalogResponses = {\n /**\n * An updated catalog with the following attributes.\n */\n 200: CatalogData\n}\n\nexport type UpdateCatalogResponse =\n UpdateCatalogResponses[keyof UpdateCatalogResponses]\n\nexport type DeleteReleasesData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type DeleteReleasesErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteReleasesError =\n DeleteReleasesErrors[keyof DeleteReleasesErrors]\n\nexport type DeleteReleasesResponses = {\n /**\n * A 204 response indicates that the releases have been deleted.\n */\n 204: void\n}\n\nexport type DeleteReleasesResponse =\n DeleteReleasesResponses[keyof DeleteReleasesResponses]\n\nexport type GetReleasesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type GetReleasesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetReleasesError = GetReleasesErrors[keyof GetReleasesErrors]\n\nexport type GetReleasesResponses = {\n /**\n * The list of catalogs.\n */\n 200: ReleaseListData\n}\n\nexport type GetReleasesResponse =\n GetReleasesResponses[keyof GetReleasesResponses]\n\nexport type PublishReleaseData = {\n /**\n * Options for catalog release publishing\n */\n body?: CatalogReleaseCreateData\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases\"\n}\n\nexport type PublishReleaseErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type PublishReleaseError =\n PublishReleaseErrors[keyof PublishReleaseErrors]\n\nexport type PublishReleaseResponses = {\n /**\n * Publishes a catalog release with the following attributes.\n */\n 201: ReleaseData\n}\n\nexport type PublishReleaseResponse =\n PublishReleaseResponses[keyof PublishReleaseResponses]\n\nexport type DeleteReleaseByIdData = {\n body?: never\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}\"\n}\n\nexport type DeleteReleaseByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteReleaseByIdError =\n DeleteReleaseByIdErrors[keyof DeleteReleaseByIdErrors]\n\nexport type DeleteReleaseByIdResponses = {\n /**\n * A 204 response indicates that the release has been deleted.\n */\n 204: void\n}\n\nexport type DeleteReleaseByIdResponse =\n DeleteReleaseByIdResponses[keyof DeleteReleaseByIdResponses]\n\nexport type GetReleaseByIdData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}\"\n}\n\nexport type GetReleaseByIdErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetReleaseByIdError =\n GetReleaseByIdErrors[keyof GetReleaseByIdErrors]\n\nexport type GetReleaseByIdResponses = {\n /**\n * The catalog.\n */\n 200: ReleaseData\n}\n\nexport type GetReleaseByIdResponse =\n GetReleaseByIdResponses[keyof GetReleaseByIdResponses]\n\nexport type GetRulesData = {\n body?: never\n path?: never\n query?: {\n /**\n * This endpoint supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/rules\"\n}\n\nexport type GetRulesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetRulesError = GetRulesErrors[keyof GetRulesErrors]\n\nexport type GetRulesResponses = {\n /**\n * The list of catalog rules.\n */\n 200: RuleListData\n}\n\nexport type GetRulesResponse = GetRulesResponses[keyof GetRulesResponses]\n\nexport type CreateRuleData = {\n /**\n * Creates a catalog rule with the following attributes.\n */\n body: RuleCreateData\n path?: never\n query?: never\n url: \"/catalogs/rules\"\n}\n\nexport type CreateRuleErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type CreateRuleError = CreateRuleErrors[keyof CreateRuleErrors]\n\nexport type CreateRuleResponses = {\n /**\n * The created catalog rule\n */\n 201: RuleData\n}\n\nexport type CreateRuleResponse = CreateRuleResponses[keyof CreateRuleResponses]\n\nexport type DeleteRuleByIdData = {\n body?: never\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type DeleteRuleByIdErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type DeleteRuleByIdError =\n DeleteRuleByIdErrors[keyof DeleteRuleByIdErrors]\n\nexport type DeleteRuleByIdResponses = {\n /**\n * A 204 response indicates that the catalog rule has been deleted.\n */\n 204: void\n}\n\nexport type DeleteRuleByIdResponse =\n DeleteRuleByIdResponses[keyof DeleteRuleByIdResponses]\n\nexport type GetRuleByIdData = {\n body?: never\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type GetRuleByIdErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetRuleByIdError = GetRuleByIdErrors[keyof GetRuleByIdErrors]\n\nexport type GetRuleByIdResponses = {\n /**\n * The catalog rile.\n */\n 200: RuleData\n}\n\nexport type GetRuleByIdResponse =\n GetRuleByIdResponses[keyof GetRuleByIdResponses]\n\nexport type UpdateRuleData = {\n /**\n * An updated catalog rule with the following attributes.\n */\n body: RuleUpdateData\n path: {\n /**\n * The catalog rule ID.\n */\n catalog_rule_id: string\n }\n query?: never\n url: \"/catalogs/rules/{catalog_rule_id}\"\n}\n\nexport type UpdateRuleErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type UpdateRuleError = UpdateRuleErrors[keyof UpdateRuleErrors]\n\nexport type UpdateRuleResponses = {\n /**\n * An Updated catalog rule with the following attributes.\n */\n 200: RuleData\n}\n\nexport type UpdateRuleResponse = UpdateRuleResponses[keyof UpdateRuleResponses]\n\nexport type ValidateCatalogRulesData = {\n body: CatalogRuleValidatorRequest\n path?: never\n query?: {\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/rules/validate\"\n}\n\nexport type ValidateCatalogRulesErrors = {\n /**\n * Unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type ValidateCatalogRulesError =\n ValidateCatalogRulesErrors[keyof ValidateCatalogRulesErrors]\n\nexport type ValidateCatalogRulesResponses = {\n /**\n * List of matching catalog rules\n */\n 200: RuleListData\n}\n\nexport type ValidateCatalogRulesResponse =\n ValidateCatalogRulesResponses[keyof ValidateCatalogRulesResponses]\n\nexport type GetAllHierarchiesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n *\n * This endpoints supports filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies\"\n}\n\nexport type GetAllHierarchiesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllHierarchiesError =\n GetAllHierarchiesErrors[keyof GetAllHierarchiesErrors]\n\nexport type GetAllHierarchiesResponses = {\n /**\n * The hierarchies of a catalog.\n */\n 200: HierarchyListData\n}\n\nexport type GetAllHierarchiesResponse =\n GetAllHierarchiesResponses[keyof GetAllHierarchiesResponses]\n\nexport type GetHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}\"\n}\n\nexport type GetHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyError = GetHierarchyErrors[keyof GetHierarchyErrors]\n\nexport type GetHierarchyResponses = {\n /**\n * The catalog hierarchy.\n */\n 200: HierarchyData\n}\n\nexport type GetHierarchyResponse =\n GetHierarchyResponses[keyof GetHierarchyResponses]\n\nexport type GetHierarchyNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/nodes\"\n}\n\nexport type GetHierarchyNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyNodesError =\n GetHierarchyNodesErrors[keyof GetHierarchyNodesErrors]\n\nexport type GetHierarchyNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetHierarchyNodesResponse =\n GetHierarchyNodesResponses[keyof GetHierarchyNodesResponses]\n\nexport type GetHierarchyChildNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/children\"\n}\n\nexport type GetHierarchyChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetHierarchyChildNodesError =\n GetHierarchyChildNodesErrors[keyof GetHierarchyChildNodesErrors]\n\nexport type GetHierarchyChildNodesResponses = {\n /**\n * The child nodes of a catalog hierarchy.\n */\n 200: NodeListData\n}\n\nexport type GetHierarchyChildNodesResponse =\n GetHierarchyChildNodesResponses[keyof GetHierarchyChildNodesResponses]\n\nexport type GetAllNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes\"\n}\n\nexport type GetAllNodesErrors = {\n /**\n * An unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllNodesError = GetAllNodesErrors[keyof GetAllNodesErrors]\n\nexport type GetAllNodesResponses = {\n /**\n * The nodes of a catalog.\n */\n 200: NodeListData\n}\n\nexport type GetAllNodesResponse =\n GetAllNodesResponses[keyof GetAllNodesResponses]\n\nexport type GetNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: never\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}\"\n}\n\nexport type GetNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetNodeError = GetNodeErrors[keyof GetNodeErrors]\n\nexport type GetNodeResponses = {\n /**\n * The catalog node.\n */\n 200: NodeData\n}\n\nexport type GetNodeResponse = GetNodeResponses[keyof GetNodeResponses]\n\nexport type GetChildNodesData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoint supports filtering, see [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/children\"\n}\n\nexport type GetChildNodesErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetChildNodesError = GetChildNodesErrors[keyof GetChildNodesErrors]\n\nexport type GetChildNodesResponses = {\n /**\n * The child nodes of a catalog node.\n */\n 200: NodeListData\n}\n\nexport type GetChildNodesResponse =\n GetChildNodesResponses[keyof GetChildNodesResponses]\n\nexport type GetAllProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products\"\n}\n\nexport type GetAllProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllProductsError =\n GetAllProductsErrors[keyof GetAllProductsErrors]\n\nexport type GetAllProductsResponses = {\n /**\n * The products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetAllProductsResponse =\n GetAllProductsResponses[keyof GetAllProductsResponses]\n\nexport type GetProductData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}\"\n}\n\nexport type GetProductErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductError = GetProductErrors[keyof GetProductErrors]\n\nexport type GetProductResponses = {\n /**\n * The product of a catalog.\n */\n 200: ProductData\n}\n\nexport type GetProductResponse = GetProductResponses[keyof GetProductResponses]\n\nexport type GetAllRelatedProductsData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n /**\n * The custom relationship slug.\n */\n custom_relationship_slug: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/{custom_relationship_slug}/products\"\n}\n\nexport type GetAllRelatedProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetAllRelatedProductsError =\n GetAllRelatedProductsErrors[keyof GetAllRelatedProductsErrors]\n\nexport type GetAllRelatedProductsResponses = {\n /**\n * The related products of a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetAllRelatedProductsResponse =\n GetAllRelatedProductsResponses[keyof GetAllRelatedProductsResponses]\n\nexport type GetComponentProductIdsData = {\n body?: never\n headers?: {\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/component_products\"\n}\n\nexport type GetComponentProductIdsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetComponentProductIdsError =\n GetComponentProductIdsErrors[keyof GetComponentProductIdsErrors]\n\nexport type GetComponentProductIdsResponses = {\n /**\n * The list of component product IDs of a specific bundle product from a catalog.\n */\n 200: ProductReferenceListData\n}\n\nexport type GetComponentProductIdsResponse =\n GetComponentProductIdsResponses[keyof GetComponentProductIdsResponses]\n\nexport type GetChildProductsData = {\n body?: never\n headers?: {\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The product ID.\n */\n product_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/children\"\n}\n\nexport type GetChildProductsErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetChildProductsError =\n GetChildProductsErrors[keyof GetChildProductsErrors]\n\nexport type GetChildProductsResponses = {\n /**\n * The list of child products of a specific base product from a catalog.\n */\n 200: ProductListData\n}\n\nexport type GetChildProductsResponse =\n GetChildProductsResponses[keyof GetChildProductsResponses]\n\nexport type GetProductsForHierarchyData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog hierarchy ID.\n */\n hierarchy_id: string\n }\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/products\"\n}\n\nexport type GetProductsForHierarchyErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductsForHierarchyError =\n GetProductsForHierarchyErrors[keyof GetProductsForHierarchyErrors]\n\nexport type GetProductsForHierarchyResponses = {\n /**\n * The products of a catalog hierarchy.\n */\n 200: ProductListData\n}\n\nexport type GetProductsForHierarchyResponse =\n GetProductsForHierarchyResponses[keyof GetProductsForHierarchyResponses]\n\nexport type GetProductsForNodeData = {\n body?: never\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.\n */\n \"EP-Pricebook-IDs-For-Price-Segmentation-Preview\"?: Array<string>\n /**\n * Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.\n */\n \"EP-Pricebook-IDs-Of-Available-Prices-To-Show\"?: Array<string>\n }\n path: {\n /**\n * The catalog ID.\n */\n catalog_id: string\n /**\n * The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.\n */\n release_id: string\n /**\n * The catalog node ID.\n */\n node_id: string\n }\n query?: {\n /**\n * This endpoints support filtering. See [Filtering](#filtering).\n *\n */\n filter?: string\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.\n */\n \"page[offset]\"?: number\n }\n url: \"/catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/products\"\n}\n\nexport type GetProductsForNodeErrors = {\n /**\n * The unexpected error.\n */\n default: ErrorResponse\n}\n\nexport type GetProductsForNodeError =\n GetProductsForNodeErrors[keyof GetProductsForNodeErrors]\n\nexport type GetProductsForNodeResponses = {\n /**\n * The products of a catalog node.\n */\n 200: ProductListData\n}\n\nexport type GetProductsForNodeResponse =\n GetProductsForNodeResponses[keyof GetProductsForNodeResponses]\n\nexport type GetCartsData = {\n body?: never\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path?: never\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"custom_discounts\">\n /**\n * The maximum number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Filter expression for searching carts. For more information about filtering, see [Filtering](/guides/Getting-Started/filtering).\n *\n * :::note\n * Filtering is only supported when using **client credentials** (admin) authentication. When using a **customer token** (`X-Moltin-Customer-Token`) or **account token** (`EP-Account-Management-Authentication-Token`), the `filter` parameter is ignored and all carts associated with the customer or account are returned.\n * :::\n *\n * **Supported Fields:**\n * - `account_ids`: Filter carts by associated account ID (UUID format)\n * - `name`: Filter carts by cart name (case-insensitive)\n *\n * **Supported Operators:**\n * - `contains(field,value)`: Contains value in array field\n * - `ilike(field,value)`: Case-insensitive string matching\n *\n * **Examples:**\n * - `contains(account_ids,\"c24e5698-3b54-491b-9225-559c7a9cf2b2\")` - Find carts associated with a specific account\n * - `ilike(name,\"Shopping Cart\")` - Find carts with name matching \"Shopping Cart\" (case-insensitive)\n * - `ilike(name,\"*cart*\")` - Find carts with names containing \"cart\" (wildcard search)\n *\n * **Combining Filters:**\n * You can combine multiple filters using the `:`, and `|` operator for and and or respectively:\n * - `contains(account_ids,\"abc123\"):ilike(name,\"Holiday Cart\")` - Find carts matching both conditions\n * - `contains(account_ids,\"abc123\")|ilike(name,\"Holiday Cart\")` - Find carts matching either condition.\n *\n */\n filter?: string\n }\n url: \"/v2/carts\"\n}\n\nexport type GetCartsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n}\n\nexport type GetCartsError = GetCartsErrors[keyof GetCartsErrors]\n\nexport type GetCartsResponses = {\n 200: CartCollectionResponse\n}\n\nexport type GetCartsResponse = GetCartsResponses[keyof GetCartsResponses]\n\nexport type CreateACartData = {\n body?: CartsRequest\n headers?: {\n /**\n * An Account Management Authentication token for the account to be associated with the cart.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n /**\n * A customer token for the customer to be associated with the cart.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path?: never\n query?: never\n url: \"/v2/carts\"\n}\n\nexport type CreateACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n}\n\nexport type CreateACartError = CreateACartErrors[keyof CreateACartErrors]\n\nexport type CreateACartResponses = {\n 201: CartEntityResponse\n}\n\nexport type CreateACartResponse =\n CreateACartResponses[keyof CreateACartResponses]\n\nexport type DeleteACartData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart that you want to delete.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type DeleteACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type DeleteACartError = DeleteACartErrors[keyof DeleteACartErrors]\n\nexport type DeleteACartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteACartResponse =\n DeleteACartResponses[keyof DeleteACartResponses]\n\nexport type GetACartData = {\n body?: never\n path: {\n /**\n * The unique identifier for this cart that you created.\n */\n cartID: string\n }\n query?: {\n include?: Array<\"items\" | \"tax_items\" | \"custom_discounts\" | \"promotions\">\n }\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type GetACartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type GetACartError = GetACartErrors[keyof GetACartErrors]\n\nexport type GetACartResponses = {\n /**\n * OK\n */\n 200: CartEntityResponse\n}\n\nexport type GetACartResponse = GetACartResponses[keyof GetACartResponses]\n\nexport type UpdateACartData = {\n body?: CartsRequest\n path: {\n /**\n * The unique identifier of a cart created by you.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}\"\n}\n\nexport type UpdateACartErrors = {\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Unprocessable Content\n */\n 422: ResponseErrorItem\n}\n\nexport type UpdateACartError = UpdateACartErrors[keyof UpdateACartErrors]\n\nexport type UpdateACartResponses = {\n 200: CartEntityResponse\n}\n\nexport type UpdateACartResponse =\n UpdateACartResponses[keyof UpdateACartResponses]\n\nexport type DeleteAllCartItemsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart created by you.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type DeleteAllCartItemsErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type DeleteAllCartItemsError =\n DeleteAllCartItemsErrors[keyof DeleteAllCartItemsErrors]\n\nexport type DeleteAllCartItemsResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAllCartItemsResponse =\n DeleteAllCartItemsResponses[keyof DeleteAllCartItemsResponses]\n\nexport type GetCartItemsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: {\n /**\n * A comma-separated list of related resources to include in the response.\n */\n include?: Array<\"tax_items\" | \"custom_discounts\" | \"promotions\">\n }\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type GetCartItemsResponses = {\n 200: CartItemsResponse\n}\n\nexport type GetCartItemsResponse =\n GetCartItemsResponses[keyof GetCartItemsResponses]\n\nexport type ManageCartsData = {\n body?:\n | CartItemObjectRequest\n | SubscriptionItemObjectWritable\n | CartMergeObjectRequest\n | CustomItemObject\n | ReOrderObjectRequest\n | PromotionItemObject\n | BulkAddItemsRequest\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type ManageCartsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found - occurs when a referenced product or promotion cannot be found. For bulk operations with add_all_or_nothing=true, the entire operation fails if any item is invalid.\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type ManageCartsError = ManageCartsErrors[keyof ManageCartsErrors]\n\nexport type ManageCartsResponses = {\n /**\n * Successfully added item(s) to cart. When promotions are added, the response includes informational messages in the `meta.messages` field describing the promotion and discount effects.\n */\n 201: CartsResponse\n}\n\nexport type ManageCartsResponse =\n ManageCartsResponses[keyof ManageCartsResponses]\n\nexport type BulkUpdateItemsInCartData = {\n body?: BulkUpdateCartsItems\n path: {\n /**\n * The unique identifier of the cart that you created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items\"\n}\n\nexport type BulkUpdateItemsInCartErrors = {\n /**\n * Insufficient Stock\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkUpdateItemsInCartError =\n BulkUpdateItemsInCartErrors[keyof BulkUpdateItemsInCartErrors]\n\nexport type BulkUpdateItemsInCartResponses = {\n /**\n * Successfully updated cart items\n */\n 200: CartItemCollectionResponse\n}\n\nexport type BulkUpdateItemsInCartResponse =\n BulkUpdateItemsInCartResponses[keyof BulkUpdateItemsInCartResponses]\n\nexport type DeleteACartItemData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart created by you.\n */\n cartID: string\n /**\n * The unique identifier of the cart that you want to delete.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}\"\n}\n\nexport type DeleteACartItemResponses = {\n 200: CartsResponse\n}\n\nexport type DeleteACartItemResponse =\n DeleteACartItemResponses[keyof DeleteACartItemResponses]\n\nexport type UpdateACartItemData = {\n body?: UpdateCartsItems\n path: {\n /**\n * A unique identifier of the cart that you created.\n */\n cartID: string\n /**\n * A unique identifier of the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}\"\n}\n\nexport type UpdateACartItemErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized call\n */\n 403: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n}\n\nexport type UpdateACartItemError =\n UpdateACartItemErrors[keyof UpdateACartItemErrors]\n\nexport type UpdateACartItemResponses = {\n 200: CartsResponse\n}\n\nexport type UpdateACartItemResponse =\n UpdateACartItemResponses[keyof UpdateACartItemResponses]\n\nexport type DeleteAccountCartAssociationData = {\n body?: CartsRelationshipsAccountsData\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the account.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/accounts\"\n}\n\nexport type DeleteAccountCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type DeleteAccountCartAssociationError =\n DeleteAccountCartAssociationErrors[keyof DeleteAccountCartAssociationErrors]\n\nexport type DeleteAccountCartAssociationResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAccountCartAssociationResponse =\n DeleteAccountCartAssociationResponses[keyof DeleteAccountCartAssociationResponses]\n\nexport type CreateAccountCartAssociationData = {\n body?: CartsRelationshipsAccountsData\n headers?: {\n /**\n * An Account Management Authentication token to access a specific account's carts.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the account. Ensure that you follow the guidelines for [Safe Characters](/guides/Getting-Started/safe-characters).\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/accounts\"\n}\n\nexport type CreateAccountCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateAccountCartAssociationError =\n CreateAccountCartAssociationErrors[keyof CreateAccountCartAssociationErrors]\n\nexport type CreateAccountCartAssociationResponses = {\n /**\n * OK\n */\n 200: CartsRelationshipsAccountsData\n /**\n * No Content is sent back in case the account has already been associated to the cart.\n */\n 204: void\n}\n\nexport type CreateAccountCartAssociationResponse =\n CreateAccountCartAssociationResponses[keyof CreateAccountCartAssociationResponses]\n\nexport type DeleteCustomerCartAssociationData = {\n body?: CartsRelationshipsCustomersData\n headers?: {\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the customer.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/customers\"\n}\n\nexport type DeleteCustomerCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type DeleteCustomerCartAssociationError =\n DeleteCustomerCartAssociationErrors[keyof DeleteCustomerCartAssociationErrors]\n\nexport type DeleteCustomerCartAssociationResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomerCartAssociationResponse =\n DeleteCustomerCartAssociationResponses[keyof DeleteCustomerCartAssociationResponses]\n\nexport type CreateCustomerCartAssociationData = {\n body?: CartsRelationshipsCustomersData\n headers?: {\n /**\n * A customer token to access a specific customer's carts.\n */\n \"X-Moltin-Customer-Token\"?: string\n }\n path: {\n /**\n * The ID for the cart created by the customer. Ensure that you follow the guidelines for [Safe Characters](/guides/Getting-Started/safe-characters).\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/relationships/customers\"\n}\n\nexport type CreateCustomerCartAssociationErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateCustomerCartAssociationError =\n CreateCustomerCartAssociationErrors[keyof CreateCustomerCartAssociationErrors]\n\nexport type CreateCustomerCartAssociationResponses = {\n /**\n * OK\n */\n 200: CartsRelationshipsCustomersData\n /**\n * No Content\n */\n 204: void\n}\n\nexport type CreateCustomerCartAssociationResponse =\n CreateCustomerCartAssociationResponses[keyof CreateCustomerCartAssociationResponses]\n\nexport type DeleteAPromotionViaPromotionCodeData = {\n body?: never\n path: {\n /**\n * Specifies the unique identifier of a cart created by you.\n */\n cartID: string\n /**\n * Specifies the promotion code to be deleted.\n */\n promoCode: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/discounts/{promoCode}\"\n}\n\nexport type DeleteAPromotionViaPromotionCodeResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteAPromotionViaPromotionCodeResponse =\n DeleteAPromotionViaPromotionCodeResponses[keyof DeleteAPromotionViaPromotionCodeResponses]\n\nexport type AddTaxItemToCartData = {\n body: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes\"\n}\n\nexport type AddTaxItemToCartErrors = {\n /**\n * Unauthorized\n */\n 422: ResponseErrorResponse\n}\n\nexport type AddTaxItemToCartError =\n AddTaxItemToCartErrors[keyof AddTaxItemToCartErrors]\n\nexport type AddTaxItemToCartResponses = {\n 200: CartItemTaxesEntityResponse\n /**\n * Created\n */\n 201: CartItemTaxesEntityResponse\n}\n\nexport type AddTaxItemToCartResponse =\n AddTaxItemToCartResponses[keyof AddTaxItemToCartResponses]\n\nexport type AddTaxItemToCartItemComponentData = {\n body: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes\"\n}\n\nexport type AddTaxItemToCartItemComponentErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type AddTaxItemToCartItemComponentError =\n AddTaxItemToCartItemComponentErrors[keyof AddTaxItemToCartItemComponentErrors]\n\nexport type AddTaxItemToCartItemComponentResponses = {\n /**\n * Created\n */\n 201: CartItemTaxesEntityResponse\n}\n\nexport type AddTaxItemToCartItemComponentResponse =\n AddTaxItemToCartItemComponentResponses[keyof AddTaxItemToCartItemComponentResponses]\n\nexport type DeleteTaxItemFromCartItemComponentData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n /**\n * The unique identifier of the tax item on the component product.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes/{taxitemID}\"\n}\n\nexport type DeleteTaxItemFromCartItemComponentErrors = {\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type DeleteTaxItemFromCartItemComponentError =\n DeleteTaxItemFromCartItemComponentErrors[keyof DeleteTaxItemFromCartItemComponentErrors]\n\nexport type DeleteTaxItemFromCartItemComponentResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteTaxItemFromCartItemComponentResponse =\n DeleteTaxItemFromCartItemComponentResponses[keyof DeleteTaxItemFromCartItemComponentResponses]\n\nexport type UpdateTaxItemFromCartItemComponentData = {\n body?: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the component product within the bundle.\n */\n productID: string\n /**\n * The unique identifier of the tax item on the component product.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/components/{productID}/taxes/{taxitemID}\"\n}\n\nexport type UpdateTaxItemFromCartItemComponentResponses = {\n 200: CartItemTaxesEntityResponse\n}\n\nexport type UpdateTaxItemFromCartItemComponentResponse =\n UpdateTaxItemFromCartItemComponentResponses[keyof UpdateTaxItemFromCartItemComponentResponses]\n\nexport type BulkDeleteTaxItemsFromCartData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/taxes\"\n}\n\nexport type BulkDeleteTaxItemsFromCartErrors = {\n /**\n * Not Found - No tax items exist in the cart\n */\n 404: ResponseErrorResponse\n}\n\nexport type BulkDeleteTaxItemsFromCartError =\n BulkDeleteTaxItemsFromCartErrors[keyof BulkDeleteTaxItemsFromCartErrors]\n\nexport type BulkDeleteTaxItemsFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type BulkDeleteTaxItemsFromCartResponse =\n BulkDeleteTaxItemsFromCartResponses[keyof BulkDeleteTaxItemsFromCartResponses]\n\nexport type BulkAddTaxItemsToCartData = {\n body?: CartsBulkTaxesWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/taxes\"\n}\n\nexport type BulkAddTaxItemsToCartErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkAddTaxItemsToCartError =\n BulkAddTaxItemsToCartErrors[keyof BulkAddTaxItemsToCartErrors]\n\nexport type BulkAddTaxItemsToCartResponses = {\n 200: CartsBulkTaxes\n /**\n * Created\n */\n 201: CartsBulkTaxes\n}\n\nexport type BulkAddTaxItemsToCartResponse =\n BulkAddTaxItemsToCartResponses[keyof BulkAddTaxItemsToCartResponses]\n\nexport type DeleteATaxItemData = {\n body?: never\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the tax item.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes/{taxitemID}\"\n}\n\nexport type DeleteATaxItemResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteATaxItemResponse =\n DeleteATaxItemResponses[keyof DeleteATaxItemResponses]\n\nexport type UpdateATaxItemData = {\n body?: CartItemTaxesEntityResponseWritable\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the cart item.\n */\n cartitemID: string\n /**\n * The unique identifier of the tax item.\n */\n taxitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/taxes/{taxitemID}\"\n}\n\nexport type UpdateATaxItemResponses = {\n 200: CartItemTaxesEntityResponse\n}\n\nexport type UpdateATaxItemResponse =\n UpdateATaxItemResponses[keyof UpdateATaxItemResponses]\n\nexport type BulkDeleteCustomDiscountsFromCartData = {\n body?: never\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts\"\n}\n\nexport type BulkDeleteCustomDiscountsFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type BulkDeleteCustomDiscountsFromCartResponse =\n BulkDeleteCustomDiscountsFromCartResponses[keyof BulkDeleteCustomDiscountsFromCartResponses]\n\nexport type BulkAddCustomDiscountsToCartData = {\n body?: CartsBulkCustomDiscounts\n path: {\n /**\n * Specifies the system generated ID for the cart that the shopper created.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts\"\n}\n\nexport type BulkAddCustomDiscountsToCartErrors = {\n /**\n * Could not apply custom discount\n */\n 400: ResponseErrorResponse\n /**\n * Could not apply custom discount\n */\n 422: ResponseErrorResponse\n}\n\nexport type BulkAddCustomDiscountsToCartError =\n BulkAddCustomDiscountsToCartErrors[keyof BulkAddCustomDiscountsToCartErrors]\n\nexport type BulkAddCustomDiscountsToCartResponses = {\n 201:\n | CartsBulkCustomDiscountsResponse\n | CartsBulkCustomDiscountsCollectionResponse\n}\n\nexport type BulkAddCustomDiscountsToCartResponse =\n BulkAddCustomDiscountsToCartResponses[keyof BulkAddCustomDiscountsToCartResponses]\n\nexport type DeleteCustomDiscountFromCartData = {\n body?: never\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the custom discount to be deleted.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type DeleteCustomDiscountFromCartResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomDiscountFromCartResponse =\n DeleteCustomDiscountFromCartResponses[keyof DeleteCustomDiscountFromCartResponses]\n\nexport type UpdateCustomDiscountForCartData = {\n body?: CartsCustomDiscountsEntityRequestWritable\n path: {\n /**\n * Specifies the unique ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the custom discount to be updated.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type UpdateCustomDiscountForCartResponses = {\n 200: CartsCustomDiscountsEntityResponse\n}\n\nexport type UpdateCustomDiscountForCartResponse =\n UpdateCustomDiscountForCartResponses[keyof UpdateCustomDiscountForCartResponses]\n\nexport type AddCustomDiscountToCartItemData = {\n body?: CartsCustomDiscountsObject\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the unique identifier for the cart item.\n */\n cartitemID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts\"\n}\n\nexport type AddCustomDiscountToCartItemErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Bad Request\n */\n 422: ResponseErrorResponse\n}\n\nexport type AddCustomDiscountToCartItemError =\n AddCustomDiscountToCartItemErrors[keyof AddCustomDiscountToCartItemErrors]\n\nexport type AddCustomDiscountToCartItemResponses = {\n /**\n * Successful request\n */\n 201:\n | CartsCustomDiscountsCollectionResponse\n | CartsCustomDiscountsEntityResponse\n}\n\nexport type AddCustomDiscountToCartItemResponse =\n AddCustomDiscountToCartItemResponses[keyof AddCustomDiscountToCartItemResponses]\n\nexport type DeleteCustomDiscountFromCartItemData = {\n body?: never\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the cart item.\n */\n cartitemID: string\n /**\n * Specifies the ID for the custom discount to be deleted.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type DeleteCustomDiscountFromCartItemResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteCustomDiscountFromCartItemResponse =\n DeleteCustomDiscountFromCartItemResponses[keyof DeleteCustomDiscountFromCartItemResponses]\n\nexport type UpdateCustomDiscountForCartItemData = {\n body?: CartsCustomDiscountsEntityRequestWritable\n path: {\n /**\n * Specifies the ID for the cart.\n */\n cartID: string\n /**\n * Specifies the ID for the cart item.\n */\n cartitemID: string\n /**\n * Specifies the ID for the custom discount to be updated.\n */\n customdiscountID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/items/{cartitemID}/custom-discounts/{customdiscountID}\"\n}\n\nexport type UpdateCustomDiscountForCartItemResponses = {\n 200: CartsCustomDiscountsEntityResponse\n}\n\nexport type UpdateCustomDiscountForCartItemResponse =\n UpdateCustomDiscountForCartItemResponses[keyof UpdateCustomDiscountForCartItemResponses]\n\nexport type GetShippingGroupsData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/shipping-groups\"\n}\n\nexport type GetShippingGroupsErrors = {\n /**\n * Cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupsError =\n GetShippingGroupsErrors[keyof GetShippingGroupsErrors]\n\nexport type GetShippingGroupsResponses = {\n /**\n * A list of shipping groups\n */\n 200: {\n data?: Array<ShippingGroupResponse>\n }\n}\n\nexport type GetShippingGroupsResponse =\n GetShippingGroupsResponses[keyof GetShippingGroupsResponses]\n\nexport type CreateShippingGroupData = {\n body: CreateShippingGroupRequest\n path: {\n /**\n * The ID of the cart\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/shipping-groups\"\n}\n\nexport type CreateShippingGroupErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type CreateShippingGroupError =\n CreateShippingGroupErrors[keyof CreateShippingGroupErrors]\n\nexport type CreateShippingGroupResponses = {\n /**\n * Shipping group created successfully\n */\n 201: ShippingGroupEntityResponse\n}\n\nexport type CreateShippingGroupResponse =\n CreateShippingGroupResponses[keyof CreateShippingGroupResponses]\n\nexport type DeleteCartShippingGroupData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group to delete\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type DeleteCartShippingGroupErrors = {\n /**\n * Cannot delete shipping group that is attached to cart items\n */\n 400: ResponseErrorResponse\n /**\n * Cart or shipping group not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type DeleteCartShippingGroupError =\n DeleteCartShippingGroupErrors[keyof DeleteCartShippingGroupErrors]\n\nexport type DeleteCartShippingGroupResponses = {\n /**\n * Successfully deleted the shipping group\n */\n 204: void\n}\n\nexport type DeleteCartShippingGroupResponse =\n DeleteCartShippingGroupResponses[keyof DeleteCartShippingGroupResponses]\n\nexport type GetShippingGroupByIdData = {\n body?: never\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type GetShippingGroupByIdErrors = {\n /**\n * Shipping group or cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupByIdError =\n GetShippingGroupByIdErrors[keyof GetShippingGroupByIdErrors]\n\nexport type GetShippingGroupByIdResponses = {\n /**\n * Shipping group details\n */\n 200: {\n data?: ShippingGroupResponse\n }\n}\n\nexport type GetShippingGroupByIdResponse =\n GetShippingGroupByIdResponses[keyof GetShippingGroupByIdResponses]\n\nexport type UpdateShippingGroupData = {\n body: UpdateCartShippingGroupRequest\n path: {\n /**\n * The ID of the cart\n */\n cartId: string\n /**\n * The ID of the shipping group\n */\n shippingGroupId: string\n }\n query?: never\n url: \"/v2/carts/{cartId}/shipping-groups/{shippingGroupId}\"\n}\n\nexport type UpdateShippingGroupErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Shipping group or cart not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type UpdateShippingGroupError =\n UpdateShippingGroupErrors[keyof UpdateShippingGroupErrors]\n\nexport type UpdateShippingGroupResponses = {\n /**\n * Shipping group updated successfully\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type UpdateShippingGroupResponse =\n UpdateShippingGroupResponses[keyof UpdateShippingGroupResponses]\n\nexport type CreateCartPaymentIntentData = {\n body?: ElasticPathPaymentsPoweredByStripePayment\n path: {\n /**\n * The universally unique identifier of the cart for which you want to create a payment intent.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/payments\"\n}\n\nexport type CreateCartPaymentIntentResponses = {\n /**\n * Payment Intent created successfully.\n */\n 201: CartEntityResponse\n}\n\nexport type CreateCartPaymentIntentResponse =\n CreateCartPaymentIntentResponses[keyof CreateCartPaymentIntentResponses]\n\nexport type UpdateCartPaymentIntentData = {\n body: CartPaymentUpdate\n path: {\n /**\n * The unique identifier of the cart.\n */\n cartID: string\n /**\n * The unique identifier of the payment intent.\n */\n paymentIntentID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/payments/{paymentIntentID}\"\n}\n\nexport type UpdateCartPaymentIntentResponses = {\n /**\n * Payment updated successfully\n */\n 200: CartEntityResponse\n}\n\nexport type UpdateCartPaymentIntentResponse =\n UpdateCartPaymentIntentResponses[keyof UpdateCartPaymentIntentResponses]\n\nexport type CheckoutApiData = {\n body?: CustomerCheckout | AccountCheckout\n headers?: {\n /**\n * An account management authentication token that identifies the authenticated account member.\n */\n \"EP-Account-Management-Authentication-Token\"?: string\n }\n path: {\n /**\n * The ID of the cart that you want to checkout.\n */\n cartID: string\n }\n query?: never\n url: \"/v2/carts/{cartID}/checkout\"\n}\n\nexport type CheckoutApiErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Internal Server Error\n */\n 500: ResponseErrorResponse\n}\n\nexport type CheckoutApiError = CheckoutApiErrors[keyof CheckoutApiErrors]\n\nexport type CheckoutApiResponses = {\n /**\n * OK\n */\n 201: OrderEntityResponse\n}\n\nexport type CheckoutApiResponse =\n CheckoutApiResponses[keyof CheckoutApiResponses]\n\nexport type GetCustomerOrdersData = {\n body?: never\n headers?: {\n /**\n * A customer token to access a specific customer's orders.\n */\n \"x-moltin-customer-token\"?: string\n }\n path?: never\n query?: {\n include?: Array<\"items\">\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint documentation to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n }\n url: \"/v2/orders\"\n}\n\nexport type GetCustomerOrdersResponses = {\n 200: OrderCollectionResponse\n}\n\nexport type GetCustomerOrdersResponse =\n GetCustomerOrdersResponses[keyof GetCustomerOrdersResponses]\n\nexport type GetAnOrderData = {\n body?: never\n path: {\n /**\n * The ID of the order.\n */\n orderID: string\n }\n query?: {\n include?: Array<\"items\">\n }\n url: \"/v2/orders/{orderID}\"\n}\n\nexport type GetAnOrderErrors = {\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetAnOrderError = GetAnOrderErrors[keyof GetAnOrderErrors]\n\nexport type GetAnOrderResponses = {\n /**\n * OK\n */\n 200: OrderEntityResponse\n}\n\nexport type GetAnOrderResponse = GetAnOrderResponses[keyof GetAnOrderResponses]\n\nexport type UpdateAnOrderData = {\n body?: OrdersUpdateRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}\"\n}\n\nexport type UpdateAnOrderErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type UpdateAnOrderError = UpdateAnOrderErrors[keyof UpdateAnOrderErrors]\n\nexport type UpdateAnOrderResponses = {\n /**\n * OK\n */\n 200: OrderEntityResponse\n}\n\nexport type UpdateAnOrderResponse =\n UpdateAnOrderResponses[keyof UpdateAnOrderResponses]\n\nexport type GetOrderItemsData = {\n body?: never\n path: {\n /**\n * The ID of the order.\n */\n orderID: string\n }\n query?: {\n /**\n * Comma-delimited string of entities to include (tax_items, custom_discounts, promotions).\n */\n include?: string\n }\n url: \"/v2/orders/{orderID}/items\"\n}\n\nexport type GetOrderItemsResponses = {\n 200: OrderItemCollectionResponse\n}\n\nexport type GetOrderItemsResponse =\n GetOrderItemsResponses[keyof GetOrderItemsResponses]\n\nexport type AnonymizeOrdersData = {\n body?: OrdersAnonymizeRequest & unknown\n path?: never\n query?: never\n url: \"/v2/orders/anonymize\"\n}\n\nexport type AnonymizeOrdersErrors = {\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type AnonymizeOrdersError =\n AnonymizeOrdersErrors[keyof AnonymizeOrdersErrors]\n\nexport type AnonymizeOrdersResponses = {\n /**\n * OK\n */\n 200: OrdersListResponse\n}\n\nexport type AnonymizeOrdersResponse =\n AnonymizeOrdersResponses[keyof AnonymizeOrdersResponses]\n\nexport type ConfirmOrderData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order to confirm.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/confirm\"\n}\n\nexport type ConfirmOrderErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Not Found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type ConfirmOrderError = ConfirmOrderErrors[keyof ConfirmOrderErrors]\n\nexport type ConfirmOrderResponses = {\n /**\n * Order confirmed successfully\n */\n 200: TransactionEntityResponse\n}\n\nexport type ConfirmOrderResponse =\n ConfirmOrderResponses[keyof ConfirmOrderResponses]\n\nexport type PaymentSetupData = {\n body?: PaymentsRequest\n path: {\n /**\n * The Universally Unique Identifier (UUID) of the order you want to pay for.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/payments\"\n}\n\nexport type PaymentSetupErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Conflict\n */\n 409: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type PaymentSetupError = PaymentSetupErrors[keyof PaymentSetupErrors]\n\nexport type PaymentSetupResponses = {\n /**\n * OK\n */\n 200: TransactionEntityResponse\n}\n\nexport type PaymentSetupResponse =\n PaymentSetupResponses[keyof PaymentSetupResponses]\n\nexport type ConfirmPaymentData = {\n body?: OrdersTransactionsConfirmRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n /**\n * The unique identifier of the transaction.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/confirm\"\n}\n\nexport type ConfirmPaymentErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type ConfirmPaymentError =\n ConfirmPaymentErrors[keyof ConfirmPaymentErrors]\n\nexport type ConfirmPaymentResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type ConfirmPaymentResponse =\n ConfirmPaymentResponses[keyof ConfirmPaymentResponses]\n\nexport type CaptureATransactionData = {\n body?: OrdersTransactionsCaptureRequest\n path: {\n /**\n * The UUID of the order.\n */\n orderID: string\n /**\n * The UUID of the transaction to capture.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/capture\"\n}\n\nexport type CaptureATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type CaptureATransactionError =\n CaptureATransactionErrors[keyof CaptureATransactionErrors]\n\nexport type CaptureATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type CaptureATransactionResponse =\n CaptureATransactionResponses[keyof CaptureATransactionResponses]\n\nexport type RefundATransactionData = {\n body?: OrdersTransactionsRefundRequest\n path: {\n /**\n * The UUID of the order.\n */\n orderID: string\n /**\n * The UUID of the transaction you want to refund.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/refund\"\n}\n\nexport type RefundATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type RefundATransactionError =\n RefundATransactionErrors[keyof RefundATransactionErrors]\n\nexport type RefundATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type RefundATransactionResponse =\n RefundATransactionResponses[keyof RefundATransactionResponses]\n\nexport type GetOrderTransactionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions\"\n}\n\nexport type GetOrderTransactionsErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type GetOrderTransactionsError =\n GetOrderTransactionsErrors[keyof GetOrderTransactionsErrors]\n\nexport type GetOrderTransactionsResponses = {\n 200: TransactionListResponse\n}\n\nexport type GetOrderTransactionsResponse =\n GetOrderTransactionsResponses[keyof GetOrderTransactionsResponses]\n\nexport type GetATransactionData = {\n body?: never\n path: {\n /**\n * The unique identifier of the order that you require transactions for.\n */\n orderID: string\n /**\n * The unique identifier of the transaction.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}\"\n}\n\nexport type GetATransactionResponses = {\n 200: ResponseData & {\n data?: TransactionResponse\n }\n}\n\nexport type GetATransactionResponse =\n GetATransactionResponses[keyof GetATransactionResponses]\n\nexport type CancelATransactionData = {\n body?: OrdersTransactionsCancelRequest\n path: {\n /**\n * The unique identifier of the order.\n */\n orderID: string\n /**\n * The unique identifier of the transaction to be canceled or voided.\n */\n transactionID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/transactions/{transactionID}/cancel\"\n}\n\nexport type CancelATransactionErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n}\n\nexport type CancelATransactionError =\n CancelATransactionErrors[keyof CancelATransactionErrors]\n\nexport type CancelATransactionResponses = {\n 200: TransactionEntityResponse\n}\n\nexport type CancelATransactionResponse =\n CancelATransactionResponses[keyof CancelATransactionResponses]\n\nexport type GetOrderShippingGroupsData = {\n body?: never\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups\"\n}\n\nexport type GetOrderShippingGroupsErrors = {\n /**\n * Order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetOrderShippingGroupsError =\n GetOrderShippingGroupsErrors[keyof GetOrderShippingGroupsErrors]\n\nexport type GetOrderShippingGroupsResponses = {\n /**\n * A list of shipping groups\n */\n 200: {\n data?: Array<ShippingGroupResponse>\n }\n}\n\nexport type GetOrderShippingGroupsResponse =\n GetOrderShippingGroupsResponses[keyof GetOrderShippingGroupsResponses]\n\nexport type CreateOrderShippingGroupData = {\n /**\n * Shipping group details\n */\n body?: {\n data?: {\n type: \"shipping_group\"\n /**\n * The shipping type for this group\n */\n shipping_type?: string\n /**\n * Tracking reference for the shipment\n */\n tracking_reference?: string\n address?: {\n first_name?: string\n last_name?: string\n phone_number?: string\n company_name?: string\n line_1?: string\n line_2?: string\n city?: string\n postcode?: string\n county?: string\n country?: string\n region?: string\n instructions?: string\n }\n delivery_estimate?: {\n start?: string\n end?: string\n }\n }\n }\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups\"\n}\n\nexport type CreateOrderShippingGroupErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Order not found\n */\n 404: ResponseErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: ResponseErrorResponse\n}\n\nexport type CreateOrderShippingGroupError =\n CreateOrderShippingGroupErrors[keyof CreateOrderShippingGroupErrors]\n\nexport type CreateOrderShippingGroupResponses = {\n /**\n * Shipping group created\n */\n 201: {\n data?: ShippingGroupResponse\n }\n}\n\nexport type CreateOrderShippingGroupResponse =\n CreateOrderShippingGroupResponses[keyof CreateOrderShippingGroupResponses]\n\nexport type GetShippingGroupsByIdData = {\n body?: never\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n /**\n * The ID of the shipping group\n */\n shippingGroupID: string\n }\n query?: {\n /**\n * A comma-separated list of related resources to include in the response.\n */\n include?: \"items\"\n }\n url: \"/v2/orders/{orderID}/shipping-groups/{shippingGroupID}\"\n}\n\nexport type GetShippingGroupsByIdErrors = {\n /**\n * Shipping group or order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type GetShippingGroupsByIdError =\n GetShippingGroupsByIdErrors[keyof GetShippingGroupsByIdErrors]\n\nexport type GetShippingGroupsByIdResponses = {\n /**\n * Shipping group details\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type GetShippingGroupsByIdResponse =\n GetShippingGroupsByIdResponses[keyof GetShippingGroupsByIdResponses]\n\nexport type PutShippingGroupByIdData = {\n body: UpdateOrderShippingGroupRequest\n path: {\n /**\n * The ID of the order\n */\n orderID: string\n /**\n * The ID of the shipping group\n */\n shippingGroupID: string\n }\n query?: never\n url: \"/v2/orders/{orderID}/shipping-groups/{shippingGroupID}\"\n}\n\nexport type PutShippingGroupByIdErrors = {\n /**\n * Invalid request\n */\n 400: ResponseErrorResponse\n /**\n * Shipping group or order not found\n */\n 404: ResponseErrorResponse\n}\n\nexport type PutShippingGroupByIdError =\n PutShippingGroupByIdErrors[keyof PutShippingGroupByIdErrors]\n\nexport type PutShippingGroupByIdResponses = {\n /**\n * Shipping group updated successfully\n */\n 200: ShippingGroupEntityResponse\n}\n\nexport type PutShippingGroupByIdResponse =\n PutShippingGroupByIdResponses[keyof PutShippingGroupByIdResponses]\n\nexport type GetV2SettingsCartData = {\n body?: never\n path?: never\n query?: never\n url: \"/v2/settings/cart\"\n}\n\nexport type GetV2SettingsCartErrors = {\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n}\n\nexport type GetV2SettingsCartError =\n GetV2SettingsCartErrors[keyof GetV2SettingsCartErrors]\n\nexport type GetV2SettingsCartResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type GetV2SettingsCartResponse =\n GetV2SettingsCartResponses[keyof GetV2SettingsCartResponses]\n\nexport type PutV2SettingsCartData = {\n body?: SettingsCartWritable\n path?: never\n query?: never\n url: \"/v2/settings/cart\"\n}\n\nexport type PutV2SettingsCartErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type PutV2SettingsCartError =\n PutV2SettingsCartErrors[keyof PutV2SettingsCartErrors]\n\nexport type PutV2SettingsCartResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type PutV2SettingsCartResponse =\n PutV2SettingsCartResponses[keyof PutV2SettingsCartResponses]\n\nexport type GetV2SettingsCartStoreIdData = {\n body?: never\n path: {\n /**\n * The store ID.\n */\n storeID: string\n }\n query?: never\n url: \"/v2/settings/cart/{storeID}\"\n}\n\nexport type GetV2SettingsCartStoreIdErrors = {\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n}\n\nexport type GetV2SettingsCartStoreIdError =\n GetV2SettingsCartStoreIdErrors[keyof GetV2SettingsCartStoreIdErrors]\n\nexport type GetV2SettingsCartStoreIdResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type GetV2SettingsCartStoreIdResponse =\n GetV2SettingsCartStoreIdResponses[keyof GetV2SettingsCartStoreIdResponses]\n\nexport type PutV2SettingsCartStoreIdData = {\n body?: SettingsCartWritable\n path: {\n /**\n * The store ID.\n */\n storeID: string\n }\n query?: never\n url: \"/v2/settings/cart/{storeID}\"\n}\n\nexport type PutV2SettingsCartStoreIdErrors = {\n /**\n * Bad Request\n */\n 400: ResponseErrorResponse\n /**\n * Unauthorized\n */\n 401: ResponseErrorResponse\n /**\n * Forbidden\n */\n 403: ResponseErrorResponse\n}\n\nexport type PutV2SettingsCartStoreIdError =\n PutV2SettingsCartStoreIdErrors[keyof PutV2SettingsCartStoreIdErrors]\n\nexport type PutV2SettingsCartStoreIdResponses = {\n /**\n * OK\n */\n 200: SettingsCart\n}\n\nexport type PutV2SettingsCartStoreIdResponse =\n PutV2SettingsCartStoreIdResponses[keyof PutV2SettingsCartStoreIdResponses]\n\nexport type ListOfferingsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\" | \"features\">\n }\n url: \"/v2/subscriptions/offerings\"\n}\n\nexport type ListOfferingsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingsError = ListOfferingsErrors[keyof ListOfferingsErrors]\n\nexport type ListOfferingsResponses = {\n /**\n * Success. A list of offerings is returned.\n */\n 200: {\n data?: Array<Offering>\n included?: OfferingIncludes\n links?: Links2\n }\n}\n\nexport type ListOfferingsResponse =\n ListOfferingsResponses[keyof ListOfferingsResponses]\n\nexport type GetOfferingData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\" | \"features\">\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}\"\n}\n\nexport type GetOfferingErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetOfferingError = GetOfferingErrors[keyof GetOfferingErrors]\n\nexport type GetOfferingResponses = {\n /**\n * Success. The details of the subscription offering are returned.\n */\n 200: {\n data?: Offering\n included?: OfferingIncludes\n }\n}\n\nexport type GetOfferingResponse =\n GetOfferingResponses[keyof GetOfferingResponses]\n\nexport type ListOfferingPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/pricing-options\"\n}\n\nexport type ListOfferingPricingOptionsErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPricingOptionsError =\n ListOfferingPricingOptionsErrors[keyof ListOfferingPricingOptionsErrors]\n\nexport type ListOfferingPricingOptionsResponses = {\n /**\n * Success. A list of pricing options attached with the offering is returned.\n */\n 200: {\n data?: Array<OfferingPricingOption>\n links?: Links2\n }\n}\n\nexport type ListOfferingPricingOptionsResponse =\n ListOfferingPricingOptionsResponses[keyof ListOfferingPricingOptionsResponses]\n\nexport type ListOfferingFeaturesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/features\"\n}\n\nexport type ListOfferingFeaturesErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingFeaturesError =\n ListOfferingFeaturesErrors[keyof ListOfferingFeaturesErrors]\n\nexport type ListOfferingFeaturesResponses = {\n /**\n * Success. A list of subscription features attached to the offering is returned.\n */\n 200: {\n data?: Array<OfferingFeature>\n links?: Links2\n }\n}\n\nexport type ListOfferingFeaturesResponse =\n ListOfferingFeaturesResponses[keyof ListOfferingFeaturesResponses]\n\nexport type ListOfferingPlansData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/offerings/{offering_uuid}/plans\"\n}\n\nexport type ListOfferingPlansErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPlansError =\n ListOfferingPlansErrors[keyof ListOfferingPlansErrors]\n\nexport type ListOfferingPlansResponses = {\n /**\n * Success. A list of subscription plans attached to the offering is returned.\n */\n 200: {\n data?: Array<OfferingPlan>\n links?: Links2\n }\n}\n\nexport type ListOfferingPlansResponse =\n ListOfferingPlansResponses[keyof ListOfferingPlansResponses]\n\nexport type ListOfferingPlanPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the offering.\n */\n offering_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the plan.\n */\n plan_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/offerings/{offering_uuid}/plans/{plan_uuid}/relationships/pricing_options\"\n}\n\nexport type ListOfferingPlanPricingOptionsErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListOfferingPlanPricingOptionsError =\n ListOfferingPlanPricingOptionsErrors[keyof ListOfferingPlanPricingOptionsErrors]\n\nexport type ListOfferingPlanPricingOptionsResponses = {\n /**\n * Success. The pricing option relationships are returned\n */\n 200: {\n data?: Array<RelationshipData>\n }\n}\n\nexport type ListOfferingPlanPricingOptionsResponse =\n ListOfferingPlanPricingOptionsResponses[keyof ListOfferingPlanPricingOptionsResponses]\n\nexport type ListSubscriptionsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\">\n }\n url: \"/v2/subscriptions/subscriptions\"\n}\n\nexport type ListSubscriptionsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionsError =\n ListSubscriptionsErrors[keyof ListSubscriptionsErrors]\n\nexport type ListSubscriptionsResponses = {\n /**\n * Success. A list of subscriptions is returned.\n */\n 200: {\n data?: Array<Subscription>\n included?: SubscriptionIncludes\n links?: Links2\n }\n}\n\nexport type ListSubscriptionsResponse =\n ListSubscriptionsResponses[keyof ListSubscriptionsResponses]\n\nexport type GetSubscriptionData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * A comma-separated list of resources to include. See [Characteristics of Include Parameter](/guides/Getting-Started/includes#characteristics-of-include-parameter).\n */\n include?: Array<\"plans\" | \"pricing_options\">\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}\"\n}\n\nexport type GetSubscriptionErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionError =\n GetSubscriptionErrors[keyof GetSubscriptionErrors]\n\nexport type GetSubscriptionResponses = {\n /**\n * Success. The details of a subscription are returned.\n */\n 200: {\n data?: Subscription\n included?: SubscriptionIncludes\n }\n}\n\nexport type GetSubscriptionResponse =\n GetSubscriptionResponses[keyof GetSubscriptionResponses]\n\nexport type ListSubscriptionPlansData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/plans\"\n}\n\nexport type ListSubscriptionPlansErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionPlansError =\n ListSubscriptionPlansErrors[keyof ListSubscriptionPlansErrors]\n\nexport type ListSubscriptionPlansResponses = {\n /**\n * Success. A list of subscription plans is returned.\n */\n 200: {\n data?: Array<OfferingPlan>\n }\n}\n\nexport type ListSubscriptionPlansResponse =\n ListSubscriptionPlansResponses[keyof ListSubscriptionPlansResponses]\n\nexport type ListSubscriptionPricingOptionsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/pricing-options\"\n}\n\nexport type ListSubscriptionPricingOptionsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionPricingOptionsError =\n ListSubscriptionPricingOptionsErrors[keyof ListSubscriptionPricingOptionsErrors]\n\nexport type ListSubscriptionPricingOptionsResponses = {\n /**\n * Success. A list of subscription pricing options is returned.\n */\n 200: {\n data?: Array<OfferingPricingOption>\n }\n}\n\nexport type ListSubscriptionPricingOptionsResponse =\n ListSubscriptionPricingOptionsResponses[keyof ListSubscriptionPricingOptionsResponses]\n\nexport type ListSubscriptionStatesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states\"\n}\n\nexport type ListSubscriptionStatesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionStatesError =\n ListSubscriptionStatesErrors[keyof ListSubscriptionStatesErrors]\n\nexport type ListSubscriptionStatesResponses = {\n /**\n * Success. A list of subscription states is returned.\n */\n 200: {\n data?: Array<SubscriptionState>\n }\n}\n\nexport type ListSubscriptionStatesResponse =\n ListSubscriptionStatesResponses[keyof ListSubscriptionStatesResponses]\n\nexport type CreateSubscriptionStateData = {\n body?: {\n data: ChangeState\n }\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states\"\n}\n\nexport type CreateSubscriptionStateErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Forbidden. The operation is forbidden on this entity.\n */\n 403: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Unprocessable Content.\n */\n 422: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type CreateSubscriptionStateError =\n CreateSubscriptionStateErrors[keyof CreateSubscriptionStateErrors]\n\nexport type CreateSubscriptionStateResponses = {\n /**\n * Success. The subscription's state has changed.\n */\n 204: void\n}\n\nexport type CreateSubscriptionStateResponse =\n CreateSubscriptionStateResponses[keyof CreateSubscriptionStateResponses]\n\nexport type GetSubscriptionStateData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the subscription state.\n */\n state_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/states/{state_uuid}\"\n}\n\nexport type GetSubscriptionStateErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionStateError =\n GetSubscriptionStateErrors[keyof GetSubscriptionStateErrors]\n\nexport type GetSubscriptionStateResponses = {\n /**\n * Success. A subscription state is returned.\n */\n 200: {\n data?: SubscriptionState\n }\n}\n\nexport type GetSubscriptionStateResponse =\n GetSubscriptionStateResponses[keyof GetSubscriptionStateResponses]\n\nexport type ListSubscriptionInvoicesData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices\"\n}\n\nexport type ListSubscriptionInvoicesErrors = {\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListSubscriptionInvoicesError =\n ListSubscriptionInvoicesErrors[keyof ListSubscriptionInvoicesErrors]\n\nexport type ListSubscriptionInvoicesResponses = {\n /**\n * Success. A list of invoices is returned.\n */\n 200: {\n data?: Array<SubscriptionInvoice>\n links?: Links2\n }\n}\n\nexport type ListSubscriptionInvoicesResponse =\n ListSubscriptionInvoicesResponses[keyof ListSubscriptionInvoicesResponses]\n\nexport type ListSubscriptionInvoicePaymentsData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}/payments\"\n}\n\nexport type ListSubscriptionInvoicePaymentsResponses = {\n /**\n * Success. Payments for the invoice are returned.\n */\n 200: {\n data?: Array<SubscriptionInvoicePayment>\n links?: Links2\n }\n}\n\nexport type ListSubscriptionInvoicePaymentsResponse =\n ListSubscriptionInvoicePaymentsResponses[keyof ListSubscriptionInvoicePaymentsResponses]\n\nexport type GetSubscriptionInvoicePaymentData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the payment.\n */\n payment_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}/payments/{payment_uuid}\"\n}\n\nexport type GetSubscriptionInvoicePaymentErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionInvoicePaymentError =\n GetSubscriptionInvoicePaymentErrors[keyof GetSubscriptionInvoicePaymentErrors]\n\nexport type GetSubscriptionInvoicePaymentResponses = {\n /**\n * Success. Specific payment for the invoice is returned.\n */\n 200: {\n data?: SubscriptionInvoicePayment\n }\n}\n\nexport type GetSubscriptionInvoicePaymentResponse =\n GetSubscriptionInvoicePaymentResponses[keyof GetSubscriptionInvoicePaymentResponses]\n\nexport type GetSubscriptionInvoiceData = {\n body?: never\n path: {\n /**\n * The unique identifier of the subscription.\n */\n subscription_uuid: SubscriptionsUuid\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/subscriptions/{subscription_uuid}/invoices/{invoice_uuid}\"\n}\n\nexport type GetSubscriptionInvoiceErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetSubscriptionInvoiceError =\n GetSubscriptionInvoiceErrors[keyof GetSubscriptionInvoiceErrors]\n\nexport type GetSubscriptionInvoiceResponses = {\n /**\n * Success. An invoice is returned.\n */\n 200: {\n data?: SubscriptionInvoice\n }\n}\n\nexport type GetSubscriptionInvoiceResponse =\n GetSubscriptionInvoiceResponses[keyof GetSubscriptionInvoiceResponses]\n\nexport type ListInvoicesData = {\n body?: never\n path?: never\n query?: {\n /**\n * Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n }\n url: \"/v2/subscriptions/invoices\"\n}\n\nexport type ListInvoicesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type ListInvoicesError = ListInvoicesErrors[keyof ListInvoicesErrors]\n\nexport type ListInvoicesResponses = {\n /**\n * Success. A list of invoices is returned.\n */\n 200: {\n data?: Array<SubscriptionInvoice>\n links?: Links2\n }\n}\n\nexport type ListInvoicesResponse =\n ListInvoicesResponses[keyof ListInvoicesResponses]\n\nexport type GetInvoiceData = {\n body?: never\n path: {\n /**\n * The unique identifier of the invoice.\n */\n invoice_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/invoices/{invoice_uuid}\"\n}\n\nexport type GetInvoiceErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetInvoiceError = GetInvoiceErrors[keyof GetInvoiceErrors]\n\nexport type GetInvoiceResponses = {\n /**\n * Success. The details of the invoice are returned.\n */\n 200: {\n data?: SubscriptionInvoice\n }\n}\n\nexport type GetInvoiceResponse = GetInvoiceResponses[keyof GetInvoiceResponses]\n\nexport type GetFeatureData = {\n body?: never\n path: {\n /**\n * The unique identifier of a feature.\n */\n feature_uuid: SubscriptionsUuid\n }\n query?: never\n url: \"/v2/subscriptions/features/{feature_uuid}\"\n}\n\nexport type GetFeatureErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: SubscriptionsErrorResponse\n /**\n * Not found. The requested entity does not exist.\n */\n 404: SubscriptionsErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: SubscriptionsErrorResponse\n}\n\nexport type GetFeatureError = GetFeatureErrors[keyof GetFeatureErrors]\n\nexport type GetFeatureResponses = {\n /**\n * Success. The feature details are returned.\n */\n 200: {\n data?: Feature\n }\n}\n\nexport type GetFeatureResponse = GetFeatureResponses[keyof GetFeatureResponses]\n\nexport type GetStockData = {\n body?: never\n path: {\n /**\n * The unique identifier of the product.\n */\n product_uuid: InventoriesUuid\n }\n query?: never\n url: \"/v2/inventories/{product_uuid}\"\n}\n\nexport type GetStockErrors = {\n /**\n * Not found. The requested entity does not exist.\n */\n 404: InventoriesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: InventoriesErrorResponse\n}\n\nexport type GetStockError = GetStockErrors[keyof GetStockErrors]\n\nexport type GetStockResponses = {\n /**\n * Success. Returns the stock for the given product UUID\n */\n 200: {\n data: StockResponse\n }\n}\n\nexport type GetStockResponse = GetStockResponses[keyof GetStockResponses]\n\nexport type ListLocationsData = {\n body?: never\n headers?: {\n /**\n * Latitude, Longitude representing current location\n */\n \"Ep-Geolocation\"?: string\n }\n path?: never\n query?: {\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](https://elasticpath.dev/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * Some Inventories API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.\n *\n */\n filter?: string\n /**\n * Only supported value is `location`. When specified, the results are sorted in ascending order based on the value of the field. For `location`, this means ascending distance from the supplied geolocation. For more information, see [Sorting](/guides/Getting-Started/sorting). For location sorting, `Ep-Geolocation` header must be provided as well.\n */\n sort?: \"location\"\n }\n url: \"/v2/inventories/locations\"\n}\n\nexport type ListLocationsErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: InventoriesErrorResponse\n}\n\nexport type ListLocationsError = ListLocationsErrors[keyof ListLocationsErrors]\n\nexport type ListLocationsResponses = {\n /**\n * Success. A list of locations is returned\n */\n 200: {\n data?: Array<Location>\n links?: Links2\n }\n}\n\nexport type ListLocationsResponse =\n ListLocationsResponses[keyof ListLocationsResponses]\n\nexport type CreateAnAccessTokenData = {\n body?: AccessTokenRequest\n path?: never\n query?: never\n url: \"/oauth/access_token\"\n}\n\nexport type CreateAnAccessTokenErrors = {\n /**\n * Bad Request\n */\n 400: ErrorResponse2\n /**\n * Unauthorized\n */\n 401: ErrorResponse2\n /**\n * Internal server error. There was a system failure in the platform.\n */\n default: ErrorResponse2\n}\n\nexport type CreateAnAccessTokenError =\n CreateAnAccessTokenErrors[keyof CreateAnAccessTokenErrors]\n\nexport type CreateAnAccessTokenResponses = {\n /**\n * OK\n */\n 200: AccessTokenResponse\n}\n\nexport type CreateAnAccessTokenResponse =\n CreateAnAccessTokenResponses[keyof CreateAnAccessTokenResponses]\n\nexport type GetV2AccountAddressesData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: {\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * The number of records per page. If not specified, defaults to the `page_length` setting from the Settings API.\n */\n \"page[limit]\"?: number\n /**\n * The method used to calculate the total count. `lower_bound` limits expensive count operations, `observed` uses a lightweight +1 fetch strategy that will indicate if there is a next page.\n */\n \"page[total_method]\"?: \"lower_bound\" | \"observed\"\n /**\n * Filter addresses using a simple query language.\n */\n filter?: string\n }\n url: \"/v2/accounts/{accountID}/addresses\"\n}\n\nexport type GetV2AccountAddressesErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type GetV2AccountAddressesError =\n GetV2AccountAddressesErrors[keyof GetV2AccountAddressesErrors]\n\nexport type GetV2AccountAddressesResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<AccountAddressResponse>\n meta?: PaginationMeta\n links?: PaginationLinks\n }\n}\n\nexport type GetV2AccountAddressesResponse =\n GetV2AccountAddressesResponses[keyof GetV2AccountAddressesResponses]\n\nexport type PostV2AccountAddressData = {\n body?: {\n data: Address\n }\n path: {\n /**\n * The ID of the account you want to create an address for.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses\"\n}\n\nexport type PostV2AccountAddressErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type PostV2AccountAddressError =\n PostV2AccountAddressErrors[keyof PostV2AccountAddressErrors]\n\nexport type PostV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n /**\n * Created\n */\n 201: {\n data?: AccountAddressResponse\n }\n}\n\nexport type PostV2AccountAddressResponse =\n PostV2AccountAddressResponses[keyof PostV2AccountAddressResponses]\n\nexport type DeleteV2AccountAddressData = {\n body?: never\n path: {\n /**\n * The ID of the account that contains the address to delete.\n */\n accountID: string\n /**\n * The ID of the address to delete.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type DeleteV2AccountAddressErrors = {\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type DeleteV2AccountAddressError =\n DeleteV2AccountAddressErrors[keyof DeleteV2AccountAddressErrors]\n\nexport type DeleteV2AccountAddressResponses = {\n /**\n * No Content\n */\n 204: void\n}\n\nexport type DeleteV2AccountAddressResponse =\n DeleteV2AccountAddressResponses[keyof DeleteV2AccountAddressResponses]\n\nexport type GetV2AccountAddressData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n /**\n * The ID of the address you want to retrieve.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type GetV2AccountAddressErrors = {\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type GetV2AccountAddressError =\n GetV2AccountAddressErrors[keyof GetV2AccountAddressErrors]\n\nexport type GetV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n}\n\nexport type GetV2AccountAddressResponse =\n GetV2AccountAddressResponses[keyof GetV2AccountAddressResponses]\n\nexport type PutV2AccountAddressData = {\n body?: {\n data: Address\n }\n path: {\n /**\n * The ID of the account you want to create an address for.\n */\n accountID: string\n /**\n * The ID of the address you want to update.\n */\n addressID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}/addresses/{addressID}\"\n}\n\nexport type PutV2AccountAddressErrors = {\n /**\n * Bad Request\n */\n 400: AccountAddressesErrorResponse\n /**\n * Not Found\n */\n 404: AccountAddressesErrorResponse\n}\n\nexport type PutV2AccountAddressError =\n PutV2AccountAddressErrors[keyof PutV2AccountAddressErrors]\n\nexport type PutV2AccountAddressResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountAddressResponse\n }\n}\n\nexport type PutV2AccountAddressResponse =\n PutV2AccountAddressResponses[keyof PutV2AccountAddressResponses]\n\nexport type GetV2AccountsData = {\n body?: never\n path?: never\n query?: {\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Specifies the order in which accounts will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"id\"\n | \"-id\"\n | \"name\"\n | \"-name\"\n | \"updated_at\"\n | \"-updated_at\"\n }\n url: \"/v2/accounts\"\n}\n\nexport type GetV2AccountsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsError = GetV2AccountsErrors[keyof GetV2AccountsErrors]\n\nexport type GetV2AccountsResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<\n AccountResponse & {\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n >\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountsResponse =\n GetV2AccountsResponses[keyof GetV2AccountsResponses]\n\nexport type PostV2AccountsData = {\n body?: {\n data: Account & WritableParentId\n }\n path?: never\n query?: never\n url: \"/v2/accounts\"\n}\n\nexport type PostV2AccountsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Conflict\n */\n 409: AccountManagementErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PostV2AccountsError =\n PostV2AccountsErrors[keyof PostV2AccountsErrors]\n\nexport type PostV2AccountsResponses = {\n /**\n * Created\n */\n 201: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type PostV2AccountsResponse =\n PostV2AccountsResponses[keyof PostV2AccountsResponses]\n\nexport type GetV2AccountsAccountIdData = {\n body?: never\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}\"\n}\n\nexport type GetV2AccountsAccountIdErrors = {\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsAccountIdError =\n GetV2AccountsAccountIdErrors[keyof GetV2AccountsAccountIdErrors]\n\nexport type GetV2AccountsAccountIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type GetV2AccountsAccountIdResponse =\n GetV2AccountsAccountIdResponses[keyof GetV2AccountsAccountIdResponses]\n\nexport type PutV2AccountsAccountIdData = {\n body?: {\n data: Account & ReadOnlyParentId\n }\n path: {\n /**\n * The ID of the account you want to retrieve.\n */\n accountID: string\n }\n query?: never\n url: \"/v2/accounts/{accountID}\"\n}\n\nexport type PutV2AccountsAccountIdErrors = {\n /**\n * Bad Request\n */\n 400: {\n errors?: Array<{\n detail?: string\n status?: string\n title?: string\n }>\n }\n /**\n * Not Found\n */\n 404: {\n errors?: Array<{\n detail?: string\n status?: string\n title?: string\n }>\n }\n /**\n * Conflict\n */\n 409: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PutV2AccountsAccountIdError =\n PutV2AccountsAccountIdErrors[keyof PutV2AccountsAccountIdErrors]\n\nexport type PutV2AccountsAccountIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type PutV2AccountsAccountIdResponse =\n PutV2AccountsAccountIdResponses[keyof PutV2AccountsAccountIdResponses]\n\nexport type GetV2AccountMembersData = {\n body?: never\n path?: never\n query?: {\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * Specifies the order in which account members will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"email\"\n | \"-email\"\n | \"id\"\n | \"-id\"\n | \"name\"\n | \"-name\"\n | \"updated_at\"\n | \"-updated_at\"\n }\n url: \"/v2/account-members\"\n}\n\nexport type GetV2AccountMembersErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountMembersError =\n GetV2AccountMembersErrors[keyof GetV2AccountMembersErrors]\n\nexport type GetV2AccountMembersResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<AccountMemberResponse>\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountMembersResponse =\n GetV2AccountMembersResponses[keyof GetV2AccountMembersResponses]\n\nexport type GetV2AccountMembersAccountMemberIdData = {\n body?: never\n path: {\n /**\n * The unique identifier of the account member that you want to retrieve.\n */\n accountMemberID: string\n }\n query?: never\n url: \"/v2/account-members/{accountMemberID}\"\n}\n\nexport type GetV2AccountMembersAccountMemberIdErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountMembersAccountMemberIdError =\n GetV2AccountMembersAccountMemberIdErrors[keyof GetV2AccountMembersAccountMemberIdErrors]\n\nexport type GetV2AccountMembersAccountMemberIdResponses = {\n /**\n * OK\n */\n 200: {\n data?: AccountMemberResponse\n links?: {\n /**\n * A URL to the specific resource.\n */\n self?: string\n }\n }\n}\n\nexport type GetV2AccountMembersAccountMemberIdResponse =\n GetV2AccountMembersAccountMemberIdResponses[keyof GetV2AccountMembersAccountMemberIdResponses]\n\nexport type GetV2AccountsAccountIdAccountMembershipsData = {\n body?: never\n path: {\n /**\n * The ID of the account for which you want to get the list of unassigned account members.\n */\n accountID: string\n }\n query?: {\n /**\n * Specifies the filter attributes.\n */\n filter?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: number\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: number\n /**\n * Parameter to retrieve more information about any related resources like account members.\n */\n include?: string\n /**\n * Specifies the order in which account memberships will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).\n */\n sort?:\n | \"created_at\"\n | \"-created_at\"\n | \"updated_at\"\n | \"-updated_at\"\n | \"id\"\n | \"-id\"\n }\n url: \"/v2/accounts/{accountID}/account-memberships\"\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsError =\n GetV2AccountsAccountIdAccountMembershipsErrors[keyof GetV2AccountsAccountIdAccountMembershipsErrors]\n\nexport type GetV2AccountsAccountIdAccountMembershipsResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<\n AccountMembershipResponse & {\n /**\n * The unique identifier for an Account Member.\n */\n account_member_id?: Uuid\n }\n >\n meta?: MetaList\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type GetV2AccountsAccountIdAccountMembershipsResponse =\n GetV2AccountsAccountIdAccountMembershipsResponses[keyof GetV2AccountsAccountIdAccountMembershipsResponses]\n\nexport type PostV2AccountMembersTokensData = {\n body?: {\n data:\n | ({\n authentication_mechanism: \"oidc\"\n } & OpenIdConnectRequest)\n | ({\n authentication_mechanism: \"password\"\n } & PasswordRequest)\n | ({\n authentication_mechanism: \"passwordless\"\n } & PasswordlessRequest)\n | ({\n authentication_mechanism: \"self_signup\"\n } & SelfSignupRequest)\n | ({\n authentication_mechanism: \"account_management_authentication_token\"\n } & SwitchingAccountRequest)\n }\n path?: never\n query?: never\n url: \"/v2/account-members/tokens\"\n}\n\nexport type PostV2AccountMembersTokensErrors = {\n /**\n * Bad Request\n */\n 400: AccountManagementErrorResponse\n /**\n * Unauthorized\n */\n 401: AccountManagementErrorResponse\n /**\n * Forbidden Error\n */\n 403: AccountManagementErrorResponse\n /**\n * Not Found\n */\n 404: AccountManagementErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AccountManagementErrorResponse\n /**\n * Internal server error.\n */\n 500: AccountManagementErrorResponse\n}\n\nexport type PostV2AccountMembersTokensError =\n PostV2AccountMembersTokensErrors[keyof PostV2AccountMembersTokensErrors]\n\nexport type PostV2AccountMembersTokensResponses = {\n /**\n * Created\n */\n 201: {\n data?: Array<AccountManagementAuthenticationTokenResponse>\n meta?: MetaList & MetaAccountMemberId\n links?: {\n /**\n * Always the current page.\n */\n current?: string\n /**\n * Always the first page.\n */\n first?: string\n /**\n * Always `null` if there is only one page.\n */\n last?: string\n /**\n * Always `null` if there is only one page.\n */\n next?: string\n /**\n * Always `null` if the user is on the first page.\n */\n prev?: string\n }\n }\n}\n\nexport type PostV2AccountMembersTokensResponse =\n PostV2AccountMembersTokensResponses[keyof PostV2AccountMembersTokensResponses]\n\nexport type CreateOneTimePasswordTokenRequestData = {\n body: {\n data: OneTimePasswordTokenRequestInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the password profile.\n */\n profileId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/password-profiles/{profileId}/one-time-password-token-request\"\n}\n\nexport type CreateOneTimePasswordTokenRequestErrors = {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n}\n\nexport type CreateOneTimePasswordTokenRequestError =\n CreateOneTimePasswordTokenRequestErrors[keyof CreateOneTimePasswordTokenRequestErrors]\n\nexport type CreateOneTimePasswordTokenRequestResponses = {\n /**\n * Created\n */\n 201: {\n data?: OneTimePasswordTokenRequestResponse\n }\n /**\n * Accepted\n */\n 202: unknown\n}\n\nexport type CreateOneTimePasswordTokenRequestResponse =\n CreateOneTimePasswordTokenRequestResponses[keyof CreateOneTimePasswordTokenRequestResponses]\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdData =\n {\n body: {\n data: UserAuthenticationInfoUpdateInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the user authentication info.\n */\n userAuthInfoId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/user-authentication-info/{userAuthInfoId}\"\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors =\n {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdError =\n PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors[keyof PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdErrors]\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses =\n {\n /**\n * OK\n */\n 200: {\n data?: UserAuthenticationInfoResponse\n links?: AuthenticationRealmsSelfLink\n }\n }\n\nexport type PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponse =\n PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses[keyof PutV2AuthenticationRealmsRealmIdUserAuthenticationInfoUserAuthInfoIdResponses]\n\nexport type UpdatePasswordProfileInfoData = {\n body: {\n data: UserAuthenticationPasswordProfileInfoUpdateInput\n }\n path: {\n /**\n * The ID of the authentication realm.\n */\n realmId: string\n /**\n * The ID of the user authentication info.\n */\n userAuthInfoId: string\n /**\n * The ID of the password profile info.\n */\n passwordProfileInfoId: string\n }\n query?: never\n url: \"/v2/authentication-realms/{realmId}/user-authentication-info/{userAuthInfoId}/user-authentication-password-profile-info/{passwordProfileInfoId}\"\n}\n\nexport type UpdatePasswordProfileInfoErrors = {\n /**\n * Bad Request\n */\n 400: AuthenticationRealmsErrorResponse\n /**\n * Not Found\n */\n 404: AuthenticationRealmsErrorResponse\n /**\n * Unprocessable Entity\n */\n 422: AuthenticationRealmsErrorResponse\n /**\n * Internal server error.\n */\n 500: AuthenticationRealmsErrorResponse\n}\n\nexport type UpdatePasswordProfileInfoError =\n UpdatePasswordProfileInfoErrors[keyof UpdatePasswordProfileInfoErrors]\n\nexport type UpdatePasswordProfileInfoResponses = {\n /**\n * OK\n */\n 200: {\n data?: UserAuthenticationPasswordProfileInfoResponse\n links?: AuthenticationRealmsSelfLink\n }\n}\n\nexport type UpdatePasswordProfileInfoResponse =\n UpdatePasswordProfileInfoResponses[keyof UpdatePasswordProfileInfoResponses]\n\nexport type GetAllCurrenciesData = {\n body?: never\n path?: never\n query?: {\n /**\n * The number of records to offset the results by.\n */\n \"page[offset]\"?: string\n /**\n * The number of records per page.\n */\n \"page[limit]\"?: string\n }\n url: \"/v2/currencies\"\n}\n\nexport type GetAllCurrenciesErrors = {\n /**\n * Bad Request\n */\n 400: ResponseError\n /**\n * Unauthorized\n */\n 401: ResponseError\n}\n\nexport type GetAllCurrenciesError =\n GetAllCurrenciesErrors[keyof GetAllCurrenciesErrors]\n\nexport type GetAllCurrenciesResponses = {\n /**\n * OK\n */\n 200: ResponseData & {\n data?: Array<ResponseCurrency>\n }\n}\n\nexport type GetAllCurrenciesResponse =\n GetAllCurrenciesResponses[keyof GetAllCurrenciesResponses]\n\nexport type GetACurrencyData = {\n body?: never\n path: {\n /**\n * The ID for the requested currency.\n */\n currencyID: string\n }\n query?: never\n url: \"/v2/currencies/{currencyID}\"\n}\n\nexport type GetACurrencyErrors = {\n /**\n * Bad Request\n */\n 400: ResponseError\n /**\n * Unauthorized\n */\n 401: ResponseError\n /**\n * Not Found\n */\n 404: ResponseError\n}\n\nexport type GetACurrencyError = GetACurrencyErrors[keyof GetACurrencyErrors]\n\nexport type GetACurrencyResponses = {\n /**\n * OK\n */\n 200: ResponseData & {\n data?: ResponseCurrency\n }\n}\n\nexport type GetACurrencyResponse =\n GetACurrencyResponses[keyof GetACurrencyResponses]\n\nexport type GetAllFilesData = {\n body?: never\n path?: never\n query?: {\n /**\n *\n * Filtering is available for this endpoint. See [Filtering](/docs/api/pxm/files/get-all-files#filtering).\n *\n */\n filter?: string\n /**\n * The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[limit]\"?: number\n /**\n * The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.\n */\n \"page[offset]\"?: number\n }\n url: \"/v2/files\"\n}\n\nexport type GetAllFilesErrors = {\n /**\n * Bad request. The request failed validation.\n */\n 400: FilesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: FilesErrorResponse\n}\n\nexport type GetAllFilesError = GetAllFilesErrors[keyof GetAllFilesErrors]\n\nexport type GetAllFilesResponses = {\n /**\n * OK\n */\n 200: {\n data?: Array<File>\n meta?: ResultsMeta\n links?: ResultsLinks\n }\n}\n\nexport type GetAllFilesResponse =\n GetAllFilesResponses[keyof GetAllFilesResponses]\n\nexport type GetAFileData = {\n body?: never\n path: {\n /**\n * The unique identifier for a file.\n */\n fileID: string\n }\n query?: never\n url: \"/v2/files/{fileID}\"\n}\n\nexport type GetAFileErrors = {\n /**\n * Forbidden. The operation is forbidden on this entity.\n */\n 404: FilesErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: FilesErrorResponse\n}\n\nexport type GetAFileError = GetAFileErrors[keyof GetAFileErrors]\n\nexport type GetAFileResponses = {\n 200: {\n data?: File\n }\n}\n\nexport type GetAFileResponse = GetAFileResponses[keyof GetAFileResponses]\n\nexport type PostMultiSearchData = {\n body: MultiSearchRequest\n headers?: {\n /**\n * The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).\n */\n \"accept-language\"?: string\n /**\n * 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.\n */\n \"EP-Channel\"?: string\n /**\n * Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.\n */\n \"EP-Context-Tag\"?: string\n /**\n * The currency used to resolve product price. If not supplied, the organization/store default currency is used.\n */\n \"x-moltin-currency\"?: string\n \"EP-Simulated-Shopper-Date\"?: string\n }\n path?: never\n query?: {\n /**\n * Using the include parameter, you can retrieve top-level resources.\n *\n * - Files or main image. For example, `include=files,main_image`.\n * - Component product data. For example, `include=component_products`.\n * - Key attribute data, such as SKU or slug.\n *\n */\n include?: Array<\"files\" | \"main_image\" | \"component_products\">\n /**\n * The slug of the search profile to use for this search.\n *\n * On shopper search (`/pcm/catalog/search`, `/pcm/catalog/multi-search`): used only when the matched catalog rule has no valid `search_profile_slug`. When the catalog rule carries a non-blank slug that resolves to a profile, that rule profile is used and this query parameter is silently ignored. Blank or whitespace-only values are treated as omitted. An invalid non-blank slug returns 400 with detail `Search profile '{slug}' not found`.\n *\n * On admin search (`/pcm/catalogs/{catalog_id}/releases/{release_id}/…`): catalog rule profiles are not applied. Resolution is this query parameter, then the tenant default profile, then the built-in default.\n *\n * Omit this parameter to use the tenant default profile (or the built-in default when no tenant default exists). The applied slug is returned in the `EP-Search-Profile` response header.\n *\n */\n search_profile?: string\n }\n url: \"/pcm/catalog/multi-search\"\n}\n\nexport type PostMultiSearchErrors = {\n /**\n * Bad request - invalid search parameters\n */\n 400: CatalogSearchErrorResponse\n /**\n * Internal server error. There was a system failure in the platform.\n */\n 500: CatalogSearchErrorResponse\n}\n\nexport type PostMultiSearchError =\n PostMultiSearchErrors[keyof PostMultiSearchErrors]\n\nexport type PostMultiSearchResponses = {\n /**\n * Multi-search results\n */\n 200: MultiSearchResponse\n}\n\nexport type PostMultiSearchResponse =\n PostMultiSearchResponses[keyof PostMultiSearchResponses]\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|