From d8a25419996bf05c2eaf24415b147385a7b29887 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 10 Mar 2026 13:26:20 +0000 Subject: [PATCH] chore: update SDK from OpenAPI spec --- generator/catalog-ingestion-openapi-spec.yaml | 34 +++++++----- package.json | 2 +- src/client.ts | 55 +++++++++++-------- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/generator/catalog-ingestion-openapi-spec.yaml b/generator/catalog-ingestion-openapi-spec.yaml index 7103612..c4e2532 100644 --- a/generator/catalog-ingestion-openapi-spec.yaml +++ b/generator/catalog-ingestion-openapi-spec.yaml @@ -321,7 +321,8 @@ paths: Update existing product attribute metadata with new values. When the update is processed, the merge strategy is used to apply changes to `scalar` and `object` type fields. The replace strategy is used to apply changes for fields in an `array`. - > **Note:** Before submitting an update request, verify that the target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but the update is silently ignored. + > **Note:** Before submitting an update request, verify that the target entity exists using the + [attributeMetadata](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-attributeMetadata) GraphQL query. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect. operationId: updateProductMetadata parameters: - $ref: "#/components/parameters/Authorization" @@ -478,7 +479,7 @@ paths: { "url": "https://example.com/images/men-category.png", "label": "Men's Category", - "roles": ["SMALL"], + "roles": ["BASE"], "customRoles": [] } ] @@ -505,7 +506,7 @@ paths: Update existing product categories with new values. When the update is processed, the merge strategy is used to apply changes to `scalar` and `object` type fields. The replace strategy is used to apply changes for fields in an `array`. - > **Note:** Before submitting an update request, verify that the target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but the update is silently ignored. + > **Note:** Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect. operationId: updateCategories parameters: - $ref: "#/components/parameters/Authorization" @@ -557,7 +558,7 @@ paths: { "url": "https://example.com/images/mens-apparel.png", "label": "Men's Apparel", - "roles": ["SMALL"], + "roles": ["BASE"], "customRoles": [] } ] @@ -641,7 +642,6 @@ paths: - You can create multiple products in a single request, and also create product variants for configurable products in the same request. - Use the `routes` field to set category paths. The `path` value must match an existing category slug, for example `men/clothing`. - Create a route for each category path. For example to include a product in each of the following categories `men`, `men/clothing`, and `men/clothing/pants`, specify three `path` values, one for each category. -

Simple products

Create products or replace existing products with specified `sku` and `source` values. @@ -791,7 +791,7 @@ paths: { "url": "https://example.com/images/pants.jpg", "label": "photo of my pants!", - "roles": ["BASE", "SMALL"], + "roles": ["BASE", "THUMBNAIL"], "customRoles": ["widget"] } ], @@ -1141,7 +1141,7 @@ paths: * `configurations` match on `type` and `attributeCode` * `externalIds` match on `type` and `origin` - > **Note:** Before submitting an update request, verify that the target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but the update is silently ignored. + > **Note:** Before submitting an update request, verify that the target entity exists using the [products](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-products) GraphQL query. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect. operationId: updateProducts parameters: - $ref: "#/components/parameters/Authorization" @@ -1259,7 +1259,7 @@ paths: In the example below: * A new attribute with the code `warehouse` is added to the attributes list * The value of the existing `cost` attribute is replaced with new value - + The previously created `states` attribute is preserved. Note: Don't forget to create the product attribute metadata (link for the `warehouse` attribute if it doesn't exist yet. value: @@ -1329,13 +1329,17 @@ paths: summary: Create or replace product layers description: | Create product layers to customize and override base product data for specific contexts, locales, or business requirements. - + Product layers enable you to: - Override product attributes for specific markets or channels - Provide locale-specific content while maintaining a global base product - Create seasonal or promotional variations without duplicating entire product records - Implement A/B testing scenarios with different product presentations + For details on how to use layers with Adobe Commerce Optimizer, see + [Catalog Layers](https://experienceleague.adobe.com/en/docs/commerce/optimizer/setup/catalog-layer) in the + Adobe Commerce Optimizer documentation. + ## Layer behavior and requirements **Required fields:** @@ -1427,19 +1431,19 @@ paths: - Product Layers summary: Delete product layers description: | - Remove specific product layers by SKU and source identifiers. This operation permanently deletes + Remove specific product layers by SKU and source identifiers. This operation permanently deletes the layer data while preserving the base product. - + **Use Cases:** - Remove expired seasonal or promotional layers - Clean up test layers after A/B testing completion - Delete locale-specific layers when discontinuing market support - Remove outdated customizations - + **Important Notes:** - Only the specified layer is deleted; base product and other layers remain intact - Both `sku` and `source` (locale + layer) must match exactly for successful deletion - + operationId: deleteProductLayers parameters: - $ref: "#/components/parameters/Authorization" @@ -1633,7 +1637,7 @@ paths: * **Child Price Books**: Include correct `parentId` in request (will be ignored if different) * **Hierarchy Restructuring**: Delete child price book and recreate with new parent reference - > **Note:** Before submitting an update request, verify that the target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but the update is silently ignored. + > **Note:** Before submitting an update request, verify that the target entity exists by checking the available price books in [Commerce Optimizer](https://experienceleague.adobe.com/en/docs/commerce/optimizer/setup/pricebooks#view-price-books-in-commerce-optimizer). Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect. operationId: updatePriceBooks parameters: - name: Content-Type @@ -2049,7 +2053,7 @@ paths: * Ensure tier quantities are in ascending order * Test updates in a development environment first - > **Note:** Before submitting an update request, verify that the target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but the update is silently ignored. + > **Note:** Before submitting an update request, verify that the target entity exists using the [products GraphQL query](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-products) to check the prices assigned to the product SKU. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect. operationId: updatePrices parameters: - $ref: "#/components/parameters/Authorization" diff --git a/package.json b/package.json index e0300f0..90a9133 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@adobe-commerce/aco-ts-sdk", - "version": "1.2.3", + "version": "1.2.4", "description": "TypeScript Client SDK for the Adobe Commerce Optimizer API", "type": "module", "license": "Apache-2.0", diff --git a/src/client.ts b/src/client.ts index a80cdba..0e2f9fd 100644 --- a/src/client.ts +++ b/src/client.ts @@ -78,9 +78,8 @@ export interface Client { /** * Update categories Update existing product categories with new values. When the update is processed, the merge * strategy is used to apply changes to `scalar` and `object` type fields. The replace strategy is used to apply - * changes for fields in an `array`. > **Note:** Before submitting an update request, verify that the target entity - * already exists. Update operations do not validate the existence of the entity — if it does not exist, the request - * is accepted, but the update is silently ignored. + * changes for fields in an `array`. > **Note:** Update operations do not verify that the entity exists. Requests + * targeting a nonexistent entity are accepted, but the update has no effect. * * @param data - FeedCategoryUpdate[] payload * @returns {Promise} Feed response indicating the number of accepted items @@ -116,8 +115,10 @@ export interface Client { * Update product attribute metadata Update existing product attribute metadata with new values. When the update is * processed, the merge strategy is used to apply changes to `scalar` and `object` type fields. The replace strategy * is used to apply changes for fields in an `array`. > **Note:** Before submitting an update request, verify that the - * target entity already exists. Update operations do not validate the existence of the entity — if it does not exist, - * the request is accepted, but the update is silently ignored. + * target entity exists using the + * [attributeMetadata](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-attributeMetadata) + * GraphQL query. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are + * accepted, but the update has no effect. * * @param data - FeedMetadataUpdate[] payload * @returns {Promise} Feed response indicating the number of accepted items @@ -176,9 +177,11 @@ export interface Client { * validates that `parentId` references exist and hierarchy depth is maintained

Update Strategies

* **Base * Price Books**: Update name and currency as needed * **Child Price Books**: Include correct `parentId` in request * (will be ignored if different) * **Hierarchy Restructuring**: Delete child price book and recreate with new - * parent reference > **Note:** Before submitting an update request, verify that the target entity already exists. - * Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, - * but the update is silently ignored. + * parent reference > **Note:** Before submitting an update request, verify that the target entity exists by + * checking the available price books in [Commerce + * Optimizer](https://experienceleague.adobe.com/en/docs/commerce/optimizer/setup/pricebooks#view-price-books-in-commerce-optimizer). + * Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but + * the update has no effect. * * @param data - FeedPricebook[] payload * @returns {Promise} Feed response indicating the number of accepted items @@ -225,9 +228,11 @@ export interface Client { * discounts/tiers, send an empty array * To add new discounts/tiers, include both existing and new items

Best * practices

* Always include the complete array of discounts/tiers when updating * Use descriptive discount * codes for easier management * Ensure tier quantities are in ascending order * Test updates in a development - * environment first > **Note:** Before submitting an update request, verify that the target entity already exists. - * Update operations do not validate the existence of the entity — if it does not exist, the request is accepted, but - * the update is silently ignored. + * environment first > **Note:** Before submitting an update request, verify that the target entity exists using the + * [products GraphQL + * query](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-products) to + * check the prices assigned to the product SKU. Update operations do not verify that the entity exists. Requests + * targeting a nonexistent entity are accepted, but the update has no effect. * * @param data - FeedPricesUpdate[] payload * @returns {Promise} Feed response indicating the number of accepted items @@ -239,16 +244,18 @@ export interface Client { * contexts, locales, or business requirements. Product layers enable you to: - Override product attributes for * specific markets or channels - Provide locale-specific content while maintaining a global base product - Create * seasonal or promotional variations without duplicating entire product records - Implement A/B testing scenarios - * with different product presentations ## Layer behavior and requirements **Required fields:** - `sku`: Must match an - * existing base product SKU - `source.layer`: Identifies the layer name for organization and retrieval **Optional - * Fields:** - `source.locale`: When specified, layer applies only to that locale. When omitted, layer applies - * globally across all locales - All product fields (name, description, images, and so on): Override corresponding - * base product values ## Merging logic Product layers use intelligent merging: - **Simple fields** (name, - * description, and so on): Complete replacement of base values - **Array fields** (attributes, images, etc.): - * First-level arrays are merged with base arrays - **Nested arrays** (attribute.values, etc.): Complete replacement - * of nested arrays **Example:** Adding a color variant while preserving existing attributes: `json { \"sku\": - * \"red-pants\", \"source\": { \"locale\": \"en-US\", \"layer\": \"seasonal-colors\" }, \"attributes\": [ { \"code\": - * \"color\", \"values\": [\"Crimson Red\", \"Deep Red\"], \"variantReferenceId\": \"pants-color-crimson\" } ] } ` + * with different product presentations For details on how to use layers with Adobe Commerce Optimizer, see [Catalog + * Layers](https://experienceleague.adobe.com/en/docs/commerce/optimizer/setup/catalog-layer) in the Adobe Commerce + * Optimizer documentation. ## Layer behavior and requirements **Required fields:** - `sku`: Must match an existing + * base product SKU - `source.layer`: Identifies the layer name for organization and retrieval **Optional Fields:** - + * `source.locale`: When specified, layer applies only to that locale. When omitted, layer applies globally across all + * locales - All product fields (name, description, images, and so on): Override corresponding base product values ## + * Merging logic Product layers use intelligent merging: - **Simple fields** (name, description, and so on): Complete + * replacement of base values - **Array fields** (attributes, images, etc.): First-level arrays are merged with base + * arrays - **Nested arrays** (attribute.values, etc.): Complete replacement of nested arrays **Example:** Adding a + * color variant while preserving existing attributes: `json { \"sku\": \"red-pants\", \"source\": { \"locale\": + * \"en-US\", \"layer\": \"seasonal-colors\" }, \"attributes\": [ { \"code\": \"color\", \"values\": [\"Crimson Red\", + * \"Deep Red\"], \"variantReferenceId\": \"pants-color-crimson\" } ] } ` * * @param data - FeedProductLayer[] payload * @returns {Promise} Feed response indicating the number of accepted items @@ -345,8 +352,10 @@ export interface Client { * `attributes` - match on `code` * `images` - match on `url` * `routes` - match on `path` * `links` - match on `type` * and `sku` * `bundles` match on `type` and `group` * `configurations` match on `type` and `attributeCode` * * `externalIds` match on `type` and `origin` > **Note:** Before submitting an update request, verify that the target - * entity already exists. Update operations do not validate the existence of the entity — if it does not exist, the - * request is accepted, but the update is silently ignored. + * entity exists using the + * [products](https://developer.adobe.com/commerce/services/graphql-api/merchandising-api/index.html#query-products) + * GraphQL query. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are + * accepted, but the update has no effect. * * @param data - FeedProductUpdate[] payload * @returns {Promise} Feed response indicating the number of accepted items